386BSD 0.1 development
[unix-history] / usr / src / usr.bin / file / names.h
CommitLineData
66a734b3
WJ
1/*
2 * Names.h - names and types used by ascmagic in file(1).
3 * These tokens are here because they can appear anywhere in
4 * the first HOWMANY bytes, while tokens in /etc/magic must
5 * appear at fixed offsets into the file. Don't make HOWMANY
6 * too high unless you have a very fast CPU.
7 *
8 * Copyright (c) Ian F. Darwin, 1987.
9 * Written by Ian F. Darwin.
10 *
11 * This software is not subject to any license of the American Telephone
12 * and Telegraph Company or of the Regents of the University of California.
13 *
14 * Permission is granted to anyone to use this software for any purpose on
15 * any computer system, and to alter it and redistribute it freely, subject
16 * to the terms in the accompanying LEGAL.NOTICE file.
17 */
18
19/* these types are used to index the table 'types': keep em in sync! */
20#define L_C 0 /* first and foremost on UNIX */
21#define L_FORT 1 /* the oldest one */
22#define L_MAKE 2 /* Makefiles */
23#define L_PLI 3 /* PL/1 */
24#define L_MACH 4 /* some kinda assembler */
25#define L_ENG 5 /* English */
26#define L_PAS 6 /* Pascal */
27#define L_MAIL 7 /* Electronic mail */
28#define L_NEWS 8 /* Usenet Netnews */
29
30char *types[] = {
31 "c program text",
32 "fortran program text",
33 "make commands text" ,
34 "pl/1 program text",
35 "assembler program text",
36 "English text",
37 "pascal program text",
38 "mail text",
39 "news text",
40 "can't happen error on names.h/types",
41 0};
42
43struct names {
44 char *name;
45 short type;
46} names[] = {
47 /* These must be sorted by eye for optimal hit rate */
48 /* Add to this list only after substantial meditation */
49 {"/*", L_C}, /* must preced "The", "the", etc. */
50 {"#include", L_C},
51 {"char", L_C},
52 {"The", L_ENG},
53 {"the", L_ENG},
54 {"double", L_C},
55 {"extern", L_C},
56 {"float", L_C},
57 {"real", L_C},
58 {"struct", L_C},
59 {"union", L_C},
60 {"CFLAGS", L_MAKE},
61 {"LDFLAGS", L_MAKE},
62 {"all:", L_MAKE},
63 {".PRECIOUS", L_MAKE},
64/* Too many files of text have these words in them. Find another way
65 * to recognize Fortrash.
66 */
67#ifdef NOTDEF
68 {"subroutine", L_FORT},
69 {"function", L_FORT},
70 {"block", L_FORT},
71 {"common", L_FORT},
72 {"dimension", L_FORT},
73 {"integer", L_FORT},
74 {"data", L_FORT},
75#endif /*NOTDEF*/
76 {".ascii", L_MACH},
77 {".asciiz", L_MACH},
78 {".byte", L_MACH},
79 {".even", L_MACH},
80 {".globl", L_MACH},
81 {"clr", L_MACH},
82 {"(input,", L_PAS},
83 {"dcl", L_PLI},
84 {"Received:", L_MAIL},
85 {">From", L_MAIL},
86 {"Return-Path:",L_MAIL},
87 {"Cc:", L_MAIL},
88 {"Newsgroups:", L_NEWS},
89 {"Path:", L_NEWS},
90 {"Organization:",L_NEWS},
91 0};
92#define NNAMES ((sizeof(names)/sizeof(struct names)) - 1)