[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

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