| .\" $File: libmagic.man,v 1.21 2009/11/24 21:16:14 christos Exp $ |
| .\" |
| .\" Copyright (c) Christos Zoulas 2003. |
| .\" All Rights Reserved. |
| .\" |
| .\" Redistribution and use in source and binary forms, with or without |
| .\" modification, are permitted provided that the following conditions |
| .\" are met: |
| .\" 1. Redistributions of source code must retain the above copyright |
| .\" notice immediately at the beginning of the file, without modification, |
| .\" this list of conditions, and the following disclaimer. |
| .\" 2. Redistributions in binary form must reproduce the above copyright |
| .\" notice, this list of conditions and the following disclaimer in the |
| .\" documentation and/or other materials provided with the distribution. |
| .\" |
| .\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| .\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR |
| .\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| .\" SUCH DAMAGE. |
| .\" |
| .Dd November 24, 2009 |
| .Dt LIBMAGIC 3 |
| .Os |
| .Sh NAME |
| .Nm magic_open , |
| .Nm magic_close , |
| .Nm magic_error , |
| .Nm magic_file , |
| .Nm magic_buffer , |
| .Nm magic_setflags , |
| .Nm magic_check , |
| .Nm magic_compile , |
| .Nm magic_load |
| .Nd Magic number recognition library. |
| .Sh LIBRARY |
| .Lb libmagic |
| .Sh SYNOPSIS |
| .In magic.h |
| .Ft magic_t |
| .Fn magic_open "int flags" |
| .Ft void |
| .Fn magic_close "magic_t cookie" |
| .Ft const char * |
| .Fn magic_error "magic_t cookie" |
| .Ft int |
| .Fn magic_errno "magic_t cookie" |
| .Ft const char * |
| .Fn magic_file "magic_t cookie, const char *filename" |
| .Ft const char * |
| .Fn magic_buffer "magic_t cookie, const void *buffer, size_t length" |
| .Ft int |
| .Fn magic_setflags "magic_t cookie, int flags" |
| .Ft int |
| .Fn magic_check "magic_t cookie, const char *filename" |
| .Ft int |
| .Fn magic_compile "magic_t cookie, const char *filename" |
| .Ft int |
| .Fn magic_load "magic_t cookie, const char *filename" |
| .Sh DESCRIPTION |
| These functions |
| operate on the magic database file |
| which is described |
| in |
| .Xr magic 4 . |
| .Pp |
| The function |
| .Fn magic_open |
| creates a magic cookie pointer and returns it. It returns NULL if |
| there was an error allocating the magic cookie. The |
| .Ar flags |
| argument specifies how the other magic functions should behave: |
| .Bl -tag -width MAGIC_COMPRESS |
| .It Dv MAGIC_NONE |
| No special handling. |
| .It Dv MAGIC_DEBUG |
| Print debugging messages to stderr. |
| .It Dv MAGIC_SYMLINK |
| If the file queried is a symlink, follow it. |
| .It Dv MAGIC_COMPRESS |
| If the file is compressed, unpack it and look at the contents. |
| .It Dv MAGIC_DEVICES |
| If the file is a block or character special device, then open the device |
| and try to look in its contents. |
| .It Dv MAGIC_MIME_TYPE |
| Return a MIME type string, instead of a textual description. |
| .It Dv MAGIC_MIME_ENCODING |
| Return a MIME encoding, instead of a textual description. |
| .It Dv MAGIC_CONTINUE |
| Return all matches, not just the first. |
| .It Dv MAGIC_CHECK |
| Check the magic database for consistency and print warnings to stderr. |
| .It Dv MAGIC_PRESERVE_ATIME |
| On systems that support |
| .Xr utime 2 |
| or |
| .Xr utimes 2 , |
| attempt to preserve the access time of files analyzed. |
| .It Dv MAGIC_RAW |
| Don't translate unprintable characters to a \eooo octal representation. |
| .It Dv MAGIC_ERROR |
| Treat operating system errors while trying to open files and follow symlinks |
| as real errors, instead of printing them in the magic buffer. |
| .It Dv MAGIC_NO_CHECK_APPTYPE |
| Check for |
| .Dv EMX |
| application type (only on EMX). |
| .It Dv MAGIC_NO_CHECK_ASCII |
| Check for various types of ascii files. |
| .It Dv MAGIC_NO_CHECK_COMPRESS |
| Don't look for, or inside compressed files. |
| .It Dv MAGIC_NO_CHECK_ELF |
| Don't print elf details. |
| .It Dv MAGIC_NO_CHECK_FORTRAN |
| Don't look for fortran sequences inside ascii files. |
| .It Dv MAGIC_NO_CHECK_SOFT |
| Don't consult magic files. |
| .It Dv MAGIC_NO_CHECK_TAR |
| Don't examine tar files. |
| .It Dv MAGIC_NO_CHECK_TOKENS |
| Don't look for known tokens inside ascii files. |
| .It Dv MAGIC_NO_CHECK_TROFF |
| Don't look for troff sequences inside ascii files. |
| .El |
| .Pp |
| The |
| .Fn magic_close |
| function closes the |
| .Xr magic 4 |
| database and deallocates any resources used. |
| .Pp |
| The |
| .Fn magic_error |
| function returns a textual explanation of the last error, or NULL if there was |
| no error. |
| .Pp |
| The |
| .Fn magic_errno |
| function returns the last operating system error number |
| .Pq Xr errno 2 |
| that was encountered by a system call. |
| .Pp |
| The |
| .Fn magic_file |
| function returns a textual description of the contents of the |
| .Ar filename |
| argument, or NULL if an error occurred. |
| If the |
| .Ar filename |
| is NULL, then stdin is used. |
| .Pp |
| The |
| .Fn magic_buffer |
| function returns a textual description of the contents of the |
| .Ar buffer |
| argument with |
| .Ar length |
| bytes size. |
| .Pp |
| The |
| .Fn magic_setflags |
| function sets the |
| .Ar flags |
| described above. Note that using both MIME flags together can also |
| return extra information on the charset. |
| .Pp |
| The |
| .Fn magic_check |
| function can be used to check the validity of entries in the colon |
| separated database files passed in as |
| .Ar filename , |
| or NULL for the default database. It returns 0 on success and -1 on |
| failure. |
| .Pp |
| The |
| .Fn magic_compile |
| function can be used to compile the the colon |
| separated list of database files passed in as |
| .Ar filename , |
| or NULL for the default database. It returns 0 on success and -1 on |
| failure. The compiled files created are named from the |
| .Xr basename 1 |
| of each file argument with |
| .Dq .mgc |
| appended to it. |
| .Pp |
| The |
| .Fn magic_load |
| function must be used to load the the colon |
| separated list of database files passed in as |
| .Ar filename , |
| or NULL for the default database file |
| before any magic queries can performed. |
| .Pp |
| The default database file is named by the MAGIC environment variable. If |
| that variable is not set, the default database file name is /mingw/share/misc/magic. |
| .Fn magic_load |
| adds |
| .Dq .mgc |
| to the database filename as appropriate. |
| .Sh RETURN VALUES |
| The function |
| .Fn magic_open |
| returns a magic cookie on success and NULL on failure setting errno to |
| an appropriate value. It will set errno to EINVAL if an unsupported |
| value for flags was given. |
| The |
| .Fn magic_load , |
| .Fn magic_compile , |
| and |
| .Fn magic_check |
| functions return 0 on success and -1 on failure. |
| The |
| .Fn magic_file , |
| and |
| .Fn magic_buffer |
| functions return a string on success and NULL on failure. The |
| .Fn magic_error |
| function returns a textual description of the errors of the above |
| functions, or NULL if there was no error. |
| Finally, |
| .Fn magic_setflags |
| returns -1 on systems that don't support |
| .Xr utime 2 , |
| or |
| .Xr utimes 2 |
| when |
| .Dv MAGIC_PRESERVE_ATIME |
| is set. |
| .Sh FILES |
| .Bl -tag -width /mingw/share/misc/magic.mgc -compact |
| .It Pa /mingw/share/misc/magic |
| The non-compiled default magic database. |
| .It Pa /mingw/share/misc/magic.mgc |
| The compiled default magic database. |
| .El |
| .Sh SEE ALSO |
| .Xr file 1 , |
| .Xr magic 4 |
| .Sh AUTHORS |
| Måns Rullgård Initial libmagic implementation, |
| and configuration. |
| Christos Zoulas API cleanup, error code and allocation handling. |