Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/ufs The C language does not permit statements of the form



details:   https://anonhg.NetBSD.org/src/rev/53a546c7805a
branches:  trunk
changeset: 547253:53a546c7805a
user:      kristerw <kristerw%NetBSD.org@localhost>
date:      Thu May 15 20:25:31 2003 +0000

description:
The C language does not permit statements of the form
   (X ? Y : Z) = 0;
even though gcc handles this by a stupid extension.

Transform these to correct C.

Approved by fvdl.

diffstat:

 sys/ufs/ffs/ffs_alloc.c     |  16 ++++----
 sys/ufs/ffs/ffs_inode.c     |  38 +++++++++++++---------
 sys/ufs/ffs/ffs_softdep.c   |  12 +++---
 sys/ufs/ufs/inode.h         |  30 +++++++++++++----
 sys/ufs/ufs/ufs_inode.c     |   8 ++--
 sys/ufs/ufs/ufs_lookup.c    |  14 ++++----
 sys/ufs/ufs/ufs_readwrite.c |   8 ++--
 sys/ufs/ufs/ufs_vnops.c     |  76 ++++++++++++++++++++++----------------------
 8 files changed, 112 insertions(+), 90 deletions(-)

diffs (truncated from 729 to 300 lines):

diff -r 78b97255e6d6 -r 53a546c7805a sys/ufs/ffs/ffs_alloc.c
--- a/sys/ufs/ffs/ffs_alloc.c   Thu May 15 19:17:43 2003 +0000
+++ b/sys/ufs/ffs/ffs_alloc.c   Thu May 15 20:25:31 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ffs_alloc.c,v 1.64 2003/05/04 01:52:18 gmcgarry Exp $  */
+/*     $NetBSD: ffs_alloc.c,v 1.65 2003/05/15 20:25:31 kristerw Exp $  */
 
 /*
  * Copyright (c) 2002 Networks Associates Technology, Inc.
@@ -45,7 +45,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffs_alloc.c,v 1.64 2003/05/04 01:52:18 gmcgarry Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffs_alloc.c,v 1.65 2003/05/15 20:25:31 kristerw Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -179,7 +179,7 @@
        bno = ffs_hashalloc(ip, cg, (long)bpref, size,
                                     ffs_alloccg);
        if (bno > 0) {
-               DIP(ip, blocks) += btodb(size);
+               DIP_ADD(ip, blocks, btodb(size));
                ip->i_flag |= IN_CHANGE | IN_UPDATE;
                *bnp = bno;
                return (0);
@@ -283,7 +283,7 @@
         */
        cg = dtog(fs, bprev);
        if ((bno = ffs_fragextend(ip, cg, bprev, osize, nsize)) != 0) {
-               DIP(ip, blocks) += btodb(nsize - osize);
+               DIP_ADD(ip, blocks, btodb(nsize - osize));
                ip->i_flag |= IN_CHANGE | IN_UPDATE;
 
                if (bpp != NULL) {
@@ -364,7 +364,7 @@
                if (nsize < request)
                        ffs_blkfree(ip, bno + numfrags(fs, nsize),
                            (long)(request - nsize));
-               DIP(ip, blocks) += btodb(nsize - osize);
+               DIP_ADD(ip, blocks, btodb(nsize - osize));
                ip->i_flag |= IN_CHANGE | IN_UPDATE;
                if (bpp != NULL) {
                        bp->b_blkno = fsbtodb(fs, bno);
@@ -727,16 +727,16 @@
        if (DIP(ip, blocks)) {                          /* XXX */
                printf("free inode %s/%d had %" PRId64 " blocks\n",
                    fs->fs_fsmnt, ino, DIP(ip, blocks));
-               DIP(ip, blocks) = 0;
+               DIP_ASSIGN(ip, blocks, 0);
        }
        ip->i_flag &= ~IN_SPACECOUNTED;
        ip->i_flags = 0;
-       DIP(ip, flags) = 0;
+       DIP_ASSIGN(ip, flags, 0);
        /*
         * Set up a new generation number for this inode.
         */
        ip->i_gen++;
-       DIP(ip, gen) = ip->i_gen;
+       DIP_ASSIGN(ip, gen, ip->i_gen);
        if (fs->fs_magic == FS_UFS2_MAGIC) {
                TIMEVAL_TO_TIMESPEC(&time, &ts);
                ip->i_ffs2_birthtime = ts.tv_sec;
diff -r 78b97255e6d6 -r 53a546c7805a sys/ufs/ffs/ffs_inode.c
--- a/sys/ufs/ffs/ffs_inode.c   Thu May 15 19:17:43 2003 +0000
+++ b/sys/ufs/ffs/ffs_inode.c   Thu May 15 20:25:31 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ffs_inode.c,v 1.56 2003/04/10 20:02:36 fvdl Exp $      */
+/*     $NetBSD: ffs_inode.c,v 1.57 2003/05/15 20:25:32 kristerw Exp $  */
 
 /*
  * Copyright (c) 1982, 1986, 1989, 1993
@@ -36,7 +36,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffs_inode.c,v 1.56 2003/04/10 20:02:36 fvdl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffs_inode.c,v 1.57 2003/05/15 20:25:32 kristerw Exp $");
 
 #if defined(_KERNEL_OPT)
 #include "opt_ffs.h"
@@ -208,7 +208,7 @@
                KDASSERT(length == 0);
                memset(SHORTLINK(oip), 0, (size_t)oip->i_size);
                oip->i_size = 0;
-               DIP(oip, size) = 0;
+               DIP_ASSIGN(oip, size, 0);
                oip->i_flag |= IN_CHANGE | IN_UPDATE;
                return (VOP_UPDATE(ovp, NULL, NULL, UPDATE_WAIT));
        }
@@ -330,7 +330,7 @@
                }
        }
        oip->i_size = length;
-       DIP(oip, size) = length;
+       DIP_ASSIGN(oip, size, length);
        uvm_vnp_setsize(ovp, length);
        /*
         * Calculate index into inode's block list of
@@ -352,14 +352,14 @@
        for (level = TRIPLE; level >= SINGLE; level--) {
                oldblks[NDADDR + level] = DIP(oip, ib[level]);
                if (lastiblock[level] < 0) {
-                       DIP(oip, ib[level]) = 0;
+                       DIP_ASSIGN(oip, ib[level], 0);
                        lastiblock[level] = -1;
                }
        }
        for (i = 0; i < NDADDR; i++) {
                oldblks[i] = DIP(oip, db[i]);
                if (i > lastblock)
-                       DIP(oip, db[i]) = 0;
+                       DIP_ASSIGN(oip, db[i], 0);
        }
        oip->i_flag |= IN_CHANGE | IN_UPDATE;
        error = VOP_UPDATE(ovp, NULL, NULL, UPDATE_WAIT);
@@ -374,15 +374,15 @@
         */
        for (i = 0; i < NDADDR; i++) {
                newblks[i] = DIP(oip, db[i]);
-               DIP(oip, db[i]) = oldblks[i];
+               DIP_ASSIGN(oip, db[i], oldblks[i]);
        }
        for (i = 0; i < NIADDR; i++) {
                newblks[NDADDR + i] = DIP(oip, ib[i]);
-               DIP(oip, ib[i]) = oldblks[NDADDR + i];
+               DIP_ASSIGN(oip, ib[i], oldblks[NDADDR + i]);
        }
 
        oip->i_size = osize;
-       DIP(oip, size) = osize;
+       DIP_ASSIGN(oip, size, osize);
        error = vtruncbuf(ovp, lastblock + 1, 0, 0);
        if (error && !allerror)
                allerror = error;
@@ -405,7 +405,7 @@
                                allerror = error;
                        blocksreleased += count;
                        if (lastiblock[level] < 0) {
-                               DIP(oip, ib[level]) = 0;
+                               DIP_ASSIGN(oip, ib[level], 0);
                                ffs_blkfree(oip, bn, fs->fs_bsize);
                                blocksreleased += nblocks;
                        }
@@ -426,7 +426,7 @@
                        bn = ufs_rw64(oip->i_ffs2_db[i], UFS_FSNEEDSWAP(fs));
                if (bn == 0)
                        continue;
-               DIP(oip, db[i]) = 0;
+               DIP_ASSIGN(oip, db[i], 0);
                bsize = blksize(fs, oip, i);
                ffs_blkfree(oip, bn, bsize);
                blocksreleased += btodb(bsize);
@@ -451,7 +451,7 @@
                 */
                oldspace = blksize(fs, oip, lastblock);
                oip->i_size = length;
-               DIP(oip, size) = length;
+               DIP_ASSIGN(oip, size, length);
                newspace = blksize(fs, oip, lastblock);
                if (newspace == 0)
                        panic("itrunc: newspace");
@@ -483,8 +483,8 @@
         * Put back the real size.
         */
        oip->i_size = length;
-       DIP(oip, size) = length;
-       DIP(oip, blocks) -= blocksreleased;
+       DIP_ASSIGN(oip, size, length);
+       DIP_ADD(oip, blocks, -blocksreleased);
        lockmgr(&gp->g_glock, LK_RELEASE, NULL);
        oip->i_flag |= IN_CHANGE;
 #ifdef QUOTA
@@ -527,7 +527,13 @@
 #endif
 #define RBAP(ip, i) (((ip)->i_ump->um_fstype == UFS1) ? \
            ufs_rw32(bap1[i], needswap) : ufs_rw64(bap2[i], needswap))
-#define BAP(ip, i) (((ip)->i_ump->um_fstype == UFS1) ?  bap1[i] : bap2[i])
+#define BAP_ASSIGN(ip, i, value)                                       \
+       do {                                                            \
+               if ((ip)->i_ump->um_fstype == UFS1)                     \
+                       bap1[i] = (value);                              \
+               else                                                    \
+                       bap2[i] = (value);                              \
+       } while(0)
 
        /*
         * Calculate index in current block of last
@@ -578,7 +584,7 @@
                copy = malloc(fs->fs_bsize, M_TEMP, M_WAITOK);
                memcpy((caddr_t)copy, bp->b_data, (u_int)fs->fs_bsize);
                for (i = last + 1; i < NINDIR(fs); i++)
-                       BAP(ip, i) = 0;
+                       BAP_ASSIGN(ip, i, 0);
                error = bwrite(bp);
                if (error)
                        allerror = error;
diff -r 78b97255e6d6 -r 53a546c7805a sys/ufs/ffs/ffs_softdep.c
--- a/sys/ufs/ffs/ffs_softdep.c Thu May 15 19:17:43 2003 +0000
+++ b/sys/ufs/ffs/ffs_softdep.c Thu May 15 20:25:31 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: ffs_softdep.c,v 1.46 2003/04/03 19:28:07 fvdl Exp $    */
+/*     $NetBSD: ffs_softdep.c,v 1.47 2003/05/15 20:25:32 kristerw Exp $        */
 
 /*
  * Copyright 1998 Marshall Kirk McKusick. All Rights Reserved.
@@ -33,7 +33,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: ffs_softdep.c,v 1.46 2003/04/03 19:28:07 fvdl Exp $");
+__KERNEL_RCSID(0, "$NetBSD: ffs_softdep.c,v 1.47 2003/05/15 20:25:32 kristerw Exp $");
 
 #include <sys/param.h>
 #include <sys/buf.h>
@@ -1908,9 +1908,9 @@
                        ip->i_ffs2_ib[i] = 0;
                }
        }
-       DIP(ip, blocks) = 0;
+       DIP_ASSIGN(ip, blocks, 0);
        ip->i_size = 0;
-       DIP(ip, size) = 0;
+       DIP_ASSIGN(ip, size, 0);
        /*
         * If the file was removed, then the space being freed was
         * accounted for then (see softdep_filereleased()). If the
@@ -3174,7 +3174,7 @@
         */
        if ((dirrem->dm_state & RMDIR) == 0) {
                ip->i_nlink--;
-               DIP(ip, nlink) = ip->i_nlink;
+               DIP_ASSIGN(ip, nlink, ip->i_nlink);
                ip->i_flag |= IN_CHANGE;
                if (ip->i_nlink < ip->i_ffs_effnlink)
                        panic("handle_workitem_remove: bad file delta");
@@ -3193,7 +3193,7 @@
         * the parent decremented to account for the loss of "..".
         */
        ip->i_nlink -= 2;
-       DIP(ip, nlink) -= 2;
+       DIP_ADD(ip, nlink, -2);
        ip->i_flag |= IN_CHANGE;
        if (ip->i_nlink < ip->i_ffs_effnlink)
                panic("handle_workitem_remove: bad dir delta");
diff -r 78b97255e6d6 -r 53a546c7805a sys/ufs/ufs/inode.h
--- a/sys/ufs/ufs/inode.h       Thu May 15 19:17:43 2003 +0000
+++ b/sys/ufs/ufs/inode.h       Thu May 15 20:25:31 2003 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: inode.h,v 1.34 2003/04/02 10:39:43 fvdl Exp $  */
+/*     $NetBSD: inode.h,v 1.35 2003/05/15 20:25:33 kristerw Exp $      */
 
 /*
  * Copyright (c) 1982, 1989, 1993
@@ -225,6 +225,22 @@
        (((ip)->i_ump->um_fstype == UFS1) ? \
        (ip)->i_ffs1_##field : (ip)->i_ffs2_##field)
 
+#define DIP_ASSIGN(ip, field, value)                                   \
+       do {                                                            \
+               if ((ip)->i_ump->um_fstype == UFS1)                     \
+                       (ip)->i_ffs1_##field = (value);                 \
+               else                                                    \
+                       (ip)->i_ffs2_##field = (value);                 \
+       } while(0)
+
+#define DIP_ADD(ip, field, value)                                      \
+       do {                                                            \
+               if ((ip)->i_ump->um_fstype == UFS1)                     \
+                       (ip)->i_ffs1_##field += (value);                \
+               else                                                    \
+                       (ip)->i_ffs2_##field += (value);                \
+       } while(0)
+
 #define  SHORTLINK(ip) \
        (((ip)->i_ump->um_fstype == UFS1) ? \
        (caddr_t)(ip)->i_ffs1_db : (caddr_t)(ip)->i_ffs2_db)
@@ -247,19 +263,19 @@
 #define        FFS_ITIMES(ip, acc, mod, cre) {                                 \
        if ((ip)->i_flag & (IN_ACCESS | IN_CHANGE | IN_UPDATE)) {       \
                if ((ip)->i_flag & IN_ACCESS) {                         \
-                       DIP(ip, atime) = (acc)->tv_sec;                 \
-                       DIP(ip, atimensec) = (acc)->tv_nsec;            \
+                       DIP_ASSIGN(ip, atime, (acc)->tv_sec);           \
+                       DIP_ASSIGN(ip, atimensec, (acc)->tv_nsec);      \
                        (ip)->i_flag |= IN_ACCESSED;                    \
                }                                                       \
                if ((ip)->i_flag & IN_UPDATE) {                         \
-                       DIP(ip, mtime) = (mod)->tv_sec;                 \
-                       DIP(ip, mtimensec) = (mod)->tv_nsec;            \
+                       DIP_ASSIGN(ip, mtime, (mod)->tv_sec);           \
+                       DIP_ASSIGN(ip, mtimensec, (mod)->tv_nsec);      \
                        (ip)->i_modrev++;                               \
                        (ip)->i_flag |= IN_MODIFIED;                    \
                }                                                       \
                if ((ip)->i_flag & IN_CHANGE) {                         \
-                       DIP(ip, ctime) = (cre)->tv_sec;                 \
-                       DIP(ip, ctimensec) = (cre)->tv_nsec;            \



Home | Main Index | Thread Index | Old Index