From 8d154121ca77d7ecc6cc17c94b763fbe56f5181b Mon Sep 17 00:00:00 2001 From: PatR Date: Fri, 15 Nov 2019 12:09:45 -0800 Subject: [PATCH 1/2] fix #H9420 - dipping while blind Fix several feedback anomalies for dipping into potions. --- doc/fixes36.3 | 9 +++++++- src/potion.c | 64 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 50 insertions(+), 23 deletions(-) diff --git a/doc/fixes36.3 b/doc/fixes36.3 index 1291c29d7..287b74044 100644 --- a/doc/fixes36.3 +++ b/doc/fixes36.3 @@ -1,4 +1,4 @@ -$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.177 $ $NHDT-Date: 1573778559 2019/11/15 00:42:39 $ +$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.178 $ $NHDT-Date: 1573848574 2019/11/15 20:09:34 $ This fixes36.3 file is here to capture information about updates in the 3.6.x lineage following the release of 3.6.2 in May 2019. Please note, however, @@ -225,6 +225,13 @@ putting on gloves while having slippery fingers transfered slipperiness to when a monster reads a scroll of fire to cure sliming, don't access that scroll's memory after it has been used up (bcsign) monster vs monster attacks didn't handle shades or silver weapon feedback +successful alchemy would show new potion's description (color) even when blind +dipping some types of objects into oil would yield " gleams with an + oily sheen" even when blind +dipping into an undiscovered potion would offer chance to give a name to the + potion even when its description wasn't known (picked up while blind) +dipping lichen corpse into acid when not blind and acid was undicovered would + not offer a chance to give a name to the potion after lichen feedback Fixes to Post-3.6.2 Problems that Were Exposed Via git Repository diff --git a/src/potion.c b/src/potion.c index 4f9a42d51..16b2c5dda 100644 --- a/src/potion.c +++ b/src/potion.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 potion.c $NHDT-Date: 1573346191 2019/11/10 00:36:31 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.166 $ */ +/* NetHack 3.6 potion.c $NHDT-Date: 1573848199 2019/11/15 20:03:19 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.167 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2013. */ /* NetHack may be freely redistributed. See license for details. */ @@ -2030,7 +2030,7 @@ dodip() around for potionbreathe() [and we can't set obj->in_use to 'amt' because that's not implemented] */ obj->in_use = 1; - pline("BOOM! They explode!"); + pline("%sThey explode!", !Deaf ? "BOOM! " : ""); wake_nearto(u.ux, u.uy, (BOLT_LIM + 1) * (BOLT_LIM + 1)); exercise(A_STR, FALSE); if (!breathless(youmonst.data) || haseyes(youmonst.data)) @@ -2048,6 +2048,8 @@ dodip() if (mixture != STRANGE_OBJECT) { obj->otyp = mixture; } else { + struct obj *otmp; + switch (obj->odiluted ? 1 : rnd(8)) { case 1: obj->otyp = POT_WATER; @@ -2056,17 +2058,15 @@ dodip() case 3: obj->otyp = POT_SICKNESS; break; - case 4: { - struct obj *otmp = mkobj(POTION_CLASS, FALSE); - + case 4: + otmp = mkobj(POTION_CLASS, FALSE); obj->otyp = otmp->otyp; obfree(otmp, (struct obj *) 0); break; - } default: useupall(obj); - if (!Blind) - pline_The("mixture glows brightly and evaporates."); + pline_The("mixture %sevaporates.", + !Blind ? "glows brightly and " : ""); return 1; } } @@ -2092,11 +2092,16 @@ dodip() } if (potion->otyp == POT_ACID && obj->otyp == CORPSE - && obj->corpsenm == PM_LICHEN && !Blind) { + && obj->corpsenm == PM_LICHEN) { pline("%s %s %s around the edges.", The(cxname(obj)), - otense(obj, "turn"), - potion->odiluted ? hcolor(NH_ORANGE) : hcolor(NH_RED)); + otense(obj, "turn"), Blind ? "wrinkled" + : potion->odiluted ? hcolor(NH_ORANGE) + : hcolor(NH_RED)); potion->in_use = FALSE; /* didn't go poof */ + if (potion->dknown + && !objects[potion->otyp].oc_name_known + && !objects[potion->otyp].oc_uname) + docall(potion); return 1; } @@ -2150,10 +2155,14 @@ dodip() } else if ((!is_rustprone(obj) && !is_corrodeable(obj)) || is_ammo(obj) || (!obj->oeroded && !obj->oeroded2)) { /* uses up potion, doesn't set obj->greased */ - pline("%s %s with an oily sheen.", Yname2(obj), - otense(obj, "gleam")); + if (!Blind) + pline("%s %s with an oily sheen.", Yname2(obj), + otense(obj, "gleam")); + else /*if (!uarmg)*/ + pline("%s %s oily.", Yname2(obj), otense(obj, "feel")); } else { - pline("%s %s less %s.", Yname2(obj), otense(obj, "are"), + pline("%s %s less %s.", Yname2(obj), + otense(obj, !Blind ? "are" : "feel"), (obj->oeroded && obj->oeroded2) ? "corroded and rusty" : obj->oeroded ? "rusty" : "corroded"); @@ -2164,7 +2173,8 @@ dodip() wisx = TRUE; } exercise(A_WIS, wisx); - makeknown(potion->otyp); + if (potion->dknown) + makeknown(potion->otyp); useup(potion); return 1; } @@ -2200,7 +2210,8 @@ dodip() useup(potion); exercise(A_WIS, TRUE); } - makeknown(POT_OIL); + if (potion->dknown) + makeknown(POT_OIL); obj->spe = 1; update_inventory(); return 1; @@ -2238,16 +2249,24 @@ dodip() singlepotion->dknown = FALSE; } else { singlepotion->dknown = !Hallucination; + *newbuf = '\0'; if (mixture == POT_WATER && singlepotion->dknown) Sprintf(newbuf, "clears"); - else + else if (!Blind) Sprintf(newbuf, "turns %s", hcolor(OBJ_DESCR(objects[mixture]))); - pline_The("%spotion%s %s.", oldbuf, - more_than_one ? " that you dipped into" : "", newbuf); - if (!objects[old_otyp].oc_uname - && !objects[old_otyp].oc_name_known && old_dknown) { + if (*newbuf) + pline_The("%spotion%s %s.", oldbuf, + more_than_one ? " that you dipped into" : "", + newbuf); + else + pline("Somehing happens."); + + if (old_dknown + && !objects[old_otyp].oc_name_known + && !objects[old_otyp].oc_uname) { struct obj fakeobj; + fakeobj = zeroobj; fakeobj.dknown = 1; fakeobj.otyp = old_otyp; @@ -2269,7 +2288,8 @@ dodip() return 1; poof: - if (!objects[potion->otyp].oc_name_known + if (potion->dknown + && !objects[potion->otyp].oc_name_known && !objects[potion->otyp].oc_uname) docall(potion); useup(potion); From ae415589e921c3333359c8254848cb23fddc4057 Mon Sep 17 00:00:00 2001 From: PatR Date: Fri, 15 Nov 2019 17:51:20 -0800 Subject: [PATCH 2/2] have --showpaths show DUMPLOG file While not a path exactly, the dumplog file isn't placed somewhere fixed so being able to see where it is placed could be useful. This cascaded a bit during testing. Fix one of the warnings from hardfought (fqn_prefix_names[]). And a few more that came up with SYSCF disabled (panictrace_gdb, two unused variables if files.c). --- include/decl.h | 4 +-- include/extern.h | 13 ++++++---- src/decl.c | 4 +-- src/end.c | 10 ++++---- src/files.c | 58 +++++++++++++++++++++++++++-------------- src/windows.c | 67 +++++++++++++++++++++++++++++++++++------------- 6 files changed, 105 insertions(+), 51 deletions(-) diff --git a/include/decl.h b/include/decl.h index c2e0648e1..c6e298b43 100644 --- a/include/decl.h +++ b/include/decl.h @@ -1,4 +1,4 @@ -/* NetHack 3.6 decl.h $NHDT-Date: 1559601011 2019/06/03 22:30:11 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.150 $ */ +/* NetHack 3.6 decl.h $NHDT-Date: 1573869061 2019/11/16 01:51:01 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.165 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2007. */ /* NetHack may be freely redistributed. See license for details. */ @@ -402,7 +402,7 @@ E char *fqn_prefix[PREFIX_COUNT]; E boolean fqn_prefix_locked[PREFIX_COUNT]; #endif #ifdef PREFIXES_IN_USE -E char *fqn_prefix_names[PREFIX_COUNT]; +E const char *fqn_prefix_names[PREFIX_COUNT]; #endif E NEARDATA struct savefile_info sfcap, sfrestinfo, sfsaveinfo; diff --git a/include/extern.h b/include/extern.h index 00fa63ee0..d4a4b432d 100644 --- a/include/extern.h +++ b/include/extern.h @@ -1,4 +1,4 @@ -/* NetHack 3.6 extern.h $NHDT-Date: 1573688684 2019/11/13 23:44:44 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.739 $ */ +/* NetHack 3.6 extern.h $NHDT-Date: 1573869062 2019/11/16 01:51:02 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.740 $ */ /* Copyright (c) Steve Creps, 1988. */ /* NetHack may be freely redistributed. See license for details. */ @@ -2864,10 +2864,13 @@ E void NDECL(nhwindows_hangup); #endif E void NDECL(genl_status_init); E void NDECL(genl_status_finish); -E void FDECL(genl_status_enablefield, - (int, const char *, const char *, BOOLEAN_P)); -E void FDECL(genl_status_update, (int, genericptr_t, int, int, int, unsigned long *)); - +E void FDECL(genl_status_enablefield, (int, const char *, const char *, + BOOLEAN_P)); +E void FDECL(genl_status_update, (int, genericptr_t, int, int, int, + unsigned long *)); +#ifdef DUMPLOG +E char *FDECL(dump_fmtstr, (const char *, char *, BOOLEAN_P)); +#endif E void FDECL(dump_open_log, (time_t)); E void NDECL(dump_close_log); E void FDECL(dump_redirect, (BOOLEAN_P)); diff --git a/src/decl.c b/src/decl.c index d3706ef3b..4ae704d41 100644 --- a/src/decl.c +++ b/src/decl.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 decl.c $NHDT-Date: 1571352532 2019/10/17 22:48:52 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.146 $ */ +/* NetHack 3.6 decl.c $NHDT-Date: 1573869062 2019/11/16 01:51:02 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.149 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Michael Allison, 2009. */ /* NetHack may be freely redistributed. See license for details. */ @@ -294,7 +294,7 @@ boolean fqn_prefix_locked[PREFIX_COUNT] = { FALSE, FALSE, FALSE, #endif #ifdef PREFIXES_IN_USE -char *fqn_prefix_names[PREFIX_COUNT] = { +const char *fqn_prefix_names[PREFIX_COUNT] = { "hackdir", "leveldir", "savedir", "bonesdir", "datadir", "scoredir", "lockdir", "sysconfdir", "configdir", "troubledir" }; diff --git a/src/end.c b/src/end.c index c8d25775b..f3d4a5bda 100644 --- a/src/end.c +++ b/src/end.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 end.c $NHDT-Date: 1562532734 2019/07/07 20:52:14 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.179 $ */ +/* NetHack 3.6 end.c $NHDT-Date: 1573869062 2019/11/16 01:51:02 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.180 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Robert Patrick Rankin, 2012. */ /* NetHack may be freely redistributed. See license for details. */ @@ -257,8 +257,8 @@ NH_panictrace_gdb() #ifdef PANICTRACE_GDB /* A (more) generic method to get a stack trace - invoke * gdb on ourself. */ - char *gdbpath = GDBVAR; - char *greppath = GREPVAR; + const char *gdbpath = GDBVAR; + const char *greppath = GREPVAR; char buf[BUFSZ]; FILE *gdb; @@ -267,8 +267,8 @@ NH_panictrace_gdb() if (greppath == NULL || greppath[0] == 0) return FALSE; - sprintf(buf, "%s -n -q %s %d 2>&1 | %s '^#'", gdbpath, ARGV0, getpid(), - greppath); + sprintf(buf, "%s -n -q %s %d 2>&1 | %s '^#'", + gdbpath, ARGV0, getpid(), greppath); gdb = popen(buf, "w"); if (gdb) { raw_print("Generating more information you may report:\n"); diff --git a/src/files.c b/src/files.c index 67047a9e1..5a0e1a7b2 100644 --- a/src/files.c +++ b/src/files.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 files.c $NHDT-Date: 1573358489 2019/11/10 04:01:29 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.263 $ */ +/* NetHack 3.6 files.c $NHDT-Date: 1573869063 2019/11/16 01:51:03 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.269 $ */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /*-Copyright (c) Derek S. Ray, 2015. */ /* NetHack may be freely redistributed. See license for details. */ @@ -2302,13 +2302,12 @@ char *origbuf; static boolean ramdisk_specified = FALSE; #endif #ifdef SYSCF - int n; + int n, src = iflags.parse_config_file_src; #endif char *bufp, buf[4 * BUFSZ]; uchar translate[MAXPCHARS]; int len; boolean retval = TRUE; - int src = iflags.parse_config_file_src; /* convert any tab to space, condense consecutive spaces into one, remove leading and trailing spaces (exception: if there is nothing @@ -4004,15 +4003,16 @@ boolean wildcards; void reveal_paths(VOID_ARGS) { - const char *fqn, *filep; + const char *fqn, *gamename = (hname && *hname) ? hname : "NetHack"; char buf[BUFSZ]; -#if defined(UNIX) || defined(PREFIXES_IN_USE) - char *strp; +#if defined(SYSCF) || !defined(UNIX) + const char *filep; #endif #ifdef UNIX - char *envp, cwdbuf[PATH_MAX]; + char *endp, *envp, cwdbuf[PATH_MAX]; #endif #ifdef PREFIXES_IN_USE + const char *strp; int i, maxlen = 0; raw_print("Variable playground locations:"); @@ -4027,12 +4027,12 @@ reveal_paths(VOID_ARGS) #ifdef PREFIXES_IN_USE strp = fqn_prefix_names[SYSCONFPREFIX]; maxlen = BUFSZ - sizeof " (in )"; - if (strp && strlen(strp) < (size_t) maxlen) + if (strp && (int) strlen(strp) < maxlen) Sprintf(buf, " (in %s)", strp); #else buf[0] = '\0'; #endif - raw_printf("Your system configuration file%s:", buf); + raw_printf("%s system configuration file%s:", s_suffix(gamename), buf); #ifdef SYSCF_FILE filep = SYSCF_FILE; #else @@ -4059,16 +4059,16 @@ reveal_paths(VOID_ARGS) strp = fqn_prefix_names[HACKPREFIX]; #endif /* WIN32 */ maxlen = BUFSZ - sizeof " (in )"; - if (strp && strlen(strp) < (size_t) maxlen) + if (strp && (int) strlen(strp) < maxlen) Sprintf(buf, " (in %s)", strp); #endif /* PREFIXES_IN_USE */ - raw_printf("Your game's loadable symbols file%s:", buf); + raw_printf("%s loadable symbols file%s:", s_suffix(gamename), buf); #endif /* UNIX */ #ifdef UNIX envp = getcwd(cwdbuf, PATH_MAX); if (envp) { - raw_print("Your game's loadable symbols file:"); + raw_printf("%s loadable symbols file:", s_suffix(gamename)); raw_printf(" \"%s/%s\"", envp, SYMBOLS); } #else /* UNIX */ @@ -4091,7 +4091,7 @@ reveal_paths(VOID_ARGS) #ifdef PREFIXES_IN_USE strp = fqn_prefix_names[CONFIGPREFIX]; maxlen = BUFSZ - sizeof " (in )"; - if (strp && strlen(strp) < (size_t) maxlen) + if (strp && (int) strlen(strp) < maxlen) Sprintf(buf, " (in %s)", strp); #endif /* PREFIXES_IN_USE */ raw_printf("Your personal configuration file%s:", buf); @@ -4102,26 +4102,26 @@ reveal_paths(VOID_ARGS) copynchars(buf, envp, (int) sizeof buf - 1 - 1); Strcat(buf, "/"); } - strp = eos(buf); - copynchars(strp, default_configfile, + endp = eos(buf); + copynchars(endp, default_configfile, (int) (sizeof buf - 1 - strlen(buf))); #if defined(__APPLE__) /* UNIX+__APPLE__ => MacOSX aka OSX aka macOS */ if (envp) { if (access(buf, 4) == -1) { /* 4: R_OK, -1: failure */ /* read access to default failed; might be protected excessively but more likely it doesn't exist; try first alternate: - "$HOME/Library/Pref..."; 'strp' points past '/' */ - copynchars(strp, "Library/Preferences/NetHack Defaults", + "$HOME/Library/Pref..."; 'endp' points past '/' */ + copynchars(endp, "Library/Preferences/NetHack Defaults", (int) (sizeof buf - 1 - strlen(buf))); if (access(buf, 4) == -1) { /* first alternate failed, try second: - ".../NetHack Defaults.txt"; no 'strp', just append */ + ".../NetHack Defaults.txt"; no 'endp', just append */ copynchars(eos(buf), ".txt", (int) (sizeof buf - 1 - strlen(buf))); if (access(buf, 4) == -1) { /* second alternate failed too, so revert to the original default ("$HOME/.nethackrc") for message */ - copynchars(strp, default_configfile, + copynchars(endp, default_configfile, (int) (sizeof buf - 1 - strlen(buf))); } } @@ -4136,6 +4136,26 @@ reveal_paths(VOID_ARGS) #endif raw_printf(" \"%s\"", fqn ? fqn : default_configfile); #endif /* ?UNIX */ + +#ifdef DUMPLOG +#ifdef SYSCF + fqn = sysopt.dumplogfile; +#else /* !SYSCF */ +#ifdef DUMPLOG_FILE + fqn = DUMPLOG_FILE; +#else + fqn = (char *) 0; +#endif +#endif /* ?SYSCF */ + if (fqn) { + raw_print("Your end-of-game dump file:"); + (void) dump_fmtstr(fqn, buf, FALSE); + buf[sizeof buf - sizeof " \"\""] = '\0'; + raw_printf(" \"%s\"", buf); + } else +#endif /* DUMPLOG */ + raw_print("No end-of-game dump file."); + raw_print(""); } diff --git a/src/windows.c b/src/windows.c index ad7b91b0d..7dac248a0 100644 --- a/src/windows.c +++ b/src/windows.c @@ -1,4 +1,4 @@ -/* NetHack 3.6 windows.c $NHDT-Date: 1526933747 2018/05/21 20:15:47 $ $NHDT-Branch: NetHack-3.6.2 $:$NHDT-Revision: 1.48 $ */ +/* NetHack 3.6 windows.c $NHDT-Date: 1573869064 2019/11/16 01:51:04 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.58 $ */ /* Copyright (c) D. Cohrs, 1993. */ /* NetHack may be freely redistributed. See license for details. */ @@ -1091,12 +1091,13 @@ STATIC_VAR FILE *dumplog_file; #ifdef DUMPLOG STATIC_VAR time_t dumplog_now; -STATIC_DCL char *FDECL(dump_fmtstr, (const char *, char *)); - -STATIC_OVL char * -dump_fmtstr(fmt, buf) +char * +dump_fmtstr(fmt, buf, fullsubs) const char *fmt; char *buf; +boolean fullsubs; /* True -> full substitution for file name, False -> + * partial substitution for '--showpaths' feedback + * where there's no game in progress when executed */ { const char *fp = fmt; char *bp = buf; @@ -1119,7 +1120,7 @@ char *buf; * may or may not interfere with that usage.] */ - while (fp && *fp && len < BUFSZ-1) { + while (fp && *fp && len < BUFSZ - 1) { if (*fp == '%') { fp++; switch (*fp) { @@ -1130,17 +1131,29 @@ char *buf; Sprintf(tmpbuf, "%%"); break; case 't': /* game start, timestamp */ - Sprintf(tmpbuf, "%lu", (unsigned long) ubirthday); + if (fullsubs) + Sprintf(tmpbuf, "%lu", (unsigned long) ubirthday); + else + Strcpy(tmpbuf, "{game start cookie}"); break; case 'T': /* current time, timestamp */ - Sprintf(tmpbuf, "%lu", (unsigned long) now); + if (fullsubs) + Sprintf(tmpbuf, "%lu", (unsigned long) now); + else + Strcpy(tmpbuf, "{current time cookie}"); break; case 'd': /* game start, YYYYMMDDhhmmss */ - Sprintf(tmpbuf, "%08ld%06ld", - yyyymmdd(ubirthday), hhmmss(ubirthday)); + if (fullsubs) + Sprintf(tmpbuf, "%08ld%06ld", + yyyymmdd(ubirthday), hhmmss(ubirthday)); + else + Strcpy(tmpbuf, "{game start date+time}"); break; case 'D': /* current time, YYYYMMDDhhmmss */ - Sprintf(tmpbuf, "%08ld%06ld", yyyymmdd(now), hhmmss(now)); + if (fullsubs) + Sprintf(tmpbuf, "%08ld%06ld", yyyymmdd(now), hhmmss(now)); + else + Strcpy(tmpbuf, "{current date+time}"); break; case 'v': /* version, eg. "3.6.2-0" */ Sprintf(tmpbuf, "%s", version_string(verbuf)); @@ -1149,19 +1162,37 @@ char *buf; Sprintf(tmpbuf, "%ld", uid); break; case 'n': /* player name */ - Sprintf(tmpbuf, "%s", *plname ? plname : "unknown"); + if (fullsubs) + Sprintf(tmpbuf, "%s", *plname ? plname : "unknown"); + else + Strcpy(tmpbuf, "{hero name}"); break; case 'N': /* first character of player name */ - Sprintf(tmpbuf, "%c", *plname ? *plname : 'u'); + if (fullsubs) + Sprintf(tmpbuf, "%c", *plname ? *plname : 'u'); + else + Strcpy(tmpbuf, "{hero initial}"); break; } + if (fullsubs) { + /* replace potentially troublesome characters (including + even though it might be an acceptable file name + character); user shouldn't be able to get ' ' or '/' + or '\\' into plname[] but play things safe */ + (void) strNsubst(tmpbuf, " ", "_", 0); + (void) strNsubst(tmpbuf, "/", "_", 0); + (void) strNsubst(tmpbuf, "\\", "_", 0); + /* note: replacements are only done on field substitutions, + not on the template (from sysconf or DUMPLOG_FILE) */ + } - slen = strlen(tmpbuf); - if (len + slen < BUFSZ-1) { + slen = (int) strlen(tmpbuf); + if (len + slen < BUFSZ - 1) { len += slen; Sprintf(bp, "%s", tmpbuf); bp += slen; - if (*fp) fp++; + if (*fp) + fp++; } else break; } else { @@ -1189,9 +1220,9 @@ time_t now; #ifdef SYSCF if (!sysopt.dumplogfile) return; - fname = dump_fmtstr(sysopt.dumplogfile, buf); + fname = dump_fmtstr(sysopt.dumplogfile, buf, TRUE); #else - fname = dump_fmtstr(DUMPLOG_FILE, buf); + fname = dump_fmtstr(DUMPLOG_FILE, buf, TRUE); #endif dumplog_file = fopen(fname, "w"); dumplog_windowprocs_backup = windowprocs;