Unify file removed -trickery

This commit is contained in:
Pasi Kallinen
2015-04-22 08:45:03 +03:00
parent 2783157f95
commit 34d5a4c1f9
3 changed files with 18 additions and 12 deletions

View File

@@ -1981,6 +1981,7 @@ E void NDECL(rumor_check);
E int NDECL(dosave);
E int NDECL(dosave0);
E boolean FDECL(tricked_fileremoved, (int, char *));
#ifdef INSURANCE
E void NDECL(savestateinlock);
#endif

View File

@@ -1225,11 +1225,7 @@ boolean at_stairs, falling, portal;
} else {
/* returning to previously visited level; reload it */
fd = open_levelfile(new_ledger, whynot);
if (fd < 0) {
pline1(whynot);
pline("Probably someone removed it.");
Strcpy(killer.name, whynot);
done(TRICKED);
if (tricked_fileremoved(fd, whynot)) {
/* we'll reach here if running in wizard mode */
error("Cannot continue this game.");
}

View File

@@ -360,6 +360,21 @@ register int fd, mode;
bflush(fd);
}
boolean
tricked_fileremoved(fd, whynot)
int fd;
char *whynot;
{
if (fd < 0) {
pline1(whynot);
pline("Probably someone removed it.");
Strcpy(killer.name, whynot);
done(TRICKED);
return TRUE;
}
return FALSE;
}
#ifdef INSURANCE
void
savestateinlock()
@@ -387,13 +402,7 @@ savestateinlock()
* readable by an external utility
*/
fd = open_levelfile(0, whynot);
if (fd < 0) {
pline1(whynot);
pline("Probably someone removed it.");
Strcpy(killer.name, whynot);
done(TRICKED);
return;
}
if (tricked_fileremoved(fd, whynot)) return;
(void) read(fd, (genericptr_t) &hpid, sizeof(hpid));
if (hackpid != hpid) {