fix dlen
[citadel.git] / textclient / citadel.c
index bb165dd8eb251667f7eb08af0581701c95f87399..ba1be6cb3ce5ce958e1fdc893543fbba34ef943a 100644 (file)
@@ -1,14 +1,8 @@
 // Main source module for the client program.
 //
-// Copyright (c) 1987-2019 by the citadel.org team
+// Copyright (c) 1987-2022 by the citadel.org team
 //
-// This program is open source software.  Use, duplication, and/or
-// disclosure are subject to the GNU General Purpose License version 3.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-// GNU General Public License for more details.
+// This program is open source software.  Use, duplication, or disclosure is subject to the GNU General Public License version 3.
 
 #include "textclient.h"
 
@@ -38,8 +32,6 @@ int uglistsize = 0;
 char is_mail = 0;              /* nonzero when we're in a mail room */
 char axlevel = AxDeleted;      /* access level */
 char is_room_aide = 0;         /* boolean flag, 1 if room admin */
-int timescalled;
-int posted;
 unsigned userflags;
 long usernum = 0L;             /* user number */
 time_t lastcall = 0L;          /* Date/time of previous login */
@@ -66,52 +58,39 @@ CtdlIPC *ipc_for_signal_handlers;   /* KLUDGE cover your eyes */
 int enable_syslog = 0;
 
 
