diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c index d2b9f3d293fdd12a276deb3d96b30ce912545468..5f17ab77dd4b373208d4e33c9acfb39d5ae845f5 100644 --- a/src/syncterm/bbslist.c +++ b/src/syncterm/bbslist.c @@ -492,9 +492,10 @@ void change_settings(void) char inipath[MAX_PATH]; FILE *inifile; str_list_t inicontents; - char opts[3][80]; - char *opt[3]; + char opts[4][80]; + char *opt[4]; int i,j; + char str[64]; get_syncterm_filename(inipath, sizeof(inipath), SYNCTERM_PATH_INI, FALSE); if((inifile=fopen(inipath,"r"))!=NULL) { @@ -505,14 +506,15 @@ void change_settings(void) inicontents=strListInit(); } - for(i=0; i<3; i++) + for(i=0; i<4; i++) opt[i]=opts[i]; i=0; - opts[2][0]=0; + opts[3][0]=0; for(;;) { - sprintf(opts[0],"Confirm Program Exit: %s",settings.confirm_close?"Yes":"No"); - sprintf(opts[1],"Startup Video Mode: %s",screen_modes[settings.startup_mode]); + sprintf(opts[0],"Confirm Program Exit: %s",settings.confirm_close?"Yes":"No"); + sprintf(opts[1],"Startup Video Mode: %s",screen_modes[settings.startup_mode]); + sprintf(opts[2],"Scrollback Buffer Lines: %d",settings.backlines); switch(uifc.list(WIN_MID|WIN_SAV,0,0,0,&i,NULL,"Program Settings",opt)) { case -1: goto write_ini; @@ -532,6 +534,14 @@ void change_settings(void) break; } } + break; + case 2: + sprintf(str,"%d",settings.backlines); + if(uifc.input(WIN_SAV|WIN_MID,0,0,"Scrollback Lines",str,9,K_NUMBER)!=-1) { + settings.backlines=atoi(str); + iniSetInteger(&inicontents,"SyncTERM","ScrollBackLines",settings.backlines,&ini_style); + } + break; } } write_ini: diff --git a/src/syncterm/menu.c b/src/syncterm/menu.c index 8097bbd59fc832150f6fd8189060dd6978839642..ee34d9a6ee9cb3f01c5ca080994b2a7e8d982353 100644 --- a/src/syncterm/menu.c +++ b/src/syncterm/menu.c @@ -11,6 +11,7 @@ #include "bbslist.h" #include "conn.h" #include "window.h" +#include "syncterm.h" void viewscroll(void) { @@ -26,8 +27,8 @@ void viewscroll(void) y=wherey(); uifcbail(); gettextinfo(&txtinfo); - scrollback=(char *)malloc((term.width*2*backlines)+(txtinfo.screenheight*txtinfo.screenwidth*2)); - memcpy(scrollback,cterm.scrollback,term.width*2*backlines); + scrollback=(char *)malloc((term.width*2*settings.backlines)+(txtinfo.screenheight*txtinfo.screenwidth*2)); + memcpy(scrollback,cterm.scrollback,term.width*2*settings.backlines); gettext(1,1,txtinfo.screenwidth,txtinfo.screenheight,scrollback+(cterm.backpos)*cterm.width*2); drawwin(); top=cterm.backpos; diff --git a/src/syncterm/syncterm.c b/src/syncterm/syncterm.c index 09d10727b24cf4a1a68297280531fea0e41d11e5..a7acaedb40f9cf51273309209f02eb5e32865de1 100644 --- a/src/syncterm/syncterm.c +++ b/src/syncterm/syncterm.c @@ -269,6 +269,7 @@ void load_settings(struct syncterm_settings *set) set->confirm_close=iniReadBool(inifile,"SyncTERM","ConfirmClose",FALSE); fprintf(stderr,"Confirm: %d\n",set->confirm_close); set->startup_mode=iniReadInteger(inifile,"SyncTERM","VideoMode",FALSE); + set->backlines=iniReadInteger(inifile,"SyncTERM","ScrollBackLines",2000); if(inifile) fclose(inifile); } diff --git a/src/syncterm/syncterm.h b/src/syncterm/syncterm.h index e71c7fffb64f69f5f50e2c8dc94f2f055877391d..c556691b4f0675c897edc9f7c67193acc7634011 100644 --- a/src/syncterm/syncterm.h +++ b/src/syncterm/syncterm.h @@ -12,6 +12,7 @@ enum { struct syncterm_settings { int confirm_close; int startup_mode; + int backlines; }; extern char *inpath; diff --git a/src/syncterm/term.c b/src/syncterm/term.c index b602c69089ca27553b9e3817f23221b165f0fb50..6700c1c1a1ce28c402792d7d497c75181a63fdec 100644 --- a/src/syncterm/term.c +++ b/src/syncterm/term.c @@ -21,8 +21,6 @@ static char recvbuf[BUFSIZE]; #define DUMP -int backlines=2000; - struct terminal term; #define TRANSFER_WIN_WIDTH 66 @@ -862,9 +860,9 @@ BOOL doterm(struct bbslist *bbs) ciomouse_addevent(CIOLIB_BUTTON_1_DRAG_END); ciomouse_addevent(CIOLIB_BUTTON_3_CLICK); ciomouse_addevent(CIOLIB_BUTTON_2_CLICK); - scrollback=malloc(term.width*2*backlines); - memset(scrollback,0,term.width*2*backlines); - cterm_init(term.height,term.width,term.x-1,term.y-1,backlines,scrollback); + scrollback=malloc(term.width*2*settings.backlines); + memset(scrollback,0,term.width*2*settings.backlines); + cterm_init(term.height,term.width,term.x-1,term.y-1,settings.backlines,scrollback); cterm.music_enable=bbs->music; ch[1]=0; zrqbuf[0]=0; diff --git a/src/syncterm/term.h b/src/syncterm/term.h index ac3fa76f5cb12e07031ec5e54d273e69a411d4a5..c91c6b26adf8680a7f7c92341fede8718c9b2895 100644 --- a/src/syncterm/term.h +++ b/src/syncterm/term.h @@ -14,7 +14,6 @@ struct terminal { }; extern struct terminal term; -extern int backlines; extern int log_level; BOOL doterm(struct bbslist *);