Create some directories to hold the source files for the utility
[citadel.git] / citadel / routines.c
index 41d971e8ae1aed7cc67678abe2928bc42692e225..c8e85a7f7d94ecce215e3c6101b3b8a961156c03 100644 (file)
@@ -29,6 +29,7 @@
 #  include <time.h>
 # endif
 #endif
+
 #ifdef HAVE_LIMITS_H
 #include <limits.h>
 #endif
@@ -38,6 +39,8 @@
 #ifdef HAVE_UTMPX_H
 #include <utmpx.h>
 #endif
+
+#include <libcitadel.h>
 #include "citadel.h"
 #include "citadel_ipc.h"
 #include "screen.h"
@@ -51,7 +54,6 @@ struct utmp *getutline(struct utmp *ut);
 #include "citadel.h"
 #include "routines.h"
 #include "commands.h"
-#include "tools.h"
 #include "citadel_decls.h"
 #include "routines2.h"
 
@@ -59,7 +61,7 @@ struct utmp *getutline(struct utmp *ut);
 #define IFNAIDE if (axlevel<6)
 
 extern unsigned userflags;
-extern char *axdefs[7];
+//extern char *axdefs[8];
 extern char sigcaught;
 extern char rc_floor_mode;
 extern int rc_ansi_color;
@@ -106,9 +108,13 @@ void edituser(CtdlIPC *ipc, int cmd)
 {
        char buf[SIZ];
        char who[USERNAME_SIZE];
+       char newname[USERNAME_SIZE];
        struct ctdluser *user = NULL;
        int newnow = 0;
        int r;                          /* IPC response code */
+       int change_name = 0;
+
+       strcpy(newname, "");
 
        newprompt("User name: ", who, 29);
        while ((r = CtdlIPCAideGetUserParameters(ipc, who, &user, buf)) / 100 != 2) {
@@ -121,7 +127,7 @@ void edituser(CtdlIPC *ipc, int cmd)
                                        newnow = 1;
                                        continue;
                                }
-                               scr_printf("%s\n",&buf[4]);
+                               scr_printf("%s\n", buf);
                        }
                }
                free(user);
@@ -131,14 +137,31 @@ void edituser(CtdlIPC *ipc, int cmd)
        if (cmd == 25) {
                val_user(ipc, user->fullname, 0); /* Display registration */
 
+               if (!newnow) {
+                       change_name = 1;
+                       while (change_name == 1) {
+                               if (boolprompt("Change name", 0)) {
+                                       strprompt("New name", newname, USERNAME_SIZE-1);
+                                       r = CtdlIPCRenameUser(ipc, user->fullname, newname, buf);
+                                       if (r / 100 != 2) {
+                                               scr_printf("%s\n", buf);
+                                       }
+                                       else {
+                                               strcpy(user->fullname, newname);
+                                               change_name = 0;
+                                       }
+                               }
+                               else {
+                                       change_name = 0;
+                               }
+                       }
+               }
+
                if (newnow || boolprompt("Change password", 0)) {
                        strprompt("Password", user->password, -19);
                }
        
                user->axlevel = intprompt("Access level", user->axlevel, 0, 6);
-/*             user->flags = set_attr(ipc, user->flags,
-                       "Permission to send Internet mail",
-                       US_INTERNET, 0); */
                if (boolprompt("Permission to send Internet mail", (user->flags & US_INTERNET)))
                        user->flags |= US_INTERNET;
                else
@@ -159,10 +182,13 @@ void edituser(CtdlIPC *ipc, int cmd)
 
        if (cmd == 96) {
                scr_printf("Do you want to delete this user? ");
-               if (!yesno()) return;
+               if (!yesno()) {
+                       free(user);
+                       return;
+               }
                user->axlevel = 0;
        }
-       
+
        r = CtdlIPCAideSetUserParameters(ipc, user, buf);
        if (r / 100 != 2) {
                scr_printf("%s\n", buf);