mread() in restore.c
Update and apply an old stashed commit: hide the casts in calls to mread() made in restore.c. Some split lines get recombined and there is less clutter when reading the code.
This commit is contained in:
+106
-99
@@ -62,6 +62,11 @@ extern int amii_numcolors;
|
|||||||
|
|
||||||
#define Is_IceBox(o) ((o)->otyp == ICE_BOX ? TRUE : FALSE)
|
#define Is_IceBox(o) ((o)->otyp == ICE_BOX ? TRUE : FALSE)
|
||||||
|
|
||||||
|
/* third arg passed to mread() should be 'unsigned' but most calls use
|
||||||
|
sizeof so are attempting to pass 'size_t'; mread()'s prototype results
|
||||||
|
in an implicit conversion; this macro does it explicitly */
|
||||||
|
#define Mread(fd,adr,siz) mread((fd), (genericptr_t) (adr), (unsigned) (siz))
|
||||||
|
|
||||||
/* Recalculate gl.level.objects[x][y], since this info was not saved. */
|
/* Recalculate gl.level.objects[x][y], since this info was not saved. */
|
||||||
static void
|
static void
|
||||||
find_lev_obj(void)
|
find_lev_obj(void)
|
||||||
@@ -121,19 +126,19 @@ inven_inuse(boolean quietly)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
restlevchn(NHFILE* nhfp)
|
restlevchn(NHFILE *nhfp)
|
||||||
{
|
{
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
s_level *tmplev, *x;
|
s_level *tmplev, *x;
|
||||||
|
|
||||||
gs.sp_levchn = (s_level *) 0;
|
gs.sp_levchn = (s_level *) 0;
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &cnt, sizeof(int));
|
Mread(nhfp->fd, &cnt, sizeof cnt);
|
||||||
|
|
||||||
for (; cnt > 0; cnt--) {
|
for (; cnt > 0; cnt--) {
|
||||||
tmplev = (s_level *) alloc(sizeof(s_level));
|
tmplev = (s_level *) alloc(sizeof(s_level));
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) tmplev, sizeof(s_level));
|
Mread(nhfp->fd, tmplev, sizeof *tmplev);
|
||||||
|
|
||||||
if (!gs.sp_levchn)
|
if (!gs.sp_levchn)
|
||||||
gs.sp_levchn = tmplev;
|
gs.sp_levchn = tmplev;
|
||||||
@@ -147,7 +152,7 @@ restlevchn(NHFILE* nhfp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
restdamage(NHFILE* nhfp)
|
restdamage(NHFILE *nhfp)
|
||||||
{
|
{
|
||||||
unsigned int dmgcount = 0;
|
unsigned int dmgcount = 0;
|
||||||
int counter;
|
int counter;
|
||||||
@@ -155,7 +160,7 @@ restdamage(NHFILE* nhfp)
|
|||||||
boolean ghostly = (nhfp->ftype == NHF_BONESFILE);
|
boolean ghostly = (nhfp->ftype == NHF_BONESFILE);
|
||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &dmgcount, sizeof dmgcount);
|
Mread(nhfp->fd, &dmgcount, sizeof dmgcount);
|
||||||
counter = (int) dmgcount;
|
counter = (int) dmgcount;
|
||||||
|
|
||||||
if (!counter)
|
if (!counter)
|
||||||
@@ -163,7 +168,7 @@ restdamage(NHFILE* nhfp)
|
|||||||
do {
|
do {
|
||||||
tmp_dam = (struct damage *) alloc(sizeof *tmp_dam);
|
tmp_dam = (struct damage *) alloc(sizeof *tmp_dam);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) tmp_dam, sizeof *tmp_dam);
|
Mread(nhfp->fd, tmp_dam, sizeof *tmp_dam);
|
||||||
|
|
||||||
if (ghostly)
|
if (ghostly)
|
||||||
tmp_dam->when += (gm.moves - go.omoves);
|
tmp_dam->when += (gm.moves - go.omoves);
|
||||||
@@ -175,12 +180,12 @@ restdamage(NHFILE* nhfp)
|
|||||||
|
|
||||||
/* restore one object */
|
/* restore one object */
|
||||||
static void
|
static void
|
||||||
restobj(NHFILE* nhfp, struct obj *otmp)
|
restobj(NHFILE *nhfp, struct obj *otmp)
|
||||||
{
|
{
|
||||||
int buflen = 0;
|
int buflen = 0;
|
||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) otmp, sizeof(struct obj));
|
Mread(nhfp->fd, otmp, sizeof *otmp);
|
||||||
|
|
||||||
otmp->lua_ref_cnt = 0;
|
otmp->lua_ref_cnt = 0;
|
||||||
/* next object pointers are invalid; otmp->cobj needs to be left
|
/* next object pointers are invalid; otmp->cobj needs to be left
|
||||||
@@ -192,17 +197,17 @@ restobj(NHFILE* nhfp, struct obj *otmp)
|
|||||||
|
|
||||||
/* oname - object's name */
|
/* oname - object's name */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
|
|
||||||
if (buflen > 0) { /* includes terminating '\0' */
|
if (buflen > 0) { /* includes terminating '\0' */
|
||||||
new_oname(otmp, buflen);
|
new_oname(otmp, buflen);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) ONAME(otmp), buflen);
|
Mread(nhfp->fd, ONAME(otmp), buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* omonst - corpse or statue might retain full monster details */
|
/* omonst - corpse or statue might retain full monster details */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
if (buflen > 0) {
|
if (buflen > 0) {
|
||||||
newomonst(otmp);
|
newomonst(otmp);
|
||||||
/* this is actually a monst struct, so we
|
/* this is actually a monst struct, so we
|
||||||
@@ -212,12 +217,12 @@ restobj(NHFILE* nhfp, struct obj *otmp)
|
|||||||
|
|
||||||
/* omailcmd - feedback mechanism for scroll of mail */
|
/* omailcmd - feedback mechanism for scroll of mail */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
if (buflen > 0) {
|
if (buflen > 0) {
|
||||||
char *omailcmd = (char *) alloc(buflen);
|
char *omailcmd = (char *) alloc(buflen);
|
||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) omailcmd, buflen);
|
Mread(nhfp->fd, omailcmd, buflen);
|
||||||
new_omailcmd(otmp, omailcmd);
|
new_omailcmd(otmp, omailcmd);
|
||||||
free((genericptr_t) omailcmd);
|
free((genericptr_t) omailcmd);
|
||||||
}
|
}
|
||||||
@@ -225,12 +230,12 @@ restobj(NHFILE* nhfp, struct obj *otmp)
|
|||||||
/* omid - monster id number, connecting corpse to ghost */
|
/* omid - monster id number, connecting corpse to ghost */
|
||||||
newomid(otmp); /* superfluous; we're already allocated otmp->oextra */
|
newomid(otmp); /* superfluous; we're already allocated otmp->oextra */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &OMID(otmp), sizeof OMID(otmp));
|
Mread(nhfp->fd, &OMID(otmp), sizeof OMID(otmp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct obj *
|
static struct obj *
|
||||||
restobjchn(NHFILE* nhfp, boolean frozen)
|
restobjchn(NHFILE *nhfp, boolean frozen)
|
||||||
{
|
{
|
||||||
register struct obj *otmp, *otmp2 = 0;
|
register struct obj *otmp, *otmp2 = 0;
|
||||||
register struct obj *first = (struct obj *) 0;
|
register struct obj *first = (struct obj *) 0;
|
||||||
@@ -239,7 +244,7 @@ restobjchn(NHFILE* nhfp, boolean frozen)
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
|
|
||||||
if (buflen == -1)
|
if (buflen == -1)
|
||||||
break;
|
break;
|
||||||
@@ -298,12 +303,12 @@ restobjchn(NHFILE* nhfp, boolean frozen)
|
|||||||
|
|
||||||
/* restore one monster */
|
/* restore one monster */
|
||||||
static void
|
static void
|
||||||
restmon(NHFILE* nhfp, struct monst* mtmp)
|
restmon(NHFILE *nhfp, struct monst *mtmp)
|
||||||
{
|
{
|
||||||
int buflen = 0;
|
int buflen = 0;
|
||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) mtmp, sizeof(struct monst));
|
Mread(nhfp->fd, mtmp, sizeof *mtmp);
|
||||||
|
|
||||||
/* next monster pointer is invalid */
|
/* next monster pointer is invalid */
|
||||||
mtmp->nmon = (struct monst *) 0;
|
mtmp->nmon = (struct monst *) 0;
|
||||||
@@ -313,67 +318,62 @@ restmon(NHFILE* nhfp, struct monst* mtmp)
|
|||||||
|
|
||||||
/* mgivenname - monster's name */
|
/* mgivenname - monster's name */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
if (buflen > 0) { /* includes terminating '\0' */
|
if (buflen > 0) { /* includes terminating '\0' */
|
||||||
new_mgivenname(mtmp, buflen);
|
new_mgivenname(mtmp, buflen);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) MGIVENNAME(mtmp), buflen);
|
Mread(nhfp->fd, MGIVENNAME(mtmp), buflen);
|
||||||
}
|
}
|
||||||
/* egd - vault guard */
|
/* egd - vault guard */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
|
|
||||||
if (buflen > 0) {
|
if (buflen > 0) {
|
||||||
newegd(mtmp);
|
newegd(mtmp);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) EGD(mtmp), sizeof (struct egd));
|
Mread(nhfp->fd, EGD(mtmp), sizeof (struct egd));
|
||||||
}
|
}
|
||||||
/* epri - temple priest */
|
/* epri - temple priest */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
if (buflen > 0) {
|
if (buflen > 0) {
|
||||||
newepri(mtmp);
|
newepri(mtmp);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) EPRI(mtmp),
|
Mread(nhfp->fd, EPRI(mtmp), sizeof (struct epri));
|
||||||
sizeof (struct epri));
|
|
||||||
}
|
}
|
||||||
/* eshk - shopkeeper */
|
/* eshk - shopkeeper */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
if (buflen > 0) {
|
if (buflen > 0) {
|
||||||
neweshk(mtmp);
|
neweshk(mtmp);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) ESHK(mtmp),
|
Mread(nhfp->fd, ESHK(mtmp), sizeof (struct eshk));
|
||||||
sizeof (struct eshk));
|
|
||||||
}
|
}
|
||||||
/* emin - minion */
|
/* emin - minion */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
if (buflen > 0) {
|
if (buflen > 0) {
|
||||||
newemin(mtmp);
|
newemin(mtmp);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) EMIN(mtmp),
|
Mread(nhfp->fd, EMIN(mtmp), sizeof (struct emin));
|
||||||
sizeof (struct emin));
|
|
||||||
}
|
}
|
||||||
/* edog - pet */
|
/* edog - pet */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
if (buflen > 0) {
|
if (buflen > 0) {
|
||||||
newedog(mtmp);
|
newedog(mtmp);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) EDOG(mtmp),
|
Mread(nhfp->fd, EDOG(mtmp), sizeof (struct edog));
|
||||||
sizeof (struct edog));
|
|
||||||
}
|
}
|
||||||
/* mcorpsenm - obj->corpsenm for mimic posing as corpse or
|
/* mcorpsenm - obj->corpsenm for mimic posing as corpse or
|
||||||
statue (inline int rather than pointer to something) */
|
statue (inline int rather than pointer to something) */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &MCORPSENM(mtmp),
|
Mread(nhfp->fd, &MCORPSENM(mtmp), sizeof MCORPSENM(mtmp));
|
||||||
sizeof MCORPSENM(mtmp));
|
|
||||||
} /* mextra */
|
} /* mextra */
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct monst *
|
static struct monst *
|
||||||
restmonchn(NHFILE* nhfp)
|
restmonchn(NHFILE *nhfp)
|
||||||
{
|
{
|
||||||
register struct monst *mtmp, *mtmp2 = 0;
|
register struct monst *mtmp, *mtmp2 = 0;
|
||||||
register struct monst *first = (struct monst *) 0;
|
register struct monst *first = (struct monst *) 0;
|
||||||
@@ -382,7 +382,7 @@ restmonchn(NHFILE* nhfp)
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof(buflen));
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
if (buflen == -1)
|
if (buflen == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -450,7 +450,7 @@ restmonchn(NHFILE* nhfp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct fruit *
|
static struct fruit *
|
||||||
loadfruitchn(NHFILE* nhfp)
|
loadfruitchn(NHFILE *nhfp)
|
||||||
{
|
{
|
||||||
register struct fruit *flist, *fnext;
|
register struct fruit *flist, *fnext;
|
||||||
|
|
||||||
@@ -458,7 +458,7 @@ loadfruitchn(NHFILE* nhfp)
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
fnext = newfruit();
|
fnext = newfruit();
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t)fnext, sizeof *fnext);
|
Mread(nhfp->fd, fnext, sizeof *fnext);
|
||||||
if (fnext->fid != 0) {
|
if (fnext->fid != 0) {
|
||||||
fnext->nextf = flist;
|
fnext->nextf = flist;
|
||||||
flist = fnext;
|
flist = fnext;
|
||||||
@@ -470,7 +470,7 @@ loadfruitchn(NHFILE* nhfp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
freefruitchn(register struct fruit* flist)
|
freefruitchn(register struct fruit *flist)
|
||||||
{
|
{
|
||||||
register struct fruit *fnext;
|
register struct fruit *fnext;
|
||||||
|
|
||||||
@@ -482,7 +482,7 @@ freefruitchn(register struct fruit* flist)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
ghostfruit(register struct obj* otmp)
|
ghostfruit(register struct obj *otmp)
|
||||||
{
|
{
|
||||||
register struct fruit *oldf;
|
register struct fruit *oldf;
|
||||||
|
|
||||||
@@ -504,7 +504,9 @@ ghostfruit(register struct obj* otmp)
|
|||||||
|
|
||||||
static
|
static
|
||||||
boolean
|
boolean
|
||||||
restgamestate(NHFILE* nhfp, unsigned int* stuckid, unsigned int* steedid)
|
restgamestate(
|
||||||
|
NHFILE *nhfp,
|
||||||
|
unsigned *stuckid, unsigned *steedid)
|
||||||
{
|
{
|
||||||
struct flag newgameflags;
|
struct flag newgameflags;
|
||||||
struct context_info newgamecontext; /* all 0, but has some pointers */
|
struct context_info newgamecontext; /* all 0, but has some pointers */
|
||||||
@@ -515,7 +517,7 @@ restgamestate(NHFILE* nhfp, unsigned int* stuckid, unsigned int* steedid)
|
|||||||
boolean defer_perm_invent;
|
boolean defer_perm_invent;
|
||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &uid, sizeof uid);
|
Mread(nhfp->fd, &uid, sizeof uid);
|
||||||
|
|
||||||
if (SYSOPT_CHECK_SAVE_UID
|
if (SYSOPT_CHECK_SAVE_UID
|
||||||
&& uid != (unsigned long) getuid()) { /* strange ... */
|
&& uid != (unsigned long) getuid()) { /* strange ... */
|
||||||
@@ -528,7 +530,7 @@ restgamestate(NHFILE* nhfp, unsigned int* stuckid, unsigned int* steedid)
|
|||||||
|
|
||||||
newgamecontext = gc.context; /* copy statically init'd context */
|
newgamecontext = gc.context; /* copy statically init'd context */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &gc.context, sizeof (struct context_info));
|
Mread(nhfp->fd, &gc.context, sizeof gc.context);
|
||||||
gc.context.warntype.species = (gc.context.warntype.speciesidx >= LOW_PM)
|
gc.context.warntype.species = (gc.context.warntype.speciesidx >= LOW_PM)
|
||||||
? &mons[gc.context.warntype.speciesidx]
|
? &mons[gc.context.warntype.speciesidx]
|
||||||
: (struct permonst *) 0;
|
: (struct permonst *) 0;
|
||||||
@@ -541,7 +543,7 @@ restgamestate(NHFILE* nhfp, unsigned int* stuckid, unsigned int* steedid)
|
|||||||
if partial restore fails and we resort to starting a new game */
|
if partial restore fails and we resort to starting a new game */
|
||||||
newgameflags = flags;
|
newgameflags = flags;
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &flags, sizeof (struct flag));
|
Mread(nhfp->fd, &flags, sizeof flags);
|
||||||
|
|
||||||
/* avoid keeping permanent inventory window up to date during restore
|
/* avoid keeping permanent inventory window up to date during restore
|
||||||
(setworn() calls update_inventory); attempting to include the cost
|
(setworn() calls update_inventory); attempting to include the cost
|
||||||
@@ -569,18 +571,18 @@ restgamestate(NHFILE* nhfp, unsigned int* stuckid, unsigned int* steedid)
|
|||||||
amii_setpens(amii_numcolors); /* use colors from save file */
|
amii_setpens(amii_numcolors); /* use colors from save file */
|
||||||
#endif
|
#endif
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &u, sizeof(struct you));
|
Mread(nhfp->fd, &u, sizeof u);
|
||||||
gy.youmonst.cham = u.mcham;
|
gy.youmonst.cham = u.mcham;
|
||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) timebuf, 14);
|
Mread(nhfp->fd, timebuf, 14);
|
||||||
timebuf[14] = '\0';
|
timebuf[14] = '\0';
|
||||||
ubirthday = time_from_yyyymmddhhmmss(timebuf);
|
ubirthday = time_from_yyyymmddhhmmss(timebuf);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, &urealtime.realtime, sizeof urealtime.realtime);
|
Mread(nhfp->fd, &urealtime.realtime, sizeof urealtime.realtime);
|
||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) timebuf, 14);
|
Mread(nhfp->fd, timebuf, 14);
|
||||||
timebuf[14] = '\0';
|
timebuf[14] = '\0';
|
||||||
urealtime.start_timing = time_from_yyyymmddhhmmss(timebuf);
|
urealtime.start_timing = time_from_yyyymmddhhmmss(timebuf);
|
||||||
|
|
||||||
@@ -632,7 +634,7 @@ restgamestate(NHFILE* nhfp, unsigned int* stuckid, unsigned int* steedid)
|
|||||||
gm.migrating_mons = restmonchn(nhfp);
|
gm.migrating_mons = restmonchn(nhfp);
|
||||||
|
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) gm.mvitals, sizeof gm.mvitals);
|
Mread(nhfp->fd, &gm.mvitals[0], sizeof gm.mvitals);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -660,27 +662,25 @@ restgamestate(NHFILE* nhfp, unsigned int* stuckid, unsigned int* steedid)
|
|||||||
restore_dungeon(nhfp);
|
restore_dungeon(nhfp);
|
||||||
restlevchn(nhfp);
|
restlevchn(nhfp);
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) &gm.moves, sizeof gm.moves);
|
Mread(nhfp->fd, &gm.moves, sizeof gm.moves);
|
||||||
/* hero_seq isn't saved and restored because it can be recalculated */
|
/* hero_seq isn't saved and restored because it can be recalculated */
|
||||||
gh.hero_seq = gm.moves << 3; /* normally handled in moveloop() */
|
gh.hero_seq = gm.moves << 3; /* normally handled in moveloop() */
|
||||||
mread(nhfp->fd, (genericptr_t) &gq.quest_status,
|
Mread(nhfp->fd, &gq.quest_status, sizeof gq.quest_status);
|
||||||
sizeof (struct q_score));
|
Mread(nhfp->fd, gs.spl_book, (MAXSPELL + 1) * sizeof (struct spell));
|
||||||
mread(nhfp->fd, (genericptr_t) gs.spl_book,
|
|
||||||
(MAXSPELL + 1) * sizeof (struct spell));
|
|
||||||
}
|
}
|
||||||
restore_artifacts(nhfp);
|
restore_artifacts(nhfp);
|
||||||
restore_oracles(nhfp);
|
restore_oracles(nhfp);
|
||||||
if (u.ustuck) {
|
if (u.ustuck) {
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) stuckid, sizeof *stuckid);
|
Mread(nhfp->fd, stuckid, sizeof *stuckid);
|
||||||
}
|
}
|
||||||
if (u.usteed) {
|
if (u.usteed) {
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) steedid, sizeof *steedid);
|
Mread(nhfp->fd, steedid, sizeof *steedid);
|
||||||
}
|
}
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) gp.pl_character, sizeof gp.pl_character);
|
Mread(nhfp->fd, gp.pl_character, sizeof gp.pl_character);
|
||||||
mread(nhfp->fd, (genericptr_t) gp.pl_fruit, sizeof gp.pl_fruit);
|
Mread(nhfp->fd, gp.pl_fruit, sizeof gp.pl_fruit);
|
||||||
}
|
}
|
||||||
freefruitchn(gf.ffruit); /* clean up fruit(s) made by initoptions() */
|
freefruitchn(gf.ffruit); /* clean up fruit(s) made by initoptions() */
|
||||||
gf.ffruit = loadfruitchn(nhfp);
|
gf.ffruit = loadfruitchn(nhfp);
|
||||||
@@ -745,7 +745,7 @@ restlevelfile(xint8 ltmp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
dorecover(NHFILE* nhfp)
|
dorecover(NHFILE *nhfp)
|
||||||
{
|
{
|
||||||
unsigned int stuckid = 0, steedid = 0; /* not a register */
|
unsigned int stuckid = 0, steedid = 0; /* not a register */
|
||||||
xint8 ltmp = 0;
|
xint8 ltmp = 0;
|
||||||
@@ -815,7 +815,7 @@ dorecover(NHFILE* nhfp)
|
|||||||
restoreinfo.mread_flags = 1; /* return despite error */
|
restoreinfo.mread_flags = 1; /* return despite error */
|
||||||
while (1) {
|
while (1) {
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) <mp, sizeof ltmp);
|
Mread(nhfp->fd, <mp, sizeof ltmp);
|
||||||
if (restoreinfo.mread_flags == -1)
|
if (restoreinfo.mread_flags == -1)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -896,7 +896,7 @@ dorecover(NHFILE* nhfp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
rest_stairs(NHFILE* nhfp)
|
rest_stairs(NHFILE *nhfp)
|
||||||
{
|
{
|
||||||
int buflen = 0;
|
int buflen = 0;
|
||||||
stairway stway = UNDEFINED_VALUES;
|
stairway stway = UNDEFINED_VALUES;
|
||||||
@@ -905,14 +905,14 @@ rest_stairs(NHFILE* nhfp)
|
|||||||
stairway_free_all();
|
stairway_free_all();
|
||||||
while (1) {
|
while (1) {
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
|
Mread(nhfp->fd, &buflen, sizeof buflen);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buflen == -1)
|
if (buflen == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) &stway, sizeof (stairway));
|
Mread(nhfp->fd, &stway, sizeof stway);
|
||||||
}
|
}
|
||||||
if (gp.program_state.restoring != REST_GSTATE
|
if (gp.program_state.restoring != REST_GSTATE
|
||||||
&& stway.tolev.dnum == u.uz.dnum) {
|
&& stway.tolev.dnum == u.uz.dnum) {
|
||||||
@@ -928,19 +928,19 @@ rest_stairs(NHFILE* nhfp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
restcemetery(NHFILE* nhfp, struct cemetery** cemeteryaddr)
|
restcemetery(NHFILE *nhfp, struct cemetery **cemeteryaddr)
|
||||||
{
|
{
|
||||||
struct cemetery *bonesinfo, **bonesaddr;
|
struct cemetery *bonesinfo, **bonesaddr;
|
||||||
int cflag = 0;
|
int cflag = 0;
|
||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &cflag, sizeof cflag);
|
Mread(nhfp->fd, &cflag, sizeof cflag);
|
||||||
if (cflag == 0) {
|
if (cflag == 0) {
|
||||||
bonesaddr = cemeteryaddr;
|
bonesaddr = cemeteryaddr;
|
||||||
do {
|
do {
|
||||||
bonesinfo = (struct cemetery *) alloc(sizeof *bonesinfo);
|
bonesinfo = (struct cemetery *) alloc(sizeof *bonesinfo);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) bonesinfo, sizeof *bonesinfo);
|
Mread(nhfp->fd, bonesinfo, sizeof *bonesinfo);
|
||||||
*bonesaddr = bonesinfo;
|
*bonesaddr = bonesinfo;
|
||||||
bonesaddr = &(*bonesaddr)->next;
|
bonesaddr = &(*bonesaddr)->next;
|
||||||
} while (*bonesaddr);
|
} while (*bonesaddr);
|
||||||
@@ -978,8 +978,8 @@ rest_levl(
|
|||||||
j += 1;
|
j += 1;
|
||||||
} else {
|
} else {
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) &len, sizeof(uchar));
|
Mread(nhfp->fd, &len, sizeof len);
|
||||||
mread(nhfp->fd, (genericptr_t) &r, sizeof(struct rm));
|
Mread(nhfp->fd, &r, sizeof r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -990,7 +990,7 @@ rest_levl(
|
|||||||
}
|
}
|
||||||
#endif /* RLECOMP */
|
#endif /* RLECOMP */
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) levl, sizeof levl);
|
Mread(nhfp->fd, levl, sizeof levl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1005,7 +1005,7 @@ trickery(char *reason)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
getlev(NHFILE* nhfp, int pid, xint8 lev)
|
getlev(NHFILE *nhfp, int pid, xint8 lev)
|
||||||
{
|
{
|
||||||
register struct trap *trap;
|
register struct trap *trap;
|
||||||
register struct monst *mtmp;
|
register struct monst *mtmp;
|
||||||
@@ -1034,16 +1034,16 @@ getlev(NHFILE* nhfp, int pid, xint8 lev)
|
|||||||
|
|
||||||
/* First some sanity checks */
|
/* First some sanity checks */
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &hpid, sizeof(hpid));
|
Mread(nhfp->fd, &hpid, sizeof hpid);
|
||||||
|
|
||||||
/* CHECK: This may prevent restoration */
|
/* CHECK: This may prevent restoration */
|
||||||
#ifdef TOS
|
#ifdef TOS
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &tlev, sizeof(tlev));
|
Mread(nhfp->fd, &tlev, sizeof tlev);
|
||||||
dlvl = tlev & 0x00ff;
|
dlvl = tlev & 0x00ff;
|
||||||
#else
|
#else
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &dlvl, sizeof(dlvl));
|
Mread(nhfp->fd, &dlvl, sizeof dlvl);
|
||||||
#endif
|
#endif
|
||||||
if ((pid && pid != hpid) || (lev && dlvl != lev)) {
|
if ((pid && pid != hpid) || (lev && dlvl != lev)) {
|
||||||
char trickbuf[BUFSZ];
|
char trickbuf[BUFSZ];
|
||||||
@@ -1061,25 +1061,26 @@ getlev(NHFILE* nhfp, int pid, xint8 lev)
|
|||||||
rest_levl(nhfp,
|
rest_levl(nhfp,
|
||||||
(boolean) ((sfrestinfo.sfi1 & SFI1_RLECOMP) == SFI1_RLECOMP));
|
(boolean) ((sfrestinfo.sfi1 & SFI1_RLECOMP) == SFI1_RLECOMP));
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) gl.lastseentyp, sizeof(gl.lastseentyp));
|
Mread(nhfp->fd, gl.lastseentyp, sizeof gl.lastseentyp);
|
||||||
mread(nhfp->fd, (genericptr_t) &go.omoves, sizeof(go.omoves));
|
Mread(nhfp->fd, &go.omoves, sizeof go.omoves);
|
||||||
}
|
}
|
||||||
elapsed = gm.moves - go.omoves;
|
elapsed = gm.moves - go.omoves;
|
||||||
|
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
rest_stairs(nhfp);
|
rest_stairs(nhfp);
|
||||||
mread(nhfp->fd, (genericptr_t)&gu.updest, sizeof(dest_area));
|
Mread(nhfp->fd, &gu.updest, sizeof gu.updest);
|
||||||
mread(nhfp->fd, (genericptr_t)&gd.dndest, sizeof(dest_area));
|
Mread(nhfp->fd, &gd.dndest, sizeof gd.dndest);
|
||||||
mread(nhfp->fd, (genericptr_t)&gl.level.flags, sizeof(gl.level.flags));
|
Mread(nhfp->fd, &gl.level.flags, sizeof gl.level.flags);
|
||||||
if (gd.doors)
|
if (gd.doors)
|
||||||
free(gd.doors);
|
free(gd.doors);
|
||||||
mread(nhfp->fd, (genericptr_t) &gd.doors_alloc, sizeof (gd.doors_alloc));
|
Mread(nhfp->fd, &gd.doors_alloc, sizeof gd.doors_alloc);
|
||||||
gd.doors = (coord *) alloc(gd.doors_alloc * sizeof (coord));
|
gd.doors = (coord *) alloc(gd.doors_alloc * sizeof (coord));
|
||||||
mread(nhfp->fd, (genericptr_t) gd.doors, gd.doors_alloc * sizeof (coord));
|
Mread(nhfp->fd, gd.doors, gd.doors_alloc * sizeof (coord));
|
||||||
}
|
}
|
||||||
rest_rooms(nhfp); /* No joke :-) */
|
rest_rooms(nhfp); /* No joke :-) */
|
||||||
if (gn.nroom)
|
if (gn.nroom)
|
||||||
gd.doorindex = gr.rooms[gn.nroom - 1].fdoor + gr.rooms[gn.nroom - 1].doorct;
|
gd.doorindex = gr.rooms[gn.nroom - 1].fdoor
|
||||||
|
+ gr.rooms[gn.nroom - 1].doorct;
|
||||||
else
|
else
|
||||||
gd.doorindex = 0;
|
gd.doorindex = 0;
|
||||||
|
|
||||||
@@ -1094,7 +1095,7 @@ getlev(NHFILE* nhfp, int pid, xint8 lev)
|
|||||||
for (;;) {
|
for (;;) {
|
||||||
trap = newtrap();
|
trap = newtrap();
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t)trap, sizeof(struct trap));
|
Mread(nhfp->fd, trap, sizeof *trap);
|
||||||
if (trap->tx != 0) {
|
if (trap->tx != 0) {
|
||||||
if (gp.program_state.restoring != REST_GSTATE
|
if (gp.program_state.restoring != REST_GSTATE
|
||||||
&& trap->dst.dnum == u.uz.dnum) {
|
&& trap->dst.dnum == u.uz.dnum) {
|
||||||
@@ -1233,7 +1234,7 @@ getlev(NHFILE* nhfp, int pid, xint8 lev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
get_plname_from_file(NHFILE* nhfp, char *plbuf)
|
get_plname_from_file(NHFILE *nhfp, char *plbuf)
|
||||||
{
|
{
|
||||||
int pltmpsiz = 0;
|
int pltmpsiz = 0;
|
||||||
|
|
||||||
@@ -1255,14 +1256,14 @@ rest_bubbles(NHFILE *nhfp)
|
|||||||
know what level is being restored */
|
know what level is being restored */
|
||||||
bbubbly = 0;
|
bbubbly = 0;
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &bbubbly, sizeof bbubbly);
|
Mread(nhfp->fd, &bbubbly, sizeof bbubbly);
|
||||||
|
|
||||||
if (bbubbly)
|
if (bbubbly)
|
||||||
restore_waterlevel(nhfp);
|
restore_waterlevel(nhfp);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
restore_gamelog(NHFILE* nhfp)
|
restore_gamelog(NHFILE *nhfp)
|
||||||
{
|
{
|
||||||
int slen = 0;
|
int slen = 0;
|
||||||
char msg[BUFSZ*2];
|
char msg[BUFSZ*2];
|
||||||
@@ -1270,14 +1271,14 @@ restore_gamelog(NHFILE* nhfp)
|
|||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t)&slen, sizeof(slen));
|
Mread(nhfp->fd, &slen, sizeof slen);
|
||||||
if (slen == -1)
|
if (slen == -1)
|
||||||
break;
|
break;
|
||||||
if (slen > ((BUFSZ*2) - 1))
|
if (slen > ((BUFSZ*2) - 1))
|
||||||
panic("restore_gamelog: msg too big (%d)", slen);
|
panic("restore_gamelog: msg too big (%d)", slen);
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
mread(nhfp->fd, (genericptr_t) msg, slen);
|
Mread(nhfp->fd, msg, slen);
|
||||||
mread(nhfp->fd, (genericptr_t) &tmp, sizeof(tmp));
|
Mread(nhfp->fd, &tmp, sizeof tmp);
|
||||||
msg[slen] = '\0';
|
msg[slen] = '\0';
|
||||||
gamelog_add(tmp.flags, tmp.turn, msg);
|
gamelog_add(tmp.flags, tmp.turn, msg);
|
||||||
}
|
}
|
||||||
@@ -1285,20 +1286,20 @@ restore_gamelog(NHFILE* nhfp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
restore_msghistory(NHFILE* nhfp)
|
restore_msghistory(NHFILE *nhfp)
|
||||||
{
|
{
|
||||||
int msgsize = 0, msgcount = 0;
|
int msgsize = 0, msgcount = 0;
|
||||||
char msg[BUFSZ];
|
char msg[BUFSZ];
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) &msgsize, sizeof(msgsize));
|
Mread(nhfp->fd, &msgsize, sizeof msgsize);
|
||||||
if (msgsize == -1)
|
if (msgsize == -1)
|
||||||
break;
|
break;
|
||||||
if (msgsize > (BUFSZ - 1))
|
if (msgsize > BUFSZ - 1)
|
||||||
panic("restore_msghistory: msg too big (%d)", msgsize);
|
panic("restore_msghistory: msg too big (%d)", msgsize);
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
mread(nhfp->fd, (genericptr_t) msg, msgsize);
|
Mread(nhfp->fd, msg, msgsize);
|
||||||
msg[msgsize] = '\0';
|
msg[msgsize] = '\0';
|
||||||
putmsghistory(msg, TRUE);
|
putmsghistory(msg, TRUE);
|
||||||
++msgcount;
|
++msgcount;
|
||||||
@@ -1468,7 +1469,7 @@ restore_menu(
|
|||||||
#endif /* SELECTSAVED */
|
#endif /* SELECTSAVED */
|
||||||
|
|
||||||
int
|
int
|
||||||
validate(NHFILE* nhfp, const char *name)
|
validate(NHFILE *nhfp, const char *name)
|
||||||
{
|
{
|
||||||
readLenType rlen = 0;
|
readLenType rlen = 0;
|
||||||
struct savefile_info sfi;
|
struct savefile_info sfi;
|
||||||
@@ -1477,18 +1478,22 @@ validate(NHFILE* nhfp, const char *name)
|
|||||||
|
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
utdflags |= UTD_CHECKSIZES;
|
utdflags |= UTD_CHECKSIZES;
|
||||||
if (!(reslt = uptodate(nhfp, name, utdflags))) return 1;
|
if (!(reslt = uptodate(nhfp, name, utdflags)))
|
||||||
|
return 1;
|
||||||
|
|
||||||
if ((nhfp->mode & WRITING) == 0) {
|
if ((nhfp->mode & WRITING) == 0) {
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
rlen = (readLenType) read(nhfp->fd, (genericptr_t) &sfi, sizeof sfi);
|
rlen = (readLenType) read(nhfp->fd, (genericptr_t) &sfi,
|
||||||
|
sizeof sfi);
|
||||||
} else {
|
} else {
|
||||||
if (nhfp->structlevel)
|
if (nhfp->structlevel)
|
||||||
rlen = (readLenType) read(nhfp->fd, (genericptr_t) &sfi, sizeof sfi);
|
rlen = (readLenType) read(nhfp->fd, (genericptr_t) &sfi,
|
||||||
|
sizeof sfi);
|
||||||
minit(); /* ZEROCOMP */
|
minit(); /* ZEROCOMP */
|
||||||
if (rlen == 0) {
|
if (rlen == 0) {
|
||||||
if (verbose) {
|
if (verbose) {
|
||||||
pline("File \"%s\" is empty during save file feature check?", name);
|
pline("File \"%s\" is empty during save file feature check?",
|
||||||
|
name);
|
||||||
wait_synch();
|
wait_synch();
|
||||||
}
|
}
|
||||||
return -1;
|
return -1;
|
||||||
@@ -1497,4 +1502,6 @@ validate(NHFILE* nhfp, const char *name)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#undef Mread
|
||||||
|
|
||||||
/*restore.c*/
|
/*restore.c*/
|
||||||
|
|||||||
Reference in New Issue
Block a user