[BACK]Return to names.h CVS log [TXT][DIR] Up to [local] / src / usr.bin / file

Diff for /src/usr.bin/file/Attic/names.h between version 1.5 and 1.6

version 1.5, 2003/06/13 18:31:14 version 1.6, 2004/05/19 02:32:35
Line 1 
Line 1 
 /*      $OpenBSD$       */  /*      $OpenBSD$ */
   
 /*  /*
  * Names.h - names and types used by ascmagic in file(1).  
  * These tokens are here because they can appear anywhere in  
  * the first HOWMANY bytes, while tokens in /etc/magic must  
  * appear at fixed offsets into the file. Don't make HOWMANY  
  * too high unless you have a very fast CPU.  
  *  
  * Copyright (c) Ian F. Darwin 1986-1995.   * Copyright (c) Ian F. Darwin 1986-1995.
  * Software written by Ian F. Darwin and others;   * Software written by Ian F. Darwin and others;
  * maintained 1995-present by Christos Zoulas and others.   * maintained 1995-present by Christos Zoulas and others.
Line 33 
Line 26 
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.   * SUCH DAMAGE.
  */   */
   /*
    * Names.h - names and types used by ascmagic in file(1).
    * These tokens are here because they can appear anywhere in
    * the first HOWMANY bytes, while tokens in MAGIC must
    * appear at fixed offsets into the file. Don't make HOWMANY
    * too high unless you have a very fast CPU.
    *
    * $Id$
    */
   
   /*
           modified by Chris Lowth - 9 April 2000
           to add mime type strings to the types table.
   */
   
 /* these types are used to index the table 'types': keep em in sync! */  /* these types are used to index the table 'types': keep em in sync! */
 #define L_C     0               /* first and foremost on UNIX */  #define L_C     0               /* first and foremost on UNIX */
 #define L_CC    1               /* Bjarne's postincrement */  #define L_CC    1               /* Bjarne's postincrement */
 #define L_FORT  2               /* the oldest one */  #define L_FORT  2               /* the oldest one */
 #define L_MAKE  3               /* Makefiles */  #define L_MAKE  3               /* Makefiles */
 #define L_PLI   4               /* PL/1 */  #define L_PLI   4               /* PL/1 */
 #define L_MACH  5               /* some kinda assembler */  #define L_MACH  5               /* some kinda assembler */
 #define L_ENG   6               /* English */  #define L_ENG   6               /* English */
 #define L_PAS   7               /* Pascal */  #define L_PAS   7               /* Pascal */
 #define L_MAIL  8               /* Electronic mail */  #define L_MAIL  8               /* Electronic mail */
 #define L_NEWS  9               /* Usenet Netnews */  #define L_NEWS  9               /* Usenet Netnews */
   #define L_JAVA  10              /* Java code */
   #define L_HTML  11              /* HTML */
   #define L_BCPL  12              /* BCPL */
   #define L_M4    13              /* M4 */
   #define L_PO    14              /* PO */
   
 static char *types[] = {  static const struct {
         "C program text",          const char *human;
         "C++ program text",          const char *mime;
         "FORTRAN program text",  } types[] = {
         "make commands text" ,          { "C program",                                  "text/x-c", },
         "PL/1 program text",          { "C++ program",                                "text/x-c++" },
         "assembler program text",          { "FORTRAN program",                            "text/x-fortran" },
         "English text",          { "make commands",                              "text/x-makefile" },
         "Pascal program text",          { "PL/1 program",                               "text/x-pl1" },
         "mail text",          { "assembler program",                          "text/x-asm" },
         "news text",          { "English",                                    "text/plain" },
         "can't happen error on names.h/types",          { "Pascal program",                             "text/x-pascal" },
         0};          { "mail",                                       "text/x-mail" },
           { "news",                                       "text/x-news" },
           { "Java program",                               "text/x-java" },
           { "HTML document",                              "text/html", },
           { "BCPL program",                               "text/x-bcpl" },
           { "M4 macro language pre-processor",            "text/x-m4" },
           { "PO (gettext message catalogue)",             "text/x-po" },
           { "cannot happen error on names.h/types",       "error/x-error" },
           { 0, 0}
   };
   
   /*
    * XXX - how should we distinguish Java from C++?
    * The trick used in a Debian snapshot, of having "extends" or "implements"
    * as tags for Java, doesn't work very well, given that those keywords
    * are often preceded by "class", which flags it as C++.
    *
    * Perhaps we need to be able to say
    *
    *      If "class" then
    *
    *              if "extends" or "implements" then
    *                      Java
    *              else
    *                      C++
    *      endif
    *
    * Or should we use other keywords, such as "package" or "import"?
    * Unfortunately, Ada95 uses "package", and Modula-3 uses "import",
    * although I infer from the language spec at
    *
    *      http://www.research.digital.com/SRC/m3defn/html/m3.html
    *
    * that Modula-3 uses "IMPORT" rather than "import", i.e. it must be
    * in all caps.
    *
    * So, for now, we go with "import".  We must put it before the C++
    * stuff, so that we don't misidentify Java as C++.  Not using "package"
    * means we won't identify stuff that defines a package but imports
    * nothing; hopefully, very little Java code imports nothing (one of the
    * reasons for doing OO programming is to import as much as possible
    * and write only what you need to, right?).
    *
    * Unfortunately, "import" may cause us to misidentify English text
    * as Java, as it comes after "the" and "The".  Perhaps we need a fancier
    * heuristic to identify Java?
    */
 static struct names {  static struct names {
         char *name;          const char *name;
         short type;          short type;
 } names[] = {  } names[] = {
         /* These must be sorted by eye for optimal hit rate */          /* These must be sorted by eye for optimal hit rate */
         /* Add to this list only after substantial meditation */          /* Add to this list only after substantial meditation */
           {"msgid",       L_PO},
           {"dnl",         L_M4},
           {"import",      L_JAVA},
           {"\"libhdr\"",  L_BCPL},
           {"\"LIBHDR\"",  L_BCPL},
         {"//",          L_CC},          {"//",          L_CC},
         {"template",    L_CC},          {"template",    L_CC},
         {"virtual",     L_CC},          {"virtual",     L_CC},
Line 80 
Line 142 
         {"double",      L_C},          {"double",      L_C},
         {"extern",      L_C},          {"extern",      L_C},
         {"float",       L_C},          {"float",       L_C},
         {"real",        L_C},  
         {"struct",      L_C},          {"struct",      L_C},
         {"union",       L_C},          {"union",       L_C},
         {"CFLAGS",      L_MAKE},          {"CFLAGS",      L_MAKE},
Line 115 
Line 176 
         {"Newsgroups:", L_NEWS},          {"Newsgroups:", L_NEWS},
         {"Path:",       L_NEWS},          {"Path:",       L_NEWS},
         {"Organization:",L_NEWS},          {"Organization:",L_NEWS},
           {"href=",       L_HTML},
           {"HREF=",       L_HTML},
           {"<body",       L_HTML},
           {"<BODY",       L_HTML},
           {"<html",       L_HTML},
           {"<HTML",       L_HTML},
         {NULL,          0}          {NULL,          0}
 };  };
 #define NNAMES ((sizeof(names)/sizeof(struct names)) - 1)  #define NNAMES ((sizeof(names)/sizeof(struct names)) - 1)

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6