Start sentences on a new line, fix typo and use .An.
[dragonfly.git] / contrib / file-4 / doc / libmagic.man
1 .\"
2 .\" Copyright (c) Christos Zoulas 2003.
3 .\" All Rights Reserved.
4 .\"
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
7 .\" are met:
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.
14 .\" 
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
25 .\" SUCH DAMAGE.
26 .\"
27 .Dd November 15, 2006
28 .Dt MAGIC 3
29 .Os
30 .Sh NAME
31 .Nm magic_open ,
32 .Nm magic_close ,
33 .Nm magic_error ,
34 .Nm magic_file ,
35 .Nm magic_buffer ,
36 .Nm magic_setflags ,
37 .Nm magic_check ,
38 .Nm magic_compile ,
39 .Nm magic_load
40 .Nd Magic number recognition library.
41 .Sh LIBRARY
42 .Lb libmagic
43 .Sh SYNOPSIS
44 .In magic.h
45 .Ft magic_t
46 .Fn magic_open "int flags"
47 .Ft void
48 .Fn magic_close "magic_t cookie"
49 .Ft const char *
50 .Fn magic_error "magic_t cookie"
51 .Ft int
52 .Fn magic_errno "magic_t cookie"
53 .Ft const char *
54 .Fn magic_file "magic_t cookie, const char *filename"
55 .Ft const char *
56 .Fn magic_buffer "magic_t cookie, const void *buffer, size_t length"
57 .Ft int
58 .Fn magic_setflags "magic_t cookie, int flags"
59 .Ft int
60 .Fn magic_check "magic_t cookie, const char *filename"
61 .Ft int
62 .Fn magic_compile "magic_t cookie, const char *filename"
63 .Ft int
64 .Fn magic_load "magic_t cookie, const char *filename"
65 .Sh DESCRIPTION
66 These functions
67 operate on the magic database file
68 which is described
69 in
70 .Xr magic __FSECTION__ .
71 .Pp
72 The function
73 .Fn magic_open
74 creates a magic cookie pointer and returns it. It returns NULL if
75 there was an error allocating the magic cookie. The 
76 .Ar flags
77 argument specifies how the other magic functions should behave:
78 .Bl -tag -width MAGIC_COMPRESS
79 .It Dv MAGIC_NONE
80 No special handling.
81 .It Dv MAGIC_DEBUG
82 Print debugging messages to stderr.
83 .It Dv MAGIC_SYMLINK
84 If the file queried is a symlink, follow it.
85 .It Dv MAGIC_COMPRESS
86 If the file is compressed, unpack it and look at the contents.
87 .It Dv MAGIC_DEVICES
88 If the file is a block or character special device, then open the device
89 and try to look in its contents.
90 .It Dv MAGIC_MIME
91 Return a mime string, instead of a textual description.
92 .It Dv MAGIC_CONTINUE
93 Return all matches, not just the first.
94 .It Dv MAGIC_CHECK
95 Check the magic database for consistency and print warnings to stderr.
96 .It Dv MAGIC_PRESERVE_ATIME
97 On systems that support
98 .Xr utime 2
99 or
100 .Xr utimes 2 ,
101 attempt to preserve the access time of files analyzed.
102 .It Dv MAGIC_RAW
103 Don't translate unprintable characters to a \eooo octal representation.
104 .It Dv MAGIC_ERROR
105 Treat operating system errors while trying to open files and follow symlinks
106 as real errors, instead of printing them in the magic buffer.
107 .It Dv MAGIC_NO_CHECK_APPTYPE
108 Check for
109 .Dv EMX
110 application type (only on EMX).
111 .It Dv MAGIC_NO_CHECK_ASCII
112 Check for various types of ascii files.
113 .It Dv MAGIC_NO_CHECK_COMPRESS
114 Don't look for, or inside compressed files.
115 .It Dv MAGIC_NO_CHECK_ELF
116 Don't print elf details.
117 .It Dv MAGIC_NO_CHECK_FORTRAN
118 Don't look for fortran sequences inside ascii files.
119 .It Dv MAGIC_NO_CHECK_SOFT
120 Don't consult magic files.
121 .It Dv MAGIC_NO_CHECK_TAR
122 Don't examine tar files.
123 .It Dv MAGIC_NO_CHECK_TOKENS
124 Don't look for known tokens inside ascii files.
125 .It Dv MAGIC_NO_CHECK_TROFF
126 Don't look for troff sequences inside ascii files.
127 .El
128 .Pp
129 The
130 .Fn magic_close
131 function closes the
132 .Xr magic __FSECTION__
133 database and deallocates any resources used.
134 .Pp
135 The
136 .Fn magic_error
137 function returns a textual explanation of the last error, or NULL if there was
138 no error.
139 .Pp
140 The
141 .Fn magic_errno
142 function returns the last operating system error number
143 .Pq Xr errno 2
144 that was encountered by a system call.
145 .Pp
146 The
147 .Fn magic_file
148 function returns a textual description of the contents of the
149 .Ar filename
150 argument, or NULL if an error occurred.
151 If the
152 .Ar filename
153 is NULL, then stdin is used.
154 .Pp
155 The
156 .Fn magic_buffer
157 function returns a textual description of the contents of the
158 .Ar buffer
159 argument with
160 .Ar length
161 bytes size.
162 .Pp
163 The
164 .Fn magic_setflags
165 function, sets the 
166 .Ar flags
167 described above.
168 .Pp
169 The
170 .Fn magic_check
171 function can be used to check the validity of entries in the colon
172 separated database files passed in as
173 .Ar filename ,
174 or NULL for the default database. It returns 0 on success and -1 on
175 failure.
176 .Pp
177 The
178 .Fn magic_compile
179 function can be used to compile the the colon
180 separated list of database files passed in as
181 .Ar filename ,
182 or NULL for the default database. It returns 0 on success and -1 on
183 failure. The compiled files created are named from the
184 .Xr basename 1
185 of each file argument with ".mgc" appended to it.
186 .Pp
187 The
188 .Fn magic_load
189 function must be used to load the the colon
190 separated list of database files passed in as
191 .Ar filename ,
192 or NULL for the default database file
193 before any magic queries can performed.
194 .Pp
195 The default database file is named by the MAGIC environment variable.  If
196 that variable is not set, the default database file name is __MAGIC__.
197 .Pp
198 .Fn magic_load
199 adds ".mime" and/or ".mgc" to the database filename as appropriate.
200 .Sh RETURN VALUES
201 The function
202 .Fn magic_open
203 returns a magic cookie on success and NULL on failure setting errno to
204 an appropriate value. It will set errno to EINVAL if an unsupported
205 value for flags was given.
206 The
207 .Fn magic_load ,
208 .Fn magic_compile ,
209 and
210 .Fn magic_check
211 functions return 0 on success and -1 on failure.
212 The
213 .Fn magic_file ,
214 and
215 .Fn magic_buffer 
216 functions return a string on success and NULL on failure. The
217 .Fn magic_error
218 function returns a textual description of the errors of the above
219 functions, or NULL if there was no error.
220 Finally,
221 .Fn magic_setflags
222 returns -1 on systems that don't support
223 .Xr utime 2 ,
224 or
225 .Xr utimes 2
226 when
227 .Dv MAGIC_PRESERVE_ATIME
228 is set.
229 .Sh FILES
230 .Bl -tag -width __MAGIC__.mime.mgc -compact
231 .It Pa __MAGIC__.mime
232 The non-compiled default magic mime database.
233 .It Pa __MAGIC__.mime.mgc
234 The compiled default magic mime database.
235 .It Pa __MAGIC__
236 The non-compiled default magic database.
237 .It Pa __MAGIC__.mgc
238 The compiled default magic database.
239 .El
240 .Sh SEE ALSO
241 .Xr file __CSECTION__ ,
242 .Xr magic __FSECTION__ 
243 .Sh AUTHORS
244 Måns Rullgård Initial libmagic implementation,
245 and configuration.
246 Christos Zoulas API cleanup, error code and allocation handling.