#R668: Windows 2000 Lock File Creation Error
This was a tricky one. While the error was ultimately because he was specifying a non-existant directory in defaults.nh, the error message lead me to the wrong area until I traced through with a debugger. It turns out that an fqn buffer was being re-used before it was finished being used with the original information in sys/share/pcunix.c, so the error message listed the wrong file! This adds one more buffer and fixes the problem. Note that it could only affect plaforms with PREFIXES_IN_USE defined (NOCWD_ASSUMPTIONS or VAR_PLAYGROUND) It also alters the WIN32 error message to give them a hint as to what the problem might be. <email deleted> <email deleted> Sent: Saturday, March 23, 2002 9:27 AM Subject: #R668: Windows 2000 Lock File Creation Error > nhfrom: 3.4.0 Official binary release for Windows 95/98/NT/2000/Me/XP > I get an error after unzipping nethack to c:\nethack, and changing the > configuration (defaults.nh) to reflect this in the hackdir, levels and save > configuration items. > > The error I get is "cannot creat lock file (C:\nethack\NHPERM_lock.)" after > entering nethack at the command line and answering the Who are you? question.
This commit is contained in:
@@ -34,7 +34,7 @@ extern int errno;
|
||||
#endif
|
||||
|
||||
#ifdef PREFIXES_IN_USE
|
||||
#define FQN_NUMBUF 2
|
||||
#define FQN_NUMBUF 3
|
||||
static char fqn_filename_buffer[FQN_NUMBUF][FQN_MAX_FILENAME];
|
||||
#endif
|
||||
|
||||
@@ -909,7 +909,7 @@ int retryct;
|
||||
lockname = make_lockname(filename, locknambuf);
|
||||
filename = fqname(filename, whichprefix, 0);
|
||||
#ifndef NO_FILE_LINKS /* LOCKDIR should be subsumed by LOCKPREFIX */
|
||||
lockname = fqname(lockname, LOCKPREFIX, 1);
|
||||
lockname = fqname(lockname, LOCKPREFIX, 2);
|
||||
#endif
|
||||
|
||||
#if defined(UNIX) || defined(VMS)
|
||||
@@ -1013,7 +1013,7 @@ const char *filename;
|
||||
if (nesting == 1) {
|
||||
lockname = make_lockname(filename, locknambuf);
|
||||
#ifndef NO_FILE_LINKS /* LOCKDIR should be subsumed by LOCKPREFIX */
|
||||
lockname = fqname(lockname, LOCKPREFIX, 1);
|
||||
lockname = fqname(lockname, LOCKPREFIX, 2);
|
||||
#endif
|
||||
|
||||
#if defined(UNIX) || defined(VMS)
|
||||
|
||||
Reference in New Issue
Block a user