]> code.citadel.org Git - citadel.git/blobdiff - citadel/routines.c
*** empty log message ***
[citadel.git] / citadel / routines.c
index b86493d298895d6735dcbe27c8995ea94efc2481..7bb82394998967c00d41b0655727239ed3c76f2e 100644 (file)
@@ -76,7 +76,7 @@ void back(int spaces) {
        }
 }
 
-void hit_any_key(void) {               /* hit any key to continue */
+void hit_any_key(CtdlIPC *ipc) {       /* hit any key to continue */
        int a,b;
 
        color(COLOR_PUSH);
@@ -103,20 +103,20 @@ void hit_any_key(void) {          /* hit any key to continue */
 /*
  * change a user's access level
  */
-void edituser(void)
+void edituser(CtdlIPC *ipc)
 {
        char buf[SIZ];
        char who[USERNAME_SIZE];
-       struct usersupp *user = NULL;
+       struct user *user = NULL;
        int newnow = 0;
        int r;                          /* IPC response code */
 
        newprompt("User name: ", who, 25);
-       while ((r = CtdlIPCAideGetUserParameters(who, &user, buf)) / 100 != 2) {
+       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(who, 0, buf);
+                       r = CtdlIPCCreateUser(ipc, who, 0, buf);
                        if (r / 100 == 2) {
                                newnow = 1;
                                continue;
@@ -127,13 +127,18 @@ void edituser(void)
                return;
        }
 
-       val_user(user->fullname, 0); /* Display registration */
+       val_user(ipc, user->fullname, 0); /* Display registration */
 
        if (newnow || boolprompt("Change password", 0)) {       /* I'm lazy */
                strprompt("Password", user->password, -19);
        }
 
        user->axlevel = intprompt("Access level", user->axlevel, 0, 6);
+
+       user->flags = set_attr(ipc, user->flags,
+               "Permission to send/receive Internet mail",
+               US_INTERNET, 0);
+
        if (boolprompt("Ask user to register again", !(user->flags & US_REGIS)))
                user->flags &= ~US_REGIS;
        else
@@ -147,7 +152,7 @@ void edituser(void)
        user->USuserpurge = intprompt("Purge time (in days, 0 for system default",
                                      user->USuserpurge, 0, INT_MAX);
 
-       r = CtdlIPCAideSetUserParameters(user, buf);
+       r = CtdlIPCAideSetUserParameters(ipc, user, buf);
        if (r / 100 != 2) {
                scr_printf("%s\n", buf);
        }
@@ -159,7 +164,7 @@ void edituser(void)
  * yes or no.  Yes=1 and No=0, unless 'backwards' is set to a nonzero value
  * in which case No=1 and Yes=0.
  */
-int set_attr(int sval, char *prompt, unsigned int sbit, int backwards)
+int set_attr(CtdlIPC *ipc, unsigned int sval, char *prompt, unsigned int sbit, int backwards)
 {
        int a;
        int temp;
@@ -196,13 +201,13 @@ int set_attr(int sval, char *prompt, unsigned int sbit, int backwards)
  * modes are:  0 - .EC command, 1 - .EC for new user,
  *             2 - toggle Xpert mode  3 - toggle floor mode
  */
-void enter_config(int mode)
+void enter_config(CtdlIPC *ipc, int mode)
 {
        char buf[SIZ];
-       struct usersupp *user = NULL;
+       struct user *user = NULL;
        int r;                          /* IPC response code */
 
-       r = CtdlIPCGetConfig(&user, buf);
+       r = CtdlIPCGetConfig(ipc, &user, buf);
        if (r / 100 != 2) {
                scr_printf("%s\n", buf);
                free(user);
@@ -216,7 +221,7 @@ void enter_config(int mode)
                user->USscreenheight = intprompt("Enter your screen height",
                                                 user->USscreenheight, 3, 255);
  
-               user->flags = set_attr(user->flags,
+               user->flags = set_attr(ipc, user->flags,
                                       "Are you an experienced Citadel user",
                                       US_EXPERT, 0);
                if ((user->flags & US_EXPERT) == 0 && mode == 1) {
@@ -224,42 +229,42 @@ void enter_config(int mode)
                        return;
                }
 
-               user->flags = set_attr(user->flags,
+               user->flags = set_attr(ipc, user->flags,
                        "Print last old message on New message request",
                        US_LASTOLD, 0);
 
-               user->flags = set_attr(user->flags,
+               user->flags = set_attr(ipc, user->flags,
                                       "Prompt after each message",
                                       US_NOPROMPT, 1);
 
                if ((user->flags & US_NOPROMPT) == 0)
-                       user->flags = set_attr(user->flags,
+                       user->flags = set_attr(ipc, user->flags,
                                               "Use 'disappearing' prompts",
                                               US_DISAPPEAR, 0);
 
-               user->flags = set_attr(user->flags,
+               user->flags = set_attr(ipc, user->flags,
                                       "Pause after each screenful of text",
                                       US_PAGINATOR, 0);
 
                if (rc_prompt_control == 3 && (user->flags & US_PAGINATOR))
-                       user->flags = set_attr(user->flags,
+                       user->flags = set_attr(ipc, user->flags,
                                "<N>ext and <S>top work at paginator prompt",
                                US_PROMPTCTL, 0);
 
                if (rc_floor_mode == RC_DEFAULT)
-                       user->flags = set_attr(user->flags,
+                       user->flags = set_attr(ipc, user->flags,
                                               "View rooms by floor",
                                               US_FLOORS, 0);
 
                if (rc_ansi_color == 3)
-                       user->flags = set_attr(user->flags,
+                       user->flags = set_attr(ipc, user->flags,
                                               "Enable color support",
                                               US_COLOR, 0);
 
                if ((user->flags & US_EXPERT) == 0)
-                       formout("unlisted");
+                       formout(ipc, "unlisted");
 
-               user->flags = set_attr(user->flags,
+               user->flags = set_attr(ipc, user->flags,
                                       "Be unlisted in userlog",
                                       US_UNLISTED, 0);
        }
@@ -284,7 +289,7 @@ void enter_config(int mode)
                }
        }
 
-       r = CtdlIPCSetConfig(user, buf);
+       r = CtdlIPCSetConfig(ipc, user, buf);
        if (r / 100 != 2) scr_printf("%s\n", buf);
        userflags = user->flags;
        free(user);
@@ -326,14 +331,6 @@ int pattern(char *search, char *patn) {
 }
 
 
-/* display internal error as defined in errmsgs */
-void interr(int errnum) {
-       scr_printf("*** INTERNAL ERROR %d\n"
-               "(Press any key to continue)\n", errnum);
-       inkey();
-       logoff(errnum);
-}
-
 void strproc(char *string)
 {
        int a;
@@ -385,28 +382,27 @@ char *strerror(int e)
 #endif
 
 
-void progress(long int curr, long int cmax)
+void progress(unsigned long curr, unsigned long cmax)
 {
-       static long dots_printed;
-       long a;
-
-       if (curr==0) {
-               scr_printf(".......................................");
-               scr_printf(".......................................\r");
-               scr_flush();
-               dots_printed = 0;
-       }
-       else if (curr==cmax) {
-               scr_printf("\r%79s\n","");
-       }
-       else {
-               a=(curr * 100) / cmax;
-               a=a*78; a=a/100;
-               while (dots_printed < a) {
-                       scr_printf("*");
-                       ++dots_printed;
-                       scr_flush();
-               }
+       static char dots[] =
+               "**************************************************";
+       char dots_printed[51];
+       char fmt[42];
+       unsigned long a;
+
+       if (curr >= cmax) {
+               sln_printf("\r%79s\r","");
+               status_line(serv_info.serv_humannode, serv_info.serv_bbs_city,
+                       room_name, secure, 0);
+       } else {
+               /* a will be range 0-50 rather than 0-100 */
+               a=(curr * 50) / cmax;
+               sprintf(fmt, "[%%s%%%lds] %%3ld%%%% %%10ld/%%10ld\r", 50 - a);
+               strncpy(dots_printed, dots, a);
+               dots_printed[a] = 0;
+               sln_printf(fmt, dots_printed, "",
+                               curr * 100 / cmax, curr, cmax);
+               sln_flush();
        }
 }
 
@@ -495,15 +491,15 @@ void locate_host(char *hbuf)
 /*
  * miscellaneous server commands (testing, etc.)
  */
-void misc_server_cmd(char *cmd) {
+void misc_server_cmd(CtdlIPC *ipc, char *cmd) {
        char buf[SIZ];
 
-       serv_puts(cmd);
-       serv_gets(buf);
+       CtdlIPC_putline(ipc, cmd);
+       CtdlIPC_getline(ipc, buf);
        scr_printf("%s\n",buf);
        if (buf[0]=='1') {
                set_keepalives(KA_HALF);
-               while (serv_gets(buf), strcmp(buf,"000")) {
+               while (CtdlIPC_getline(ipc, buf), strcmp(buf,"000")) {
                        scr_printf("%s\n",buf);
                }
                set_keepalives(KA_YES);
@@ -512,7 +508,7 @@ void misc_server_cmd(char *cmd) {
        if (buf[0]=='4') {
                do {
                        newprompt("> ",buf,255);
-                       serv_puts(buf);
+                       CtdlIPC_putline(ipc, buf);
                } while(strcmp(buf,"000"));
                return;
        }