From: Pasi Kallinen Date: Sat, 9 Sep 2017 10:50:34 +0000 (+0300) Subject: Handle windowtype and CHOOSE config errors X-Git-Tag: NetHack-3.6.1_RC01~389 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=cfb09c9bf8f77bd538c9af81696465163ed67ca4;p=nethack Handle windowtype and CHOOSE config errors --- diff --git a/src/files.c b/src/files.c index 3f877b215..0ec9ff8c5 100644 --- a/src/files.c +++ b/src/files.c @@ -2293,6 +2293,10 @@ int src; section = choose_random_part(bufp, ','); if (section) config_section_chosen = dupstr(section); + else { + config_error_add("No config section to choose"); + retval = 0; + } } else if (match_varname(buf, "AUTOPICKUP_EXCEPTION", 5)) { add_autopickup_exception(bufp); } else if (match_varname(buf, "BINDINGS", 4)) { diff --git a/src/options.c b/src/options.c index f7a79493d..d8646c42a 100644 --- a/src/options.c +++ b/src/options.c @@ -1200,9 +1200,8 @@ int iscompound; /* 0 == boolean option, 1 == compound */ * For now just return. */ #else /* !MAC */ - raw_printf("\nWarning - %s option specified multiple times: %s.\n", + config_error_add("%s option specified multiple times: %s.\n", iscompound ? "compound" : "boolean", opts); - wait_synch(); #endif /* ?MAC */ return; } diff --git a/src/windows.c b/src/windows.c index af3d978cf..a23ec95c7 100644 --- a/src/windows.c +++ b/src/windows.c @@ -238,22 +238,25 @@ const char *s; exit(EXIT_FAILURE); } if (!winchoices[1].procs) { - raw_printf("Window type %s not recognized. The only choice is: %s.", + config_error_add("Window type %s not recognized. The only choice is: %s", s, winchoices[0].procs->name); } else { - raw_printf("Window type %s not recognized. Choices are:", s); + char buf[BUFSZ]; + boolean first = TRUE; + buf[0] = '\0'; for (i = 0; winchoices[i].procs; i++) { if ('+' == winchoices[i].procs->name[0]) continue; if ('-' == winchoices[i].procs->name[0]) continue; - raw_printf(" %s", winchoices[i].procs->name); + Sprintf(eos(buf), "%s%s", first ? "" : ",", winchoices[i].procs->name); + first = FALSE; } + config_error_add("Window type %s not recognized. Choices are: %s", s, buf); } if (windowprocs.win_raw_print == def_raw_print) nh_terminate(EXIT_SUCCESS); - wait_synch(); } #ifdef WINCHAIN diff --git a/sys/share/pcmain.c b/sys/share/pcmain.c index df756234a..a515541c2 100644 --- a/sys/share/pcmain.c +++ b/sys/share/pcmain.c @@ -776,7 +776,9 @@ char *argv[]; NHWinMainInit(); } */ + config_error_init(FALSE, "command line"); choose_windows(&argv[0][2]); + config_error_done(); break; #endif case '@': diff --git a/sys/unix/unixmain.c b/sys/unix/unixmain.c index 1c0d55f90..61db44709 100644 --- a/sys/unix/unixmain.c +++ b/sys/unix/unixmain.c @@ -405,7 +405,9 @@ char *argv[]; } break; case 'w': /* windowtype */ + config_error_init(FALSE, "command line"); choose_windows(&argv[0][2]); + config_error_done(); break; case '@': flags.randomall = 1;