From 7b5618e03c7b83fa05bee2ab80a6548ccbddba5c Mon Sep 17 00:00:00 2001 From: warwick Date: Mon, 22 Jul 2002 09:13:04 +0000 Subject: [PATCH] Enclose savefile format change by STORE_PLNAME_IN_FILE macro. --- include/patchlevel.h | 2 +- src/files.c | 31 +++++++++++++++++++++++++++---- src/restore.c | 4 ++++ src/save.c | 4 ++++ 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/include/patchlevel.h b/include/patchlevel.h index 6bcdc2faf..a09bd0cf5 100644 --- a/include/patchlevel.h +++ b/include/patchlevel.h @@ -13,7 +13,7 @@ * Incrementing EDITLEVEL can be used to force invalidation of old bones * and save files. */ -#define EDITLEVEL 1 +#define EDITLEVEL 0 #define COPYRIGHT_BANNER_A \ "NetHack, Copyright 1985-2002" diff --git a/src/files.c b/src/files.c index 7e9e91ac2..507dc8eed 100644 --- a/src/files.c +++ b/src/files.c @@ -19,7 +19,7 @@ #include #endif -#if defined(UNIX) +#if defined(UNIX) && defined(QT_GRAPHICS) #include #endif @@ -812,6 +812,7 @@ static char* plname_from_file(filename) const char* filename; { +#ifdef STORE_PLNAME_IN_FILE int fd; char* result = 0; @@ -831,12 +832,35 @@ const char* filename; compress(SAVEF); return result; +#else + /* Name not stored in save file, so we have to extract it from + the filename, which loses information + (eg. "/", "_", and "." characters are lost. */ + int k; + int uid; + char name[NAME_MAX]; +#ifdef COMPRESS_EXTENSION +#define EXTSTR COMPRESS_EXTENSION +#else +#define EXTSTR "" +#endif + if ( sscanf( filename, "%*[^/]/%d%[^.]" EXTSTR, &uid, name ) == 2 ) { +#undef EXTSTR + /* "_" most likely means " ", which certainly looks nicer */ + for (k=0; name[k]; k++) + if ( name[k]=='_' ) + name[k]=' '; + return strdup(name); + } else { + return 0; + } +#endif } char** get_saved_games() { -#ifdef UNIX +#if defined(UNIX) && defined(QT_GRAPHICS) int myuid=getuid(); struct dirent **namelist; int n = scandir("save", &namelist, 0, alphasort);; @@ -852,9 +876,8 @@ get_saved_games() char* r; Sprintf(filename,"save/%d%s",uid,name); r = plname_from_file(filename); - if ( r ) { + if ( r ) result[j++] = r; - } } } } diff --git a/src/restore.c b/src/restore.c index 86e078851..899b5a69d 100644 --- a/src/restore.c +++ b/src/restore.c @@ -542,7 +542,9 @@ register int fd; int rtmp; struct obj *otmp; +#ifdef STORE_PLNAME_IN_FILE mread(fd, (genericptr_t) plname, PL_NSIZ); +#endif restoring = TRUE; getlev(fd, 0, (xchar)0, FALSE); @@ -623,7 +625,9 @@ register int fd; (void) lseek(fd, (off_t)0, 0); #endif (void) uptodate(fd, (char *)0); /* skip version info */ +#ifdef STORE_PLNAME_IN_FILE mread(fd, (genericptr_t) plname, PL_NSIZ); +#endif getlev(fd, 0, (xchar)0, FALSE); (void) close(fd); diff --git a/src/save.c b/src/save.c index 42a29f099..ee4d51e1f 100644 --- a/src/save.c +++ b/src/save.c @@ -204,7 +204,9 @@ dosave0() #endif /* MFLOPPY */ store_version(fd); +#ifdef STORE_PLNAME_IN_FILE bwrite(fd, (genericptr_t) plname, PL_NSIZ); +#endif ustuck_id = (u.ustuck ? u.ustuck->m_id : 0); #ifdef STEED usteed_id = (u.usteed ? u.usteed->m_id : 0); @@ -373,7 +375,9 @@ savestateinlock() (void) write(fd, (genericptr_t) &currlev, sizeof(currlev)); save_savefile_name(fd); store_version(fd); +#ifdef STORE_PLNAME_IN_FILE bwrite(fd, (genericptr_t) plname, PL_NSIZ); +#endif ustuck_id = (u.ustuck ? u.ustuck->m_id : 0); #ifdef STEED usteed_id = (u.usteed ? u.usteed->m_id : 0); -- 2.40.0