-static void users_adduser_completed(void *v) {
- struct callbackdata *cbd = v;
-
- /* Now the user is created we can go ahead and set the email address */
- if(*cbd->u.edituser.email) {
- struct callbackdata *ncbd = xmalloc(sizeof *cbd);
- ncbd->onerror = users_op_failed;
- disorder_eclient_edituser(client, NULL, cbd->u.edituser.user,
- "email", cbd->u.edituser.email, ncbd);
+static void users_adduser_completed(void *v,
+ const char *err) {
+ if(err) {
+ popup_submsg(users_window, GTK_MESSAGE_ERROR, err);
+ mode(ADD); /* Let the user try again */
+ } else {
+ const struct kvp *const kvp = v;
+ const char *user = kvp_get(kvp, "user");
+ const char *email = kvp_get(kvp, "email"); /* maybe NULL */
+
+ /* Now the user is created we can go ahead and set the email address */
+ if(email)
+ disorder_eclient_edituser(client, users_edituser_completed, user,
+ "email", email, NULL);
+ /* Refresh the list of users */
+ disorder_eclient_users(client, users_got_list, 0);
+ /* We'll select the newly created user */
+ users_deferred_select = user;