Annotation of coherent/d/etc/fsck/fsck.h, revision 1.1.1.1

1.1       root        1: /*
                      2:  *     Header file for fsck  --  File System Check Program
                      3:  *
                      4:  */
                      5: 
                      6: #include <canon.h>
                      7: #include <sys/dir.h>
                      8: #include <sys/fblk.h>
                      9: #include <sys/filsys.h>
                     10: #include <sys/ino.h>
                     11: #include <sys/stat.h>
                     12: #include <sys/types.h>
                     13: #include <time.h>
                     14: 
                     15: #if _I386
                     16: #define SMALLMODEL 0
                     17: #else
                     18: #define SMALLMODEL 1
                     19: #endif
                     20: 
                     21: #if HPCOHERENT
                     22: typedef long fsize_t;
                     23: #endif
                     24: 
                     25: /*
                     26:  *     Conditional Compilation Flags
                     27:  */
                     28: 
                     29: #define NOT_ALL_ZERO_INODE     /* Dependent on whether or not an inode */
                     30: #ifdef         ALL_ZERO_INODE          /* is totally zeroed when unallocated   */
                     31: #undef ALL_ZERO_INODE          /* or simply a zero mode and zero link  */
                     32: #endif
                     33: 
                     34: 
                     35: /*
                     36:  *     Definitions and Externs
                     37:  */
                     38: 
                     39: #define NUL    0               /* true zero ! */
                     40: #define NULL   ((char *)0)
                     41: 
                     42: #define        YES     3               /* default actions */
                     43: #define        NO      2
                     44: #define ASK    1
                     45: 
                     46: #define        NFILSYS 10              /* max number of file systems */
                     47: #define        MAXCH   20              /* max length of filesys name */
                     48: 
                     49: #define        MAXBADOK        10      /* Max number of bad blocks before excessive */
                     50: extern int numbad;             /* num bad blocks found so far this inode*/
                     51: 
                     52: #define MAXDUPOK       10      /* Max number of dup blocks */
                     53:                                /* in a single inode before excessive */
                     54: #define        DUPTBLSIZE      20      /* Max number of dup referenced blocks */
                     55: extern daddr_t dupblck[];      /* table of duplicate referenced blocks */
                     56: extern         int totdups;            /* number of dup blocks found so far */
                     57: 
                     58: #define MAXBADFREE     10      /* max bad in free list before abort */
                     59: #define MAXDUPFREE     10      /* max dup in free list before abort */
                     60: 
                     61: #define GOOD   1               /* returned by bad() in util.c */
                     62: #define        BAD     0
                     63: 
                     64: #define        TRUE    1               /* errflag possibilities */
                     65: #define        FALSE   0
                     66: extern         int     errflag;        /* errflag indicates not to do phases */
                     67: 
                     68: #define OK     1               /* used to indicate excessive bad/dup */
                     69: #define STOP   0               /* blocks in an inode in phase1.c     */
                     70: #define BAD_DUP        2
                     71: 
                     72: #define FIRSTIN        2               /* First real inode number */
                     73: 
                     74: #define        ND      10              /* Number of Direct Blocks */
                     75: #undef NI
                     76: #define        NI      1
                     77: #define        NII     1
                     78: #define        NIII    1
                     79: #undef NADDR
                     80: #define        NADDR   (ND+NI+NII+NIII)
                     81: extern int     offsets[];      /* table of offsets for level of indirection */
                     82:                                /* for the blocks in an inode */
                     83: 
                     84: extern char    nextchar();     /* used in util.c */
                     85: extern int     fsfd;           /* file system file descriptor */
                     86: extern         int     mdaction;       /* default action for this invocation */
                     87: extern         int     daction;        /* default action for current file system */
                     88: extern  int    writeflg;       /* system write ok or read-only */
                     89: extern  int    qflag;          /* quiet fsck flag */
                     90: extern int     fflag;          /* fast fsck flag */
                     91: extern int     sflag;          /* force free list salvation    */
                     92: extern daddr_t fsize;          /* file system size in blocks */
                     93: extern int     isize;          /* first block not in inode list */
                     94:                                /* isize is NOT unsigned so that comparisons */
                     95:                                /* with longs will not cast the long to */
                     96:                                /* unsigned thus producing confusing results */
                     97: 
                     98: extern  daddr_t        totfree;        /* running count of total free blocks */
                     99: extern         unsigned        ninodes;/* Number of inodes in the files system */
                    100: extern         char    *fsname;        /* file system name */
                    101: extern  fsize_t  pinfo();      /* returns size of file, in phase2.c */
                    102: extern ino_t   lostfound();    /* returns inumber of lost+found dir */
                    103: extern struct dinode *ptrino(); /* returns a ptr to inode, give number */
                    104: extern         char databuf[];         /* buffer to read in block, used throughout */
                    105: extern char buf2[];            /* alternate data buffer */
                    106: extern         daddr_t cdbn;           /* current block number, used by nextblock() */
                    107: #define DSIZE  (sizeof(struct direct))
                    108: extern         char *lostname;         /* name of lost+found directory */
                    109: extern  char *nameit();                /* nameing function for lost dirs and files */
                    110: extern         int     depth;          /* used during tree traversal in phase2.c */
                    111: extern  struct direct *path[];         /* used during tree traversal in phase2.c */
                    112: extern char    *typename();    /* return string to type of inode */
                    113: extern         struct filsys *sbp;     /* Super Block */
                    114: extern         int     sbpfix;         /* flag for super block fixes */
                    115: extern  struct stat stats;     /* used by statit() in util.c */
                    116: extern dev_t   rootdev;        /* root device number */
                    117: extern dev_t   fsysrdev;       /* file system real device number */
                    118: extern int     mounted;        /* flag indicating mountedness of filesystem */
                    119: extern         int     changeflg;      /* file system modified flag */
                    120: extern         int     fixerup;        /* flag to rebuild free list */
                    121: extern char    *fixit;         /* Prompt message phase[45].c */
                    122: extern         int     numfiles;       /* num files in system */
                    123: extern daddr_t imap();         /* function for disk block mapping in util.c */
                    124: extern fsize_t lostsize;       /* Size of files cleared in phase4.c */
                    125: extern char    *tmpfile;       /* TMP File name for virtual.c */
                    126: 
                    127: #define SUCCESS        1               /* used in connect() in phase3.c */
                    128: #define FAILURE        0
                    129: 
                    130: #define        MODEMASK        0x07
                    131: #define ALLOCMASK      0x06
                    132: #define UNALLOC                0x00
                    133: #define UNKNOWN                0x01
                    134: #define        IDIR            0x02
                    135: #define        IREG            0x03
                    136: #define ICHR           0x04
                    137: #define IBLK           0x05
                    138: #define IPIPE          0x06
                    139: #define IBAD_IDUP      0x08
                    140: #define VISITED                0x10
                    141: #define UNREFDIR       0x20
                    142: #define CHILDDIR       0x40
                    143: #define IFREELIST      0x80
                    144: 
                    145: /*
                    146:  *     Macros for tables
                    147:  */
                    148: 
                    149: #if SMALLMODEL
                    150: /* Actions for virtual block system */
                    151: enum vact { testBlock, markBlock, unmarkBlock, grabBlock,
                    152:            testDup, markDup, unmarkDup, setDup,
                    153:            Flags, setFlags, orFlags,
                    154:            linkCtr, incLinkctr, setLinkctr };
                    155:              
                    156: #define testblock(bn)  findblock((unsigned long)(bn), testBlock)
                    157: #define markblock(bn)  findblock((unsigned long)(bn), markBlock)
                    158: #define unmarkblock(bn) findblock((unsigned long)(bn), unmarkBlock)
                    159: 
                    160: #define testdup(bn) findblock((unsigned long)(bn), testDup)
                    161: #define markdup(bn) findblock((unsigned long)(bn), markDup)
                    162: #define unmarkdup(bn) findblock((unsigned long)(bn), unmarkDup)
                    163: 
                    164: #define flags(ino) findblock((unsigned long)(ino), Flags)
                    165: #define setflags(ino, data) findblock((unsigned long)(ino), setFlags, data)
                    166: #define orflags(ino, data)  findblock((unsigned long)(ino), orFlags, data)
                    167: 
                    168: #define linkctr(ino) findblock((unsigned long)(ino), linkCtr)
                    169: #define inclinkctr(ino) findblock((unsigned long)(ino), incLinkctr)
                    170: #define setlinkctr(ino, data) findblock((unsigned long)(ino), setLinkctr, data)
                    171: 
                    172: #define badblks(ino)   (flags(ino)&IBAD_IDUP)
                    173: 
                    174: #else
                    175: unsigned short *linkPtr;
                    176: unsigned char  *flagPtr, *blockPtr, *dupPtr;
                    177: 
                    178: #define bix(bn)         (((unsigned long)(bn)) >> LOGNBPC)
                    179: #define bitm(bn) (1 << ((bn) & (NBPC - 1)))
                    180: 
                    181: #define testblock(bn)  (blockPtr[bix(bn)] &  bitm(bn))
                    182: #define markblock(bn)  (blockPtr[bix(bn)] |= bitm(bn))
                    183: #define unmarkblock(bn) (blockPtr[bix(bn)] ^= bitm(bn))
                    184: 
                    185: #define testdup(bn)    (dupPtr[bix(bn)] &  bitm(bn))
                    186: #define markdup(bn)    (dupPtr[bix(bn)] |= bitm(bn))
                    187: #define unmarkdup(bn)  (dupPtr[bix(bn)] ^= bitm(bn))
                    188: 
                    189: #define flags(ino)             flagPtr[ino - 1]
                    190: #define setflags(ino, data)    (flags(ino) = data)
                    191: #define orflags(ino, data)     (flags(ino) |= data)
                    192: 
                    193: #define linkctr(ino)   linkPtr[ino - 1]
                    194: #define inclinkctr(ino) (++linkctr(ino))
                    195: #define setlinkctr(ino, data)  (linkctr(ino) = data)
                    196: 
                    197: #define badblks(ino)   (flags(ino) & IBAD_IDUP)
                    198: #endif
                    199: 
                    200: /*
                    201:  *     Miscellany
                    202:  */
                    203: #define        NBPC    8                       /* number of bits per character */
                    204: #define        LOGNBPC 3               /* Log2 Number of Bits per Character    */
                    205: #define        MAXINTN 255                     /* used for interleave table    */
                    206:                                        /* in phase6.c                  */
                    207: /*
                    208:  *     Stdio Stuff
                    209:  */
                    210: extern char *malloc();
                    211: extern char *calloc();
                    212: #undef putchar(c)
                    213: #define putchar(c) { char b = c; write(1, &b, 1); }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.