xref: /freebsd/contrib/file/src/magic.h.in (revision c293113327da098a3ce92f3bc75ee69d5f2392eb)
1b6cee71dSXin LI/*
2b6cee71dSXin LI * Copyright (c) Christos Zoulas 2003.
3b6cee71dSXin LI * All Rights Reserved.
4b6cee71dSXin LI *
5b6cee71dSXin LI * Redistribution and use in source and binary forms, with or without
6b6cee71dSXin LI * modification, are permitted provided that the following conditions
7b6cee71dSXin LI * are met:
8b6cee71dSXin LI * 1. Redistributions of source code must retain the above copyright
9b6cee71dSXin LI *    notice immediately at the beginning of the file, without modification,
10b6cee71dSXin LI *    this list of conditions, and the following disclaimer.
11b6cee71dSXin LI * 2. Redistributions in binary form must reproduce the above copyright
12b6cee71dSXin LI *    notice, this list of conditions and the following disclaimer in the
13b6cee71dSXin LI *    documentation and/or other materials provided with the distribution.
14b6cee71dSXin LI *
15b6cee71dSXin LI * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16b6cee71dSXin LI * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17b6cee71dSXin LI * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18b6cee71dSXin LI * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
19b6cee71dSXin LI * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20b6cee71dSXin LI * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21b6cee71dSXin LI * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22b6cee71dSXin LI * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23b6cee71dSXin LI * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24b6cee71dSXin LI * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
25b6cee71dSXin LI * SUCH DAMAGE.
26b6cee71dSXin LI */
27b6cee71dSXin LI#ifndef _MAGIC_H
28b6cee71dSXin LI#define _MAGIC_H
29b6cee71dSXin LI
30b6cee71dSXin LI#include <sys/types.h>
31b6cee71dSXin LI
32b6cee71dSXin LI#define	MAGIC_NONE		0x000000 /* No flags */
33b6cee71dSXin LI#define	MAGIC_DEBUG		0x000001 /* Turn on debugging */
34b6cee71dSXin LI#define	MAGIC_SYMLINK		0x000002 /* Follow symlinks */
35b6cee71dSXin LI#define	MAGIC_COMPRESS		0x000004 /* Check inside compressed files */
36b6cee71dSXin LI#define	MAGIC_DEVICES		0x000008 /* Look at the contents of devices */
37b6cee71dSXin LI#define	MAGIC_MIME_TYPE		0x000010 /* Return the MIME type */
38b6cee71dSXin LI#define	MAGIC_CONTINUE		0x000020 /* Return all matches */
39b6cee71dSXin LI#define	MAGIC_CHECK		0x000040 /* Print warnings to stderr */
40b6cee71dSXin LI#define	MAGIC_PRESERVE_ATIME	0x000080 /* Restore access time on exit */
41b6cee71dSXin LI#define	MAGIC_RAW		0x000100 /* Don't translate unprintable chars */
42b6cee71dSXin LI#define	MAGIC_ERROR		0x000200 /* Handle ENOENT etc as real errors */
43b6cee71dSXin LI#define	MAGIC_MIME_ENCODING	0x000400 /* Return the MIME encoding */
44b6cee71dSXin LI#define MAGIC_MIME		(MAGIC_MIME_TYPE|MAGIC_MIME_ENCODING)
45b6cee71dSXin LI#define	MAGIC_APPLE		0x000800 /* Return the Apple creator and type */
46b6cee71dSXin LI
47b6cee71dSXin LI#define	MAGIC_NO_CHECK_COMPRESS	0x001000 /* Don't check for compressed files */
48b6cee71dSXin LI#define	MAGIC_NO_CHECK_TAR	0x002000 /* Don't check for tar files */
49b6cee71dSXin LI#define	MAGIC_NO_CHECK_SOFT	0x004000 /* Don't check magic entries */
50b6cee71dSXin LI#define	MAGIC_NO_CHECK_APPTYPE	0x008000 /* Don't check application type */
51b6cee71dSXin LI#define	MAGIC_NO_CHECK_ELF	0x010000 /* Don't check for elf details */
52b6cee71dSXin LI#define	MAGIC_NO_CHECK_TEXT	0x020000 /* Don't check for text files */
53b6cee71dSXin LI#define	MAGIC_NO_CHECK_CDF	0x040000 /* Don't check for cdf files */
54b6cee71dSXin LI#define	MAGIC_NO_CHECK_TOKENS	0x100000 /* Don't check tokens */
55b6cee71dSXin LI#define MAGIC_NO_CHECK_ENCODING 0x200000 /* Don't check text encodings */
56b6cee71dSXin LI
57b6cee71dSXin LI/* No built-in tests; only consult the magic file */
58b6cee71dSXin LI#define MAGIC_NO_CHECK_BUILTIN	( \
59b6cee71dSXin LI	MAGIC_NO_CHECK_COMPRESS	| \
60b6cee71dSXin LI	MAGIC_NO_CHECK_TAR	| \
61b6cee71dSXin LI/*	MAGIC_NO_CHECK_SOFT	| */ \
62b6cee71dSXin LI	MAGIC_NO_CHECK_APPTYPE	| \
63b6cee71dSXin LI	MAGIC_NO_CHECK_ELF	| \
64b6cee71dSXin LI	MAGIC_NO_CHECK_TEXT	| \
65b6cee71dSXin LI	MAGIC_NO_CHECK_CDF	| \
66b6cee71dSXin LI	MAGIC_NO_CHECK_TOKENS	| \
67b6cee71dSXin LI	MAGIC_NO_CHECK_ENCODING	| \
68b6cee71dSXin LI	0			  \
69b6cee71dSXin LI)
70b6cee71dSXin LI
71b6cee71dSXin LI/* Defined for backwards compatibility (renamed) */
72b6cee71dSXin LI#define	MAGIC_NO_CHECK_ASCII	MAGIC_NO_CHECK_TEXT
73b6cee71dSXin LI
74b6cee71dSXin LI/* Defined for backwards compatibility; do nothing */
75b6cee71dSXin LI#define	MAGIC_NO_CHECK_FORTRAN	0x000000 /* Don't check ascii/fortran */
76b6cee71dSXin LI#define	MAGIC_NO_CHECK_TROFF	0x000000 /* Don't check ascii/troff */
77b6cee71dSXin LI
78b6cee71dSXin LI#define MAGIC_VERSION		X.YY	/* This implementation */
79b6cee71dSXin LI
80b6cee71dSXin LI
81b6cee71dSXin LI#ifdef __cplusplus
82b6cee71dSXin LIextern "C" {
83b6cee71dSXin LI#endif
84b6cee71dSXin LI
85b6cee71dSXin LItypedef struct magic_set *magic_t;
86b6cee71dSXin LImagic_t magic_open(int);
87b6cee71dSXin LIvoid magic_close(magic_t);
88b6cee71dSXin LI
89b6cee71dSXin LIconst char *magic_getpath(const char *, int);
90b6cee71dSXin LIconst char *magic_file(magic_t, const char *);
91b6cee71dSXin LIconst char *magic_descriptor(magic_t, int);
92b6cee71dSXin LIconst char *magic_buffer(magic_t, const void *, size_t);
93b6cee71dSXin LI
94b6cee71dSXin LIconst char *magic_error(magic_t);
95b6cee71dSXin LIint magic_setflags(magic_t, int);
96b6cee71dSXin LI
97b6cee71dSXin LIint magic_version(void);
98b6cee71dSXin LIint magic_load(magic_t, const char *);
99*c2931133SXin LIint magic_load_buffers(magic_t, void **, size_t *, size_t);
100*c2931133SXin LI
101b6cee71dSXin LIint magic_compile(magic_t, const char *);
102b6cee71dSXin LIint magic_check(magic_t, const char *);
103b6cee71dSXin LIint magic_list(magic_t, const char *);
104b6cee71dSXin LIint magic_errno(magic_t);
105b6cee71dSXin LI
106*c2931133SXin LI#define MAGIC_PARAM_INDIR_MAX		0
107*c2931133SXin LI#define MAGIC_PARAM_NAME_MAX		1
108*c2931133SXin LI#define MAGIC_PARAM_ELF_PHNUM_MAX	2
109*c2931133SXin LI#define MAGIC_PARAM_ELF_SHNUM_MAX	3
110*c2931133SXin LI
111*c2931133SXin LIint magic_setparam(magic_t, int, const void *);
112*c2931133SXin LIint magic_getparam(magic_t, int, void *);
113*c2931133SXin LI
114b6cee71dSXin LI#ifdef __cplusplus
115b6cee71dSXin LI};
116b6cee71dSXin LI#endif
117b6cee71dSXin LI
118b6cee71dSXin LI#endif /* _MAGIC_H */
119