* Added a per-user client option to always compose messages using the
[citadel.git] / citadel / routines.c
index cfae5d1831b099d7e6477aadb1f5ae29ea4e2c53..65798e27f7065491ecbff55d45bb1c03f7918dc6 100644 (file)
@@ -82,12 +82,12 @@ void hit_any_key(CtdlIPC *ipc) {    /* hit any key to continue */
        color(DIM_RED);
        scr_printf("%s\r", ipc->ServInfo.moreprompt);
        color(COLOR_POP);
-       sttybbs(0);
+       stty_ctdl(0);
        b=inkey();
        for (a=0; a<strlen(ipc->ServInfo.moreprompt); ++a)
                scr_putc(' ');
        scr_putc(13);
-       sttybbs(1);
+       stty_ctdl(1);
        if ( (rc_prompt_control == 1)
           || ((rc_prompt_control == 3) && (userflags & US_PROMPTCTL)) ) {
                if (b == 'q' || b == 'Q' || b == 's' || b == 'S')
@@ -100,9 +100,9 @@ void hit_any_key(CtdlIPC *ipc) {    /* hit any key to continue */
 }
 
 /*
- * change a user's access level
+ * Edit or delete a user (cmd=25 to edit/create, 96 to delete)
  */
-void edituser(CtdlIPC *ipc)
+void edituser(CtdlIPC *ipc, int cmd)
 {
        char buf[SIZ];
        char who[USERNAME_SIZE];
@@ -110,47 +110,57 @@ void edituser(CtdlIPC *ipc)
        int newnow = 0;
        int r;                          /* IPC response code */
 
-       newprompt("User name: ", who, 25);
+       newprompt("User name: ", who, 29);
        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;
+               if (cmd == 25) {
+                       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]);
                        }
-                       scr_printf("%s\n",&buf[4]);
                }
                free(user);
                return;
        }
 
-       val_user(ipc, user->fullname, 0); /* Display registration */
+       if (cmd == 25) {
+               val_user(ipc, user->fullname, 0); /* Display registration */
 
-       if (newnow || boolprompt("Change password", 0)) {       /* I'm lazy */
-               strprompt("Password", user->password, -19);
+               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("Ask user to register again", !(user->flags & US_REGIS)))
+                       user->flags &= ~US_REGIS;
+               else
+                       user->flags |= US_REGIS;
+               user->timescalled = intprompt("Times called",
+                               user->timescalled, 0, INT_MAX);
+               user->posted = intprompt("Messages posted",
+                                       user->posted, 0, INT_MAX);
+               user->lastcall = boolprompt("Set last call to now", 0) ?
+                                       time(NULL) : user->lastcall;
+               user->USuserpurge = intprompt("Purge time (in days, 0 for system default",
+                               user->USuserpurge, 0, INT_MAX);
        }
 
-       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("Ask user to register again", !(user->flags & US_REGIS)))
-               user->flags &= ~US_REGIS;
-       else
-               user->flags |= US_REGIS;
-       user->timescalled = intprompt("Times called",
-                                     user->timescalled, 0, INT_MAX);
-       user->posted = intprompt("Messages posted",
-                                user->posted, 0, INT_MAX);
-       user->lastcall = boolprompt("Set last call to now", 0) ?
-                                               time(NULL) : user->lastcall;
-       user->USuserpurge = intprompt("Purge time (in days, 0 for system default",
-                                     user->USuserpurge, 0, INT_MAX);
-
+       if (cmd == 96) {
+               scr_printf("Do you want to delete this user? ");
+               if (!yesno()) return;
+               user->axlevel = 0;
+       }
+       
        r = CtdlIPCAideSetUserParameters(ipc, user, buf);
        if (r / 100 != 2) {
                scr_printf("%s\n", buf);
@@ -170,7 +180,7 @@ int set_attr(CtdlIPC *ipc, unsigned int sval, char *prompt, unsigned int sbit, i
 
        temp = sval;
        color(DIM_WHITE);
-       scr_printf("%45s ", prompt);
+       scr_printf("%50s ", prompt);
        color(DIM_MAGENTA);
        scr_printf("[");
        color(BRIGHT_MAGENTA);
@@ -215,10 +225,16 @@ void enter_config(CtdlIPC *ipc, int mode)
 
        if (mode == 0 || mode == 1) {
 
+               /* Does anyone still use dialup connections with manual
+                * screen dimensions setting anymore?  For now we'll keep
+                * the system's ability to set these, but remove the prompts
+                * because they're spurious for nearly everyone.
+                * 
                user->USscreenwidth = intprompt("Enter your screen width",
                                                user->USscreenwidth, 20, 255);
                user->USscreenheight = intprompt("Enter your screen height",
                                                 user->USscreenheight, 3, 255);
+                */
  
                user->flags = set_attr(ipc, user->flags,
                                       "Are you an experienced Citadel user",
@@ -266,6 +282,13 @@ void enter_config(CtdlIPC *ipc, int mode)
                user->flags = set_attr(ipc, user->flags,
                                       "Be unlisted in userlog",
                                       US_UNLISTED, 0);
+
+               if (strlen(editor_paths[0]) > 0) {
+                       user->flags = set_attr(ipc, user->flags,
+                               "Always enter messages with the full-screen editor",
+                               US_EXTEDIT, 0);
+               }
+
        }
 
        if (mode == 2) {
@@ -391,7 +414,7 @@ void progress(CtdlIPC* ipc, unsigned long curr, unsigned long cmax)
 
        if (curr >= cmax) {
                sln_printf("\r%79s\r","");
-               status_line(ipc->ServInfo.humannode, ipc->ServInfo.bbs_city,
+               status_line(ipc->ServInfo.humannode, ipc->ServInfo.site_location,
                        room_name, secure, 0);
        } else {
                /* a will be range 0-50 rather than 0-100 */
@@ -493,12 +516,12 @@ void locate_host(CtdlIPC* ipc, char *hbuf)
 void misc_server_cmd(CtdlIPC *ipc, char *cmd) {
        char buf[SIZ];
 
-       CtdlIPC_putline(ipc, cmd);
-       CtdlIPC_getline(ipc, buf);
+       CtdlIPC_chat_send(ipc, cmd);
+       CtdlIPC_chat_recv(ipc, buf);
        scr_printf("%s\n",buf);
        if (buf[0]=='1') {
                set_keepalives(KA_HALF);
-               while (CtdlIPC_getline(ipc, buf), strcmp(buf,"000")) {
+               while (CtdlIPC_chat_recv(ipc, buf), strcmp(buf,"000")) {
                        scr_printf("%s\n",buf);
                }
                set_keepalives(KA_YES);
@@ -507,7 +530,7 @@ void misc_server_cmd(CtdlIPC *ipc, char *cmd) {
        if (buf[0]=='4') {
                do {
                        newprompt("> ",buf,255);
-                       CtdlIPC_putline(ipc, buf);
+                       CtdlIPC_chat_send(ipc, buf);
                } while(strcmp(buf,"000"));
                return;
        }