summaryrefslogtreecommitdiffstats
path: root/contrib/file/file.h
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2000-11-05 08:33:55 +0000
committerobrien <obrien@FreeBSD.org>2000-11-05 08:33:55 +0000
commit73a570e26c8be2eb28ff624691d53679235db6d7 (patch)
tree352a2d7da3ad33690cdcf9bc719f97fd4f26bd37 /contrib/file/file.h
parent714aeaae49d60da4d804c08aeb631f4e81ba86d8 (diff)
downloadFreeBSD-src-73a570e26c8be2eb28ff624691d53679235db6d7.zip
FreeBSD-src-73a570e26c8be2eb28ff624691d53679235db6d7.tar.gz
Virgin import of FILE 3.32
Diffstat (limited to 'contrib/file/file.h')
-rw-r--r--contrib/file/file.h162
1 files changed, 162 insertions, 0 deletions
diff --git a/contrib/file/file.h b/contrib/file/file.h
new file mode 100644
index 0000000..1cca4e7
--- /dev/null
+++ b/contrib/file/file.h
@@ -0,0 +1,162 @@
+/*
+ * file.h - definitions for file(1) program
+ * @(#)$Id: file.h,v 1.32 2000/05/14 22:58:53 christos Exp $
+ *
+ * Copyright (c) Ian F. Darwin, 1987.
+ * Written by Ian F. Darwin.
+ *
+ * This software is not subject to any license of the American Telephone
+ * and Telegraph Company or of the Regents of the University of California.
+ *
+ * Permission is granted to anyone to use this software for any purpose on
+ * any computer system, and to alter it and redistribute it freely, subject
+ * to the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ * software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ * explicit claim or by omission. Since few users ever read sources,
+ * credits must appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ * misrepresented as being the original software. Since few users
+ * ever read sources, credits must appear in the documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ */
+
+#ifndef __file_h__
+#define __file_h__
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+typedef int int32;
+typedef unsigned int uint32;
+
+#ifndef HOWMANY
+# define HOWMANY 16384 /* how much of the file to look at */
+#endif
+#define MAXMAGIS 1000 /* max entries in /etc/magic */
+#define MAXDESC 50 /* max leng of text description */
+#define MAXstring 32 /* max leng of "string" types */
+
+struct magic {
+ short flag;
+#define INDIR 1 /* if '>(...)' appears, */
+#define UNSIGNED 2 /* comparison is unsigned */
+#define ADD 4 /* if '>&' appears, */
+ short cont_level; /* level of ">" */
+ struct {
+ unsigned char type; /* byte short long */
+ int32 offset; /* offset from indirection */
+ } in;
+ int32 offset; /* offset to magic number */
+ unsigned char reln; /* relation (0=eq, '>'=gt, etc) */
+ unsigned char type; /* int, short, long or string. */
+ char vallen; /* length of string value, if any */
+#define BYTE 1
+#define SHORT 2
+#define LONG 4
+#define STRING 5
+#define DATE 6
+#define BESHORT 7
+#define BELONG 8
+#define BEDATE 9
+#define LESHORT 10
+#define LELONG 11
+#define LEDATE 12
+ union VALUETYPE {
+ unsigned char b;
+ unsigned short h;
+ uint32 l;
+ char s[MAXstring];
+ unsigned char hs[2]; /* 2 bytes of a fixed-endian "short" */
+ unsigned char hl[4]; /* 2 bytes of a fixed-endian "long" */
+ } value; /* either number or string */
+ uint32 mask; /* mask before comparison with value */
+ char nospflag; /* supress space character */
+ char desc[MAXDESC]; /* description */
+};
+
+#define BIT(A) (1 << (A))
+#define STRING_IGNORE_LOWERCASE BIT(0)
+#define STRING_COMPACT_BLANK BIT(1)
+#define STRING_COMPACT_OPTIONAL_BLANK BIT(2)
+#define CHAR_IGNORE_LOWERCASE 'c'
+#define CHAR_COMPACT_BLANK 'B'
+#define CHAR_COMPACT_OPTIONAL_BLANK 'b'
+
+
+#include <stdio.h> /* Include that here, to make sure __P gets defined */
+#include <errno.h>
+
+#ifndef __P
+# if defined(__STDC__) || defined(__cplusplus)
+# define __P(a) a
+# else
+# define __P(a) ()
+# define const
+# endif
+#endif
+
+extern int apprentice __P((const char *, int));
+extern int ascmagic __P((unsigned char *, int));
+extern void error __P((const char *, ...));
+extern void ckfputs __P((const char *, FILE *));
+struct stat;
+extern int fsmagic __P((const char *, struct stat *));
+extern int is_compress __P((const unsigned char *, int *));
+extern int is_tar __P((unsigned char *, int));
+extern void magwarn __P((const char *, ...));
+extern void mdump __P((struct magic *));
+extern void process __P((const char *, int));
+extern void showstr __P((FILE *, const char *, int));
+extern int softmagic __P((unsigned char *, int));
+extern int tryit __P((unsigned char *, int, int));
+extern int zmagic __P((unsigned char *, int));
+extern void ckfprintf __P((FILE *, const char *, ...));
+extern uint32 signextend __P((struct magic *, unsigned int32));
+extern int internatmagic __P((unsigned char *, int));
+extern void tryelf __P((int, unsigned char *, int));
+
+extern char *progname; /* the program name */
+extern const char *magicfile; /* name of the magic file */
+extern int lineno; /* current line number in magic file */
+
+extern struct magic *magic; /* array of magic entries */
+extern int nmagic; /* number of valid magic[]s */
+
+
+extern int debug; /* enable debugging? */
+extern int zflag; /* process compressed files? */
+extern int lflag; /* follow symbolic links? */
+extern int sflag; /* read/analyze block special files? */
+extern int iflag; /* Output types as mime-types */
+
+extern int optind; /* From getopt(3) */
+extern char *optarg;
+
+#ifndef HAVE_STRERROR
+extern int sys_nerr;
+extern char *sys_errlist[];
+#define strerror(e) \
+ (((e) >= 0 && (e) < sys_nerr) ? sys_errlist[(e)] : "Unknown error")
+#endif
+
+#ifndef HAVE_STRTOUL
+#define strtoul(a, b, c) strtol(a, b, c)
+#endif
+
+#ifdef __STDC__
+#define FILE_RCSID(id) \
+static const char *rcsid(const char *p) { \
+ return rcsid(p = id); \
+}
+#else
+#define FILE_RCSID(id) static char *rcsid[] = id;
+#endif
+
+#endif /* __file_h__ */
OpenPOWER on IntegriCloud