Outdated egg!

This is an egg for CHICKEN 4, the unsupported old release. You're almost certainly looking for the CHICKEN 5 version of this egg, if it exists.

If it does not exist, there may be equivalent functionality provided by another egg; have a look at the egg index. Otherwise, please consider porting this egg to the current version of CHICKEN.


  1. Outdated egg!
  2. magic
  3. Description
  4. API
  5. Author
  6. License


libmagic bindings.

Two modules are included, libmagic and magic:

The following documentation applies to the magic module.

The source for this egg is available here.


One procedure is provided, identify, that tries to do what you mean based on the type of its argument. Whenever libmagic returns an error, an exception of type (exn magic) is raised.

Note that this module loads libmagic's magic numbers database as soon as it's required (a.k.a. used). If you're not OK with this, use the low-level module.

[procedure] (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 types, with identify returning a description of:

If flags is given, it should be a symbol or list of symbols indicating the type of description to return. These correspond to the MAGIC_* constants in magic.h, and can be any combination of the following (though not all combinations make sense):

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).


Evan Hanson


3-Clause BSD