- char buf[256];
- char who[256];
- char pass[256];
- int flags;
- int timescalled;
- int posted;
- int axlevel;
- long usernum;
- time_t lastcall;
- int userpurge;
-
- newprompt("User name: ",who,25);
- sprintf(buf,"AGUP %s",who);
- serv_puts(buf);
- serv_gets(buf);
- if (buf[0]!='2') {
- printf("%s\n",&buf[4]);
- return;
- }
- extract(who, &buf[4], 0);
- extract(pass, &buf[4], 1);
- flags = extract_int(&buf[4], 2);
- timescalled = extract_int(&buf[4], 3);
- posted = extract_int(&buf[4], 4);
- axlevel = extract_int(&buf[4], 5);
- usernum = extract_long(&buf[4], 6);
- lastcall = extract_long(&buf[4], 7);
- userpurge = extract_int(&buf[4], 8);
-
- val_user(who, 0); /* Display registration */
- strprompt("Password", pass, 19);
- axlevel = intprompt("Access level", axlevel, 0, 6);
- timescalled = intprompt("Times called", timescalled, 0, INT_MAX);
- posted = intprompt("Messages posted", posted, 0, INT_MAX);
- lastcall = (boolprompt("Set last call to now", 0)?time(NULL):lastcall);
- userpurge = intprompt("Purge time (in days, 0 for system default",
- userpurge, 0, INT_MAX);
-
- sprintf(buf, "ASUP %s|%s|%d|%d|%d|%d|%ld|%ld|%d",
- who, pass, flags, timescalled, posted, axlevel, usernum,
- (long)lastcall, userpurge);
- serv_puts(buf);
- serv_gets(buf);
- if (buf[0]!='2') {
- printf("%s\n",&buf[4]);
+ char buf[SIZ];
+ char who[USERNAME_SIZE];
+ struct ctdluser *user = NULL;
+ int newnow = 0;
+ int r; /* IPC response code */
+
+ newprompt("User name: ", who, 25);
+ while ((r = CtdlIPCAideGetUserParameters(ipc, who, &user, buf)) / 100 != 2) {
+ scr_printf("%s\n", buf);
+ scr_printf("Do you want to create this user? ");
+ if (yesno()) {
+ r = CtdlIPCCreateUser(ipc, who, 0, buf);
+ if (r / 100 == 2) {
+ newnow = 1;
+ continue;
+ }
+ scr_printf("%s\n",&buf[4]);