About

Metadata

  • Last updated , by philippedev101
  • License BSD-3-Clause
  • Categories Text Processing
  • Maintained by: Philippe <philippedev101@gmail.com>

  • Lottery factor: 1

Links

Installation

Tested Compilers

  1. 9.10.3
  2. 9.8.4
  3. 9.6.7

Package Flags

Use the -f option with cabal commands to enable flags

    pkgconfig (on by default)

    Use pkg-config to locate the C libmagic library. Enabled by default; because this flag is automatic, Cabal's solver transparently falls back to plain extra-libraries linking when pkg-config or libmagic.pc is unavailable.

    dev (off by default)

    Turn on developer settings, notably -Werror.

Readme

magic

It is a binding to the C libmagic library. It allows you to determine the type of a file not by looking at its name or extension, but rather by examining the contents itself.

libmagic can provide either a textual description or a MIME content type (and, occasionally, also a character set). The Haskell binding can also provide reports over Haskell strings.

Requirements

You need the C libmagic library and its development headers installed before building. It is part of the file package.

Platform Install
Debian / Ubuntu apt-get install libmagic-dev
Fedora dnf install file-devel
Arch pacman -S file
macOS (Homebrew) brew install libmagic
Nix file / file.dev

Building

With cabal:

cabal build
cabal test

With stack:

stack build
stack test

libmagic is located automatically via pkg-config. If pkg-config cannot find it (for example, an unusual install location), point Cabal at the library directly:

cabal build \
  --extra-lib-dirs=/path/to/lib \
  --extra-include-dirs=/path/to/include

Usage

You can simply add magic to your build-depends to enable this library.

import Magic

main :: IO ()
main = do
  magic <- magicOpen [MagicMimeType]
  magicLoadDefault magic
  mime <- magicFile magic "some-file.png"
  putStrLn mime          -- e.g. "image/png"

Author & history

magic-haskell was written by John Goerzen jgoerzen@complete.org, who created it in 2005 and maintained it for nearly two decades. It is now maintained by Philippe, with development at https://github.com/philippedev101/magic-haskell.

License

3-clause BSD. See the COPYING file included with the package.