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