2 * Copyright (c) Christos Zoulas 2003.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice immediately at the beginning of the file, without modification,
10 * this list of conditions, and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
19 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 module iv
.libmagic
/*is aliced*/;
33 extern(C
) @trusted nothrow @nogc:
35 MAGIC_NONE
= 0x0000000, /* No flags */
36 MAGIC_DEBUG
= 0x0000001, /* Turn on debugging */
37 MAGIC_SYMLINK
= 0x0000002, /* Follow symlinks */
38 MAGIC_COMPRESS
= 0x0000004, /* Check inside compressed files */
39 MAGIC_DEVICES
= 0x0000008, /* Look at the contents of devices */
40 MAGIC_MIME_TYPE
= 0x0000010, /* Return the MIME type */
41 MAGIC_CONTINUE
= 0x0000020, /* Return all matches */
42 MAGIC_CHECK
= 0x0000040, /* Print warnings to stderr */
43 MAGIC_PRESERVE_ATIME
= 0x0000080, /* Restore access time on exit */
44 MAGIC_RAW
= 0x0000100, /* Don't convert unprintable chars */
45 MAGIC_ERROR
= 0x0000200, /* Handle ENOENT etc as real errors */
46 MAGIC_MIME_ENCODING
= 0x0000400, /* Return the MIME encoding */
47 MAGIC_MIME
= (MAGIC_MIME_TYPE|MAGIC_MIME_ENCODING
),
48 MAGIC_APPLE
= 0x0000800, /* Return the Apple creator/type */
49 MAGIC_EXTENSION
= 0x1000000, /* Return a /-separated list of extensions */
50 MAGIC_COMPRESS_TRANSP
= 0x2000000, /* Check inside compressed files but not report compression */
51 MAGIC_NODESC
= (MAGIC_EXTENSION|MAGIC_MIME|MAGIC_APPLE
),
53 MAGIC_NO_CHECK_COMPRESS
= 0x0001000, /* Don't check for compressed files */
54 MAGIC_NO_CHECK_TAR
= 0x0002000, /* Don't check for tar files */
55 MAGIC_NO_CHECK_SOFT
= 0x0004000, /* Don't check magic entries */
56 MAGIC_NO_CHECK_APPTYPE
= 0x0008000, /* Don't check application type */
57 MAGIC_NO_CHECK_ELF
= 0x0010000, /* Don't check for elf details */
58 MAGIC_NO_CHECK_TEXT
= 0x0020000, /* Don't check for text files */
59 MAGIC_NO_CHECK_CDF
= 0x0040000, /* Don't check for cdf files */
60 MAGIC_NO_CHECK_TOKENS
= 0x0100000, /* Don't check tokens */
61 MAGIC_NO_CHECK_ENCODING
= 0x0200000, /* Don't check text encodings */
64 /* No built-in tests; only consult the magic file */
65 enum MAGIC_NO_CHECK_BUILTIN
= (
66 MAGIC_NO_CHECK_COMPRESS |
68 /*MAGIC_NO_CHECK_SOFT | */
69 MAGIC_NO_CHECK_APPTYPE |
73 MAGIC_NO_CHECK_TOKENS |
74 MAGIC_NO_CHECK_ENCODING |
77 /* Defined for backwards compatibility (renamed) */
78 enum MAGIC_NO_CHECK_ASCII
= MAGIC_NO_CHECK_TEXT
;
80 /* Defined for backwards compatibility; do nothing */
82 MAGIC_NO_CHECK_FORTRAN
= 0x000000, /* Don't check ascii/fortran */
83 MAGIC_NO_CHECK_TROFF
= 0x000000, /* Don't check ascii/troff */
86 enum MAGIC_VERSION
= 524; /* This implementation */
90 alias magic_t
= magic_set_
*;
92 magic_t
magic_open (int flags
);
93 void magic_close (magic_t cookie
);
95 const(char)* magic_getpath (const(char)* filename
, int);
96 const(char)* magic_file (magic_t cookie
, const(char)* filename
);
97 const(char)* magic_descriptor (magic_t cookie
, int fd
);
98 const(char)* magic_buffer (magic_t cookie
, const(void)* buffer
, usize length
);
100 const(char)* magic_error (magic_t cookie
);
101 int magic_setflags (magic_t cookie
, int flags
);
103 int magic_version ();
104 int magic_load (magic_t cookie
, const(char)* filename
);
105 int magic_load_buffers (magic_t cookie
, void** buffers
, usize
* sizes
, usize nbuffers
);
107 int magic_compile (magic_t cookie
, const(char)* filename
);
108 int magic_check (magic_t cookie
, const(char)* filename
);
109 int magic_list (magic_t cookie
, const(char)* filename
);
110 int magic_errno (magic_t cookie
);
113 MAGIC_PARAM_INDIR_MAX
= 0,
114 MAGIC_PARAM_NAME_MAX
= 1,
115 MAGIC_PARAM_ELF_PHNUM_MAX
= 2,
116 MAGIC_PARAM_ELF_SHNUM_MAX
= 3,
117 MAGIC_PARAM_ELF_NOTES_MAX
= 4,
118 MAGIC_PARAM_REGEX_MAX
= 5,
121 int magic_setparam (magic_t cookie
, int param
, const(void)* value
);
122 int magic_getparam (magic_t cookie
, int param
, void* value
);