fix dlen
[citadel.git] / textclient / citadel.c
index 16941d6a5f6fa488f64b011b51ed24030781f3b3..ba1be6cb3ce5ce958e1fdc893543fbba34ef943a 100644 (file)
@@ -2,13 +2,7 @@
 //
 // 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,9 +58,7 @@ CtdlIPC *ipc_for_signal_handlers;     /* KLUDGE cover your eyes */
 int enable_syslog = 0;
 
 
-/*
- * here is our 'clean up gracefully and exit' routine
- */
+// Here is our 'clean up gracefully and exit' routine
 void ctdl_logoff(char *file, int line, CtdlIPC * ipc, int code) {
        int lp;
 
@@ -76,41 +66,31 @@ void ctdl_logoff(char *file, int line, CtdlIPC * ipc, int code) {
                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
 }
 
 
@@ -156,7 +136,7 @@ void formout(CtdlIPC * ipc, char *name) {
 
 void userlist(CtdlIPC * ipc, char *patn) {
        char buf[SIZ];
-       char fl[26];            // a buffer this small will prevent it overrunning the column
+       char fl[64];            // a buffer this small will prevent it overrunning the column
        struct tm tmbuf;
        time_t lc;
        int r;                  // IPC response code
@@ -168,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);
@@ -178,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));
                                }
 
                        }
@@ -193,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;
 
@@ -243,10 +215,8 @@ 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.
- */
+// 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;
@@ -276,13 +246,10 @@ char *pop_march(int desired_floor, struct march *_march) {
 }
 
 
-/*
- * jump directly to a room
- */
+// 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;
@@ -425,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
 }
 
 
@@ -461,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);
 
@@ -498,15 +463,13 @@ void gotonext(CtdlIPC * ipc) {
 }
 
 
-/*
- * forget all rooms on a given floor
- */
+// 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);
@@ -533,9 +496,7 @@ void forget_all_rooms_on(CtdlIPC * ipc, int ffloor) {
 }
 
 
-/*
- * routine called by gotofloor() to move to a new room on a new floor
- */
+// 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;
 
@@ -557,9 +518,7 @@ void gf_toroom(CtdlIPC * ipc, char *towhere, int mode) {
 }
 
 
-/*
- * go to a new floor
- */
+// go to a new floor
 void gotofloor(CtdlIPC * ipc, char *towhere, int mode) {
        int a, tofloor;
        int r;                  /* IPC response code */
@@ -855,7 +814,7 @@ void read_config(CtdlIPC * ipc) {
        int r;                  /* IPC response code */
        char _fullname[USERNAME_SIZE];
        long _usernum;
-       int _axlevel, _timescalled, _posted;
+       int _axlevel;
        time_t _lastcall;
        struct ctdluser *user = NULL;
 
@@ -869,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;
 
@@ -883,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");
 
@@ -1073,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);
        }
 
@@ -1090,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);
        }
 }
@@ -1589,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");