[[tags: egg]] == magic [[toc:]] === Description libmagic bindings. Two modules are included, {{(magic)}} and {{(magic libmagic)}}: * {{(magic)}} is a high-level wrapper providing a single procedure called {{identify}}. * {{(magic libmagic)}} is a one-to-one binding to {{libmagic.h}}, used exactly like the C library. The following documentation applies to the {{(magic)}} module. The source for this egg is available [[https://git.foldling.org/chicken-magic.git|here]]. === API One procedure is provided, {{identify}}, that tries to do what you mean. Whenever libmagic returns an error, an exception of type {{(exn magic)}} is raised. Note that the {{magic}} module loads libmagic's magic numbers database as soon as it's {{require}}d (a.k.a. {{use}}d). If you're not OK with this, use the low-level module. (identify [object [flags]]) => string {{identify}} returns a textual description of the file indicated by {{object}}, or the contents of {{(current-input-port)}} if no {{object}} is specified. If {{object}} is given, it may be any of the following object types, with {{identify}} returning a description of: * {{blob}}: the contents of the blob. * {{string}}: the contents of the file indicated by the given filename. * {{integer}}: the contents of that file descriptor. * {{input-port}}: the contents of the given port. This port must be backed by a file descriptor; if not, an error of type {{(exn type)}} will be raised. If {{flags}} is given, it must be a symbol or list of symbols indicating the type of description to return. These correspond to the {{MAGIC_*}} constants in {{libmagic.h}}, and can be any combination of the following (though not all combinations make sense): * {{apple}} * {{compress}} * {{device}} * {{mime}} * {{mime-encoding encoding}} * {{mime-type type}} * {{no-apptype}} * {{no-cdf}} * {{no-compress}} * {{no-elf}} * {{no-encoding}} * {{no-soft}} * {{no-tar}} * {{no-text}} * {{no-tokens}} * {{none}} * {{preserve-atime}} * {{raw}} * {{symlink}} For example: (identify "/usr/include/magic.h") ; => "C source, ASCII text" (identify "/usr/include/magic.h" 'mime) ; => "text/x-c; charset=us-ascii" (identify "/usr/include/magic.h" '(preserve-atime no-text)) ; => "data" An unrecognized flag will raise an exception of type {{(exn magic)}}. === Author [[/users/evan-hanson|Evan Hanson]] === License Copyright (c) 2013-2018, 3-Clause BSD.