diff --git a/src/sbbs3/getstr.cpp b/src/sbbs3/getstr.cpp index 09f05f0cd9fe7f5208c5c55a2541f81853724f94..0f13685164ff5ace373ac7eee1164c1fa5a872fe 100644 --- a/src/sbbs3/getstr.cpp +++ b/src/sbbs3/getstr.cpp @@ -58,7 +58,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi } if(wordwrap[0]) { SAFECOPY(str1,wordwrap); - wordwrap[0]=0; + wordwrap[0]=0; } else str1[0]=0; if(mode&K_EDIT) @@ -72,11 +72,11 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi if(mode&K_AUTODEL && str1[0]) { i=(cfg.color[clr_inputline]&0x77)<<4; i|=(cfg.color[clr_inputline]&0x77)>>4; - attr(i); + attr(i); } bputs(str1, P_AUTO_UTF8); if(mode&K_EDIT && !(mode&(K_LINE|K_AUTODEL))) - cleartoeol(); /* destroy to eol */ + cleartoeol(); /* destroy to eol */ } SAFECOPY(undo,str1); @@ -87,16 +87,16 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi if(IS_PRINTABLE(ch) || ch==DEL) { for(i=0;i<l;i++) backspace(); - i=l=0; + i=l=0; } else { for(i=0;i<l;i++) outchar(BS); column+=rputs(str1); - i=l; + i=l; } if(ch!=' ' && ch!=TAB) - ungetkey(ch); + ungetkey(ch); } if(mode&K_USEOFFSET) { @@ -133,7 +133,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi if(strstr(str1,"��")) { bputs("\r\n\r\nYou must set your terminal to NO PARITY, " "8 DATA BITS, and 1 STOP BIT (N-8-1).\7\r\n"); - return(0); + return(0); } } getstr_offset=i; @@ -150,7 +150,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi cursor_left(l-i); #if 0 if(i==maxlen-1) - console&=~CON_INSERT; + console&=~CON_INSERT; #endif } outchar(str1[i++]=1); @@ -158,7 +158,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi case TERM_KEY_HOME: /* Ctrl-B Beginning of Line */ if(i && !(mode&K_NOECHO)) { cursor_left(i); - i=0; + i=0; } break; case CTRL_D: /* Ctrl-D Delete word right */ @@ -166,21 +166,21 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi x=i; while(x<l && str1[x]!=' ') { outchar(' '); - x++; + x++; } while(x<l && str1[x]==' ') { outchar(' '); - x++; + x++; } cursor_left(x-i); /* move cursor back */ z=i; while(z<l-(x-i)) { /* move chars in string */ outchar(str1[z]=str1[z+(x-i)]); - z++; + z++; } while(z<l) { /* write over extra chars */ outchar(' '); - z++; + z++; } cursor_left(z-i); l-=x-i; /* l=new length */ @@ -189,13 +189,13 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi case TERM_KEY_END: /* Ctrl-E End of line */ if(term&(ANSI|PETSCII) && i<l) { cursor_right(l-i); /* move cursor to eol */ - i=l; + i=l; } break; case TERM_KEY_RIGHT: /* Ctrl-F move cursor forward */ if(i<l && term&(ANSI|PETSCII)) { cursor_right(); /* move cursor right one */ - i++; + i++; } break; case CTRL_G: /* Bell */ @@ -210,7 +210,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi l+=6; #if 0 if(i==maxlen-1) - console&=~CON_INSERT; + console&=~CON_INSERT; #endif } str1[i++]='('; @@ -220,11 +220,11 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi str1[i++]='p'; str1[i++]=')'; if(!(mode&K_NOECHO)) - bputs("(beep)"); + bputs("(beep)"); } if(console&CON_INSERT) redrwstr(str1,i,l,0); - break; + break; } if(console&CON_INSERT) { if(l<maxlen) @@ -233,13 +233,13 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi str1[x]=str1[x-1]; #if 0 if(i==maxlen-1) - console&=~CON_INSERT; + console&=~CON_INSERT; #endif } if(i<maxlen) { str1[i++]=BEL; if(!(mode&K_NOECHO)) - outchar(BEL); + outchar(BEL); } break; case CTRL_H: /* Ctrl-H/Backspace */ @@ -256,10 +256,10 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi z=i; while(z<l) { /* move the characters in the line */ outchar(str1[z]=str1[z+1]); - z++; + z++; } outchar(' '); /* write over the last char */ - cursor_left((l-i)+1); + cursor_left((l-i)+1); } else if(!(mode&K_NOECHO)) backspace(); @@ -290,12 +290,12 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi str1[x]=str1[x-1]; #if 0 if(i==maxlen-1) - console&=~CON_INSERT; + console&=~CON_INSERT; #endif } str1[i++]=' '; if(!(mode&K_NOECHO)) - outchar(' '); + outchar(' '); } while(i<maxlen && i%EDIT_TABSIZE) { if(console&CON_INSERT) { @@ -305,12 +305,12 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi str1[x]=str1[x-1]; #if 0 if(i==maxlen-1) - console&=~CON_INSERT; + console&=~CON_INSERT; #endif } str1[i++]=' '; if(!(mode&K_NOECHO)) - outchar(' '); + outchar(' '); } if(console&CON_INSERT && !(mode&K_NOECHO)) redrwstr(str1,i,l,0); @@ -335,7 +335,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi bputs("\b"); bputs(strout); if(mode&K_LINE) - attr(LIGHTGRAY); + attr(LIGHTGRAY); } if(!(mode&K_NOCRLF)) CRLF; @@ -348,7 +348,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi i++; while(str1[i]==' ' && i<l) i++; - cursor_right(i-x); + cursor_right(i-x); } break; case CTRL_R: /* Ctrl-R Redraw Line */ @@ -366,20 +366,20 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi x=i; /* x=original offset */ while(i && str1[i-1]==' ') { outchar(BS); - i--; + i--; } while(i && str1[i-1]!=' ') { outchar(BS); - i--; + i--; } z=i; /* i=z=new offset */ while(z<l-(x-i)) { /* move chars in string */ outchar(str1[z]=str1[z+(x-i)]); - z++; + z++; } while(z<l) { /* write over extra chars */ outchar(' '); - z++; + z++; } cursor_left(z-i); /* back to new x corridnant */ l-=x-i; /* l=new length */ @@ -388,21 +388,21 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi i--; l--; if(!(mode&K_NOECHO)) - backspace(); + backspace(); } while(i && str1[i-1]!=' ') { i--; l--; if(!(mode&K_NOECHO)) - backspace(); - } + backspace(); + } } break; case CTRL_Y: /* Ctrl-Y Delete to end of line */ if(i!=l) { /* if not at EOL */ if(!(mode&K_NOECHO)) cleartoeol(); - l=i; + l=i; break; } /* fall-through */ @@ -435,7 +435,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi i--; while(str1[i-1]!=' ' && i) i--; - cursor_left(x-i); + cursor_left(x-i); } break; case TERM_KEY_LEFT: /* Ctrl-]/Left Arrow Reverse Cursor Movement */ @@ -446,7 +446,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi } if(!(mode&K_NOECHO)) { cursor_left(); /* move cursor left one */ - i--; + i--; } break; case TERM_KEY_DOWN: @@ -516,7 +516,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi z=i; while(z<l) { /* move the characters in the line */ outchar(str1[z]=str1[z+1]); - z++; + z++; } outchar(' '); /* write over the last char */ cursor_left((l-i)+1); @@ -524,18 +524,18 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi default: if(mode&K_WRAP && i==maxlen && ch>=' ' && !(console&CON_INSERT)) { str1[i]=0; - if(ch==' ' && !(mode&K_CHAT)) { /* don't wrap a space */ + if(ch==' ' && !(mode&K_CHAT)) { /* don't wrap a space */ strcpy(strout,str1); /* as last char */ if(strip_invalid_attr(strout) && !(mode&K_NOECHO)) redrwstr(strout,i,l,K_MSG); if(!(mode&(K_NOECHO|K_NOCRLF))) CRLF; - return(i); + return(i); } x=i-1; z=1; wordwrap[0]=ch; - while(str1[x]!=' ' && x) + while(str1[x]!=' ' && x > 0 && z < sizeof(wordwrap) - 1) wordwrap[z++]=str1[x--]; if(x<(maxlen/2)) { wordwrap[1]=0; /* only wrap one character */ @@ -544,13 +544,13 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi redrwstr(strout,i,l,K_MSG); if(!(mode&(K_NOECHO|K_NOCRLF))) CRLF; - return(i); + return(i); } wordwrap[z]=0; if(!(mode&K_NOECHO)) while(z--) { backspace(); - i--; + i--; } strrev(wordwrap); str1[x]=0; @@ -559,7 +559,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi redrwstr(strout,i,x,mode); if(!(mode&(K_NOECHO|K_NOCRLF))) CRLF; - return(x); + return(x); } if(i<maxlen && ch>=' ') { if(ch==' ' && (mode&K_TRIM) && i && str1[i-1] == ' ') @@ -581,8 +581,8 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi #if 0 if(i==maxlen-1) { bputs(" \b\b"); - console&=~CON_INSERT; - } + console&=~CON_INSERT; + } #endif } str1[i++]=ch; @@ -603,7 +603,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi if(i>l) l=i; if(mode&K_CHAT && !l) - return(0); + return(0); } getstr_offset=i; if(!online) @@ -616,7 +616,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi if(mode&K_TRIM) truncsp(strout); if((strip_invalid_attr(strout) || (console&CON_INSERT)) && !(mode&K_NOECHO)) - redrwstr(strout,i,l, P_AUTO_UTF8); + redrwstr(strout,i,l, P_AUTO_UTF8); } else l=0; @@ -626,7 +626,7 @@ size_t sbbs_t::getstr(char *strout, size_t maxlen, int mode, const str_list_t hi CRLF; } else carriage_return(); - lncntr=0; + lncntr=0; } return(l); } @@ -651,28 +651,28 @@ int sbbs_t::getnum(uint max, uint dflt) ch=getkey(K_UPPER); if(ch==BS || ch==DEL) { backspace(); - continue; + continue; } CRLF; lncntr=0; - return(-1); + return(-1); } else if(sys_status&SS_ABORT) { CRLF; lncntr=0; - return(-1); + return(-1); } else if(ch==CR) { CRLF; lncntr=0; if(!n) return(dflt); - return(i); + return(i); } else if((ch==BS || ch==DEL) && n) { backspace(); i/=10; - n--; + n--; } else if(IS_DIGIT(ch) && (i*10UL)+(ch&0xf)<=max && (dflt || ch!='0' || n)) { i*=10L; @@ -682,9 +682,9 @@ int sbbs_t::getnum(uint max, uint dflt) if(i*10UL>max && !(useron.misc&COLDKEYS) && keybuf_level() < 1) { CRLF; lncntr=0; - return(i); - } - } + return(i); + } + } } return(0); } diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index 5679388b289b34fb3bac6a29fc3b9dbdd76ed90a..044767cbb1706fc32aed8897a4777566b678ed9d 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -2195,13 +2195,13 @@ void sbbs_t::passthru_socket_activate(bool activate) break; } } else { - /* Re-enable blocking (in case disabled by external program) */ - u_long l=0; - ioctlsocket(client_socket_dup, FIONBIO, &l); - + /* Re-enable blocking (in case disabled by external program) */ + u_long l=0; + ioctlsocket(client_socket_dup, FIONBIO, &l); + /* Re-set socket options */ char err[512]; - if(set_socket_options(&cfg, client_socket_dup, "passthru", err, sizeof(err))) + if(set_socket_options(&cfg, client_socket_dup, "passthru", err, sizeof(err))) lprintf(LOG_ERR,"%04d !ERROR %s setting passthru socket options", client_socket, err); do { // Allow time for the passthru_thread to move any pending socket data to the outbuf @@ -3671,7 +3671,7 @@ sbbs_t::~sbbs_t() freevars(&main_csi); clearvars(&main_csi); - FREE_AND_NULL(main_csi.str); /* crash */ + FREE_AND_NULL(main_csi.str); FREE_AND_NULL(main_csi.cs); for(i=0;i<global_str_vars && global_str_var!=NULL;i++) @@ -3687,7 +3687,7 @@ sbbs_t::~sbbs_t() /* Sub-board variables */ for(i=0;i<usrgrp_total && usrsub!=NULL;i++) - FREE_AND_NULL(usrsub[i]); /* exception here (ptr=0xfdfdfdfd) on exit July-10-2002 */ + FREE_AND_NULL(usrsub[i]); FREE_AND_NULL(cursub); FREE_AND_NULL(usrgrp); diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 0c4b0778440bd410f6fc454f42c2630f1b875a1f..1b4fc9bba6ad2a5b6742f533cb769840fc3f59b7 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -570,7 +570,7 @@ public: uint latr=0; /* Starting attribute of line buffer */ uint line_delay=0; /* Delay duration (ms) after each line sent */ uint console = 0; /* Defines current Console settings */ - char wordwrap[81]{}; /* Word wrap buffer */ + char wordwrap[TERM_COLS_MAX + 1]{}; /* Word wrap buffer */ time_t now=0, /* Used to store current time in Unix format */ last_sysop_auth=0,/* Time sysop was last authenticated */ answertime=0, /* Time call was answered */ @@ -629,7 +629,7 @@ public: const char* current_msg_subj = nullptr; const char* current_msg_from = nullptr; const char* current_msg_to = nullptr; - file_t* current_file = nullptr; + file_t* current_file = nullptr; /* Global command shell variables */ uint global_str_vars = 0;