diff --git a/src/syncterm/bbslist.c b/src/syncterm/bbslist.c index cd2b9040edc199838b62b9684a71f7536c534e62..5f7cc05b759c8feebfded8610914e1b29abce055 100644 --- a/src/syncterm/bbslist.c +++ b/src/syncterm/bbslist.c @@ -563,8 +563,21 @@ int list_name_check(struct bbslist **list, char *bbsname, int *pos, int useronly { int i; - if(list==NULL) + if(list==NULL) { + char listpath[MAX_PATH+1]; + FILE *listfile; + str_list_t inifile; + + get_syncterm_filename(listpath, sizeof(listpath), SYNCTERM_PATH_LIST, FALSE); + if((listfile=fopen(listpath,"r"))!=NULL) { + inifile=iniReadFile(listfile); + i=iniSectionExists(inifile, bbsname); + strListFree(&inifile); + fclose(listfile); + return(i); + } return(0); + } for(i=0; list[i]!=NULL; i++) { if(useronly && list[i]->type != USER_BBSLIST) continue; @@ -1015,7 +1028,7 @@ void change_settings(void) FILE *inifile; str_list_t inicontents; char opts[7][80]; - char *opt[7]; + char *opt[8]; int i,j; char str[64]; int cur=0; @@ -1031,12 +1044,15 @@ void change_settings(void) for(i=0; i<7; i++) opt[i]=opts[i]; + opt[7]=NULL; - opts[6][0]=0; for(;;) { + uifc.helpbuf= "`Program Settings Menu`\n\n" "~ Confirm Program Exit ~\n" " Prompt the user before exiting.\n\n" + "~ Prompt to Save ~\n" + " Prompt to save new URIs on before exiting\n\n" "~ Startup Video Mode ~\n" " Set the initial video screen size.\n\n" "~ Output Mode ~\n" @@ -1048,11 +1064,12 @@ void change_settings(void) "~ Modem Init String ~\n" " An init string to use for the modem.\n\n"; 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],"Output Mode %s",output_descrs[settings.output_mode]); - sprintf(opts[3],"Scrollback Buffer Lines %d",settings.backlines); - sprintf(opts[4],"Modem Device %s",settings.mdm.device_name); - sprintf(opts[5],"Modem Init String %s",settings.mdm.init_string); + sprintf(opts[1],"Prompt to Save %s",settings.prompt_save?"Yes":"No"); + sprintf(opts[2],"Startup Video Mode %s",screen_modes[settings.startup_mode]); + sprintf(opts[3],"Output Mode %s",output_descrs[settings.output_mode]); + sprintf(opts[4],"Scrollback Buffer Lines %d",settings.backlines); + sprintf(opts[5],"Modem Device %s",settings.mdm.device_name); + sprintf(opts[6],"Modem Init String %s",settings.mdm.init_string); switch(uifc.list(WIN_ACT|WIN_MID|WIN_SAV,0,0,0,&cur,NULL,"Program Settings",opt)) { case -1: goto write_ini; @@ -1061,6 +1078,10 @@ void change_settings(void) iniSetBool(&inicontents,"SyncTERM","ConfirmClose",settings.confirm_close,&ini_style); break; case 1: + settings.prompt_save=!settings.prompt_save; + iniSetBool(&inicontents,"SyncTERM","PromptSave",settings.prompt_save,&ini_style); + break; + case 2: j=settings.startup_mode; uifc.helpbuf= "`Startup Video Mode`\n\n" "Select the screen size for at startup\n"; @@ -1073,7 +1094,7 @@ void change_settings(void) break; } break; - case 2: + case 3: for(j=0;output_types[j]!=NULL;j++) if(output_map[j]==settings.output_mode) break; @@ -1145,7 +1166,7 @@ void change_settings(void) break; } break; - case 3: + case 4: uifc.helpbuf="`Scrollback Buffer Lines`\n\n" " The number of lines in the scrollback buffer.\n"; " This value MUST be greater than zero\n"; @@ -1175,7 +1196,7 @@ void change_settings(void) } } break; - case 4: + case 5: uifc.helpbuf= "`Modem Device`\n\n" #ifdef _WIN32 "Enter the modem device name (ie: COM1)."; @@ -1185,7 +1206,7 @@ void change_settings(void) if(uifc.input(WIN_MID|WIN_SAV,0,0,"Modem Device",settings.mdm.device_name,LIST_NAME_MAX,K_EDIT)>=0) iniSetString(&inicontents,"SyncTERM","ModemDevice",settings.mdm.device_name,&ini_style); break; - case 5: + case 6: uifc.helpbuf= "`Modem Init String`\n\n" "Your modem init string goes here.\n" "For reference, here are the expected settings and USR inits\n\n" diff --git a/src/syncterm/syncterm.c b/src/syncterm/syncterm.c index 1e0bafe74265e0eccd2510f5393b86f90deed041..63cdedd58337665d3a2f54d16df08df52ed4843d 100644 --- a/src/syncterm/syncterm.c +++ b/src/syncterm/syncterm.c @@ -973,6 +973,7 @@ void load_settings(struct syncterm_settings *set) get_syncterm_filename(inipath, sizeof(inipath), SYNCTERM_PATH_INI, FALSE); inifile=fopen(inipath,"r"); set->confirm_close=iniReadBool(inifile,"SyncTERM","ConfirmClose",FALSE); + set->prompt_save=iniReadBool(inifile,"SyncTERM","PromptSave",TRUE); set->startup_mode=iniReadInteger(inifile,"SyncTERM","VideoMode",FALSE); set->output_mode=iniReadEnum(inifile,"SyncTERM","OutputMode",output_enum,CIOLIB_MODE_AUTO); set->backlines=iniReadInteger(inifile,"SyncTERM","ScrollBackLines",2000); @@ -1266,15 +1267,20 @@ int main(int argc, char **argv) } if(exit_now || url[0]) { if(bbs != NULL && bbs->id==-1) { - char *YesNo[3]={"Yes","No",""}; - /* Started from the command-line with a URL */ - init_uifc(TRUE, TRUE); - switch(uifc.list(WIN_MID|WIN_SAV,0,0,0,&i,NULL,"Save this BBS in directory?",YesNo)) { - case 0: /* Yes */ - add_bbs(listpath,bbs); - break; - default: /* ESC/No */ - break; + if(!safe_mode) { + if(settings.prompt_save) { + char *YesNo[3]={"Yes","No",""}; + /* Started from the command-line with a URL */ + init_uifc(TRUE, TRUE); + switch(uifc.list(WIN_MID|WIN_SAV,0,0,0,&i,NULL,"Save this BBS in directory?",YesNo)) { + case 0: /* Yes */ + edit_list(NULL, bbs,listpath,FALSE); + add_bbs(listpath,bbs); + break; + default: /* ESC/No */ + break; + } + } } free(bbs); } diff --git a/src/syncterm/syncterm.h b/src/syncterm/syncterm.h index 24861c4a59735fd7fb68980a9a8653677d08f9e1..8c2a9f0ad02972873a6f3d5d68c99f60c55367b9 100644 --- a/src/syncterm/syncterm.h +++ b/src/syncterm/syncterm.h @@ -24,6 +24,7 @@ struct syncterm_settings { int startup_mode; int output_mode; int backlines; + int prompt_save; struct modem_settings mdm; };