Annotation of researchv10dc/cmd/odist/pax/src/lib/libx/mkhdr, revision 1.1.1.1

1.1       root        1: :
                      2: #
                      3: # mkhdr hdr [ genhdr ] [ cc [ ccflags ] ]
                      4: #
                      5: # @(#)mkhdr (ulysses!gsf) 01/31/91
                      6: #
                      7: case $# in
                      8: 0)     echo "Usage: $0 hdr [ genhdr ] [ cc [ ccflags ] ]" >&2; exit 1 ;;
                      9: esac
                     10: hdr=$1
                     11: shift
                     12: case $1 in
                     13: "")    genhdr= ;;
                     14: *)     genhdr=$1 ;;
                     15: esac
                     16: case $# in
                     17: 0)     ;;
                     18: *)     shift ;;
                     19: esac
                     20: cc=${1-cc}
                     21: case $# in
                     22: 0)     ;;
                     23: *)     shift ;;
                     24: esac
                     25: tmp=x.$$
                     26: trap 'code=$?; rm -f $tmp.?; exit $code' 0 1 2 3
                     27: case $hdr in
                     28: align) case $genhdr in
                     29:        "")     echo "$0: $hdr: genhdr arg required" >&2; exit 1 ;;
                     30:        esac
                     31:        cat <<!
                     32: /*
                     33:  * AT&T Bell Laboratories
                     34:  * alignment and pointer pun definitions
                     35:  * : : generated by $0 and $genhdr : :
                     36:  */
                     37: 
                     38: #ifndef __ALIGN_H__
                     39: #define __ALIGN_H__
                     40: 
                     41: !
                     42:        $genhdr $hdr || exit 1
                     43:        cat <<!
                     44: #endif
                     45: !
                     46:        ;;
                     47: dirent)        case $genhdr in
                     48:        "")     echo "$0: $hdr: genhdr arg required" >&2; exit 1 ;;
                     49:        esac
                     50:        cat<<!
                     51: /*
                     52:  * AT&T Bell Laboratories
                     53:  * directory stream access definitions
                     54:  *
                     55:  *     #include <sys/types.h>
                     56:  *     #include <dirent.h>
                     57:  *
                     58:  * : : generated by $0 and $genhdr : :
                     59:  */
                     60: 
                     61: #ifndef __DIRENT_H__
                     62: 
                     63: #include <lcldirent.h>
                     64: 
                     65: #ifndef __DIRENT_H__
                     66: #define __DIRENT_H__
                     67: #endif
                     68: 
                     69: !
                     70:        $genhdr $hdr || exit 1
                     71:        for i in "" "#ifndef d_ino
                     72: #define d_ino  d_fileno
                     73: #endif" "#ifndef d_fileno
                     74: #define d_fileno       d_ino
                     75: #endif"
                     76:        do      cat > $tmp.c <<!
                     77: #include <sys/types.h>
                     78: #include <lcldirent.h>
                     79: #ifdef _lcl_dirent
                     80: static struct dirent dir;
                     81: #else
                     82: #include <sys/dir.h>
                     83: static struct direct dir;
                     84: #endif
                     85: $i
                     86: int n1 = sizeof(dir.d_ino);
                     87: int n2 = sizeof(dir.d_fileno);
                     88: !
                     89:                if      $cc -I. ${1+"$@"} -c $tmp.c >/dev/null 2>&1
                     90:                then    break
                     91:                fi
                     92:        done
                     93:        nl=
                     94:        case $i in
                     95:        ?*)     nl=1
                     96:                echo "$i"
                     97:                ;;
                     98:        esac
                     99:        cat > $tmp.c <<!
                    100: #include <sys/types.h>
                    101: #include <lcldirent.h>
                    102: #ifdef _lcl_dirent
                    103: static struct dirent dir;
                    104: #else
                    105: #include <sys/dir.h>
                    106: static struct direct dir;
                    107: #endif
                    108: int n1 = sizeof(dir.d_namlen);
                    109: !
                    110:        if      $cc -I. ${1+"$@"} -c $tmp.c >/dev/null 2>&1
                    111:        then    nl=1
                    112:                echo "#define _dir_namlen       1       /* dirent.d_namlen */"
                    113:        fi
                    114:        case $nl in
                    115:        ?*)     echo ;;
                    116:        esac
                    117:        cat <<!
                    118: #ifndef _lcl_dirent
                    119: 
                    120: #ifdef _dir_sys
                    121: 
                    122: #include <sys/dir.h>
                    123: 
                    124: #else
                    125: 
                    126: #undef _dir_rewinddir
                    127: 
                    128: #define DIRSIZ 14
                    129: 
                    130: struct direct
                    131: {
                    132:        short   d_ino;
                    133:        char    d_name[DIRSIZ];
                    134: };
                    135: 
                    136: #endif
                    137: 
                    138: #ifdef _dir_rewinddir
                    139: 
                    140: /*
                    141:  * variable length directory entry format
                    142:  */
                    143: 
                    144: #define _dir_variable
                    145: 
                    146: #ifndef dirent
                    147: #define dirent direct
                    148: #endif
                    149: 
                    150: #else
                    151: 
                    152: /*
                    153:  * fixed length directory entry format
                    154:  */
                    155: 
                    156: #define _dir_fixed
                    157: 
                    158: #ifndef DIRSIZ
                    159: #define DIRSIZ         14              /* maximum entry link length    */
                    160: #endif
                    161: 
                    162: #ifndef MAXNAMLEN
                    163: #define        MAXNAMLEN       DIRSIZ          /* maximum filename length      */
                    164: #endif
                    165: 
                    166: #ifdef _dir_getdents
                    167: 
                    168: struct dirent                          /* data from local getdents()   */
                    169: {
                    170:        long            d_ino;          /* file number of entry         */
                    171:        long            d_off;          /* entry seek offset            */
                    172:        unsigned short  d_reclen;       /* length of this record        */
                    173:        char            d_name[1];      /* link name                    */
                    174: };
                    175: 
                    176: #else
                    177: 
                    178: #ifndef _dir_namlen
                    179: #define _dir_namlen    1
                    180: #endif
                    181: 
                    182: struct dirent                          /* data from readdir()          */
                    183: {
                    184:        long            d_fileno;       /* file number of entry         */
                    185:        unsigned short  d_reclen;       /* length of this record        */
                    186:        unsigned short  d_namlen;       /* strlen(d_name)               */
                    187:        char            d_name[1];      /* link name                    */
                    188: };
                    189: 
                    190: #endif
                    191: 
                    192: typedef struct
                    193: {
                    194:        int             dd_fd;          /* file descriptor              */
                    195:        int             dd_loc;         /* offset in block              */
                    196:        int             dd_size;        /* amount of valid data         */
                    197:        char*           dd_buf;         /* directory block              */
                    198: } DIR;                                 /* stream data from opendir()   */
                    199: 
                    200: extern DIR*            opendir();
                    201: extern struct dirent*  readdir();
                    202: extern long            telldir();
                    203: extern void            seekdir();
                    204: extern void            closedir();
                    205: 
                    206: #if !_dir_local
                    207: #define rewinddir(dirp)        seekdir(dirp,0L)
                    208: #endif
                    209: 
                    210: #endif
                    211: 
                    212: #endif
                    213: 
                    214: #if _dir_namlen
                    215: #define DIRNAMLEN(d)   ((d)->d_namlen)
                    216: #else
                    217: #define DIRNAMLEN(d)   strlen((d)->d_name)
                    218: #endif
                    219: 
                    220: #endif
                    221: !
                    222:        ;;
                    223: fsinfo)        case $genhdr in
                    224:        "")     echo "$0: $hdr: genhdr arg required" >&2; exit 1 ;;
                    225:        esac
                    226:        cat <<!
                    227: /*
                    228:  * AT&T Bell Laboratories
                    229:  * file system user interface definitions
                    230:  * : : generated by $0 and $genhdr : :
                    231:  */
                    232: 
                    233: #ifndef __FSINFO_H__
                    234: #define __FSINFO_H__
                    235: 
                    236: #ifndef __LCLPARAM_H__
                    237: #ifndef S_IFMT
                    238: #ifndef TM_DEFAULT
                    239: #include <sys/types.h>
                    240: #endif
                    241: #include <sys/stat.h>
                    242: #endif
                    243: #endif
                    244: !
                    245:        nl=
                    246:        for i in blocks blksize
                    247:        do      cat > $tmp.c <<!
                    248: #include <sys/types.h>
                    249: #include <sys/stat.h>
                    250: static struct stat st;
                    251: int bytes = sizeof(st.st_$i);
                    252: !
                    253:                if      $cc ${1+"$@"} -c $tmp.c >/dev/null 2>&1
                    254:                then    case $nl in
                    255:                        "")     nl=1
                    256:                                echo
                    257:                                ;;
                    258:                        esac
                    259:                        echo "#define stat_$i   1       /* struct stat has st_$i */"
                    260:                fi
                    261:        done
                    262:        cat > $tmp.c <<!
                    263: #include <sys/types.h>
                    264: #include <sys/stat.h>
                    265: #ifndef major
                    266: #include <sys/param.h>
                    267: #ifndef major
                    268: #include <sys/sysmacros.h>
                    269: #endif
                    270: "#ifndef major" =
                    271: #ifdef major
                    272: "#define major(x)" = major((x))
                    273: #else
                    274: "#define major(x)" = ((int)(((unsigned)(x)>>8)&0377))
                    275: #endif
                    276: "#endif" =
                    277: "#ifndef minor" =
                    278: #ifdef minor
                    279: "#define minor(x)" = minor((x))
                    280: #else
                    281: "#define minor(x)" = ((int)((x)&0377))
                    282: #endif
                    283: "#endif" =
                    284: "#ifndef makedev" =
                    285: #ifdef makedev
                    286: "#define makedev(x,y)" = makedev((x),(y))
                    287: #else
                    288: "#define makedev(x,y)" = ((dev_t)((((x)&0377)<<8)|((y)&0377)))
                    289: #endif
                    290: "#endif" =
                    291: #endif
                    292: !
                    293:        if      $cc ${1+"$@"} -E $tmp.c > $tmp.i 2>/dev/null
                    294:        then    sed -e '/"#/!d' -e 's/.*#/#/' -e 's/"[^=]*=//' $tmp.i
                    295:        else    cat <<!
                    296: 
                    297: #ifndef major
                    298: #define major(x)       ((int)(((unsigned)(x)>>8)&0377))
                    299: #endif
                    300: #ifndef minor
                    301: #define minor(x)       ((int)((x)&0377))
                    302: #endif
                    303: #ifndef makedev
                    304: #define makedev(x,y)   ((dev_t)((((x)&0377)<<8)|((y)&0377)))
                    305: #endif
                    306: !
                    307:        fi
                    308:        echo
                    309:        $genhdr $hdr || exit 1
                    310:        cat <<!
                    311: #endif
                    312: !
                    313:        ;;
                    314: lclparam)
                    315:        HDR=LCLPARAM
                    316:        cat <<!
                    317: /*
                    318:  * AT&T Bell Laboratories
                    319:  * <sys/param.h> + <sys/types.h> + <sys/stat.h>
                    320:  * : : generated by $0 : :
                    321:  */
                    322: 
                    323: #ifndef __${HDR}_H__
                    324: #define __${HDR}_H__
                    325: 
                    326: !
                    327:        for i in "#include <sys/param.h>" "#include <sys/param.h>
                    328: #ifndef S_IFDIR
                    329: #include <sys/stat.h>
                    330: #endif" "#include <sys/param.h>
                    331: #ifndef S_IFDIR
                    332: #include <sys/types.h>
                    333: #include <sys/stat.h>
                    334: #endif" "#ifndef S_IFDIR
                    335: #include <sys/types.h>
                    336: #include <sys/stat.h>
                    337: #endif"
                    338:        do      echo "$i
                    339: struct stat V_stat_V;
                    340: F_stat_F() { V_stat_V.st_mode = 0; }" > $tmp.c
                    341:                if      $cc ${1+"$@"} -c $tmp.c >/dev/null 2>&1
                    342:                then    echo "$i"
                    343:                        break
                    344:                fi
                    345:        done
                    346:        cat <<!
                    347: 
                    348: #endif
                    349: !
                    350:        ;;
                    351: lcl*)  lcl=`echo $hdr | sed -e 's/lcl//'`
                    352:        HDR=`echo $hdr | tr '[a-z]' '[A-Z]'`
                    353:        cat <<!
                    354: /*
                    355:  * AT&T Bell Laboratories
                    356:  * untrusted local <$lcl.h>
                    357:  * : : generated by $0 : :
                    358:  */
                    359: 
                    360: #ifndef __${HDR}_H__
                    361: #define __${HDR}_H__
                    362: 
                    363: !
                    364:        echo "#include <$lcl.h>" > $tmp.c
                    365:        if      $cc ${1+"$@"} -E $tmp.c > $tmp.i 2>/dev/null
                    366:        then    f=`sed -e '/^#[line     ]*1[    ][      ]*"\/.*\/'$lcl'\.h"/!d' -e '/\/sys\/'$lcl'\.h"/d' -e s'/.*"\(.*\)".*/\1/' $tmp.i`
                    367:        else    f=
                    368:        fi
                    369:        case $lcl in
                    370:        dirent) case $f in
                    371:                "")     h=sys/dir ;;
                    372:                *)      h=dirent ;;
                    373:                esac
                    374:                v=
                    375:                for i in DIR opendir readdir rewinddir seekdir telldir closedir
                    376:                do      cat > $tmp.c <<!
                    377: #include <sys/types.h>
                    378: #include <$h.h>
                    379: #ifndef $i
                    380: (
                    381: #endif
                    382: !
                    383:                        if      $cc ${1+"$@"} -c $tmp.c >/dev/null 2>&1
                    384:                        then    v="$v $i"
                    385:                        fi
                    386:                done
                    387:                case $v in
                    388:                ?*)     echo "#if _dir_local"
                    389:                        for i in $v
                    390:                        do      echo "#undef $i"
                    391:                        done
                    392:                        echo "#endif"
                    393:                        ;;
                    394:                esac
                    395:                ;;
                    396:        esac
                    397:        case $f in
                    398:        "")     echo "/* no local <$lcl.h> */"
                    399:                ;;
                    400:        *)      echo "/* begin local <$lcl.h> */"
                    401:                cat $f
                    402:                cat <<!
                    403: /* end local <$lcl.h> */
                    404: 
                    405: #undef _lcl_$lcl
                    406: #define _lcl_$lcl      1
                    407: !
                    408:                ;;
                    409:        esac
                    410:        cat <<!
                    411: 
                    412: #endif
                    413: !
                    414:        ;;
                    415: limits)        case $genhdr in
                    416:        "")     echo "$0: $hdr: genhdr arg required" >&2; exit 1 ;;
                    417:        esac
                    418:        cat <<!
                    419: /*
                    420:  * AT&T Bell Laboratories
                    421:  * C language implementation integral type sizes
                    422:  * : : generated by $0 and $genhdr : :
                    423:  */
                    424: 
                    425: #ifndef __LIMITS_H__
                    426: 
                    427: #include <lcllimits.h>
                    428: 
                    429: #ifndef __LIMITS_H__
                    430: #define __LIMITS_H__
                    431: #endif
                    432: 
                    433: !
                    434:        $genhdr $hdr || exit 1
                    435:        cat <<!
                    436: #endif
                    437: !
                    438:        ;;
                    439: preroot)cat <<!
                    440: /*
                    441:  * AT&T Bell Laboratories
                    442:  * preroot interface definitions
                    443:  * : : generated by $0 : :
                    444:  */
                    445: 
                    446: #ifndef __PREROOT_H__
                    447: #define __PREROOT_H__
                    448: 
                    449: !
                    450:        if      (/etc/preroot / /bin/echo) >/dev/null 2>&1
                    451:        then    cat <<!
                    452: #define FS_PREROOT     1                       /* preroot enabled      */
                    453: #define PR_BASE                "CCS"                   /* preroot base env var */
                    454: #define PR_COMMAND     "/etc/preroot"          /* the preroot command  */
                    455: #define PR_REAL                "/dev/.."               /* real root pathname   */
                    456: #define PR_SILENT      "CCSQUIET"              /* no command trace     */
                    457: 
                    458: #if __STDC__ || __cplusplus || c_plusplus
                    459: #if __cplusplus
                    460: extern "C" {
                    461: #endif
                    462: 
                    463: extern char*           getpreroot(char* path, char* cmd);
                    464: extern int             ispreroot();
                    465: extern int             realopen(char* path, int mode, int perm);
                    466: extern void            setpreroot(int argc, char** argv, char* dir);
                    467: 
                    468: #if __cplusplus
                    469: }
                    470: #endif
                    471: 
                    472: #else
                    473: 
                    474: extern char*           getpreroot();
                    475: extern int             ispreroot();
                    476: extern int             realopen();
                    477: extern void            setpreroot();
                    478: 
                    479: #endif
                    480: !
                    481:        else    echo "/* preroot not enabled */"
                    482:        fi
                    483:        cat <<!
                    484: 
                    485: #endif
                    486: !
                    487:        ;;
                    488: sig)   cat <<!
                    489: /*
                    490:  * AT&T Bell Laboratories
                    491:  * signal support
                    492:  * : : generated by $0 : :
                    493:  */
                    494: 
                    495: #ifndef __SIG_H__
                    496: #define __SIG_H__
                    497: 
                    498: #include <signal.h>
                    499: 
                    500: #ifndef sigmask
                    501: #define sigmask(s)     (1<<((s)-1))
                    502: #endif
                    503: 
                    504: !
                    505:        cat > $tmp.c <<!
                    506: #include <signal.h>
                    507: #ifdef TYPE
                    508: #if __STDC__
                    509: typedef TYPE (*signal_t)(int);
                    510: #else
                    511: typedef TYPE (*signal_t)();
                    512: #endif
                    513: #endif
                    514: signal_t f()
                    515: {
                    516:        signal_t        handler;
                    517:        handler = signal(1, SIG_IGN);
                    518:        return(handler);
                    519: }
                    520: !
                    521:        if      $cc ${1+"$@"} -c $tmp.c >/dev/null 2>&1
                    522:        then    :
                    523:        else    for i in void int
                    524:                do      $cc ${1+"$@"} -c -DTYPE=$i $tmp.c >/dev/null 2>&1 && break
                    525:                done
                    526:                cat <<!
                    527: #if __STDC__
                    528: typedef $i (*signal_t)(int);
                    529: #else
                    530: typedef $i (*signal_t)();
                    531: #endif
                    532: 
                    533: !
                    534:        fi
                    535:        cat <<!
                    536: #endif
                    537: !
                    538:        ;;
                    539: sigdata)case $genhdr in
                    540:        "")     echo "$0: $hdr: genhdr arg required" >&2; exit 1 ;;
                    541:        esac
                    542:        cat <<!
                    543: /*
                    544:  * AT&T Bell Laboratories
                    545:  * signal name/text tables
                    546:  * : : generated by $0 and $genhdr : :
                    547:  */
                    548: 
                    549: !
                    550:        $genhdr $hdr || exit 1
                    551:        ;;
                    552: ttyinfo)
                    553:        HDR=TTYINFO
                    554:        cat <<!
                    555: /*
                    556:  * AT&T Bell Laboratories
                    557:  * tty info
                    558:  * : : generated by $0 : :
                    559:  */
                    560: 
                    561: #ifndef __${HDR}_H__
                    562: #define __${HDR}_H__
                    563: 
                    564: !
                    565:        x="/* no local tty info */"
                    566:        for i in sgtty termio termios sys/termios sys/ttyio sys/ioctl
                    567:        do      echo "#include <$i.h>" > $tmp.c
                    568:                if      $cc ${1+"$@"} -c $tmp.c >/dev/null 2>&1
                    569:                then    x="#include <$i.h>"
                    570:                        break
                    571:                fi
                    572:        done
                    573:        cat <<!
                    574: $x
                    575: 
                    576: #endif
                    577: !
                    578:        ;;
                    579: *)     echo "$0: $hdr: unknown header" >&2
                    580:        exit 1
                    581:        ;;
                    582: esac

unix.superglobalmegacorp.com

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