[BACK]Return to file.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / file

Annotation of src/usr.bin/file/file.h, Revision 1.1

1.1     ! deraadt     1: /*
        !             2:  * file.h - definitions for file(1) program
        !             3:  * @(#)$Id: file.h,v 1.7 1995/05/21 00:13:30 christos Exp $
        !             4:  *
        !             5:  * Copyright (c) Ian F. Darwin, 1987.
        !             6:  * Written by Ian F. Darwin.
        !             7:  *
        !             8:  * This software is not subject to any license of the American Telephone
        !             9:  * and Telegraph Company or of the Regents of the University of California.
        !            10:  *
        !            11:  * Permission is granted to anyone to use this software for any purpose on
        !            12:  * any computer system, and to alter it and redistribute it freely, subject
        !            13:  * to the following restrictions:
        !            14:  *
        !            15:  * 1. The author is not responsible for the consequences of use of this
        !            16:  *    software, no matter how awful, even if they arise from flaws in it.
        !            17:  *
        !            18:  * 2. The origin of this software must not be misrepresented, either by
        !            19:  *    explicit claim or by omission.  Since few users ever read sources,
        !            20:  *    credits must appear in the documentation.
        !            21:  *
        !            22:  * 3. Altered versions must be plainly marked as such, and must not be
        !            23:  *    misrepresented as being the original software.  Since few users
        !            24:  *    ever read sources, credits must appear in the documentation.
        !            25:  *
        !            26:  * 4. This notice may not be removed or altered.
        !            27:  */
        !            28:
        !            29: #ifndef HOWMANY
        !            30: # define HOWMANY 8192          /* how much of the file to look at */
        !            31: #endif
        !            32: #define MAXMAGIS 1000          /* max entries in /etc/magic */
        !            33: #define MAXDESC        50              /* max leng of text description */
        !            34: #define MAXstring 32           /* max leng of "string" types */
        !            35:
        !            36: struct magic {
        !            37:        short flag;
        !            38: #define INDIR  1               /* if '>(...)' appears,  */
        !            39: #define        UNSIGNED 2              /* comparison is unsigned */
        !            40:        short cont_level;       /* level of ">" */
        !            41:        struct {
        !            42:                char type;      /* byte short long */
        !            43:                long offset;    /* offset from indirection */
        !            44:        } in;
        !            45:        long offset;            /* offset to magic number */
        !            46:        unsigned char reln;     /* relation (0=eq, '>'=gt, etc) */
        !            47:        char type;              /* int, short, long or string. */
        !            48:        char vallen;            /* length of string value, if any */
        !            49: #define                        BYTE    1
        !            50: #define                                SHORT   2
        !            51: #define                                LONG    4
        !            52: #define                                STRING  5
        !            53: #define                                DATE    6
        !            54: #define                                BESHORT 7
        !            55: #define                                BELONG  8
        !            56: #define                                BEDATE  9
        !            57: #define                                LESHORT 10
        !            58: #define                                LELONG  11
        !            59: #define                                LEDATE  12
        !            60:        union VALUETYPE {
        !            61:                unsigned char b;
        !            62:                unsigned short h;
        !            63:                unsigned long l;
        !            64:                char s[MAXstring];
        !            65:                unsigned char hs[2];    /* 2 bytes of a fixed-endian "short" */
        !            66:                unsigned char hl[4];    /* 2 bytes of a fixed-endian "long" */
        !            67:        } value;                /* either number or string */
        !            68:        unsigned long mask;     /* mask before comparison with value */
        !            69:        char nospflag;          /* supress space character */
        !            70:        char desc[MAXDESC];     /* description */
        !            71: };
        !            72:
        !            73: #include <stdio.h>     /* Include that here, to make sure __P gets defined */
        !            74:
        !            75: #ifndef __P
        !            76: # if __STDC__ || __cplusplus
        !            77: #  define __P(a) a
        !            78: # else
        !            79: #  define __P(a) ()
        !            80: #  define const
        !            81: # endif
        !            82: #endif
        !            83:
        !            84: extern int   apprentice                __P((char *, int));
        !            85: extern int   ascmagic          __P((unsigned char *, int));
        !            86: extern void  error             __P((const char *, ...));
        !            87: extern void  ckfputs           __P((const char *, FILE *));
        !            88: struct stat;
        !            89: extern int   fsmagic           __P((const char *, struct stat *));
        !            90: extern int   is_compress       __P((const unsigned char *, int *));
        !            91: extern int   is_tar            __P((unsigned char *, int));
        !            92: extern void  magwarn           __P((const char *, ...));
        !            93: extern void  mdump             __P((struct magic *));
        !            94: extern void  process           __P((const char *, int));
        !            95: extern void  showstr           __P((FILE *, const char *, int));
        !            96: extern int   softmagic         __P((unsigned char *, int));
        !            97: extern int   tryit             __P((unsigned char *, int, int));
        !            98: extern int   zmagic            __P((unsigned char *, int));
        !            99: extern void  ckfprintf         __P((FILE *, const char *, ...));
        !           100: extern unsigned long signextend        __P((struct magic *, unsigned long));
        !           101:
        !           102:
        !           103:
        !           104: extern int errno;              /* Some unixes don't define this..      */
        !           105:
        !           106: extern char *progname;         /* the program name                     */
        !           107: extern char *magicfile;                /* name of the magic file               */
        !           108: extern int lineno;             /* current line number in magic file    */
        !           109:
        !           110: extern struct magic *magic;    /* array of magic entries               */
        !           111: extern int nmagic;             /* number of valid magic[]s             */
        !           112:
        !           113:
        !           114: extern int debug;              /* enable debugging?                    */
        !           115: extern int zflag;              /* process compressed files?            */
        !           116: extern int lflag;              /* follow symbolic links?               */
        !           117:
        !           118: extern int optind;             /* From getopt(3)                       */
        !           119: extern char *optarg;
        !           120:
        !           121: #if !defined(__STDC__) || defined(sun) || defined(__sun__) || defined(__convex__)
        !           122: extern int sys_nerr;
        !           123: extern char *sys_errlist[];
        !           124: #define strerror(e) \
        !           125:        (((e) >= 0 && (e) < sys_nerr) ? sys_errlist[(e)] : "Unknown error")
        !           126: #define strtoul(a, b, c)       strtol(a, b, c)
        !           127: #endif
        !           128:
        !           129: #ifndef MAXPATHLEN
        !           130: #define        MAXPATHLEN      512
        !           131: #endif