stairway save/restore bit
The logic surrounding stairway saves and restores should not be within a block reserved for deliminating external file structure.
This commit is contained in:
+5
-6
@@ -923,15 +923,14 @@ NHFILE *nhfp;
|
|||||||
if (buflen == -1)
|
if (buflen == -1)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
len += (int) sizeof (stairway);
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
len += (int) sizeof (stairway);
|
|
||||||
mread(nhfp->fd, (genericptr_t) &stway, sizeof (stairway));
|
mread(nhfp->fd, (genericptr_t) &stway, sizeof (stairway));
|
||||||
if (stway.tolev.dnum == u.uz.dnum) {
|
|
||||||
/* stairway dlevel is relative, make it absolute */
|
|
||||||
stway.tolev.dlevel += u.uz.dlevel;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
if (stway.tolev.dnum == u.uz.dnum) {
|
||||||
|
/* stairway dlevel is relative, make it absolute */
|
||||||
|
stway.tolev.dlevel += u.uz.dlevel;
|
||||||
|
}
|
||||||
stairway_add(stway.sx, stway.sy, stway.up, stway.isladder,
|
stairway_add(stway.sx, stway.sy, stway.up, stway.isladder,
|
||||||
&(stway.tolev));
|
&(stway.tolev));
|
||||||
}
|
}
|
||||||
|
|||||||
+9
-9
@@ -668,24 +668,24 @@ NHFILE *nhfp;
|
|||||||
|
|
||||||
while (stway) {
|
while (stway) {
|
||||||
if (perform_bwrite(nhfp)) {
|
if (perform_bwrite(nhfp)) {
|
||||||
|
if (stway->tolev.dnum == u.uz.dnum) {
|
||||||
|
/* make dlevel relative to current level */
|
||||||
|
stway->tolev.dlevel -= u.uz.dlevel;
|
||||||
|
}
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
if (stway->tolev.dnum == u.uz.dnum) {
|
|
||||||
/* make dlevel relative to current level */
|
|
||||||
stway->tolev.dlevel -= u.uz.dlevel;
|
|
||||||
}
|
|
||||||
bwrite(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
|
bwrite(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
|
||||||
bwrite(nhfp->fd, (genericptr_t) stway, sizeof *stway);
|
bwrite(nhfp->fd, (genericptr_t) stway, sizeof *stway);
|
||||||
if (stway->tolev.dnum == u.uz.dnum) {
|
}
|
||||||
/* reset staiway dlevel back to absolute */
|
if (stway->tolev.dnum == u.uz.dnum) {
|
||||||
stway->tolev.dlevel += u.uz.dlevel;
|
/* reset staiway dlevel back to absolute */
|
||||||
}
|
stway->tolev.dlevel += u.uz.dlevel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
stway = stway->next;
|
stway = stway->next;
|
||||||
}
|
}
|
||||||
if (perform_bwrite(nhfp)) {
|
if (perform_bwrite(nhfp)) {
|
||||||
|
buflen = -1;
|
||||||
if (nhfp->structlevel) {
|
if (nhfp->structlevel) {
|
||||||
buflen = -1;
|
|
||||||
bwrite(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
|
bwrite(nhfp->fd, (genericptr_t) &buflen, sizeof buflen);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user