Create DIP_SET() and IBLK_SET() macros to fix lvalue warnings.
Inspired by: kan
This commit is contained in:
parent
0067bbd33a
commit
6703db1346
@ -324,7 +324,7 @@ adjust(struct inodesc *idesc, int lcnt)
|
||||
}
|
||||
if (preen || reply("ADJUST") == 1) {
|
||||
if (bkgrdflag == 0) {
|
||||
DIP(dp, di_nlink) -= lcnt;
|
||||
DIP_SET(dp, di_nlink, DIP(dp, di_nlink) - lcnt);
|
||||
inodirty();
|
||||
} else {
|
||||
cmd.value = idesc->id_number;
|
||||
@ -474,7 +474,7 @@ linkup(ino_t orphan, ino_t parentdir, char *name)
|
||||
parentdir != (ino_t)-1)
|
||||
(void)makeentry(orphan, lfdir, "..");
|
||||
dp = ginode(lfdir);
|
||||
DIP(dp, di_nlink)++;
|
||||
DIP_SET(dp, di_nlink, DIP(dp, di_nlink) + 1);
|
||||
inodirty();
|
||||
inoinfo(lfdir)->ino_linkcnt++;
|
||||
pwarn("DIR I=%lu CONNECTED. ", (u_long)orphan);
|
||||
@ -535,7 +535,7 @@ makeentry(ino_t parent, ino_t ino, const char *name)
|
||||
idesc.id_name = strdup(name);
|
||||
dp = ginode(parent);
|
||||
if (DIP(dp, di_size) % DIRBLKSIZ) {
|
||||
DIP(dp, di_size) = roundup(DIP(dp, di_size), DIRBLKSIZ);
|
||||
DIP_SET(dp, di_size, roundup(DIP(dp, di_size), DIRBLKSIZ));
|
||||
inodirty();
|
||||
}
|
||||
if ((ckinode(dp, &idesc) & ALTERED) != 0)
|
||||
@ -563,10 +563,10 @@ expanddir(union dinode *dp, char *name)
|
||||
return (0);
|
||||
if ((newblk = allocblk(sblock.fs_frag)) == 0)
|
||||
return (0);
|
||||
DIP(dp, di_db[lastbn + 1]) = DIP(dp, di_db[lastbn]);
|
||||
DIP(dp, di_db[lastbn]) = newblk;
|
||||
DIP(dp, di_size) += sblock.fs_bsize;
|
||||
DIP(dp, di_blocks) += btodb(sblock.fs_bsize);
|
||||
DIP_SET(dp, di_db[lastbn + 1], DIP(dp, di_db[lastbn]));
|
||||
DIP_SET(dp, di_db[lastbn], newblk);
|
||||
DIP_SET(dp, di_size, DIP(dp, di_size) + sblock.fs_bsize);
|
||||
DIP_SET(dp, di_blocks, DIP(dp, di_blocks) + btodb(sblock.fs_bsize));
|
||||
bp = getdirblk(DIP(dp, di_db[lastbn + 1]),
|
||||
sblksize(&sblock, DIP(dp, di_size), lastbn + 1));
|
||||
if (bp->b_errs)
|
||||
@ -595,10 +595,10 @@ expanddir(union dinode *dp, char *name)
|
||||
inodirty();
|
||||
return (1);
|
||||
bad:
|
||||
DIP(dp, di_db[lastbn]) = DIP(dp, di_db[lastbn + 1]);
|
||||
DIP(dp, di_db[lastbn + 1]) = 0;
|
||||
DIP(dp, di_size) -= sblock.fs_bsize;
|
||||
DIP(dp, di_blocks) -= btodb(sblock.fs_bsize);
|
||||
DIP_SET(dp, di_db[lastbn], DIP(dp, di_db[lastbn + 1]));
|
||||
DIP_SET(dp, di_db[lastbn + 1], 0);
|
||||
DIP_SET(dp, di_size, DIP(dp, di_size) - sblock.fs_bsize);
|
||||
DIP_SET(dp, di_blocks, DIP(dp, di_blocks) - btodb(sblock.fs_bsize));
|
||||
freeblk(newblk, sblock.fs_frag);
|
||||
return (0);
|
||||
}
|
||||
@ -632,7 +632,7 @@ allocdir(ino_t parent, ino_t request, int mode)
|
||||
cp += DIRBLKSIZ)
|
||||
memmove(cp, &emptydir, sizeof emptydir);
|
||||
dirty(bp);
|
||||
DIP(dp, di_nlink) = 2;
|
||||
DIP_SET(dp, di_nlink, 2);
|
||||
inodirty();
|
||||
if (ino == ROOTINO) {
|
||||
inoinfo(ino)->ino_linkcnt = DIP(dp, di_nlink);
|
||||
@ -654,7 +654,7 @@ allocdir(ino_t parent, ino_t request, int mode)
|
||||
inoinfo(parent)->ino_linkcnt++;
|
||||
}
|
||||
dp = ginode(parent);
|
||||
DIP(dp, di_nlink)++;
|
||||
DIP_SET(dp, di_nlink, DIP(dp, di_nlink) + 1);
|
||||
inodirty();
|
||||
return (ino);
|
||||
}
|
||||
@ -669,7 +669,7 @@ freedir(ino_t ino, ino_t parent)
|
||||
|
||||
if (ino != parent) {
|
||||
dp = ginode(parent);
|
||||
DIP(dp, di_nlink)--;
|
||||
DIP_SET(dp, di_nlink, DIP(dp, di_nlink) - 1);
|
||||
inodirty();
|
||||
}
|
||||
freeino(ino);
|
||||
|
@ -56,6 +56,13 @@ union dinode {
|
||||
((sblock.fs_magic == FS_UFS1_MAGIC) ? \
|
||||
(dp)->dp1.field : (dp)->dp2.field)
|
||||
|
||||
#define DIP_SET(dp, field, val) do { \
|
||||
if (sblock.fs_magic == FS_UFS1_MAGIC) \
|
||||
(dp)->dp1.field = (val); \
|
||||
else \
|
||||
(dp)->dp2.field = (val); \
|
||||
} while (0)
|
||||
|
||||
/*
|
||||
* Each inode on the file system is described by the following structure.
|
||||
* The linkcnt is initially set to the value in the inode. Each time it
|
||||
@ -107,10 +114,18 @@ struct bufarea {
|
||||
} b_un;
|
||||
char b_dirty;
|
||||
};
|
||||
|
||||
#define IBLK(bp, i) \
|
||||
((sblock.fs_magic == FS_UFS1_MAGIC) ? \
|
||||
(bp)->b_un.b_indir1[i] : (bp)->b_un.b_indir2[i])
|
||||
|
||||
#define IBLK_SET(bp, i, val) do { \
|
||||
if (sblock.fs_magic == FS_UFS1_MAGIC) \
|
||||
(bp)->b_un.b_indir1[i] = (val); \
|
||||
else \
|
||||
(bp)->b_un.b_indir2[i] = (val); \
|
||||
} while (0)
|
||||
|
||||
#define B_INUSE 1
|
||||
|
||||
#define MINBUFS 5 /* minimum number of buffers required */
|
||||
|
@ -95,7 +95,8 @@ ckinode(union dinode *dp, struct inodesc *idesc)
|
||||
pathbuf);
|
||||
if (reply("ADJUST LENGTH") == 1) {
|
||||
dp = ginode(idesc->id_number);
|
||||
DIP(dp, di_size) = i * sblock.fs_bsize;
|
||||
DIP_SET(dp, di_size,
|
||||
i * sblock.fs_bsize);
|
||||
printf(
|
||||
"YOU MUST RERUN FSCK AFTERWARDS\n");
|
||||
rerun = 1;
|
||||
@ -133,7 +134,8 @@ ckinode(union dinode *dp, struct inodesc *idesc)
|
||||
pathbuf);
|
||||
if (reply("ADJUST LENGTH") == 1) {
|
||||
dp = ginode(idesc->id_number);
|
||||
DIP(dp, di_size) -= remsize;
|
||||
DIP_SET(dp, di_size,
|
||||
DIP(dp, di_size) - remsize);
|
||||
remsize = 0;
|
||||
printf(
|
||||
"YOU MUST RERUN FSCK AFTERWARDS\n");
|
||||
@ -183,7 +185,7 @@ iblock(struct inodesc *idesc, long ilevel, off_t isize)
|
||||
if (preen) {
|
||||
pfatal("%s", buf);
|
||||
} else if (dofix(idesc, buf)) {
|
||||
IBLK(bp, i) = 0;
|
||||
IBLK_SET(bp, i, 0);
|
||||
dirty(bp);
|
||||
}
|
||||
}
|
||||
@ -211,7 +213,8 @@ iblock(struct inodesc *idesc, long ilevel, off_t isize)
|
||||
pathbuf);
|
||||
if (reply("ADJUST LENGTH") == 1) {
|
||||
dp = ginode(idesc->id_number);
|
||||
DIP(dp, di_size) -= isize;
|
||||
DIP_SET(dp, di_size,
|
||||
DIP(dp, di_size) - isize);
|
||||
isize = 0;
|
||||
printf(
|
||||
"YOU MUST RERUN FSCK AFTERWARDS\n");
|
||||
@ -630,20 +633,21 @@ allocino(ino_t request, int type)
|
||||
}
|
||||
cgdirty();
|
||||
dp = ginode(ino);
|
||||
DIP(dp, di_db[0]) = allocblk((long)1);
|
||||
DIP_SET(dp, di_db[0], allocblk((long)1));
|
||||
if (DIP(dp, di_db[0]) == 0) {
|
||||
inoinfo(ino)->ino_state = USTATE;
|
||||
return (0);
|
||||
}
|
||||
DIP(dp, di_mode) = type;
|
||||
DIP(dp, di_flags) = 0;
|
||||
DIP(dp, di_atime) = time(NULL);
|
||||
DIP(dp, di_mtime) = DIP(dp, di_ctime) = DIP(dp, di_atime);
|
||||
DIP(dp, di_mtimensec) = 0;
|
||||
DIP(dp, di_ctimensec) = 0;
|
||||
DIP(dp, di_atimensec) = 0;
|
||||
DIP(dp, di_size) = sblock.fs_fsize;
|
||||
DIP(dp, di_blocks) = btodb(sblock.fs_fsize);
|
||||
DIP_SET(dp, di_mode, type);
|
||||
DIP_SET(dp, di_flags, 0);
|
||||
DIP_SET(dp, di_atime, time(NULL));
|
||||
DIP_SET(dp, di_ctime, DIP(dp, di_atime));
|
||||
DIP_SET(dp, di_mtime, DIP(dp, di_ctime));
|
||||
DIP_SET(dp, di_mtimensec, 0);
|
||||
DIP_SET(dp, di_ctimensec, 0);
|
||||
DIP_SET(dp, di_atimensec, 0);
|
||||
DIP_SET(dp, di_size, sblock.fs_fsize);
|
||||
DIP_SET(dp, di_blocks, btodb(sblock.fs_fsize));
|
||||
n_files++;
|
||||
inodirty();
|
||||
inoinfo(ino)->ino_type = IFTODT(type);
|
||||
|
@ -236,8 +236,8 @@ checkinode(ino_t inumber, struct inodesc *idesc)
|
||||
}
|
||||
if (!preen && mode == IFMT && reply("HOLD BAD BLOCK") == 1) {
|
||||
dp = ginode(inumber);
|
||||
DIP(dp, di_size) = sblock.fs_fsize;
|
||||
DIP(dp, di_mode) = IFREG|0600;
|
||||
DIP_SET(dp, di_size, sblock.fs_fsize);
|
||||
DIP_SET(dp, di_mode, IFREG|0600);
|
||||
inodirty();
|
||||
}
|
||||
if ((mode == IFBLK || mode == IFCHR || mode == IFIFO ||
|
||||
@ -364,7 +364,7 @@ checkinode(ino_t inumber, struct inodesc *idesc)
|
||||
return;
|
||||
if (bkgrdflag == 0) {
|
||||
dp = ginode(inumber);
|
||||
DIP(dp, di_blocks) = idesc->id_entryno;
|
||||
DIP_SET(dp, di_blocks, idesc->id_entryno);
|
||||
inodirty();
|
||||
} else {
|
||||
cmd.value = idesc->id_number;
|
||||
|
@ -103,8 +103,8 @@ pass2(void)
|
||||
exit(EEXIT);
|
||||
}
|
||||
dp = ginode(ROOTINO);
|
||||
DIP(dp, di_mode) &= ~IFMT;
|
||||
DIP(dp, di_mode) |= IFDIR;
|
||||
DIP_SET(dp, di_mode, DIP(dp, di_mode) & ~IFMT);
|
||||
DIP_SET(dp, di_mode, DIP(dp, di_mode) | IFDIR);
|
||||
inodirty();
|
||||
break;
|
||||
|
||||
@ -149,7 +149,7 @@ pass2(void)
|
||||
inp->i_isize = roundup(MINDIRSIZE, DIRBLKSIZ);
|
||||
if (reply("FIX") == 1) {
|
||||
dp = ginode(inp->i_number);
|
||||
DIP(dp, di_size) = inp->i_isize;
|
||||
DIP_SET(dp, di_size, inp->i_isize);
|
||||
inodirty();
|
||||
}
|
||||
} else if ((inp->i_isize & (DIRBLKSIZ - 1)) != 0) {
|
||||
@ -167,22 +167,22 @@ pass2(void)
|
||||
inp->i_isize = roundup(inp->i_isize, DIRBLKSIZ);
|
||||
if (preen || reply("ADJUST") == 1) {
|
||||
dp = ginode(inp->i_number);
|
||||
DIP(dp, di_size) =
|
||||
roundup(inp->i_isize, DIRBLKSIZ);
|
||||
DIP_SET(dp, di_size,
|
||||
roundup(inp->i_isize, DIRBLKSIZ));
|
||||
inodirty();
|
||||
}
|
||||
}
|
||||
dp = &dino;
|
||||
memset(dp, 0, sizeof(struct ufs2_dinode));
|
||||
DIP(dp, di_mode) = IFDIR;
|
||||
DIP(dp, di_size) = inp->i_isize;
|
||||
DIP_SET(dp, di_mode, IFDIR);
|
||||
DIP_SET(dp, di_size, inp->i_isize);
|
||||
for (i = 0;
|
||||
i < (inp->i_numblks<NDADDR ? inp->i_numblks : NDADDR);
|
||||
i++)
|
||||
DIP(dp, di_db[i]) = inp->i_blks[i];
|
||||
DIP_SET(dp, di_db[i], inp->i_blks[i]);
|
||||
if (inp->i_numblks > NDADDR)
|
||||
for (i = 0; i < NIADDR; i++)
|
||||
DIP(dp, di_ib[i]) = inp->i_blks[NDADDR + i];
|
||||
DIP_SET(dp, di_ib[i], inp->i_blks[NDADDR + i]);
|
||||
curino.id_number = inp->i_number;
|
||||
curino.id_parent = inp->i_parent;
|
||||
(void)ckinode(dp, &curino);
|
||||
|
Loading…
Reference in New Issue
Block a user