]> granicus.if.org Git - nethack/commitdiff
SYSCF/PANICLOG fix (trunk only)
authornethack.rankin <nethack.rankin>
Sat, 23 Apr 2011 01:37:30 +0000 (01:37 +0000)
committernethack.rankin <nethack.rankin>
Sat, 23 Apr 2011 01:37:30 +0000 (01:37 +0000)
     files.c wouldn't compile if SYSCF was defined and PANICLOG wasn't.
Also, a couple of PANICLOG option sanity checks treated 0 as an error
but then said that the value had to be 0, 1, or 2.  I went with the
message and changed it to treat 0 as ok.  Unfortunately the numeric
value is derived via atoi() so you get 0 from bogus input.  Perhaps it
should use sscanf(string,"%d%c",&number,&dummy)==1 to try harder to make
sure it actually gets a number.

src/files.c

index 394854c6c48e78e2c5a022c11b05b45e3f8b55de..ce62db20f848694b10f19cd70cf5eadf31d38947 100644 (file)
@@ -2138,18 +2138,21 @@ int             src;
                return 0;
            }
            sysopt.pointsmin = temp;
-#ifdef PANICTRACE_GLIBC
-       } else if ( (src==SET_IN_SYS) && match_varname(buf, "PANICTRACE_GLIBC", 16)) {
+# ifdef PANICTRACE
+#  ifdef PANICTRACE_GLIBC
+       } else if (src == SET_IN_SYS &&
+               match_varname(buf, "PANICTRACE_GLIBC", 16)) {
            int temp = atoi(bufp);
-           if(temp < 1 || temp > 2){
+           if (temp < 0 || temp > 2) {
                raw_printf("Illegal value in PANICTRACE_GLIBC (not 0,1,2).");
                return 0;
            }
            sysopt.panictrace_glibc = temp;
-#endif
-       } else if ( (src==SET_IN_SYS) && match_varname(buf, "PANICTRACE_GDB", 14)) {
+#  endif /* PANICTRACE_GLIBC */
+       } else if (src == SET_IN_SYS &&
+               match_varname(buf, "PANICTRACE_GDB", 14)) {
            int temp = atoi(bufp);
-           if(temp < 1 || temp > 2){
+           if (temp < 0 || temp > 2) {
                raw_printf("Illegal value in PANICTRACE_GDB (not 0,1,2).");
                return 0;
            }
@@ -2162,7 +2165,8 @@ int               src;
            if(sysopt.greppath) free(sysopt.greppath);
            sysopt.greppath = (char*)alloc(strlen(bufp)+1);
            Strcpy(sysopt.greppath, bufp);
-#endif
+# endif /* PANICTRACE */
+#endif /* SYSCF */
        } else if (match_varname(buf, "BOULDER", 3)) {
            (void) get_uchars(fp, buf, bufp, &iflags.bouldersym, TRUE,
                              1, "BOULDER");