-/*
- * here is our 'clean up gracefully and exit' routine
- */
-void ctdl_logoff(char *file, int line, CtdlIPC * ipc, int code)
-{
+// Here is our 'clean up gracefully and exit' routine
+void ctdl_logoff(char *file, int line, CtdlIPC * ipc, int code) {
        int lp;
 
        if (editor_pid > 0) {   /* kill the editor if it's running */
                kill(editor_pid, SIGHUP);
        }
 
-       /* Free the ungoto list */
+       // Free the ungoto list
        for (lp = 0; lp < uglistsize; lp++) {
                free(uglist[lp]);
        }
 
-/* Shut down the server connection ... but not if the logoff code is 3,
- * because that means we're exiting because we already lost the server.
- */
+       // Shut down the server connection ... but not if the logoff code is 3,
+       // because that means we're exiting because we already lost the server.
        if (code != 3) {
                CtdlIPCQuit(ipc);
        }
 
-/*
- * now clean up various things
- */
+       // now clean up various things
        unlink(temp);
        unlink(temp2);
        nukedir(tempdir);
 
-       /* Violently kill off any child processes if Citadel is
-        * the login shell. 
-        */
+       // Violently kill off any child processes if Citadel is the login shell. 
        if (getppid() == 1) {
                kill(0 - getpgrp(), SIGTERM);
                sleep(1);
                kill(0 - getpgrp(), SIGKILL);
        }
-       color(ORIGINAL_PAIR);   /* Restore the old color settings */
-       stty_ctdl(SB_RESTORE);  /* return the old terminal settings */
-       /* 
-        * uncomment the following if you need to know why Citadel exited
-        printf("*** Exit code %d at %s:%d\n", code, file, line);
-        sleep(2);
-        */
-       exit(code);             /* exit with the proper exit code */
+       color(ORIGINAL_PAIR);   // Restore the old color settings
+       stty_ctdl(SB_RESTORE);  // return the old terminal settings
+       exit(code);             // exit with the proper exit code
 }
 
 
@@ -119,8 +98,7 @@ void ctdl_logoff(char *file, int line, CtdlIPC * ipc, int code)
 /*
  * signal catching function for hangups...
  */
-void dropcarr(int signum)
-{
+void dropcarr(int signum) {
        logoff(NULL, 3);        /* No IPC when server's already gone! */
 }
 
@@ -130,8 +108,7 @@ void dropcarr(int signum)
  * catch SIGCONT to reset terminal modes when were are put back into the
  * foreground.
  */
-void catch_sigcont(int signum)
-{
+void catch_sigcont(int signum) {
        stty_ctdl(SB_LAST);
        signal(SIGCONT, catch_sigcont);
 }
@@ -140,8 +117,7 @@ void catch_sigcont(int signum)
 /* general purpose routines */
 
 /* display a file */
-void formout(CtdlIPC * ipc, char *name)
-{
+void formout(CtdlIPC * ipc, char *name) {
        int r;                  /* IPC return code */
        char buf[SIZ];
        char *text = NULL;
@@ -160,7 +136,7 @@ void formout(CtdlIPC * ipc, char *name)
 
 void userlist(CtdlIPC * ipc, char *patn) {
        char buf[SIZ];
-       char fl[SIZ];
+       char fl[64];            // a buffer this small will prevent it overrunning the column
        struct tm tmbuf;
        time_t lc;
        int r;                  // IPC response code
@@ -172,8 +148,8 @@ void userlist(CtdlIPC * ipc, char *patn) {
                return;
        }
 
-       scr_printf("       User Name           Num  L Last Visit Logins Messages\n");
-       scr_printf("------------------------- ----- - ---------- ------ --------\n");
+       scr_printf("User Name                                                        Last Login\n");
+       scr_printf("---------------------------------------------------------------- ----------\n");
        if (listing != NULL)
                while (!IsEmptyStr(listing)) {
                        extract_token(buf, listing, 0, '\n', sizeof buf);
@@ -182,12 +158,10 @@ void userlist(CtdlIPC * ipc, char *patn) {
                        if (sigcaught == 0) {
                                extract_token(fl, buf, 0, '|', sizeof fl);
                                if (pattern(fl, patn) >= 0) {
-                                       scr_printf("%-25s ", fl);
-                                       scr_printf("%5ld %d ", extract_long(buf, 2), extract_int(buf, 1));
+                                       scr_printf("%-64s ", fl);
                                        lc = extract_long(buf, 3);
                                        localtime_r(&lc, &tmbuf);
-                                       scr_printf("%02d/%02d/%04d ", (tmbuf.tm_mon + 1), tmbuf.tm_mday, (tmbuf.tm_year + 1900));
-                                       scr_printf("%6ld %8ld\n", extract_long(buf, 4), extract_long(buf, 5));
+                                       scr_printf("%02d/%02d/%04d\n", (tmbuf.tm_mon + 1), tmbuf.tm_mday, (tmbuf.tm_year + 1900));
                                }
 
                        }
@@ -197,25 +171,19 @@ void userlist(CtdlIPC * ipc, char *patn) {
 }
 
 
-/*
- * grab assorted info about the user...
- */
+// grab assorted info about the user...
 void load_user_info(char *params) {
        extract_token(fullname, params, 0, '|', sizeof fullname);
        axlevel = extract_int(params, 1);
-       timescalled = extract_int(params, 2);
-       posted = extract_int(params, 3);
        userflags = extract_int(params, 4);
        usernum = extract_long(params, 5);
        lastcall = extract_long(params, 6);
 }
 
 
-/*
- * Remove a room from the march list.  'floornum' is ignored unless
- * 'roomname' is set to _FLOOR_, in which case all rooms on the requested
- * floor will be removed from the march list.
- */
+// Remove a room from the march list.  'floornum' is ignored unless
+// 'roomname' is set to _FLOOR_, in which case all rooms on the requested
+// floor will be removed from the march list.
 void remove_march(char *roomname, int floornum) {
        struct march *mptr, *mptr2;
 
@@ -247,12 +215,9 @@ void remove_march(char *roomname, int floornum) {
 }
 
 
-/*
- * Locate the room on the march list which we most want to go to.  Each room
- * is measured given a "weight" of preference based on various factors.
- */
-char *pop_march(int desired_floor, struct march *_march)
-{
+// Locate the room on the march list which we most want to go to.  Each room
+// is measured given a "weight" of preference based on various factors.
+char *pop_march(int desired_floor, struct march *_march) {
        static char TheRoom[ROOMNAMELEN];
        int TheWeight = 0;
        int weight;
@@ -281,14 +246,10 @@ char *pop_march(int desired_floor, struct march *_march)
 }
 
 
-/*
- * jump directly to a room
- */
-void dotgoto(CtdlIPC * ipc, char *towhere, int display_name, int fromungoto)
-{
+// jump directly to a room
+void dotgoto(CtdlIPC * ipc, char *towhere, int display_name, int fromungoto) {
        char aaa[SIZ], bbb[SIZ];
        static long ls = 0L;
-       int newmailcount = 0;
        int partial_match, best_match;
        char from_floor;
        int ugpos = uglistsize;
@@ -307,7 +268,8 @@ void dotgoto(CtdlIPC * ipc, char *towhere, int display_name, int fromungoto)
                                uglistlsn[lp] = uglistlsn[lp + 1];
                        }
                        ugpos--;
-               } else {
+               }
+               else {
                        uglistsize++;
                }
 
@@ -374,7 +336,7 @@ void dotgoto(CtdlIPC * ipc, char *towhere, int display_name, int fromungoto)
                scr_printf("%s\n", aaa);
                return;
        }
-       safestrncpy(room_name, room->RRname, ROOMNAMELEN);
+       strncpy(room_name, room->RRname, ROOMNAMELEN);
        room_flags = room->RRflags;
        room_flags2 = room->RRflags2;
        from_floor = curr_floor;
@@ -382,16 +344,16 @@ void dotgoto(CtdlIPC * ipc, char *towhere, int display_name, int fromungoto)
 
        // Determine, based on the room's default view, whether an <E>nter message command will be valid here.
        switch (room->RRdefaultview) {
-               case VIEW_BBS:
-               case VIEW_MAILBOX:
-                       entmsg_ok = ENTMSG_OK_YES;
-                       break;
-               case VIEW_BLOG:
-                       entmsg_ok = ENTMSG_OK_BLOG;
-                       break;
-               default:
-                       entmsg_ok = ENTMSG_OK_NO;
-                       break;
+       case VIEW_BBS:
+       case VIEW_MAILBOX:
+               entmsg_ok = ENTMSG_OK_YES;
+               break;
+       case VIEW_BLOG:
+               entmsg_ok = ENTMSG_OK_BLOG;
+               break;
+       default:
+               entmsg_ok = ENTMSG_OK_NO;
+               break;
        }
 
        remove_march(room_name, 0);
@@ -430,29 +392,28 @@ void dotgoto(CtdlIPC * ipc, char *towhere, int display_name, int fromungoto)
        if (room->RRinfoupdated > 0)
                readinfo(ipc);
 
-       /* check for newly arrived mail if we can */
-       newmailcount = room->RRnewmail;
-       if (newmailcount > 0) {
-               color(BRIGHT_RED);
-               if (newmailcount == 1) {
-                       scr_printf("*** A new mail message has arrived.\n");
-               }
-               else {
-                       scr_printf("*** %d new mail messages have arrived.\n", newmailcount);
-               }
-               color(DIM_WHITE);
-               if (!IsEmptyStr(rc_gotmail_cmd)) {
-                       rv = system(rc_gotmail_cmd);
-                       if (rv)
-                               scr_printf("*** failed to check for mail calling %s Reason %d.\n", rc_gotmail_cmd, rv);
-               }
-       }
+       /* check for newly arrived mail if we can   FIXME use BIFF command for this
+          if (newmailcount > 0) {
+          color(BRIGHT_RED);
+          if (newmailcount == 1) {
+          scr_printf("*** A new mail message has arrived.\n");
+          }
+          else {
+          scr_printf("*** %d new mail messages have arrived.\n", newmailcount);
+          }
+          color(DIM_WHITE);
+          if (!IsEmptyStr(rc_gotmail_cmd)) {
+          rv = system(rc_gotmail_cmd);
+          if (rv)
+          scr_printf("*** failed to check for mail calling %s Reason %d.\n", rc_gotmail_cmd, rv);
+          }
+          }
+        */
+
        free(room);
 
        if (screenwidth > 5)
-               snprintf(&status_line[1], screenwidth - 1, "%s  |  %s  |  %s  |  %s  |  %d new mail  |",
-                        (secure ? "Encrypted" : "Unencrypted"),
-                        ipc->ServInfo.humannode, ipc->ServInfo.site_location, room_name, newmailcount);
+               snprintf(&status_line[1], screenwidth - 1, "%s  |  %s  |  %s  |  %s  |  %d new mail  |", (secure ? "Encrypted" : "Unencrypted"), ipc->ServInfo.humannode, ipc->ServInfo.site_location, room_name, 0);   // FIXME use BIFF
 }
 
 
@@ -466,9 +427,8 @@ void gotonext(CtdlIPC * ipc) {
        struct march *mptr, *mptr2;
        char next_room[ROOMNAMELEN];
 
-       /* Check to see if the march-mode list is already allocated.
-        * If it is, pop the first room off the list and go there.
-        */
+       // Check to see if the march-mode list is already allocated.
+       // If it is, pop the first room off the list and go there.
        if (marchptr == NULL) {
                CtdlIPCKnownRooms(ipc, SubscribedRoomsWithNewMessages, AllFloors, &marchptr, buf);
 
@@ -481,7 +441,8 @@ void gotonext(CtdlIPC * ipc) {
                strcpy(mptr->march_name, "_BASEROOM_");
                if (marchptr == NULL) {
                        marchptr = mptr;
-               } else {
+               }
+               else {
                        mptr2 = marchptr;
                        while (mptr2->next != NULL)
                                mptr2 = mptr2->next;
@@ -502,15 +463,13 @@ void gotonext(CtdlIPC * ipc) {
 }
 
 
-/*
- * forget all rooms on a given floor
- */
-void forget_all_rooms_on(CtdlIPC *ipc, int ffloor) {
+// forget all rooms on a given floor
+void forget_all_rooms_on(CtdlIPC * ipc, int ffloor) {
        char buf[SIZ];
        struct march *flist = NULL;
        struct march *fptr = NULL;
        struct ctdlipcroom *room = NULL;
-       int r;                  /* IPC response code */
+       int r;                  // IPC response code
 
        scr_printf("Forgetting all rooms on %s...\n", &floorlist[ffloor][0]);
        remove_march("_FLOOR_", ffloor);
@@ -537,11 +496,8 @@ void forget_all_rooms_on(CtdlIPC *ipc, int ffloor) {
 }
 
 
-/*
- * routine called by gotofloor() to move to a new room on a new floor
- */
-void gf_toroom(CtdlIPC * ipc, char *towhere, int mode)
-{
+// routine called by gotofloor() to move to a new room on a new floor
+void gf_toroom(CtdlIPC * ipc, char *towhere, int mode) {
        int floor_being_left;
 
        floor_being_left = curr_floor;
@@ -549,10 +505,12 @@ void gf_toroom(CtdlIPC * ipc, char *towhere, int mode)
        if (mode == GF_GOTO) {  /* <;G>oto mode */
                updatels(ipc);
                dotgoto(ipc, towhere, 1, 0);
-       } else if (mode == GF_SKIP) {   /* <;S>kip mode */
+       }
+       else if (mode == GF_SKIP) {     /* <;S>kip mode */
                dotgoto(ipc, towhere, 1, 0);
                remove_march("_FLOOR_", floor_being_left);
-       } else if (mode == GF_ZAP) {    /* <;Z>ap mode */
+       }
+       else if (mode == GF_ZAP) {      /* <;Z>ap mode */
                dotgoto(ipc, towhere, 1, 0);
                remove_march("_FLOOR_", floor_being_left);
                forget_all_rooms_on(ipc, floor_being_left);
@@ -560,11 +518,8 @@ void gf_toroom(CtdlIPC * ipc, char *towhere, int mode)
 }
 
 
-/*
- * go to a new floor
- */
-void gotofloor(CtdlIPC * ipc, char *towhere, int mode)
-{
+// go to a new floor
+void gotofloor(CtdlIPC * ipc, char *towhere, int mode) {
        int a, tofloor;
        int r;                  /* IPC response code */
        struct march *mptr;
@@ -641,7 +596,8 @@ void gotofloor(CtdlIPC * ipc, char *towhere, int mode)
        }
        if (!IsEmptyStr(targ)) {
                gf_toroom(ipc, targ, mode);
-       } else {
+       }
+       else {
                scr_printf("There are no rooms on '%s'.\n", &floorlist[tofloor][0]);
        }
 }
@@ -650,8 +606,7 @@ void gotofloor(CtdlIPC * ipc, char *towhere, int mode)
 /*
  * Indexing mechanism for a room list, called by gotoroomstep()
  */
-void room_tree_list_query(struct ctdlroomlisting *rp, char *findrmname, int findrmslot, char *rmname, int *rmslot, int *rmtotal)
-{
+void room_tree_list_query(struct ctdlroomlisting *rp, char *findrmname, int findrmslot, char *rmname, int *rmslot, int *rmtotal) {
        char roomname[ROOMNAMELEN];
        static int cur_rmslot = 0;
 
@@ -695,8 +650,7 @@ void room_tree_list_query(struct ctdlroomlisting *rp, char *findrmname, int find
 /*
  * step through rooms on current floor
  */
-void gotoroomstep(CtdlIPC * ipc, int direction, int mode)
-{
+void gotoroomstep(CtdlIPC * ipc, int direction, int mode) {
        struct march *listing = NULL;
        struct march *mptr;
        int r;                  /* IPC response code */
@@ -735,20 +689,24 @@ void gotoroomstep(CtdlIPC * ipc, int direction, int mode)
                        rs = rl;
                        if (rl == NULL) {
                                rl = rp;
-                       } else {
+                       }
+                       else {
                                while (rp != NULL) {
                                        if (rordercmp(rp, rs) < 0) {
                                                if (rs->lnext == NULL) {
                                                        rs->lnext = rp;
                                                        rp = NULL;
-                                               } else {
+                                               }
+                                               else {
                                                        rs = rs->lnext;
                                                }
-                                       } else {
+                                       }
+                                       else {
                                                if (rs->rnext == NULL) {
                                                        rs->rnext = rp;
                                                        rp = NULL;
-                                               } else {
+                                               }
+                                               else {
                                                        rs = rs->rnext;
                                                }
                                        }
@@ -770,7 +728,7 @@ void gotoroomstep(CtdlIPC * ipc, int direction, int mode)
                        rmslot--;
                }
        }
-       else {          /* Next room */
+       else {                  /* Next room */
                /* If we're at the last room, wrap to the first room */
                if (rmslot == rmtotal - 1) {
                        rmslot = 0;
@@ -821,7 +779,8 @@ void gotofloorstep(CtdlIPC * ipc, int direction, int mode) {
 
                while (!floorlist[tofloor][0])
                        tofloor--;
-       } else {                /* Next floor */
+       }
+       else {                  /* Next floor */
                if (curr_floor < 127)
                        tofloor = curr_floor + 1;
                else
@@ -849,14 +808,13 @@ void gotofloorstep(CtdlIPC * ipc, int direction, int mode) {
  * Display user 'preferences'.
  */
 extern int rc_prompt_control;
-void read_config(CtdlIPC * ipc)
-{
+void read_config(CtdlIPC * ipc) {
        char buf[SIZ];
        char *resp = NULL;
        int r;                  /* IPC response code */
        char _fullname[USERNAME_SIZE];
        long _usernum;
-       int _axlevel, _timescalled, _posted;
+       int _axlevel;
        time_t _lastcall;
        struct ctdluser *user = NULL;
 
@@ -870,8 +828,6 @@ void read_config(CtdlIPC * ipc)
        _usernum = extract_long(buf, 2);
        _axlevel = extract_int(buf, 3);
        _lastcall = extract_long(buf, 4);
-       _timescalled = extract_int(buf, 5);
-       _posted = extract_int(buf, 6);
        free(resp);
        resp = NULL;
 
@@ -884,10 +840,8 @@ void read_config(CtdlIPC * ipc)
        }
 
        /* show misc user info */
-       scr_printf("%s\nAccess level: %d (%s)\n"
-                  "User #%ld / %d Calls / %d Posts", _fullname, _axlevel, axdefs[(int) _axlevel], _usernum, _timescalled, _posted);
        if (_lastcall > 0L) {
-               scr_printf(" / Curr login: %s", asctime(localtime(&_lastcall)));
+               scr_printf("Last login: %s", asctime(localtime(&_lastcall)));
        }
        scr_printf("\n");
 
@@ -949,8 +903,7 @@ void read_config(CtdlIPC * ipc)
 /*
  * Display system statistics.
  */
-void system_info(CtdlIPC * ipc)
-{
+void system_info(CtdlIPC * ipc) {
        char buf[SIZ];
        char *resp = NULL;
        size_t bytes;
@@ -990,8 +943,7 @@ void system_info(CtdlIPC * ipc)
 /*
  * forget all rooms on current floor
  */
-void forget_this_floor(CtdlIPC * ipc)
-{
+void forget_this_floor(CtdlIPC * ipc) {
        if (curr_floor == 0) {
                scr_printf("Can't forget this floor.\n");
                return;
@@ -1011,8 +963,7 @@ void forget_this_floor(CtdlIPC * ipc)
 /*
  * set floor mode depending on client, server, and user settings
  */
-void set_floor_mode(CtdlIPC * ipc)
-{
+void set_floor_mode(CtdlIPC * ipc) {
        if (ipc->ServInfo.ok_floors == 0) {
                floor_mode = 0; /* Don't use floors if the server */
        }
@@ -1033,8 +984,7 @@ void set_floor_mode(CtdlIPC * ipc)
 /*
  * Set or change the user's password
  */
-int set_password(CtdlIPC * ipc)
-{
+int set_password(CtdlIPC * ipc) {
        char pass1[20];
        char pass2[20];
        char buf[SIZ];
@@ -1042,7 +992,8 @@ int set_password(CtdlIPC * ipc)
        if (!IsEmptyStr(rc_password)) {
                strcpy(pass1, rc_password);
                strcpy(pass2, rc_password);
-       } else {
+       }
+       else {
                IFNEXPERT formout(ipc, "changepw");
                newprompt("Enter a new password: ", pass1, -19);
                newprompt("Enter it again to confirm: ", pass2, -19);
@@ -1054,7 +1005,8 @@ int set_password(CtdlIPC * ipc)
                scr_printf("%s\n", buf);
                offer_to_remember_password(ipc, hostbuf, portbuf, fullname, pass1);
                return (0);
-       } else {
+       }
+       else {
                scr_printf("*** They don't match... try again.\n");
                return (1);
        }
@@ -1064,8 +1016,7 @@ int set_password(CtdlIPC * ipc)
 /*
  * get info about the server we've connected to
  */
-void get_serv_info(CtdlIPC * ipc, char *supplied_hostname)
-{
+void get_serv_info(CtdlIPC * ipc, char *supplied_hostname) {
        char buf[SIZ];
 
        CtdlIPCServerInfo(ipc, buf);
@@ -1077,11 +1028,10 @@ void get_serv_info(CtdlIPC * ipc, char *supplied_hostname)
                                /* Look up the , in the bible if you're confused */
                                (locate_host(ipc, buf), buf), buf);
 
-       /* Indicate to the server that we prefer to decode Base64 and
-        * quoted-printable on the client side.
-        */
+       // Indicate to the server that we prefer to decode Base64 and
+       // quoted-printable on the client side.
        if ((CtdlIPCSpecifyPreferredFormats(ipc, buf, "dont_decode") / 100) != 2) {
-               scr_printf("ERROR: Extremely old server; MSG4 framework not supported.\n");
+               scr_printf("Error %s:%d", __FILE__, __LINE__);
                logoff(ipc, 0);
        }
 
@@ -1094,7 +1044,7 @@ void get_serv_info(CtdlIPC * ipc, char *supplied_hostname)
         * the plain text when we have it available.
         */
        if ((CtdlIPCSpecifyPreferredFormats(ipc, buf, "text/plain|text/html|text/x-markdown") / 100) != 2) {
-               scr_printf("ERROR: Extremely old server; MSG4 framework not supported.\n");
+               scr_printf("Error %s:%d", __FILE__, __LINE__);
                logoff(ipc, 0);
        }
 }
@@ -1103,8 +1053,7 @@ void get_serv_info(CtdlIPC * ipc, char *supplied_hostname)
 /*
  * Session username compare function for SortOnlineUsers()
  */
-int rwho_username_cmp(const void *rec1, const void *rec2)
-{
+int rwho_username_cmp(const void *rec1, const void *rec2) {
        char *u1, *u2;
 
        u1 = strchr(rec1, '|');
@@ -1117,8 +1066,7 @@ int rwho_username_cmp(const void *rec1, const void *rec2)
 /*
  * Idle time compare function for SortOnlineUsers()
  */
-int idlecmp(const void *rec1, const void *rec2)
-{
+int idlecmp(const void *rec1, const void *rec2) {
        time_t i1, i2;
 
        i1 = extract_long(rec1, 5);
@@ -1140,8 +1088,7 @@ int idlecmp(const void *rec1, const void *rec2)
  * If 'condense' is nonzero, multiple sessions for the same user will be
  * combined into one for brevity.
  */
-char *SortOnlineUsers(char *listing, int condense)
-{
+char *SortOnlineUsers(char *listing, int condense) {
        int rows;
        char *sortbuf;
        char *retbuf;
@@ -1206,8 +1153,7 @@ char *SortOnlineUsers(char *listing, int condense)
 /*
  * Display list of users currently logged on to the server
  */
-void who_is_online(CtdlIPC * ipc, int longlist)
-{
+void who_is_online(CtdlIPC * ipc, int longlist) {
        char buf[SIZ], username[SIZ], roomname[SIZ], fromhost[SIZ];
        char flags[SIZ];
        char actual_user[SIZ], actual_room[SIZ], actual_host[SIZ];
@@ -1343,8 +1289,7 @@ void who_is_online(CtdlIPC * ipc, int longlist)
 }
 
 
-void enternew(CtdlIPC * ipc, char *desc, char *buf, int maxlen)
-{
+void enternew(CtdlIPC * ipc, char *desc, char *buf, int maxlen) {
        char bbb[128];
        snprintf(bbb, sizeof bbb, "Enter in your new %s: ", desc);
        newprompt(bbb, buf, maxlen);
@@ -1374,10 +1319,8 @@ int main(int argc, char **argv) {
        int a, b, mcmd;
        char aaa[100], bbb[100];        /* general purpose variables */
        char argbuf[64];        /* command line buf */
-       char nonce[NONCE_SIZE];
        char *telnet_client_host = NULL;
        char *sptr, *sptr2;     /* USed to extract the nonce */
-       char hexstring[MD5_HEXSTRING_SIZE];
        char password[SIZ];
        struct ctdlipcmisc chek;
        struct ctdluser *myself = NULL;
@@ -1473,23 +1416,7 @@ int main(int argc, char **argv) {
                logoff(ipc, atoi(aaa));
        }
 
-       /* If there is a [nonce] at the end, put the nonce in <nonce>, else nonce
-        * is zeroized.
-        */
-
-       if ((sptr = strchr(aaa, '<')) == NULL) {
-               nonce[0] = '\0';
-       } else {
-               if ((sptr2 = strchr(sptr, '>')) == NULL) {
-                       nonce[0] = '\0';
-               } else {
-                       sptr2++;
-                       *sptr2 = '\0';
-                       strncpy(nonce, sptr, (size_t) NONCE_SIZE);
-               }
-       }
-
-#ifdef HAVE_OPENSSL
+#ifdef HAVE_OPENSSLLLLLL
        /* Evaluate encryption preferences */
        if (arg_encrypt != RC_NO && rc_encrypt != RC_NO) {
                if (!ipc->isLocal || arg_encrypt == RC_YES || rc_encrypt == RC_YES) {
@@ -1514,19 +1441,13 @@ int main(int argc, char **argv) {
                if (!IsEmptyStr(fullname)) {
                        r = CtdlIPCTryLogin(ipc, fullname, aaa);
                        if (r / 100 == 3) {
-                               if (*nonce) {
-                                       r = CtdlIPCTryApopPassword(ipc,
-                                                                  make_apop_string(password, nonce, hexstring, sizeof hexstring),
-                                                                  aaa);
-                               } else {
-                                       r = CtdlIPCTryPassword(ipc, password, aaa);
-                               }
+                               r = CtdlIPCTryPassword(ipc, password, aaa);
                        }
-
                        if (r / 100 == 2) {
                                load_user_info(aaa);
                                goto PWOK;
-                       } else {
+                       }
+                       else {
                                set_stored_password(hostbuf, portbuf, "", "");
                        }
                }
@@ -1537,7 +1458,8 @@ int main(int argc, char **argv) {
        do {
                if (!IsEmptyStr(rc_username)) {
                        strcpy(fullname, rc_username);
-               } else {
+               }
+               else {
                        newprompt("Enter your name: ", fullname, 29);
                }
                strproc(fullname);
@@ -1566,22 +1488,15 @@ int main(int argc, char **argv) {
        /* password authentication */
        if (!IsEmptyStr(rc_password)) {
                strcpy(password, rc_password);
-       } else {
+       }
+       else {
                newprompt("\rPlease enter your password: ", password, -(SIZ - 1));
        }
 
-       if (*nonce) {
-               r = CtdlIPCTryApopPassword(ipc, make_apop_string(password, nonce, hexstring, sizeof hexstring), aaa);
-               if (r / 100 != 2) {
-                       strproc(password);
-                       r = CtdlIPCTryApopPassword(ipc, make_apop_string(password, nonce, hexstring, sizeof hexstring), aaa);
-               }
-       } else {
+       r = CtdlIPCTryPassword(ipc, password, aaa);
+       if (r / 100 != 2) {
+               strproc(password);
                r = CtdlIPCTryPassword(ipc, password, aaa);
-               if (r / 100 != 2) {
-                       strproc(password);
-                       r = CtdlIPCTryPassword(ipc, password, aaa);
-               }
        }
 
        if (r / 100 == 2) {
@@ -1628,10 +1543,8 @@ int main(int argc, char **argv) {
        }
 
        color(BRIGHT_WHITE);
-       scr_printf("\n%s\nAccess level: %d (%s)\n"
-                  "User #%ld / Login #%d", fullname, axlevel, axdefs[(int) axlevel], usernum, timescalled);
        if (lastcall > 0L) {
-               scr_printf(" / Last login: %s", asctime(localtime(&lastcall)));
+               scr_printf("Last login: %s", asctime(localtime(&lastcall)));
        }
        scr_printf("\n");
 
@@ -1888,7 +1801,8 @@ int main(int argc, char **argv) {
                                                if (atoi(aaa)) {
                                                        scr_printf
                                                            ("The Citadel server will terminate when all users are logged off.\n");
-                                               } else {
+                                               }
+                                               else {
                                                        scr_printf("The Citadel server will not terminate.\n");
                                                }
                                        }