Annotation of coherent/e/bin/pax/pax.h, revision 1.1

1.1     ! root        1: /* $Source: /src386/usr/bin/pax/pax.h,v $
        !             2:  *
        !             3:  * $Revision: 1.1 $
        !             4:  *
        !             5:  * pax.h - defnitions for entire program
        !             6:  *
        !             7:  * DESCRIPTION
        !             8:  *
        !             9:  *     This file contains most all of the definitions required by the PAX
        !            10:  *     software.  This header is included in every source file.
        !            11:  *
        !            12:  * AUTHOR
        !            13:  *
        !            14:  *     Mark H. Colburn, NAPS International ([email protected])
        !            15:  *
        !            16:  * Sponsored by The USENIX Association for public distribution. 
        !            17:  *
        !            18:  * Copyright (c) 1989 Mark H. Colburn.
        !            19:  * All rights reserved.
        !            20:  *
        !            21:  * Redistribution and use in source and binary forms are permitted
        !            22:  * provided that the above copyright notice and this paragraph are
        !            23:  * duplicated in all such forms and that any documentation,
        !            24:  * advertising materials, and other materials related to such
        !            25:  * distribution and use acknowledge that the software was developed
        !            26:  * by Mark H. Colburn and sponsored by The USENIX Association. 
        !            27:  *
        !            28:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
        !            29:  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
        !            30:  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
        !            31:  */
        !            32: 
        !            33: #ifndef _PAX_H
        !            34: #define _PAX_H
        !            35: 
        !            36: /* Headers */
        !            37: 
        !            38: #include "config.h"
        !            39: #include "limits.h"
        !            40: #include <stdio.h>
        !            41: #include <errno.h>
        !            42: #include <signal.h>
        !            43: #include <ctype.h>
        !            44: #include <sys/types.h>
        !            45: /*#include <sys/ioctl.h>*/
        !            46: #include <sys/stat.h>
        !            47: #include "regexp.h"
        !            48: 
        !            49: #if defined(DIRENT) || defined(_POSIX_SOURCE)
        !            50: # ifdef PAXDIR
        !            51: #  include "paxdir.h"
        !            52: # else
        !            53: #  include <dirent.h>
        !            54: # endif
        !            55: #else
        !            56: # ifdef hpux
        !            57: #  include <ndir.h>
        !            58: # else
        !            59: #  ifdef XENIX_286
        !            60: #   include <sys/ndir.h>
        !            61: #  else XENIX_286
        !            62: #   include <sys/dir.h>
        !            63: #  endif XENIX_286
        !            64: # endif /* hpux */
        !            65: # define dirent direct
        !            66: #endif
        !            67: 
        !            68: #ifndef        major
        !            69: #   include <sys/sysmacros.h>
        !            70: #endif                         /* major */
        !            71: 
        !            72: #ifdef SYSTIME
        !            73: #   include <sys/time.h>
        !            74: #else                          /* SYSTIME */
        !            75: #   include <time.h>
        !            76: #endif                         /* SYSTIME */
        !            77: 
        !            78: #ifndef V7
        !            79: #   include <fcntl.h>
        !            80: #endif
        !            81: 
        !            82: #ifdef XENIX
        !            83: #   include <sys/inode.h>
        !            84: #endif
        !            85: #ifdef XENIX_286
        !            86: #include <sys/param.h>
        !            87: #endif XENIX_286
        !            88: 
        !            89: #include <pwd.h>
        !            90: #include <grp.h>
        !            91: #ifndef XENIX_286
        !            92: /*#include <sys/file.h>*/
        !            93: #endif XENIX_286
        !            94: 
        !            95: /* Defines */
        !            96: 
        !            97: #define        STDIN   0               /* Standard input  file descriptor */
        !            98: #define        STDOUT  1               /* Standard output file descriptor */
        !            99: 
        !           100: /*
        !           101:  * Open modes; there is no <fcntl.h> with v7 UNIX and other versions of
        !           102:  * UNIX may not have all of these defined...
        !           103:  */
        !           104: 
        !           105: #ifndef O_RDONLY
        !           106: #   define     O_RDONLY        0
        !           107: #endif
        !           108: 
        !           109: #ifndef O_WRONLY
        !           110: #   define     O_WRONLY        1
        !           111: #endif
        !           112: 
        !           113: #ifndef O_RDWR
        !           114: #   define     O_WRONLY        2
        !           115: #endif
        !           116: 
        !           117: #ifndef        O_BINARY
        !           118: #   define     O_BINARY        0
        !           119: #endif
        !           120: 
        !           121: #ifndef NULL
        !           122: #   define     NULL            0
        !           123: #endif
        !           124: 
        !           125: #define TMAGIC         "ustar"         /* ustar and a null */
        !           126: #define TMAGLEN                6
        !           127: #define TVERSION       "00"            /* 00 and no null */
        !           128: #define TVERSLEN       2
        !           129: 
        !           130: /* Values used in typeflag field */
        !           131: #define REGTYPE                '0'             /* Regular File */
        !           132: #define AREGTYPE       '\0'            /* Regular File */
        !           133: #define LNKTYPE                '1'             /* Link */
        !           134: #define SYMTYPE                '2'             /* Reserved */
        !           135: #define CHRTYPE                '3'             /* Character Special File */
        !           136: #define BLKTYPE                '4'             /* Block Special File */
        !           137: #define DIRTYPE                '5'             /* Directory */
        !           138: #define FIFOTYPE       '6'             /* FIFO */
        !           139: #define CONTTYPE       '7'             /* Reserved */
        !           140: 
        !           141: #define BLOCKSIZE      512     /* all output is padded to 512 bytes */
        !           142: #define        uint    unsigned int    /* Not always in types.h */
        !           143: #define        ushort  unsigned short  /* Not always in types.h */
        !           144: #define        BLOCK   5120            /* Default archive block size */
        !           145: #define        H_COUNT 10              /* Number of items in ASCII header */
        !           146: #define        H_PRINT "%06o%06o%06o%06o%06o%06o%06o%011lo%06o%011lo"
        !           147: #define        H_SCAN  "%6ho%6ho%6ho%6ho%6ho%6ho%6ho%11lo%6o%11lo"
        !           148: #define        H_STRLEN 70             /* ASCII header string length */
        !           149: #define        M_ASCII "070707"        /* ASCII magic number */
        !           150: #define        M_BINARY 070707         /* Binary magic number */
        !           151: #define        M_STRLEN 6              /* ASCII magic number length */
        !           152: #define        PATHELEM 256            /* Pathname element count limit */
        !           153: #define        S_IFSHF 12              /* File type shift (shb in stat.h) */
        !           154: #define        S_IPERM 07777           /* File permission bits (shb in stat.h) */
        !           155: #define        S_IPEXE 07000           /* Special execution bits (shb in stat.h) */
        !           156: #define        S_IPOPN 0777            /* Open access bits (shb in stat.h) */
        !           157: 
        !           158: /*
        !           159:  * Trailer pathnames. All must be of the same length. 
        !           160:  */
        !           161: #define        TRAILER "TRAILER!!!"    /* Archive trailer (cpio compatible) */
        !           162: #define        TRAILZ  11              /* Trailer pathname length (including null) */
        !           163: 
        !           164: #include "port.h"
        !           165: 
        !           166: 
        !           167: #define        TAR             1
        !           168: #define        CPIO            2
        !           169: #define        PAX             3
        !           170: 
        !           171: #define AR_READ        0
        !           172: #define AR_WRITE       1
        !           173: #define AR_EXTRACT     2
        !           174: #define AR_APPEND      4
        !           175: 
        !           176: /*
        !           177:  * Header block on tape. 
        !           178:  */
        !           179: #define        NAMSIZ          100
        !           180: #define        PFIXSIZ         155
        !           181: #define        TUNMLEN         32
        !           182: #define        TGNMLEN         32
        !           183: 
        !           184: /* The checksum field is filled with this while the checksum is computed. */
        !           185: #define        CHKBLANKS       "        "      /* 8 blanks, no null */
        !           186: 
        !           187: /*
        !           188:  * Exit codes from the "tar" program 
        !           189:  */
        !           190: #define        EX_SUCCESS      0       /* success! */
        !           191: #define        EX_ARGSBAD      1       /* invalid args */
        !           192: #define        EX_BADFILE      2       /* invalid filename */
        !           193: #define        EX_BADARCH      3       /* bad archive */
        !           194: #define        EX_SYSTEM       4       /* system gave unexpected error */
        !           195: 
        !           196: #define        ROUNDUP(a,b)    (((a) % (b)) == 0 ? (a) : ((a) + ((b) - ((a) % (b)))))
        !           197: 
        !           198: /*
        !           199:  * Mininum value. 
        !           200:  */
        !           201: #define        MIN(a, b)       (((a) < (b)) ? (a) : (b))
        !           202: 
        !           203: /*
        !           204:  * Remove a file or directory. 
        !           205:  */
        !           206: #define        REMOVE(name, asb) \
        !           207:        (((asb)->sb_mode & S_IFMT) == S_IFDIR ? rmdir(name) : unlink(name))
        !           208: 
        !           209: /*
        !           210:  * Cast and reduce to unsigned short. 
        !           211:  */
        !           212: #define        USH(n)          (((ushort) (n)) & 0177777)
        !           213: 
        !           214: 
        !           215: /* Type Definitions */
        !           216: 
        !           217: /*
        !           218:  * Binary archive header (obsolete). 
        !           219:  */
        !           220: typedef struct {
        !           221:     short           b_dev;     /* Device code */
        !           222:     ushort          b_ino;     /* Inode number */
        !           223:     ushort          b_mode;    /* Type and permissions */
        !           224:     ushort          b_uid;     /* Owner */
        !           225:     ushort          b_gid;     /* Group */
        !           226:     short           b_nlink;   /* Number of links */
        !           227:     short           b_rdev;    /* Real device */
        !           228:     ushort          b_mtime[2];        /* Modification time (hi/lo) */
        !           229:     ushort          b_name;    /* Length of pathname (with null) */
        !           230:     ushort          b_size[2]; /* Length of data */
        !           231: } Binary;
        !           232: 
        !           233: /*
        !           234:  * File status with symbolic links. Kludged to hold symbolic link pathname
        !           235:  * within structure. 
        !           236:  */
        !           237: typedef struct {
        !           238:     struct stat     sb_stat;
        !           239:     char            sb_link[PATH_MAX + 1];
        !           240: } Stat;
        !           241: 
        !           242: #define        STAT(name, asb)         stat(name, &(asb)->sb_stat)
        !           243: #define        FSTAT(fd, asb)          fstat(fd, &(asb)->sb_stat)
        !           244: 
        !           245: #define        sb_dev          sb_stat.st_dev
        !           246: #define        sb_ino          sb_stat.st_ino
        !           247: #define        sb_mode         sb_stat.st_mode
        !           248: #define        sb_nlink        sb_stat.st_nlink
        !           249: #define        sb_uid          sb_stat.st_uid
        !           250: #define        sb_gid          sb_stat.st_gid
        !           251: #define        sb_rdev         sb_stat.st_rdev
        !           252: #define        sb_size         sb_stat.st_size
        !           253: #define        sb_atime        sb_stat.st_atime
        !           254: #define        sb_mtime        sb_stat.st_mtime
        !           255: #define        sb_ctime        sb_stat.st_ctime
        !           256: 
        !           257: #ifdef S_IFLNK
        !           258: #      define  LSTAT(name, asb)        lstat(name, &(asb)->sb_stat)
        !           259: #      define  sb_blksize      sb_stat.st_blksize
        !           260: #      define  sb_blocks       sb_stat.st_blocks
        !           261: #else                          /* S_IFLNK */
        !           262: /*
        !           263:  * File status without symbolic links. 
        !           264:  */
        !           265: #      define  LSTAT(name, asb)        stat(name, &(asb)->sb_stat)
        !           266: #endif                         /* S_IFLNK */
        !           267: 
        !           268: /*
        !           269:  * Hard link sources. One or more are chained from each link structure. 
        !           270:  */
        !           271: typedef struct name {
        !           272:     struct name    *p_forw;    /* Forward chain (terminated) */
        !           273:     struct name    *p_back;    /* Backward chain (circular) */
        !           274:     char           *p_name;    /* Pathname to link from */
        !           275: } Path;
        !           276: 
        !           277: /*
        !           278:  * File linking information. One entry exists for each unique file with with
        !           279:  * outstanding hard links. 
        !           280:  */
        !           281: typedef struct link {
        !           282:     struct link    *l_forw;    /* Forward chain (terminated) */
        !           283:     struct link    *l_back;    /* Backward chain (terminated) */
        !           284:     dev_t           l_dev;     /* Device */
        !           285:     ino_t           l_ino;     /* Inode */
        !           286:     ushort          l_nlink;   /* Unresolved link count */
        !           287:     OFFSET          l_size;    /* Length */
        !           288:     char          *l_name;     /* pathname to link from */
        !           289:     Path           *l_path;    /* Pathname which link to l_name */
        !           290: } Link;
        !           291: 
        !           292: /*
        !           293:  * Structure for ed-style replacement strings (-s option).
        !           294: */
        !           295: typedef struct replstr {
        !           296:     regexp        *comp;       /* compiled regular expression */
        !           297:     char          *replace;    /* replacement string */
        !           298:     char           print;      /* >0 if we are to print replacement */
        !           299:     char           global;     /* >0 if we are to replace globally */
        !           300:     struct replstr *next;      /* pointer to next record */
        !           301: } Replstr;
        !           302: 
        !           303: 
        !           304: /*
        !           305:  * This has to be included here to insure that all of the type 
        !           306:  * delcarations are declared for the prototypes.
        !           307:  */
        !           308: #include "func.h"
        !           309: 
        !           310: 
        !           311: #ifndef NO_EXTERN
        !           312: /* Globally Available Identifiers */
        !           313: 
        !           314: extern char    *ar_file;
        !           315: extern char    *bufend;
        !           316: extern char    *bufstart;
        !           317: extern char    *bufidx;
        !           318: extern char    *myname;
        !           319: extern int      archivefd;
        !           320: extern int      blocking;
        !           321: extern uint     blocksize;
        !           322: extern int      gid;
        !           323: extern int      head_standard;
        !           324: extern int      ar_interface;
        !           325: extern int      ar_format;
        !           326: extern int      mask;
        !           327: extern int      ttyf;
        !           328: extern int      uid;
        !           329: extern OFFSET    total;
        !           330: extern short    areof;
        !           331: extern short    f_append;
        !           332: extern short    f_create;
        !           333: extern short    f_extract;
        !           334: extern short    f_follow_links;
        !           335: extern short    f_interactive;
        !           336: extern short    f_linksleft;
        !           337: extern short    f_list;
        !           338: extern short    f_modified;
        !           339: extern short    f_verbose;
        !           340: extern short   f_link;
        !           341: extern short   f_owner;
        !           342: extern short   f_access_time;
        !           343: extern short   f_pass;
        !           344: extern short   f_pass;
        !           345: extern short   f_disposition;
        !           346: extern short    f_reverse_match;
        !           347: extern short    f_mtime;
        !           348: extern short    f_dir_create;
        !           349: extern short    f_unconditional;
        !           350: extern short    f_newer;
        !           351: extern time_t   now;
        !           352: extern uint     arvolume;
        !           353: extern int     names_from_stdin;
        !           354: extern Replstr *rplhead;
        !           355: extern Replstr *rpltail;
        !           356: extern char   **n_argv;
        !           357: extern int      n_argc;
        !           358: extern FILE    *msgfile;
        !           359: #endif /* NO_EXTERN */
        !           360: 
        !           361: extern char    *optarg;
        !           362: extern int      optind;
        !           363: extern int      sys_nerr;
        !           364: extern char    *sys_errlist[];
        !           365: extern int      errno;
        !           366: 
        !           367: #endif /* _PAX_H */

unix.superglobalmegacorp.com

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