+/** @brief Get user information
+ * @param c Client
+ * @param user Username
+ * @param key Property name (UTF-8)
+ * @param valuep Where to store value (UTF-8)
+ * @return 0 on success, non-0 on error
+ */
+int disorder_userinfo(disorder_client *c, const char *user, const char *key,
+ char **valuep) {
+ return dequote(disorder_simple(c, valuep, "userinfo", user, key, (char *)0),
+ valuep);
+}
+
+/** @brief Set user information
+ * @param c Client
+ * @param user Username
+ * @param key Property name (UTF-8)
+ * @param value New property value (UTF-8)
+ * @return 0 on success, non-0 on error
+ */
+int disorder_edituser(disorder_client *c, const char *user,
+ const char *key, const char *value) {
+ return disorder_simple(c, 0, "edituser", user, key, value, (char *)0);
+}
+
+/** @brief Register a user
+ * @param c Client
+ * @param user Username
+ * @param password Password
+ * @param email Email address (UTF-8)
+ * @param rights Initial rights or NULL to use default
+ * @param confirmp Where to store confirmation string
+ * @return 0 on success, non-0 on error
+ */
+int disorder_register(disorder_client *c, const char *user,
+ const char *password, const char *email,
+ char **confirmp) {
+ return dequote(disorder_simple(c, confirmp, "register",
+ user, password, email, (char *)0),
+ confirmp);
+}
+
+/** @brief Confirm a user
+ * @param c Client
+ * @param confirm Confirmation string
+ * @return 0 on success, non-0 on error
+ */
+int disorder_confirm(disorder_client *c, const char *confirm) {
+ return disorder_simple(c, 0, "confirm", confirm, (char *)0);
+}
+
+/** @brief Make a cookie for this login
+ * @param c Client
+ * @param cookiep Where to store cookie string
+ * @return 0 on success, non-0 on error
+ */
+int disorder_make_cookie(disorder_client *c, char **cookiep) {
+ return dequote(disorder_simple(c, cookiep, "make-cookie", (char *)0),
+ cookiep);
+}
+