xref: /minix3/external/bsd/file/dist/doc/libmagic.3 (revision 835f6802383ea18ff9311123031e44be87fb502a)
1*835f6802SDirk Vogt.\"	$NetBSD: libmagic.3,v 1.9 2011/11/10 13:41:00 christos Exp $
2ef01931fSBen Gras.\"
3*835f6802SDirk Vogt.\" $File: libmagic.man,v 1.24 2011/05/13 22:11:44 christos Exp $
4ef01931fSBen Gras.\"
5ef01931fSBen Gras.\" Copyright (c) Christos Zoulas 2003.
6ef01931fSBen Gras.\" All Rights Reserved.
7ef01931fSBen Gras.\"
8ef01931fSBen Gras.\" Redistribution and use in source and binary forms, with or without
9ef01931fSBen Gras.\" modification, are permitted provided that the following conditions
10ef01931fSBen Gras.\" are met:
11ef01931fSBen Gras.\" 1. Redistributions of source code must retain the above copyright
12ef01931fSBen Gras.\"    notice immediately at the beginning of the file, without modification,
13ef01931fSBen Gras.\"    this list of conditions, and the following disclaimer.
14ef01931fSBen Gras.\" 2. Redistributions in binary form must reproduce the above copyright
15ef01931fSBen Gras.\"    notice, this list of conditions and the following disclaimer in the
16ef01931fSBen Gras.\"    documentation and/or other materials provided with the distribution.
17ef01931fSBen Gras.\"
18ef01931fSBen Gras.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
19ef01931fSBen Gras.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20ef01931fSBen Gras.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21ef01931fSBen Gras.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
22ef01931fSBen Gras.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23ef01931fSBen Gras.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24ef01931fSBen Gras.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25ef01931fSBen Gras.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26ef01931fSBen Gras.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27ef01931fSBen Gras.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
28ef01931fSBen Gras.\" SUCH DAMAGE.
29ef01931fSBen Gras.\"
30*835f6802SDirk Vogt.Dd January 14, 2011
31ef01931fSBen Gras.Dt LIBMAGIC 3
32ef01931fSBen Gras.Os
33ef01931fSBen Gras.Sh NAME
34ef01931fSBen Gras.Nm magic_open ,
35ef01931fSBen Gras.Nm magic_close ,
36ef01931fSBen Gras.Nm magic_error ,
37*835f6802SDirk Vogt.Nm magic_descriptor ,
38ef01931fSBen Gras.Nm magic_buffer ,
39ef01931fSBen Gras.Nm magic_setflags ,
40ef01931fSBen Gras.Nm magic_check ,
41ef01931fSBen Gras.Nm magic_compile ,
42ef01931fSBen Gras.Nm magic_load
43ef01931fSBen Gras.Nd Magic number recognition library
44ef01931fSBen Gras.Sh LIBRARY
45ef01931fSBen Gras.Lb libmagic
46ef01931fSBen Gras.Sh SYNOPSIS
47ef01931fSBen Gras.In magic.h
48ef01931fSBen Gras.Ft magic_t
49ef01931fSBen Gras.Fn magic_open "int flags"
50ef01931fSBen Gras.Ft void
51ef01931fSBen Gras.Fn magic_close "magic_t cookie"
52ef01931fSBen Gras.Ft const char *
53ef01931fSBen Gras.Fn magic_error "magic_t cookie"
54ef01931fSBen Gras.Ft int
55ef01931fSBen Gras.Fn magic_errno "magic_t cookie"
56ef01931fSBen Gras.Ft const char *
57*835f6802SDirk Vogt.Fn magic_descriptor "magic_t cookie" "int fd"
58*835f6802SDirk Vogt.Ft const char *
59ef01931fSBen Gras.Fn magic_file "magic_t cookie" "const char *filename"
60ef01931fSBen Gras.Ft const char *
61ef01931fSBen Gras.Fn magic_buffer "magic_t cookie" "const void *buffer" "size_t length"
62ef01931fSBen Gras.Ft int
63ef01931fSBen Gras.Fn magic_setflags "magic_t cookie" "int flags"
64ef01931fSBen Gras.Ft int
65ef01931fSBen Gras.Fn magic_check "magic_t cookie" "const char *filename"
66ef01931fSBen Gras.Ft int
67ef01931fSBen Gras.Fn magic_compile "magic_t cookie" "const char *filename"
68ef01931fSBen Gras.Ft int
69ef01931fSBen Gras.Fn magic_load "magic_t cookie" "const char *filename"
70ef01931fSBen Gras.Sh DESCRIPTION
71ef01931fSBen GrasThese functions
72ef01931fSBen Grasoperate on the magic database file
73ef01931fSBen Graswhich is described
74ef01931fSBen Grasin
75ef01931fSBen Gras.Xr magic 5 .
76ef01931fSBen Gras.Pp
77ef01931fSBen GrasThe function
78ef01931fSBen Gras.Fn magic_open
79ef01931fSBen Grascreates a magic cookie pointer and returns it.
80ef01931fSBen GrasIt returns
81ef01931fSBen Gras.Dv NULL
82ef01931fSBen Grasif there was an error allocating the magic cookie.
83ef01931fSBen GrasThe
84ef01931fSBen Gras.Ar flags
85ef01931fSBen Grasargument specifies how the other magic functions should behave:
86ef01931fSBen Gras.Bl -tag -width MAGIC_COMPRESS
87ef01931fSBen Gras.It Dv MAGIC_NONE
88ef01931fSBen GrasNo special handling.
89ef01931fSBen Gras.It Dv MAGIC_DEBUG
90ef01931fSBen GrasPrint debugging messages to stderr.
91ef01931fSBen Gras.It Dv MAGIC_SYMLINK
92ef01931fSBen GrasIf the file queried is a symlink, follow it.
93ef01931fSBen Gras.It Dv MAGIC_COMPRESS
94ef01931fSBen GrasIf the file is compressed, unpack it and look at the contents.
95ef01931fSBen Gras.It Dv MAGIC_DEVICES
96ef01931fSBen GrasIf the file is a block or character special device, then open the device
97ef01931fSBen Grasand try to look in its contents.
98ef01931fSBen Gras.It Dv MAGIC_MIME_TYPE
99ef01931fSBen GrasReturn a MIME type string, instead of a textual description.
100ef01931fSBen Gras.It Dv MAGIC_MIME_ENCODING
101ef01931fSBen GrasReturn a MIME encoding, instead of a textual description.
102*835f6802SDirk Vogt.It Dv MAGIC_MIME
103*835f6802SDirk VogtA shorthand for MAGIC_MIME_TYPE | MAGIC_MIME_ENCODING.
104ef01931fSBen Gras.It Dv MAGIC_CONTINUE
105ef01931fSBen GrasReturn all matches, not just the first.
106ef01931fSBen Gras.It Dv MAGIC_CHECK
107ef01931fSBen GrasCheck the magic database for consistency and print warnings to stderr.
108ef01931fSBen Gras.It Dv MAGIC_PRESERVE_ATIME
109ef01931fSBen GrasOn systems that support
110ef01931fSBen Gras.Xr utime 3
111ef01931fSBen Grasor
112ef01931fSBen Gras.Xr utimes 2 ,
113*835f6802SDirk Vogtattempt to preserve the access time of files analysed.
114ef01931fSBen Gras.It Dv MAGIC_RAW
115ef01931fSBen GrasDon't translate unprintable characters to a \eooo octal representation.
116ef01931fSBen Gras.It Dv MAGIC_ERROR
117ef01931fSBen GrasTreat operating system errors while trying to open files and follow symlinks
118ef01931fSBen Grasas real errors, instead of printing them in the magic buffer.
119*835f6802SDirk Vogt.It Dv MAGIC_APPLE
120*835f6802SDirk VogtReturn the Apple creator and type.
121ef01931fSBen Gras.It Dv MAGIC_NO_CHECK_APPTYPE
122*835f6802SDirk VogtDon't check for
123ef01931fSBen Gras.Dv EMX
124ef01931fSBen Grasapplication type (only on EMX).
125*835f6802SDirk Vogt.It Dv MAGIC_NO_CHECK_CDF
126*835f6802SDirk VogtDon't get extra information on MS Composite Document Files.
127ef01931fSBen Gras.It Dv MAGIC_NO_CHECK_COMPRESS
128*835f6802SDirk VogtDon't look inside compressed files.
129ef01931fSBen Gras.It Dv MAGIC_NO_CHECK_ELF
130*835f6802SDirk VogtDon't print ELF details.
131*835f6802SDirk Vogt.It Dv MAGIC_NO_CHECK_ENCODING
132*835f6802SDirk VogtDon't check text encodings.
133ef01931fSBen Gras.It Dv MAGIC_NO_CHECK_SOFT
134ef01931fSBen GrasDon't consult magic files.
135ef01931fSBen Gras.It Dv MAGIC_NO_CHECK_TAR
136ef01931fSBen GrasDon't examine tar files.
137*835f6802SDirk Vogt.It Dv MAGIC_NO_CHECK_TEXT
138*835f6802SDirk VogtDon't check for various types of text files.
139ef01931fSBen Gras.It Dv MAGIC_NO_CHECK_TOKENS
140ef01931fSBen GrasDon't look for known tokens inside ascii files.
141ef01931fSBen Gras.El
142ef01931fSBen Gras.Pp
143ef01931fSBen GrasThe
144ef01931fSBen Gras.Fn magic_close
145ef01931fSBen Grasfunction closes the
146ef01931fSBen Gras.Xr magic 5
147ef01931fSBen Grasdatabase and deallocates any resources used.
148ef01931fSBen Gras.Pp
149ef01931fSBen GrasThe
150ef01931fSBen Gras.Fn magic_error
151ef01931fSBen Grasfunction returns a textual explanation of the last error, or
152ef01931fSBen Gras.Dv NULL
153ef01931fSBen Grasif there was no error.
154ef01931fSBen Gras.Pp
155ef01931fSBen GrasThe
156ef01931fSBen Gras.Fn magic_errno
157ef01931fSBen Grasfunction returns the last operating system error number
158ef01931fSBen Gras.Pq Xr errno 2
159ef01931fSBen Grasthat was encountered by a system call.
160ef01931fSBen Gras.Pp
161ef01931fSBen GrasThe
162ef01931fSBen Gras.Fn magic_file
163ef01931fSBen Grasfunction returns a textual description of the contents of the
164ef01931fSBen Gras.Ar filename
165ef01931fSBen Grasargument, or
166ef01931fSBen Gras.Dv NULL
167ef01931fSBen Grasif an error occurred.
168ef01931fSBen GrasIf the
169ef01931fSBen Gras.Ar filename
170ef01931fSBen Grasis
171ef01931fSBen Gras.Dv NULL ,
172ef01931fSBen Grasthen stdin is used.
173ef01931fSBen Gras.Pp
174ef01931fSBen GrasThe
175*835f6802SDirk Vogt.Fn magic_descriptor
176*835f6802SDirk Vogtfunction returns a textual description of the contents of the
177*835f6802SDirk Vogt.Ar fd
178*835f6802SDirk Vogtargument, or
179*835f6802SDirk Vogt.Dv NULL
180*835f6802SDirk Vogtif an error occurred.
181*835f6802SDirk Vogt.Pp
182*835f6802SDirk VogtThe
183ef01931fSBen Gras.Fn magic_buffer
184ef01931fSBen Grasfunction returns a textual description of the contents of the
185ef01931fSBen Gras.Ar buffer
186ef01931fSBen Grasargument with
187ef01931fSBen Gras.Ar length
188ef01931fSBen Grasbytes size.
189ef01931fSBen Gras.Pp
190ef01931fSBen GrasThe
191ef01931fSBen Gras.Fn magic_setflags
192ef01931fSBen Grasfunction sets the
193ef01931fSBen Gras.Ar flags
194ef01931fSBen Grasdescribed above.
195ef01931fSBen GrasNote that using both MIME flags together can also
196ef01931fSBen Grasreturn extra information on the charset.
197ef01931fSBen Gras.Pp
198ef01931fSBen GrasThe
199ef01931fSBen Gras.Fn magic_check
200ef01931fSBen Grasfunction can be used to check the validity of entries in the colon
201ef01931fSBen Grasseparated database files passed in as
202ef01931fSBen Gras.Ar filename ,
203ef01931fSBen Grasor
204ef01931fSBen Gras.Dv NULL
205ef01931fSBen Grasfor the default database.
206ef01931fSBen GrasIt returns 0 on success and \-1 on failure.
207ef01931fSBen Gras.Pp
208ef01931fSBen GrasThe
209ef01931fSBen Gras.Fn magic_compile
210ef01931fSBen Grasfunction can be used to compile the the colon
211ef01931fSBen Grasseparated list of database files passed in as
212ef01931fSBen Gras.Ar filename ,
213ef01931fSBen Grasor
214ef01931fSBen Gras.Dv NULL
215ef01931fSBen Grasfor the default database.
216ef01931fSBen GrasIt returns 0 on success and \-1 on failure.
217ef01931fSBen GrasThe compiled files created are named from the
218ef01931fSBen Gras.Xr basename 1
219ef01931fSBen Grasof each file argument with
220ef01931fSBen Gras.Dq .mgc
221ef01931fSBen Grasappended to it.
222ef01931fSBen Gras.Pp
223ef01931fSBen GrasThe
224ef01931fSBen Gras.Fn magic_load
225ef01931fSBen Grasfunction must be used to load the the colon
226ef01931fSBen Grasseparated list of database files passed in as
227ef01931fSBen Gras.Ar filename ,
228ef01931fSBen Grasor
229ef01931fSBen Gras.Dv NULL
230ef01931fSBen Grasfor the default database file before any magic queries can performed.
231ef01931fSBen Gras.Pp
232ef01931fSBen GrasThe default database file is named by the MAGIC environment variable.
233ef01931fSBen GrasIf that variable is not set, the default database file name is
234ef01931fSBen Gras.Pa /usr/share/misc/magic .
235ef01931fSBen Gras.Fn magic_load
236ef01931fSBen Grasadds
237ef01931fSBen Gras.Dq .mgc
238ef01931fSBen Grasto the database filename as appropriate.
239ef01931fSBen Gras.Sh RETURN VALUES
240ef01931fSBen GrasThe function
241ef01931fSBen Gras.Fn magic_open
242ef01931fSBen Grasreturns a magic cookie on success and
243ef01931fSBen Gras.Dv NULL
244ef01931fSBen Grason failure setting errno to an appropriate value.
245ef01931fSBen GrasIt will set errno to
246ef01931fSBen Gras.Er EINVAL
247ef01931fSBen Grasif an unsupported value for flags was given.
248ef01931fSBen GrasThe
249ef01931fSBen Gras.Fn magic_load ,
250ef01931fSBen Gras.Fn magic_compile ,
251ef01931fSBen Grasand
252ef01931fSBen Gras.Fn magic_check
253ef01931fSBen Grasfunctions return 0 on success and \-1 on failure.
254ef01931fSBen GrasThe
255ef01931fSBen Gras.Fn magic_file ,
256ef01931fSBen Grasand
257ef01931fSBen Gras.Fn magic_buffer
258ef01931fSBen Grasfunctions return a string on success and
259ef01931fSBen Gras.Dv NULL
260ef01931fSBen Grason failure.
261ef01931fSBen GrasThe
262ef01931fSBen Gras.Fn magic_error
263ef01931fSBen Grasfunction returns a textual description of the errors of the above
264ef01931fSBen Grasfunctions, or
265ef01931fSBen Gras.Dv NULL
266ef01931fSBen Grasif there was no error.
267ef01931fSBen GrasFinally,
268ef01931fSBen Gras.Fn magic_setflags
269ef01931fSBen Grasreturns \-1 on systems that don't support
270ef01931fSBen Gras.Xr utime 3 ,
271ef01931fSBen Grasor
272ef01931fSBen Gras.Xr utimes 2
273ef01931fSBen Graswhen
274ef01931fSBen Gras.Dv MAGIC_PRESERVE_ATIME
275ef01931fSBen Grasis set.
276ef01931fSBen Gras.Sh FILES
277ef01931fSBen Gras.Bl -tag -width /usr/share/misc/magic.mgc -compact
278ef01931fSBen Gras.It Pa /usr/share/misc/magic
279ef01931fSBen GrasThe non-compiled default magic database.
280ef01931fSBen Gras.It Pa /usr/share/misc/magic.mgc
281ef01931fSBen GrasThe compiled default magic database.
282ef01931fSBen Gras.El
283ef01931fSBen Gras.Sh SEE ALSO
284ef01931fSBen Gras.Xr file 1 ,
285ef01931fSBen Gras.Xr magic 5
286ef01931fSBen Gras.Sh AUTHORS
287ef01931fSBen Gras.An M\(oans Rullg\(oard
288ef01931fSBen GrasInitial libmagic implementation, and configuration.
289ef01931fSBen Gras.An Christos Zoulas
290ef01931fSBen GrasAPI cleanup, error code and allocation handling.
291