---
name: "cfront"
section: "3tcl"
platform: "linux"
package: "tcllib"
version: "2.0+dfsg-4"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/cfront"
---

# cfront(3tcl)

Generator core for compiler of magic(5) files

```

```

## NAME

fileutil::magic::cfront - Generator core for compiler of [magic(5)](/magic/5.md) files

## SYNOPSIS

package require **Tcl 8.5 9**

package require **fileutil::magic::cfront ?1.3.2?**

package require **fileutil::magic::cgen ?1.2.0?**

package require **fileutil::magic::rt ?1.2.0?**

package require **struct::list**

package require **fileutil**

**::fileutil::magic::cfront::compile** *path*...

**::fileutil::magic::cfront::procdef** *procname* *path*...

**::fileutil::magic::cfront::install** *path*...

```

```

## DESCRIPTION

This package provides the frontend of a compiler of [magic(5)](/magic/5.md) files into recognizers based on the **fileutil::magic::rt** recognizer runtime package. For the generator backed used by this compiler see the package **fileutil::magic::cgen**.

## COMMANDS

- **::fileutil::magic::cfront::compile** *path*...

  This command takes the paths of one or more files and directories and compiles all the files, and the files in all the directories into a single analyzer for all the file types specified in these files.  It returns a list whose first item is a list per-file dictionaries of analyzer scripts and whose second item is a list of analyzer commands.

  All the files have to be in the format specified by [magic(5)](/magic/5.md).

  The result of the command is a Tcl script containing the generated recognizer.

- **::fileutil::magic::cfront::procdef** *procname* *path*...

  This command behaves like **::fileutil::magic::cfront::compile** with regard to the specified path arguments, then wraps the resulting recognizer script into a procedure named *procname*, puts code setting up the namespace of *procname* in front, and returns the resulting script.

- **::fileutil::magic::cfront::install** *path*...

  This command uses **::fileutil::magic::cfront::procdef** to compile each of the paths into a recognizer procedure and installs the result in the current interpreter.

  The name of each new procedure is derived from the name of the file/directory used in its creation, with file/directory "*FOO*" causing the creation of procedure **::fileutil::magic::/FOO::run**.

## BUGS, IDEAS, FEEDBACK

This document, and the package it describes, will undoubtedly contain bugs and other problems. Please report such in the category *fileutil :: magic* of the *Tcllib Trackers* \[http://core.tcl.tk/tcllib/reportlist\]. Please also report any ideas for enhancements you may have for either package and/or documentation.

When proposing code changes, please provide *unified diffs*, i.e the output of **diff -u**.

Note further that *attachments* are strongly preferred over inlined patches. Attachments can be made by going to the **Edit** form of the ticket immediately after its creation, and then using the left-most button in the secondary navigation bar.

## SEE ALSO

[file(1)](/file/1.md), fileutil, [magic(5)](/magic/5.md)

## KEYWORDS

file recognition, file type, file utilities, mime, type

## CATEGORY

Programming tools
