save.c cleanup
Mostly 'sizeof' usage. This has been sitting around for a while and I wanted to get it out of the way before making some other save.c changes.
This commit is contained in:
166
src/save.c
166
src/save.c
@@ -1,4 +1,4 @@
|
||||
/* NetHack 3.6 save.c $NHDT-Date: 1554591225 2019/04/06 22:53:45 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.117 $ */
|
||||
/* NetHack 3.6 save.c $NHDT-Date: 1558854699 2019/05/26 07:11:39 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.118 $ */
|
||||
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
|
||||
/*-Copyright (c) Michael Allison, 2009. */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
@@ -287,15 +287,15 @@ register int fd, mode;
|
||||
#endif
|
||||
uid = (unsigned long) getuid();
|
||||
bwrite(fd, (genericptr_t) &uid, sizeof uid);
|
||||
bwrite(fd, (genericptr_t) &context, sizeof(struct context_info));
|
||||
bwrite(fd, (genericptr_t) &flags, sizeof(struct flag));
|
||||
bwrite(fd, (genericptr_t) &context, sizeof context);
|
||||
bwrite(fd, (genericptr_t) &flags, sizeof flags);
|
||||
#ifdef SYSFLAGS
|
||||
bwrite(fd, (genericptr_t) &sysflags, sizeof(struct sysflag));
|
||||
bwrite(fd, (genericptr_t) &sysflags, sysflags);
|
||||
#endif
|
||||
urealtime.finish_time = getnow();
|
||||
urealtime.realtime += (long) (urealtime.finish_time
|
||||
- urealtime.start_timing);
|
||||
bwrite(fd, (genericptr_t) &u, sizeof(struct you));
|
||||
bwrite(fd, (genericptr_t) &u, sizeof u);
|
||||
bwrite(fd, yyyymmddhhmmss(ubirthday), 14);
|
||||
bwrite(fd, (genericptr_t) &urealtime.realtime, sizeof urealtime.realtime);
|
||||
bwrite(fd, yyyymmddhhmmss(urealtime.start_timing), 14); /** Why? **/
|
||||
@@ -324,14 +324,14 @@ register int fd, mode;
|
||||
migrating_objs = 0;
|
||||
migrating_mons = 0;
|
||||
}
|
||||
bwrite(fd, (genericptr_t) mvitals, sizeof(mvitals));
|
||||
bwrite(fd, (genericptr_t) mvitals, sizeof mvitals);
|
||||
|
||||
save_dungeon(fd, (boolean) !!perform_bwrite(mode),
|
||||
(boolean) !!release_data(mode));
|
||||
savelevchn(fd, mode);
|
||||
bwrite(fd, (genericptr_t) &moves, sizeof moves);
|
||||
bwrite(fd, (genericptr_t) &monstermoves, sizeof monstermoves);
|
||||
bwrite(fd, (genericptr_t) &quest_status, sizeof(struct q_score));
|
||||
bwrite(fd, (genericptr_t) &quest_status, sizeof quest_status);
|
||||
bwrite(fd, (genericptr_t) spl_book,
|
||||
sizeof(struct spell) * (MAXSPELL + 1));
|
||||
save_artifacts(fd);
|
||||
@@ -394,7 +394,7 @@ savestateinlock()
|
||||
if (tricked_fileremoved(fd, whynot))
|
||||
return;
|
||||
|
||||
(void) read(fd, (genericptr_t) &hpid, sizeof(hpid));
|
||||
(void) read(fd, (genericptr_t) &hpid, sizeof hpid);
|
||||
if (hackpid != hpid) {
|
||||
Sprintf(whynot, "Level #0 pid (%d) doesn't match ours (%d)!",
|
||||
hpid, hackpid);
|
||||
@@ -411,11 +411,11 @@ savestateinlock()
|
||||
done(TRICKED);
|
||||
return;
|
||||
}
|
||||
(void) write(fd, (genericptr_t) &hackpid, sizeof(hackpid));
|
||||
(void) write(fd, (genericptr_t) &hackpid, sizeof hackpid);
|
||||
if (flags.ins_chkpt) {
|
||||
int currlev = ledger_no(&u.uz);
|
||||
|
||||
(void) write(fd, (genericptr_t) &currlev, sizeof(currlev));
|
||||
(void) write(fd, (genericptr_t) &currlev, sizeof currlev);
|
||||
save_savefile_name(fd);
|
||||
store_version(fd);
|
||||
store_savefileinfo(fd);
|
||||
@@ -496,32 +496,31 @@ int mode;
|
||||
#endif
|
||||
if (lev >= 0 && lev <= maxledgerno())
|
||||
level_info[lev].flags |= VISITED;
|
||||
bwrite(fd, (genericptr_t) &hackpid, sizeof(hackpid));
|
||||
bwrite(fd, (genericptr_t) &hackpid, sizeof hackpid);
|
||||
#ifdef TOS
|
||||
tlev = lev;
|
||||
tlev &= 0x00ff;
|
||||
bwrite(fd, (genericptr_t) &tlev, sizeof(tlev));
|
||||
bwrite(fd, (genericptr_t) &tlev, sizeof tlev);
|
||||
#else
|
||||
bwrite(fd, (genericptr_t) &lev, sizeof(lev));
|
||||
bwrite(fd, (genericptr_t) &lev, sizeof lev);
|
||||
#endif
|
||||
savecemetery(fd, mode, &level.bonesinfo);
|
||||
savelevl(fd,
|
||||
(boolean) ((sfsaveinfo.sfi1 & SFI1_RLECOMP) == SFI1_RLECOMP));
|
||||
bwrite(fd, (genericptr_t) lastseentyp, sizeof(lastseentyp));
|
||||
bwrite(fd, (genericptr_t) &monstermoves, sizeof(monstermoves));
|
||||
bwrite(fd, (genericptr_t) &upstair, sizeof(stairway));
|
||||
bwrite(fd, (genericptr_t) &dnstair, sizeof(stairway));
|
||||
bwrite(fd, (genericptr_t) &upladder, sizeof(stairway));
|
||||
bwrite(fd, (genericptr_t) &dnladder, sizeof(stairway));
|
||||
bwrite(fd, (genericptr_t) &sstairs, sizeof(stairway));
|
||||
bwrite(fd, (genericptr_t) &updest, sizeof(dest_area));
|
||||
bwrite(fd, (genericptr_t) &dndest, sizeof(dest_area));
|
||||
bwrite(fd, (genericptr_t) &level.flags, sizeof(level.flags));
|
||||
bwrite(fd, (genericptr_t) doors, sizeof(doors));
|
||||
savelevl(fd, (boolean) ((sfsaveinfo.sfi1 & SFI1_RLECOMP) == SFI1_RLECOMP));
|
||||
bwrite(fd, (genericptr_t) lastseentyp, sizeof lastseentyp);
|
||||
bwrite(fd, (genericptr_t) &monstermoves, sizeof monstermoves);
|
||||
bwrite(fd, (genericptr_t) &upstair, sizeof (stairway));
|
||||
bwrite(fd, (genericptr_t) &dnstair, sizeof (stairway));
|
||||
bwrite(fd, (genericptr_t) &upladder, sizeof (stairway));
|
||||
bwrite(fd, (genericptr_t) &dnladder, sizeof (stairway));
|
||||
bwrite(fd, (genericptr_t) &sstairs, sizeof (stairway));
|
||||
bwrite(fd, (genericptr_t) &updest, sizeof (dest_area));
|
||||
bwrite(fd, (genericptr_t) &dndest, sizeof (dest_area));
|
||||
bwrite(fd, (genericptr_t) &level.flags, sizeof level.flags);
|
||||
bwrite(fd, (genericptr_t) doors, sizeof doors);
|
||||
save_rooms(fd); /* no dynamic memory to reclaim */
|
||||
|
||||
/* from here on out, saving also involves allocated memory cleanup */
|
||||
skip_lots:
|
||||
/* from here on out, saving also involves allocated memory cleanup */
|
||||
skip_lots:
|
||||
/* this comes before the map, so need cleanup here if we skipped */
|
||||
if (mode == FREE_SAVE)
|
||||
savecemetery(fd, mode, &level.bonesinfo);
|
||||
@@ -587,21 +586,20 @@ boolean rlecomp;
|
||||
goto writeout;
|
||||
}
|
||||
} else {
|
||||
/* the run has been broken,
|
||||
* write out run-length encoding */
|
||||
writeout:
|
||||
bwrite(fd, (genericptr_t) &match, sizeof(uchar));
|
||||
bwrite(fd, (genericptr_t) rgrm, sizeof(struct rm));
|
||||
/* run has been broken, write out run-length encoding */
|
||||
writeout:
|
||||
bwrite(fd, (genericptr_t) &match, sizeof (uchar));
|
||||
bwrite(fd, (genericptr_t) rgrm, sizeof (struct rm));
|
||||
/* start encoding again. we have at least 1 rm
|
||||
* in the next run, viz. this one. */
|
||||
in the next run, viz. this one. */
|
||||
match = 1;
|
||||
rgrm = prm;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (match > 0) {
|
||||
bwrite(fd, (genericptr_t) &match, sizeof(uchar));
|
||||
bwrite(fd, (genericptr_t) rgrm, sizeof(struct rm));
|
||||
bwrite(fd, (genericptr_t) &match, sizeof (uchar));
|
||||
bwrite(fd, (genericptr_t) rgrm, sizeof (struct rm));
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -905,12 +903,12 @@ register int fd, mode;
|
||||
for (tmplev = sp_levchn; tmplev; tmplev = tmplev->next)
|
||||
cnt++;
|
||||
if (perform_bwrite(mode))
|
||||
bwrite(fd, (genericptr_t) &cnt, sizeof(int));
|
||||
bwrite(fd, (genericptr_t) &cnt, sizeof cnt);
|
||||
|
||||
for (tmplev = sp_levchn; tmplev; tmplev = tmplev2) {
|
||||
tmplev2 = tmplev->next;
|
||||
if (perform_bwrite(mode))
|
||||
bwrite(fd, (genericptr_t) tmplev, sizeof(s_level));
|
||||
bwrite(fd, (genericptr_t) tmplev, sizeof *tmplev);
|
||||
if (release_data(mode))
|
||||
free((genericptr_t) tmplev);
|
||||
}
|
||||
@@ -954,11 +952,11 @@ register int fd, mode;
|
||||
for (tmp_dam = damageptr; tmp_dam; tmp_dam = tmp_dam->next)
|
||||
xl++;
|
||||
if (perform_bwrite(mode))
|
||||
bwrite(fd, (genericptr_t) &xl, sizeof(xl));
|
||||
bwrite(fd, (genericptr_t) &xl, sizeof xl);
|
||||
|
||||
while (xl--) {
|
||||
if (perform_bwrite(mode))
|
||||
bwrite(fd, (genericptr_t) damageptr, sizeof(*damageptr));
|
||||
bwrite(fd, (genericptr_t) damageptr, sizeof *damageptr);
|
||||
tmp_dam = damageptr;
|
||||
damageptr = damageptr->next;
|
||||
if (release_data(mode))
|
||||
@@ -975,14 +973,11 @@ struct obj *otmp;
|
||||
{
|
||||
int buflen, zerobuf = 0;
|
||||
|
||||
buflen = sizeof(struct obj);
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof(int));
|
||||
buflen = (int) sizeof (struct obj);
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
bwrite(fd, (genericptr_t) otmp, buflen);
|
||||
if (otmp->oextra) {
|
||||
if (ONAME(otmp))
|
||||
buflen = strlen(ONAME(otmp)) + 1;
|
||||
else
|
||||
buflen = 0;
|
||||
buflen = ONAME(otmp) ? (int) strlen(ONAME(otmp)) + 1 : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) ONAME(otmp), buflen);
|
||||
@@ -993,26 +988,18 @@ struct obj *otmp;
|
||||
else
|
||||
bwrite(fd, (genericptr_t) &zerobuf, sizeof zerobuf);
|
||||
|
||||
if (OMID(otmp))
|
||||
buflen = sizeof(unsigned);
|
||||
else
|
||||
buflen = 0;
|
||||
buflen = OMID(otmp) ? (int) sizeof (unsigned) : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) OMID(otmp), buflen);
|
||||
|
||||
if (OLONG(otmp))
|
||||
buflen = sizeof(long);
|
||||
else
|
||||
buflen = 0;
|
||||
/* TODO: post 3.6.x, get rid of this */
|
||||
buflen = OLONG(otmp) ? (int) sizeof (long) : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) OLONG(otmp), buflen);
|
||||
|
||||
if (OMAILCMD(otmp))
|
||||
buflen = strlen(OMAILCMD(otmp)) + 1;
|
||||
else
|
||||
buflen = 0;
|
||||
buflen = OMAILCMD(otmp) ? (int) strlen(OMAILCMD(otmp)) + 1 : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) OMAILCMD(otmp), buflen);
|
||||
@@ -1063,7 +1050,7 @@ register struct obj *otmp;
|
||||
otmp = otmp2;
|
||||
}
|
||||
if (perform_bwrite(mode))
|
||||
bwrite(fd, (genericptr_t) &minusone, sizeof(int));
|
||||
bwrite(fd, (genericptr_t) &minusone, sizeof (int));
|
||||
}
|
||||
|
||||
STATIC_OVL void
|
||||
@@ -1073,58 +1060,34 @@ struct monst *mtmp;
|
||||
{
|
||||
int buflen;
|
||||
|
||||
buflen = sizeof(struct monst);
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof(int));
|
||||
buflen = (int) sizeof (struct monst);
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
bwrite(fd, (genericptr_t) mtmp, buflen);
|
||||
if (mtmp->mextra) {
|
||||
if (MNAME(mtmp))
|
||||
buflen = strlen(MNAME(mtmp)) + 1;
|
||||
else
|
||||
buflen = 0;
|
||||
buflen = MNAME(mtmp) ? (int) strlen(MNAME(mtmp)) + 1 : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) MNAME(mtmp), buflen);
|
||||
|
||||
if (EGD(mtmp))
|
||||
buflen = sizeof(struct egd);
|
||||
else
|
||||
buflen = 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof(int));
|
||||
buflen = EGD(mtmp) ? (int) sizeof (struct egd) : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) EGD(mtmp), buflen);
|
||||
|
||||
if (EPRI(mtmp))
|
||||
buflen = sizeof(struct epri);
|
||||
else
|
||||
buflen = 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof(int));
|
||||
buflen = EPRI(mtmp) ? (int) sizeof (struct epri) : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof buflen);
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) EPRI(mtmp), buflen);
|
||||
|
||||
if (ESHK(mtmp))
|
||||
buflen = sizeof(struct eshk);
|
||||
else
|
||||
buflen = 0;
|
||||
buflen = ESHK(mtmp) ? (int) sizeof (struct eshk) : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof(int));
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) ESHK(mtmp), buflen);
|
||||
|
||||
if (EMIN(mtmp))
|
||||
buflen = sizeof(struct emin);
|
||||
else
|
||||
buflen = 0;
|
||||
buflen = EMIN(mtmp) ? (int) sizeof (struct emin) : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof(int));
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) EMIN(mtmp), buflen);
|
||||
|
||||
if (EDOG(mtmp))
|
||||
buflen = sizeof(struct edog);
|
||||
else
|
||||
buflen = 0;
|
||||
buflen = EDOG(mtmp) ? (int) sizeof (struct edog) : 0;
|
||||
bwrite(fd, (genericptr_t) &buflen, sizeof(int));
|
||||
if (buflen > 0)
|
||||
bwrite(fd, (genericptr_t) EDOG(mtmp), buflen);
|
||||
|
||||
/* mcorpsenm is inline int rather than pointer to something,
|
||||
so doesn't need to be preceded by a length field */
|
||||
bwrite(fd, (genericptr_t) &MCORPSENM(mtmp), sizeof MCORPSENM(mtmp));
|
||||
@@ -1160,7 +1123,7 @@ register struct monst *mtmp;
|
||||
mtmp = mtmp2;
|
||||
}
|
||||
if (perform_bwrite(mode))
|
||||
bwrite(fd, (genericptr_t) &minusone, sizeof(int));
|
||||
bwrite(fd, (genericptr_t) &minusone, sizeof (int));
|
||||
}
|
||||
|
||||
/* save traps; ftrap is the only trap chain so the 2nd arg is superfluous */
|
||||
@@ -1176,7 +1139,7 @@ int mode;
|
||||
while (trap) {
|
||||
trap2 = trap->ntrap;
|
||||
if (perform_bwrite(mode))
|
||||
bwrite(fd, (genericptr_t) trap, sizeof (struct trap));
|
||||
bwrite(fd, (genericptr_t) trap, sizeof *trap);
|
||||
if (release_data(mode))
|
||||
dealloc_trap(trap);
|
||||
trap = trap2;
|
||||
@@ -1201,7 +1164,7 @@ int fd, mode;
|
||||
while (f1) {
|
||||
f2 = f1->nextf;
|
||||
if (f1->fid >= 0 && perform_bwrite(mode))
|
||||
bwrite(fd, (genericptr_t) f1, sizeof (struct fruit));
|
||||
bwrite(fd, (genericptr_t) f1, sizeof *f1);
|
||||
if (release_data(mode))
|
||||
dealloc_fruit(f1);
|
||||
f1 = f2;
|
||||
@@ -1220,7 +1183,7 @@ int fd;
|
||||
|
||||
bufoff(fd);
|
||||
/* bwrite() before bufon() uses plain write() */
|
||||
bwrite(fd, (genericptr_t) &plsiztmp, sizeof(plsiztmp));
|
||||
bwrite(fd, (genericptr_t) &plsiztmp, sizeof plsiztmp);
|
||||
bwrite(fd, (genericptr_t) plname, plsiztmp);
|
||||
bufon(fd);
|
||||
return;
|
||||
@@ -1246,11 +1209,11 @@ int fd, mode;
|
||||
no need to modify msg[] since terminator isn't written */
|
||||
if (msglen > BUFSZ - 1)
|
||||
msglen = BUFSZ - 1;
|
||||
bwrite(fd, (genericptr_t) &msglen, sizeof(msglen));
|
||||
bwrite(fd, (genericptr_t) &msglen, sizeof msglen);
|
||||
bwrite(fd, (genericptr_t) msg, msglen);
|
||||
++msgcount;
|
||||
}
|
||||
bwrite(fd, (genericptr_t) &minusone, sizeof(int));
|
||||
bwrite(fd, (genericptr_t) &minusone, sizeof (int));
|
||||
}
|
||||
debugpline1("Stored %d messages into savefile.", msgcount);
|
||||
/* note: we don't attempt to handle release_data() here */
|
||||
@@ -1266,15 +1229,14 @@ int fd;
|
||||
* sfsaveinfo (decl.c) describes the savefile info that actually
|
||||
* gets written into the savefile, and is used to determine the
|
||||
* save file being written.
|
||||
|
||||
*
|
||||
* sfrestinfo (decl.c) describes the savefile info that is
|
||||
* being used to read the information from an existing savefile.
|
||||
*
|
||||
*/
|
||||
|
||||
bufoff(fd);
|
||||
/* bwrite() before bufon() uses plain write() */
|
||||
bwrite(fd, (genericptr_t) &sfsaveinfo, (unsigned) (sizeof sfsaveinfo));
|
||||
bwrite(fd, (genericptr_t) &sfsaveinfo, (unsigned) sizeof sfsaveinfo);
|
||||
bufon(fd);
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user