From 0f69e97f44787d6796c54970ccc7d4fb1a47603e Mon Sep 17 00:00:00 2001 From: Michiel Broek Date: Fri, 7 Oct 2005 20:42:35 +0000 Subject: [PATCH] Switched to detected screensize --- lib/mbselib.h | 2 +- lib/users.h | 4 +- mbfido/mbmsg.c | 8 +- mbsebbs/chat.c | 21 +-- mbsebbs/dispfile.c | 8 +- mbsebbs/door.c | 5 +- mbsebbs/file.c | 12 +- mbsebbs/filesub.c | 3 +- mbsebbs/fsedit.c | 24 +-- mbsebbs/funcs.c | 337 +++++++++++++++++++----------------------- mbsebbs/lastcallers.c | 10 +- mbsebbs/mail.c | 7 +- mbsebbs/mbnewusr.c | 10 +- mbsebbs/mbsebbs.c | 11 +- mbsebbs/morefile.c | 5 +- mbsebbs/newuser.c | 7 +- mbsebbs/newuser.h | 2 +- mbsebbs/offline.c | 8 +- mbsebbs/user.c | 6 +- mbsebbs/userlist.c | 5 +- 20 files changed, 253 insertions(+), 242 deletions(-) diff --git a/lib/mbselib.h b/lib/mbselib.h index e76bac23..0da65c81 100644 --- a/lib/mbselib.h +++ b/lib/mbselib.h @@ -1027,7 +1027,7 @@ struct sysconfig { unsigned GiveEmail : 1; /* Give user email */ unsigned AskAddress : 1; /* Ask Home Address */ unsigned iOneName : 1; /* Allow one user name */ - unsigned AskScreenlen : 1; /* Ask screenlength */ + unsigned xAskScreenlen : 1; unsigned iCrashLevel; /* User level for crash mail*/ unsigned iAttachLevel; /* User level for fileattach*/ diff --git a/lib/users.h b/lib/users.h index 20b0378a..fba29740 100644 --- a/lib/users.h +++ b/lib/users.h @@ -4,7 +4,7 @@ * Purpose ...............: MBSE BBS Users Database structure * ***************************************************************************** - * Copyright (C) 1997-2004 + * Copyright (C) 1997-2005 * * Michiel Broek FIDO: 2:280/2802 * Beekmansbos 10 @@ -112,7 +112,7 @@ struct userrec { int iTimeLeft; /* Time left today */ int iConnectTime; /* Connect time this call */ int iTimeUsed; /* Time used today */ - int iScreenLen; /* User Screen Length */ + int xScreenLen; time_t tLastPwdChange; /* Date last password chg */ unsigned xHangUps; long Credit; /* Users credit */ diff --git a/mbfido/mbmsg.c b/mbfido/mbmsg.c index b6dcc9e5..bc745dbe 100644 --- a/mbfido/mbmsg.c +++ b/mbfido/mbmsg.c @@ -203,7 +203,10 @@ void Help() void die(int onsig) { - signal(onsig, SIG_IGN); + if (onsig && (onsig <= NSIG)) { + signal(onsig, SIG_IGN); + } + if (!do_quiet) { printf("\r"); mbse_colour(CYAN, BLACK); @@ -221,9 +224,6 @@ void die(int onsig) WriteError("Terminated with error %d", onsig); } - if (onsig == SIGSEGV) - Syslog('+', "Last msg area %s", msgs.Name); - if (are_tot || are_proc || msg_link) Syslog('+', "Areas [%6d] Processed [%6d] Linked [%6d]", are_tot, are_proc, msg_link); if (msg_tot || msg_del) diff --git a/mbsebbs/chat.c b/mbsebbs/chat.c index 0b378975..63873e53 100644 --- a/mbsebbs/chat.c +++ b/mbsebbs/chat.c @@ -49,6 +49,9 @@ char rbuf[50][81]; /* Chat receive buffer */ /* FIXME: must be a dynamic b int rpointer = 0; /* Chat receive pointer */ int rsize = 5; /* Chat receive size */ extern pid_t mypid; +extern int cols; +extern int rows; + void Showline(int, int, char *); @@ -168,7 +171,7 @@ void Chat(char *username, char *channel) WhosDoingWhat(SYSOPCHAT, NULL); clear(); - rsize = exitinfo.iScreenLen - 5; + rsize = rows - 5; rpointer = 0; if (SYSOP == TRUE) { @@ -205,7 +208,7 @@ void Chat(char *username, char *channel) locate(1, 1); colour(WHITE, BLUE); clrtoeol(); - snprintf(buf, 200, "%-*s", 79, " MBSE BBS Chat Server"); + snprintf(buf, 200, "%-*s", cols -1, " MBSE BBS Chat Server"); mvprintw(1, 1, buf); snprintf(buf, 200, "CCON,4,%d,%s,%s,0;", mypid, exitinfo.sUserName, exitinfo.Name); @@ -224,14 +227,14 @@ void Chat(char *username, char *channel) } } - locate(exitinfo.iScreenLen - 2, 1); + locate(rows - 2, 1); colour(WHITE, BLUE); clrtoeol(); - snprintf(buf, 200, "%-*s", 79, " Chat, type \"/EXIT\" to exit or \"/HELP\" for help"); - mvprintw(exitinfo.iScreenLen - 2, 1, buf); + snprintf(buf, 200, "%-*s", cols -1, " Chat, type \"/EXIT\" to exit or \"/HELP\" for help"); + mvprintw(rows - 2, 1, buf); colour(LIGHTGRAY, BLACK); - mvprintw(exitinfo.iScreenLen - 1, 1, ">"); + mvprintw(rows - 1, 1, ">"); memset(&sbuf, 0, sizeof(sbuf)); memset(&rbuf, 0, sizeof(rbuf)); @@ -290,7 +293,7 @@ void Chat(char *username, char *channel) * Check for a pressed key, if so then process it. * Allow hi-ascii for multi-language. */ - ch = testkey(exitinfo.iScreenLen -1, curpos + 2); + ch = testkey(rows -1, curpos + 2); if ((ch == KEY_BACKSPACE) || (ch == KEY_RUBOUT) || (ch == KEY_DEL)) { alarm_on(); if (curpos) { @@ -333,9 +336,9 @@ void Chat(char *username, char *channel) } curpos = 0; memset(&sbuf, 0, sizeof(sbuf)); - locate(exitinfo.iScreenLen - 1, 2); + locate(rows - 1, 2); clrtoeol(); - mvprintw(exitinfo.iScreenLen - 1, 1, ">"); + mvprintw(rows - 1, 1, ">"); } } chatting = FALSE; diff --git a/mbsebbs/dispfile.c b/mbsebbs/dispfile.c index b667abbe..aeb15d19 100644 --- a/mbsebbs/dispfile.c +++ b/mbsebbs/dispfile.c @@ -50,6 +50,10 @@ #include "ttyio.h" +extern int rows; + + + /* * Function returns total number of bbs users */ @@ -184,7 +188,7 @@ int DisplayTextFile(char *filename) Enter(1); lc++; - if ((lc >= exitinfo.iScreenLen) && (lc < 1000)) { + if ((lc >= rows) && (lc < 1000)) { lc = 0; /* More (Y/n/=) */ pout(CFG.MoreF, CFG.MoreB, (char *) Language(61)); @@ -467,7 +471,7 @@ void ControlCodeU(int ch) break; case 'M': - snprintf(temp, 81, "%d", exitinfo.iScreenLen); + snprintf(temp, 81, "%d", rows); break; case 'N': diff --git a/mbsebbs/door.c b/mbsebbs/door.c index a3d33c76..07992e0f 100644 --- a/mbsebbs/door.c +++ b/mbsebbs/door.c @@ -46,7 +46,8 @@ extern time_t t_start; extern int e_pid; extern char **environ; - +extern int cols; +extern int rows; char *Gdate(time_t, int); @@ -220,7 +221,7 @@ void ExtDoor(char *Program, int NoDoorsys, int Y2Kdoorsys, int Comport, int NoSu fprintf(fp, "%d\r\n", exitinfo.iTimeLeft * 60); /* Seconds */ fprintf(fp, "%d\r\n", exitinfo.iTimeLeft); /* Minutes */ fprintf(fp, "%s\r\n", exitinfo.GraphMode?"GR":"NG"); /* Graphics GR,RIP,NG */ - fprintf(fp, "%d\r\n", exitinfo.iScreenLen); + fprintf(fp, "%d\r\n", rows); fprintf(fp, "N\r\n"); /* User mode, always N */ fprintf(fp, "\r\n"); /* Always blank */ fprintf(fp, "\r\n"); /* Always blank */ diff --git a/mbsebbs/file.c b/mbsebbs/file.c index 0dc3239b..ac7bbffa 100644 --- a/mbsebbs/file.c +++ b/mbsebbs/file.c @@ -51,10 +51,10 @@ -extern long arecno; /* File area number in xxxScan() functions */ -int Strlen = 0; -int FileRecno = 0; - +extern long arecno; /* File area number in xxxScan() functions */ +int Strlen = 0; +int FileRecno = 0; +extern int rows; int CheckFile(char *, int); @@ -461,7 +461,7 @@ void File_RawDir(char *OpData) Enter(1); LineCount++; - if (LineCount == exitinfo.iScreenLen) { + if (LineCount == rows) { Pause(); LineCount = 0; } @@ -1430,7 +1430,7 @@ void FileArea_List(char *Option) Recno++; - if ((iAreaCount / 2) == exitinfo.iScreenLen) { + if ((iAreaCount / 2) == rows) { /* More (Y/n/=/Area #): */ pout(CFG.MoreF, CFG.MoreB, (char *) Language(207)); /* diff --git a/mbsebbs/filesub.c b/mbsebbs/filesub.c index 48b26d36..c9f3ba25 100644 --- a/mbsebbs/filesub.c +++ b/mbsebbs/filesub.c @@ -48,6 +48,7 @@ extern pid_t mypid; long arecno = 1; /* Area record number */ int Hcolor = 9; /* Color of area line in xxxScan() functions */ +extern int rows; /* @@ -309,7 +310,7 @@ int iLC(int Lines) x = strlen(Language(131)); iLineCount += Lines; - if ((iLineCount >= exitinfo.iScreenLen) && (iLineCount < 1000)) { + if ((iLineCount >= rows) && (iLineCount < 1000)) { iLineCount = 0; while (TRUE) { diff --git a/mbsebbs/fsedit.c b/mbsebbs/fsedit.c index ec61168d..96ea5761 100644 --- a/mbsebbs/fsedit.c +++ b/mbsebbs/fsedit.c @@ -42,6 +42,10 @@ #include "ttyio.h" +extern int cols; +extern int rows; + + void Show_Ins(void) { locate(1, 70); @@ -180,7 +184,7 @@ void Refresh(void) colour(CFG.TextColourF, CFG.TextColourB); for (i = 1; i <= Line; i++) { - if ((i >= TopVisible) && (i < (TopVisible + exitinfo.iScreenLen -1))) { + if ((i >= TopVisible) && (i < (TopVisible + rows -1))) { locate(j, 1); j++; PUTSTR(Message[i]); @@ -259,13 +263,13 @@ void FsMove(unsigned char Direction) * Handle long lines better. * For now, we will just refuse to go past col 80 */ - if ((Col <= strlen(Message[CurRow])) && (Col < 80)){ + if ((Col <= strlen(Message[CurRow])) && (Col < cols)){ Col++; Setcursor(); } else if (Row < (Line - TopVisible +1)) { Row++; Col = 1; - if (Row > (exitinfo.iScreenLen -1)) ScrollDown(); + if (Row > (rows -1)) ScrollDown(); Refresh(); } else Beep(); @@ -282,8 +286,8 @@ void FsMove(unsigned char Direction) * Handle long lines better. * For now, we will just refuse to go past col 80 */ - if (Col > 80) - Col = 80; + if (Col > cols) + Col = cols; if (Row == 1) ScrollUp(); Row--; @@ -310,7 +314,7 @@ void FsMove(unsigned char Direction) Row++; if (Col > strlen(Message[CurRow+1]) + 1) Col = strlen(Message[CurRow+1]) + 1; - if (Row <= (exitinfo.iScreenLen -1)) + if (Row <= (rows -1)) Setcursor(); else ScrollDown(); @@ -339,10 +343,10 @@ int FsWordWrap() WCol = 79; while (Message[CurRow][WCol] != ' ' && WCol > 0) WCol--; - if ((WCol > 0) && (WCol < 80)) + if ((WCol > 0) && (WCol < cols)) WCol++; else - WCol=80; + WCol=cols; if (WCol <= strlen(Message[CurRow])) { /* * If WCol = 80 (no spaces in line) be sure to grab @@ -445,7 +449,7 @@ int Fs_Edit() Line++; Row++; Col = 1; - if (Row >= (exitinfo.iScreenLen -1)) + if (Row >= (rows -1)) ScrollDown(); Refresh(); Changed = TRUE; @@ -756,7 +760,7 @@ int Fs_Edit() Col--; Row++; } - if (Row > (exitinfo.iScreenLen -1)) + if (Row > (rows -1)) ScrollDown(); else Refresh(); diff --git a/mbsebbs/funcs.c b/mbsebbs/funcs.c index 58dd3603..a8b93eb8 100644 --- a/mbsebbs/funcs.c +++ b/mbsebbs/funcs.c @@ -45,7 +45,7 @@ extern pid_t mypid; /* Original pid */ void UserSilent(int flag) { - SockS("ADIS:2,%d,%d;", mypid, flag); + SockS("ADIS:2,%d,%d;", mypid, flag); } @@ -60,7 +60,7 @@ int CheckStatus() snprintf(buf, 81, "SBBS:0;"); if (socket_send(buf) == 0) { - strcpy(buf, socket_receive()); + strncpy(buf, socket_receive(), 80); if (strncmp(buf, "100:2,0", 7) == 0) return TRUE; if ((strncmp(buf, "100:2,2", 7) == 0) && (!ttyinfo.honor_zmh)) @@ -179,112 +179,112 @@ int CheckUnixNames(char *name) */ char *ChangeHomeDir(char *Name, int Mailboxes) { - char *temp; - static char temp1[PATH_MAX]; - FILE *fp; + char *temp; + static char temp1[PATH_MAX]; + FILE *fp; - temp = calloc(PATH_MAX, sizeof(char)); + temp = calloc(PATH_MAX, sizeof(char)); - /* - * set umask bits to zero's then reset with mkdir - */ - umask(000); - - /* - * First check to see if users home directory exists - * else try create directory, as set in CFG.bbs_usersdir - */ - if ((access(CFG.bbs_usersdir, R_OK)) != 0) { - WriteError("$FATAL: Access to %s failed", CFG.bbs_usersdir); - free(temp); - ExitClient(MBERR_INIT_ERROR); - } - - snprintf(temp1, PATH_MAX, "%s/%s", CFG.bbs_usersdir, Name); - - /* - * Then check to see if users directory exists in the home dir - */ - if ((access(temp1, R_OK)) != 0) { - WriteError("$FATAL: Users homedir %s doesn't exist", temp1); - free(temp); - ExitClient(MBERR_INIT_ERROR); - } - - /* - * Change to users home directory - */ - if (chdir(temp1) != 0) { - WriteError("$FATAL: Can't change to users home dir, aborting: %s", temp1); - free(temp); - ExitClient(MBERR_INIT_ERROR); - } - setenv("HOME", temp1, 1); - - /* - * Check if user has a .signature file. - * If not, create a simple one. - */ - snprintf(temp, PATH_MAX, "%s/%s/.signature", CFG.bbs_usersdir, Name); - if (access(temp, R_OK)) { - Syslog('+', "Creating users .signature file"); - if ((fp = fopen(temp, "w")) == NULL) { - WriteError("$Can't create %s", temp); - } else { - fprintf(fp, " Greetings, %s\n", exitinfo.sUserName); - if ((CFG.EmailMode == E_PRMISP) && exitinfo.Email && CFG.GiveEmail) - fprintf(fp, " email: %s@%s\n", exitinfo.Name, CFG.sysdomain); - fclose(fp); - } - } - - /* - * Check subdirectories, create them if they don't exist. - */ - snprintf(temp, PATH_MAX, "%s/wrk", temp1); - CheckDir(temp); - snprintf(temp, PATH_MAX, "%s/tag", temp1); - CheckDir(temp); - snprintf(temp, PATH_MAX, "%s/upl", temp1); - CheckDir(temp); - snprintf(temp, PATH_MAX, "%s/tmp", temp1); - CheckDir(temp); - snprintf(temp, PATH_MAX, "%s/.dosemu", temp1); - CheckDir(temp); - snprintf(temp, PATH_MAX, "%s/.dosemu/run", temp1); - CheckDir(temp); - snprintf(temp, PATH_MAX, "%s/.dosemu/tmp", temp1); - CheckDir(temp); - umask(007); - - /* - * Check users private emailboxes - */ - if (Mailboxes) { - snprintf(temp, PATH_MAX, "%s/mailbox", temp1); - if (Msg_Open(temp)) - Msg_Close(); - snprintf(temp, PATH_MAX, "%s/archive", temp1); - if (Msg_Open(temp)) - Msg_Close(); - snprintf(temp, PATH_MAX, "%s/trash", temp1); - if (Msg_Open(temp)) - Msg_Close(); - } + /* + * set umask bits to zero's then reset with mkdir + */ + umask(000); + /* + * First check to see if users home directory exists + * else try create directory, as set in CFG.bbs_usersdir + */ + if ((access(CFG.bbs_usersdir, R_OK)) != 0) { + WriteError("$FATAL: Access to %s failed", CFG.bbs_usersdir); free(temp); - return temp1; + ExitClient(MBERR_INIT_ERROR); + } + + snprintf(temp1, PATH_MAX, "%s/%s", CFG.bbs_usersdir, Name); + + /* + * Then check to see if users directory exists in the home dir + */ + if ((access(temp1, R_OK)) != 0) { + WriteError("$FATAL: Users homedir %s doesn't exist", temp1); + free(temp); + ExitClient(MBERR_INIT_ERROR); + } + + /* + * Change to users home directory + */ + if (chdir(temp1) != 0) { + WriteError("$FATAL: Can't change to users home dir, aborting: %s", temp1); + free(temp); + ExitClient(MBERR_INIT_ERROR); + } + setenv("HOME", temp1, 1); + + /* + * Check if user has a .signature file. + * If not, create a simple one. + */ + snprintf(temp, PATH_MAX, "%s/%s/.signature", CFG.bbs_usersdir, Name); + if (access(temp, R_OK)) { + Syslog('+', "Creating users .signature file"); + if ((fp = fopen(temp, "w")) == NULL) { + WriteError("$Can't create %s", temp); + } else { + fprintf(fp, " Greetings, %s\n", exitinfo.sUserName); + if ((CFG.EmailMode == E_PRMISP) && exitinfo.Email && CFG.GiveEmail) + fprintf(fp, " email: %s@%s\n", exitinfo.Name, CFG.sysdomain); + fclose(fp); + } + } + + /* + * Check subdirectories, create them if they don't exist. + */ + snprintf(temp, PATH_MAX, "%s/wrk", temp1); + CheckDir(temp); + snprintf(temp, PATH_MAX, "%s/tag", temp1); + CheckDir(temp); + snprintf(temp, PATH_MAX, "%s/upl", temp1); + CheckDir(temp); + snprintf(temp, PATH_MAX, "%s/tmp", temp1); + CheckDir(temp); + snprintf(temp, PATH_MAX, "%s/.dosemu", temp1); + CheckDir(temp); + snprintf(temp, PATH_MAX, "%s/.dosemu/run", temp1); + CheckDir(temp); + snprintf(temp, PATH_MAX, "%s/.dosemu/tmp", temp1); + CheckDir(temp); + umask(007); + + /* + * Check users private emailboxes + */ + if (Mailboxes) { + snprintf(temp, PATH_MAX, "%s/mailbox", temp1); + if (Msg_Open(temp)) + Msg_Close(); + snprintf(temp, PATH_MAX, "%s/archive", temp1); + if (Msg_Open(temp)) + Msg_Close(); + snprintf(temp, PATH_MAX, "%s/trash", temp1); + if (Msg_Open(temp)) + Msg_Close(); + } + + free(temp); + return temp1; } void CheckDir(char *dir) { - if ((access(dir, R_OK) != 0)) { - Syslog('+', "Creating %s", dir); - if (mkdir(dir, 0770)) - WriteError("$Can't create %s", dir); - } + if ((access(dir, R_OK) != 0)) { + Syslog('+', "Creating %s", dir); + if (mkdir(dir, 0770)) + WriteError("$Can't create %s", dir); + } } @@ -295,42 +295,42 @@ void CheckDir(char *dir) */ void FindMBSE() { - FILE *pDataFile; - static char p[81]; - char *FileName; - struct passwd *pw; + FILE *pDataFile; + static char p[81]; + char *FileName; + struct passwd *pw; - FileName = calloc(PATH_MAX, sizeof(char)); + FileName = calloc(PATH_MAX, sizeof(char)); - /* - * Check if the environment is set, if not, then we create the - * environment from the passwd file. - */ - if (getenv("MBSE_ROOT") == NULL) { - pw = getpwnam("mbse"); - memset(&p, 0, sizeof(p)); - snprintf(p, 81, "MBSE_ROOT=%s", pw->pw_dir); - putenv(p); - } + /* + * Check if the environment is set, if not, then we create the + * environment from the passwd file. + */ + if (getenv("MBSE_ROOT") == NULL) { + pw = getpwnam("mbse"); + memset(&p, 0, sizeof(p)); + snprintf(p, 81, "MBSE_ROOT=%s", pw->pw_dir); + putenv(p); + } - if (getenv("MBSE_ROOT") == NULL) { - printf("FATAL ERROR: Environment variable MBSE_ROOT not set\n"); - free(FileName); - exit(MBERR_INIT_ERROR); - } - snprintf(FileName, PATH_MAX, "%s/etc/config.data", getenv("MBSE_ROOT")); - - if(( pDataFile = fopen(FileName, "rb")) == NULL) { - printf("FATAL ERROR: Can't open %s for reading!\n", FileName); - printf("Please run mbsetup to create configuration file.\n"); - printf("Or check that your environment variable MBSE_ROOT is set to the BBS Path!\n"); - free(FileName); - exit(MBERR_CONFIG_ERROR); - } - - fread(&CFG, sizeof(CFG), 1, pDataFile); + if (getenv("MBSE_ROOT") == NULL) { + printf("FATAL ERROR: Environment variable MBSE_ROOT not set\n"); free(FileName); - fclose(pDataFile); + exit(MBERR_INIT_ERROR); + } + snprintf(FileName, PATH_MAX, "%s/etc/config.data", getenv("MBSE_ROOT")); + + if (( pDataFile = fopen(FileName, "rb")) == NULL) { + printf("FATAL ERROR: Can't open %s for reading!\n", FileName); + printf("Please run mbsetup to create configuration file.\n"); + printf("Or check that your environment variable MBSE_ROOT is set to the BBS Path!\n"); + free(FileName); + exit(MBERR_CONFIG_ERROR); + } + + fread(&CFG, sizeof(CFG), 1, pDataFile); + free(FileName); + fclose(pDataFile); } @@ -340,50 +340,25 @@ void FindMBSE() */ char *GetMonth(int Month) { - static char month[10]; + static char month[10]; - switch (Month) { - case 1: - strcpy(month, *(mLanguage + 398)); - break; - case 2: - strcpy(month, *(mLanguage + 399)); - break; - case 3: - strcpy(month, *(mLanguage + 400)); - break; - case 4: - strcpy(month, *(mLanguage + 401)); - break; - case 5: - strcpy(month, *(mLanguage + 402)); - break; - case 6: - strcpy(month, *(mLanguage + 403)); - break; - case 7: - strcpy(month, *(mLanguage + 404)); - break; - case 8: - strcpy(month, *(mLanguage + 405)); - break; - case 9: - strcpy(month, *(mLanguage + 406)); - break; - case 10: - strcpy(month, *(mLanguage + 407)); - break; - case 11: - strcpy(month, *(mLanguage + 408)); - break; - case 12: - strcpy(month, *(mLanguage + 409)); - break; - default: - strcpy(month, "Unknown"); - } + switch (Month) { + case 1: strcpy(month, *(mLanguage + 398)); break; + case 2: strcpy(month, *(mLanguage + 399)); break; + case 3: strcpy(month, *(mLanguage + 400)); break; + case 4: strcpy(month, *(mLanguage + 401)); break; + case 5: strcpy(month, *(mLanguage + 402)); break; + case 6: strcpy(month, *(mLanguage + 403)); break; + case 7: strcpy(month, *(mLanguage + 404)); break; + case 8: strcpy(month, *(mLanguage + 405)); break; + case 9: strcpy(month, *(mLanguage + 406)); break; + case 10: strcpy(month, *(mLanguage + 407)); break; + case 11: strcpy(month, *(mLanguage + 408)); break; + case 12: strcpy(month, *(mLanguage + 409)); break; + default: strcpy(month, "Unknown"); + } - return(month); + return(month); } @@ -391,19 +366,19 @@ char *GetMonth(int Month) /* Returns DD-Mmm-YYYY */ char *GLCdateyy() { - static char GLcdateyy[15]; - char ntime[15]; + static char GLcdateyy[15]; + char ntime[15]; - Time_Now = time(NULL); - l_date = localtime(&Time_Now); + Time_Now = time(NULL); + l_date = localtime(&Time_Now); - snprintf(GLcdateyy, 15, "%02d-", l_date->tm_mday); + snprintf(GLcdateyy, 15, "%02d-", l_date->tm_mday); - snprintf(ntime, 15, "-%02d", l_date->tm_year+1900); - strcat(GLcdateyy, GetMonth(l_date->tm_mon+1)); - strcat(GLcdateyy,ntime); + snprintf(ntime, 15, "-%02d", l_date->tm_year+1900); + strcat(GLcdateyy, GetMonth(l_date->tm_mon+1)); + strcat(GLcdateyy,ntime); - return(GLcdateyy); + return (GLcdateyy); } diff --git a/mbsebbs/lastcallers.c b/mbsebbs/lastcallers.c index 941dd1f1..c540f1b9 100644 --- a/mbsebbs/lastcallers.c +++ b/mbsebbs/lastcallers.c @@ -49,6 +49,8 @@ extern int LC_Wrote; extern int LC_Chat; extern int LC_Olr; extern int LC_Door; +extern int rows; +extern int cols; @@ -81,7 +83,7 @@ void LastCallers(char *OpData) x = strlen(Heading); - for(i = 0; i < x; i++) + for (i = 0; i < x; i++) snprintf(Underline, 81, "%s%c", Underline, exitinfo.GraphMode ? 196 : 45); colour(LIGHTRED, BLACK); @@ -94,7 +96,7 @@ void LastCallers(char *OpData) Enter(1); colour(GREEN, BLACK); - fLine(79); + fLine(cols -1); while (fread(&lcall, lcallhdr.recsize, 1, pLC) == 1) { if (!lcall.Hidden) { @@ -131,7 +133,7 @@ void LastCallers(char *OpData) Enter(1); LineCount++; - if (LineCount == exitinfo.iScreenLen) { + if (LineCount == rows) { Pause(); LineCount = 0; } @@ -139,7 +141,7 @@ void LastCallers(char *OpData) } colour(GREEN, BLACK); - fLine(79); + fLine(cols -1); fclose(pLC); Enter(1); diff --git a/mbsebbs/mail.c b/mbsebbs/mail.c index 122cbcda..a27cfb2b 100644 --- a/mbsebbs/mail.c +++ b/mbsebbs/mail.c @@ -74,6 +74,7 @@ char *Message[TEXTBUFSIZE +1];/* Message compose text buffer */ FILE *qf; /* Quote file */ extern int do_mailout; extern int LC_Wrote; /* Lastcaller info write message */ +extern int rows; /* @@ -103,7 +104,7 @@ int LC(int Lines) iLineCount += Lines; - if (iLineCount >= exitinfo.iScreenLen && iLineCount < 1000) { + if (iLineCount >= rows && iLineCount < 1000) { iLineCount = 1; pout(CFG.MoreF, CFG.MoreB, (char *) Language(61)); @@ -1955,7 +1956,7 @@ int CheckLine(int FG, int BG, int Email, int Conv) x = strlen(Language(61)); iLineCount++; - if ((iLineCount >= (exitinfo.iScreenLen -1)) && (iLineCount < 1000)) { + if ((iLineCount >= (rows -1)) && (iLineCount < 1000)) { iLineCount = 7; DoNop(); @@ -2208,7 +2209,7 @@ void MsgArea_List(char *Option) Recno++; - if ((iAreaCount / 2) == exitinfo.iScreenLen) { + if ((iAreaCount / 2) == rows) { /* More (Y/n/=/Area #): */ pout(CFG.MoreF, CFG.MoreB, (char *) Language(207)); /* diff --git a/mbsebbs/mbnewusr.c b/mbsebbs/mbnewusr.c index 6b464a3e..3f308780 100644 --- a/mbsebbs/mbnewusr.c +++ b/mbsebbs/mbnewusr.c @@ -44,9 +44,11 @@ #include "openport.h" -extern int do_quiet; /* Logging quiet flag */ +extern int do_quiet; /* Logging quiet flag */ time_t t_start; char *StartTime; +int cols = 80; /* Screen columns */ +int rows = 80; /* Screen rows */ int main(int argc, char **argv) @@ -108,6 +110,8 @@ int main(int argc, char **argv) if (ioctl(1, TIOCGWINSZ, &ws) != -1 && (ws.ws_col > 0) && (ws.ws_row > 0)) { Syslog('b', "columns=%d lines=%d", ws.ws_col, ws.ws_row); + cols = ws.ws_col; + rows = ws.ws_row; } if ((rc = rawport()) != 0) { @@ -167,7 +171,7 @@ int main(int argc, char **argv) * Default set the terminal to ANSI mode. If your logo * is in color, the user will see color no mather what. */ - TermInit(1, 80, 24); + TermInit(1, cols, rows); /* * Now it's time to check if the bbs is open. If not, we @@ -223,7 +227,7 @@ int main(int argc, char **argv) alarm_on(); Pause(); - newuser(ws.ws_row); + newuser(); Fast_Bye(MBERR_OK); return 0; } diff --git a/mbsebbs/mbsebbs.c b/mbsebbs/mbsebbs.c index 76ad323e..5980d087 100644 --- a/mbsebbs/mbsebbs.c +++ b/mbsebbs/mbsebbs.c @@ -48,9 +48,10 @@ -extern int do_quiet; /* Logging quiet flag */ +extern int do_quiet; /* Logging quiet flag */ time_t t_start; - +int cols = 80; /* Screen columns */ +int rows = 24; /* Screen rows */ int main(int argc, char **argv) @@ -101,8 +102,10 @@ int main(int argc, char **argv) Syslog(' ', " "); Syslog(' ', "MBSEBBS v%s", VERSION); - if(ioctl(1, TIOCGWINSZ, &ws) != -1 && ws.ws_col>0 && ws.ws_row>0){ + if (ioctl(1, TIOCGWINSZ, &ws) != -1 && (ws.ws_col > 0) && (ws.ws_row > 0)) { Syslog('b', "columns=%d lines=%d", ws.ws_col, ws.ws_row); + cols = ws.ws_col; + rows = ws.ws_row; } if ((rc = rawport()) != 0) { @@ -166,7 +169,7 @@ int main(int argc, char **argv) * Default set the terminal to ANSI mode. If your logo * is in color, the user will see color no mather what. */ - TermInit(1, 80, 24); + TermInit(1, ws.ws_col, ws.ws_row); /* * Now it's time to check if the bbs is open. If not, we diff --git a/mbsebbs/morefile.c b/mbsebbs/morefile.c index 645230be..30c6daca 100644 --- a/mbsebbs/morefile.c +++ b/mbsebbs/morefile.c @@ -40,13 +40,16 @@ #include "ttyio.h" +extern int rows; + + int MoreFile(char *filename) { char Buf[81]; static FILE *fptr; int lines, input, ignore = FALSE, maxlines; - maxlines = lines = exitinfo.iScreenLen - 2; + maxlines = lines = rows - 2; if ((fptr = fopen(filename,"r")) == NULL) { snprintf(Buf, 81, "%s%s", (char *) Language(72), filename); diff --git a/mbsebbs/newuser.c b/mbsebbs/newuser.c index 7426ae2c..154ecbab 100644 --- a/mbsebbs/newuser.c +++ b/mbsebbs/newuser.c @@ -65,13 +65,15 @@ extern char *ieHandle; /* Users Handle */ extern time_t t_start; /* Program starttime */ int do_mailout = FALSE; /* Just for linking */ int chat_with_sysop = FALSE; /* Just for linking */ +extern int rows; +extern int cols; /* * The main newuser registration function */ -int newuser(int rows) +int newuser(void) { FILE *pUsrConfig; int i, x, Found, iLang, recno = 0, Count = 0, badname; @@ -464,7 +466,8 @@ int newuser(int rows) } else { usrconfig.iScreenLen = 24; } - TermInit(usrconfig.GraphMode, 80, usrconfig.iScreenLen); + rows = usrconfig.iScreenLen; + TermInit(usrconfig.GraphMode, cols, rows); alarm_on(); usrconfig.tLastPwdChange = ltime; /* Days Since Last Password Change */ diff --git a/mbsebbs/newuser.h b/mbsebbs/newuser.h index 1ce4f6b3..9dc832e8 100644 --- a/mbsebbs/newuser.h +++ b/mbsebbs/newuser.h @@ -4,7 +4,7 @@ #define _NEWUSER_H -int newuser(int); +int newuser(void); void Fast_Bye(int); #endif diff --git a/mbsebbs/offline.c b/mbsebbs/offline.c index f4eafef5..1b3bfd50 100644 --- a/mbsebbs/offline.c +++ b/mbsebbs/offline.c @@ -60,6 +60,8 @@ unsigned short BarWidth; lastread LR; static char TempStr[128]; extern int do_mailout; +extern int cols; +extern int rows; char *newtear = NULL; @@ -250,7 +252,7 @@ void OLR_TagArea() GetstrC(buf, 20); if (buf[0] == '?') { - maxlines = lines = exitinfo.iScreenLen - 1; + maxlines = lines = rows - 1; /* Conference Area Msgs Description */ poutCR(LIGHTCYAN, BLACK, (char *)Language(229)); if ((ma = fopen(Msgname, "r")) != NULL) { @@ -390,7 +392,7 @@ void OLR_UntagArea() GetstrC(buf, 20); if (buf[0] == '?') { - maxlines = lines = exitinfo.iScreenLen - 1; + maxlines = lines = rows - 1; /* Conference Area Msgs Description */ poutCR(LIGHTCYAN, BLACK, (char *)Language(229)); if ((ma = fopen(Msgname, "r")) != NULL) { @@ -747,7 +749,7 @@ void OLR_ViewTags() /* Conference Area Msgs Description */ poutCR(LIGHTCYAN, BLACK, (char *)Language(229)); colour(CYAN, BLACK); - maxlines = lines = exitinfo.iScreenLen - 1; + maxlines = lines = rows - 1; while (fread(&msgs, msgshdr.recsize, 1, ma) == 1) { fseek(ma, msgshdr.syssize, SEEK_CUR); diff --git a/mbsebbs/user.c b/mbsebbs/user.c index b87f2cb2..0dfe4339 100644 --- a/mbsebbs/user.c +++ b/mbsebbs/user.c @@ -55,6 +55,8 @@ extern int sock; +extern int cols; +extern int rows; extern pid_t mypid; char *StartTime = NULL; @@ -168,7 +170,7 @@ void SwapDate(char *Date3, char *Date4) -void user() +void user(void) { FILE *pUsrConfig, *pLimits; int i, x, FoundName = FALSE, iFoundLimit = FALSE, IsNew = FALSE, logins = 0, Start; @@ -257,7 +259,7 @@ void user() UserCity(mypid, usrconfig.Name, usrconfig.sLocation); else UserCity(mypid, usrconfig.Name, (char *)"N/A"); - TermInit(usrconfig.GraphMode, 80, usrconfig.iScreenLen); + TermInit(usrconfig.GraphMode, cols, rows); /* * Count simultaneous logins diff --git a/mbsebbs/userlist.c b/mbsebbs/userlist.c index 6c63751f..e6b881b2 100644 --- a/mbsebbs/userlist.c +++ b/mbsebbs/userlist.c @@ -40,6 +40,9 @@ #include "ttyio.h" +extern int rows; + + void UserList(char *OpData) { FILE *pUsrConfig; @@ -133,7 +136,7 @@ void UserList(char *OpData) Enter(1); } - if (LineCount >= exitinfo.iScreenLen - 2) { + if (LineCount >= rows - 2) { LineCount = 0; Pause(); colour(CYAN, BLACK);