home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume25 / tcsh-6.01 / part05 / sh.char.c < prev    next >
C/C++ Source or Header  |  1991-12-19  |  10KB  |  315 lines

  1. /* $Header: /home/hyperion/mu/christos/src/sys/tcsh-6.01/RCS/sh.char.c,v 3.3 1991/10/12 04:23:51 christos Exp $ */
  2. /*
  3.  * sh.char.c: Character classification tables
  4.  */
  5. /*-
  6.  * Copyright (c) 1980, 1991 The Regents of the University of California.
  7.  * All rights reserved.
  8.  *
  9.  * Redistribution and use in source and binary forms, with or without
  10.  * modification, are permitted provided that the following conditions
  11.  * are met:
  12.  * 1. Redistributions of source code must retain the above copyright
  13.  *    notice, this list of conditions and the following disclaimer.
  14.  * 2. Redistributions in binary form must reproduce the above copyright
  15.  *    notice, this list of conditions and the following disclaimer in the
  16.  *    documentation and/or other materials provided with the distribution.
  17.  * 3. All advertising materials mentioning features or use of this software
  18.  *    must display the following acknowledgement:
  19.  *    This product includes software developed by the University of
  20.  *    California, Berkeley and its contributors.
  21.  * 4. Neither the name of the University nor the names of its contributors
  22.  *    may be used to endorse or promote products derived from this software
  23.  *    without specific prior written permission.
  24.  *
  25.  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  26.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  27.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  28.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  29.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  30.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  31.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  32.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  33.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  34.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  35.  * SUCH DAMAGE.
  36.  */
  37. #include "sh.h"
  38.  
  39. RCSID("$Id: sh.char.c,v 3.3 1991/10/12 04:23:51 christos Exp $")
  40.  
  41. #include "sh.char.h"
  42.  
  43. unsigned short _cmap[256] = {
  44. /*    nul        soh        stx        etx    */
  45.     _CTR,        _CTR,        _CTR,        _CTR,
  46.  
  47. /*    eot        enq        ack        bel    */
  48.     _CTR,        _CTR,        _CTR,        _CTR,
  49.  
  50. /*    bs        ht        nl        vt    */
  51.     _CTR,        _CTR|_SP|_META,    _CTR|_NL|_META,    _CTR,
  52.  
  53. /*    np        cr        so        si    */
  54.     _CTR,        _CTR,        _CTR,        _CTR,
  55.  
  56. /*    dle        dc1        dc2        dc3    */
  57.     _CTR,        _CTR,        _CTR,        _CTR,
  58.  
  59. /*    dc4        nak        syn        etb    */
  60.     _CTR,        _CTR,        _CTR,        _CTR,
  61.  
  62. /*    can        em        sub        esc    */
  63.     _CTR,        _CTR,        _CTR,        _CTR,
  64.  
  65. /*    fs        gs        rs        us    */
  66.     _CTR,        _CTR,        _CTR,        _CTR,
  67.  
  68. /*    sp        !        "        #    */
  69.     _SP|_META,    0,        _Q,        _META,
  70.  
  71. /*    $        %        &        '    */
  72.     _DOL,        0,        _META|_CMD,    _Q,
  73.  
  74. /*    (        )        *        +    */
  75.     _META|_CMD,    _META,        _GLOB,        0,
  76.  
  77. /*    ,        -        .        /    */
  78.     0,        0,        0,        0,
  79.  
  80. /*    0        1        2        3    */
  81.     _DIG|_XD,    _DIG|_XD,    _DIG|_XD,    _DIG|_XD,
  82.  
  83. /*    4        5        6        7    */
  84.     _DIG|_XD,    _DIG|_XD,    _DIG|_XD,    _DIG|_XD,
  85.  
  86. /*    8        9        :        ;    */
  87.     _DIG|_XD,    _DIG|_XD,    0,        _META|_CMD,
  88.  
  89. /*    <        =        >        ?    */
  90.     _META,        0,        _META,        _GLOB,
  91.  
  92. /*    @        A        B        C    */
  93.     0,        _LET|_UP|_XD,    _LET|_UP|_XD,    _LET|_UP|_XD,
  94.  
  95. /*    D        E        F        G    */
  96.     _LET|_UP|_XD,    _LET|_UP|_XD,    _LET|_UP|_XD,    _LET|_UP,
  97.  
  98. /*    H        I        J        K    */
  99.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  100.  
  101. /*    L        M        N        O    */
  102.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  103.  
  104. /*    P        Q        R        S    */
  105.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  106.  
  107. /*    T        U        V        W    */
  108.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  109.  
  110. /*    X        Y        Z        [    */
  111.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _GLOB,
  112.  
  113. /*    \        ]        ^        _    */
  114.     _ESC,        0,        0,        0,
  115.  
  116. /*    `        a        b        c    */
  117.   _Q1|_GLOB|_META,    _LET|_LOW|_XD,    _LET|_LOW|_XD,    _LET|_LOW|_XD,
  118.  
  119. /*    d        e        f        g    */
  120.     _LET|_LOW|_XD,    _LET|_LOW|_XD,    _LET|_LOW|_XD,    _LET|_LOW,
  121.  
  122. /*    h        i        j        k    */
  123.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  124.  
  125. /*    l        m        n        o    */
  126.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  127.  
  128. /*    p        q        r        s    */
  129.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  130.  
  131. /*    t        u        v        w    */
  132.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  133.  
  134. /*    x        y        z        {    */
  135.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _GLOB,
  136.  
  137. /*    |        }        ~        del    */
  138.     _META|_CMD,    0,        0,        _CTR,
  139.  
  140. #if defined(SHORT_STRINGS) && !defined(KANJI)
  141. /****************************************************************/
  142. /* 128 - 255 The below is supposedly ISO 8859/1            */
  143. /****************************************************************/
  144. /*    (undef)        (undef)        (undef)        (undef)        */
  145.     _CTR,        _CTR,        _CTR,        _CTR,
  146.  
  147. /*    (undef)        (undef)        (undef)        (undef)        */
  148.     _CTR,        _CTR,        _CTR,        _CTR,
  149.  
  150. /*    (undef)        (undef)        (undef)        (undef)        */
  151.     _CTR,        _CTR,        _CTR,        _CTR,
  152.  
  153. /*    (undef)        (undef)        (undef)        (undef)        */
  154.     _CTR,        _CTR,        _CTR,        _CTR,
  155.  
  156. /*    (undef)        (undef)        (undef)        (undef)        */
  157.     _CTR,        _CTR,        _CTR,        _CTR,
  158.  
  159. /*    (undef)        (undef)        (undef)        (undef)        */
  160.     _CTR,        _CTR,        _CTR,        _CTR,
  161.  
  162. /*    (undef)        (undef)        (undef)        (undef)        */
  163.     _CTR,        _CTR,        _CTR,        _CTR,
  164.  
  165. /*    (undef)        (undef)        (undef)        (undef)        */
  166.     _CTR,        _CTR,        _CTR,        _CTR,
  167.  
  168. /*    nobreakspace    exclamdown    cent        sterling    */
  169.     _SP,        0,        0,        0,
  170.  
  171. /*    currency    yen        brokenbar    section        */
  172.     0,        0,        0,        0,
  173.  
  174. /*    diaeresis    copyright    ordfeminine    guillemotleft    */
  175.     0,        0,        0,        0,
  176.  
  177. /*    notsign        hyphen        registered    macron        */
  178.     0,        0,        0,        0,
  179.  
  180. /*    degree        plusminus    twosuperior    threesuperior    */
  181.     0,        0,        0,        0,
  182.  
  183. /*    acute        mu        paragraph    periodcentered    */
  184.     0,        0,        0,        0,
  185.  
  186. /*    cedilla        onesuperior    masculine    guillemotright    */
  187.     0,        0,        0,        0,
  188.  
  189. /*    onequarter    onehalf        threequarters    questiondown    */
  190.     0,        0,        0,        0,
  191.  
  192. /*    Agrave        Aacute        Acircumflex    Atilde        */
  193.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  194.  
  195. /*    Adiaeresis    Aring        AE        Ccedilla    */
  196.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  197.  
  198. /*    Egrave        Eacute        Ecircumflex    Ediaeresis    */
  199.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  200.  
  201. /*    Igrave        Iacute        Icircumflex    Idiaeresis    */
  202.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  203.  
  204. /*    ETH        Ntilde        Ograve        Oacute        */
  205.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  206.  
  207. /*    Ocircumflex    Otilde        Odiaeresis    multiply    */
  208.     _LET|_UP,    _LET|_UP,    _LET|_UP,    0,
  209.  
  210. /*    Ooblique    Ugrave        Uacute        Ucircumflex    */
  211.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_UP,
  212.  
  213. /*    Udiaeresis    Yacute        THORN        ssharp        */
  214.     _LET|_UP,    _LET|_UP,    _LET|_UP,    _LET|_LOW,
  215.  
  216. /*    agrave        aacute        acircumflex    atilde        */
  217.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  218.  
  219. /*    adiaeresis    aring        ae        ccedilla    */
  220.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  221.  
  222. /*    egrave        eacute        ecircumflex    ediaeresis    */
  223.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  224.  
  225. /*    igrave        iacute        icircumflex    idiaeresis    */
  226.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  227.  
  228. /*    eth        ntilde        ograve        oacute        */
  229.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  230.  
  231. /*    ocircumflex    otilde        odiaeresis    division    */
  232.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    0,
  233.  
  234. /*    oslash        ugrave        uacute        ucircumflex    */
  235.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  236.  
  237. /*    udiaeresis    yacute        thorn        ydiaeresis    */
  238.     _LET|_LOW,    _LET|_LOW,    _LET|_LOW,    _LET|_LOW,
  239. #endif /* SHORT_STRINGS && !KANJI */
  240. };
  241.  
  242. #ifndef NLS
  243. /* _cmap_lower, _cmap_upper for ISO 8859/1 */
  244.  
  245. unsigned char _cmap_lower[256] = {
  246.     0000,    0001,    0002,    0003,    0004,    0005,    0006,    0007,
  247.     0010,    0011,    0012,    0013,    0014,    0015,    0016,    0017,
  248.     0020,    0021,    0022,    0023,    0024,    0025,    0026,    0027,
  249.     0030,    0031,    0032,    0033,    0034,    0035,    0036,    0037,
  250.     0040,    0041,    0042,    0043,    0044,    0045,    0046,    0047,
  251.     0050,    0051,    0052,    0053,    0054,    0055,    0056,    0057,
  252.     0060,    0061,    0062,    0063,    0064,    0065,    0066,    0067,
  253.     0070,    0071,    0072,    0073,    0074,    0075,    0076,    0077,
  254.     0100,    0141,    0142,    0143,    0144,    0145,    0146,    0147,
  255.     0150,    0151,    0152,    0153,    0154,    0155,    0156,    0157,
  256.     0160,    0161,    0162,    0163,    0164,    0165,    0166,    0167,
  257.     0170,    0171,    0172,    0133,    0134,    0135,    0136,    0137,
  258.     0140,    0141,    0142,    0143,    0144,    0145,    0146,    0147,
  259.     0150,    0151,    0152,    0153,    0154,    0155,    0156,    0157,
  260.     0160,    0161,    0162,    0163,    0164,    0165,    0166,    0167,
  261.     0170,    0171,    0172,    0173,    0174,    0175,    0176,    0177,
  262.     0200,    0201,    0202,    0203,    0204,    0205,    0206,    0207,
  263.     0210,    0211,    0212,    0213,    0214,    0215,    0216,    0217,
  264.     0220,    0221,    0222,    0223,    0224,    0225,    0226,    0227,
  265.     0230,    0231,    0232,    0233,    0234,    0235,    0236,    0237,
  266.     0240,    0241,    0242,    0243,    0244,    0245,    0246,    0247,
  267.     0250,    0251,    0252,    0253,    0254,    0255,    0256,    0257,
  268.     0260,    0261,    0262,    0263,    0264,    0265,    0266,    0267,
  269.     0270,    0271,    0272,    0273,    0274,    0275,    0276,    0277,
  270.     0340,    0341,    0342,    0343,    0344,    0345,    0346,    0347,
  271.     0350,    0351,    0352,    0353,    0354,    0355,    0356,    0357,
  272.     0360,    0361,    0362,    0363,    0364,    0365,    0366,    0327,
  273.     0370,    0371,    0372,    0373,    0374,    0375,    0376,    0337,
  274.     0340,    0341,    0342,    0343,    0344,    0345,    0346,    0347,
  275.     0350,    0351,    0352,    0353,    0354,    0355,    0356,    0357,
  276.     0360,    0361,    0362,    0363,    0364,    0365,    0366,    0367,
  277.     0370,    0371,    0372,    0373,    0374,    0375,    0376,    0377,
  278. };
  279.  
  280. unsigned char _cmap_upper[256] = {
  281.     0000,    0001,    0002,    0003,    0004,    0005,    0006,    0007,
  282.     0010,    0011,    0012,    0013,    0014,    0015,    0016,    0017,
  283.     0020,    0021,    0022,    0023,    0024,    0025,    0026,    0027,
  284.     0030,    0031,    0032,    0033,    0034,    0035,    0036,    0037,
  285.     0040,    0041,    0042,    0043,    0044,    0045,    0046,    0047,
  286.     0050,    0051,    0052,    0053,    0054,    0055,    0056,    0057,
  287.     0060,    0061,    0062,    0063,    0064,    0065,    0066,    0067,
  288.     0070,    0071,    0072,    0073,    0074,    0075,    0076,    0077,
  289.     0100,    0101,    0102,    0103,    0104,    0105,    0106,    0107,
  290.     0110,    0111,    0112,    0113,    0114,    0115,    0116,    0117,
  291.     0120,    0121,    0122,    0123,    0124,    0125,    0126,    0127,
  292.     0130,    0131,    0132,    0133,    0134,    0135,    0136,    0137,
  293.     0140,    0101,    0102,    0103,    0104,    0105,    0106,    0107,
  294.     0110,    0111,    0112,    0113,    0114,    0115,    0116,    0117,
  295.     0120,    0121,    0122,    0123,    0124,    0125,    0126,    0127,
  296.     0130,    0131,    0132,    0173,    0174,    0175,    0176,    0177,
  297.     0200,    0201,    0202,    0203,    0204,    0205,    0206,    0207,
  298.     0210,    0211,    0212,    0213,    0214,    0215,    0216,    0217,
  299.     0220,    0221,    0222,    0223,    0224,    0225,    0226,    0227,
  300.     0230,    0231,    0232,    0233,    0234,    0235,    0236,    0237,
  301.     0240,    0241,    0242,    0243,    0244,    0245,    0246,    0247,
  302.     0250,    0251,    0252,    0253,    0254,    0255,    0256,    0257,
  303.     0260,    0261,    0262,    0263,    0264,    0265,    0266,    0267,
  304.     0270,    0271,    0272,    0273,    0274,    0275,    0276,    0277,
  305.     0300,    0301,    0302,    0303,    0304,    0305,    0306,    0307,
  306.     0310,    0311,    0312,    0313,    0314,    0315,    0316,    0317,
  307.     0320,    0321,    0322,    0323,    0324,    0325,    0326,    0327,
  308.     0330,    0331,    0332,    0333,    0334,    0335,    0336,    0337,
  309.     0300,    0301,    0302,    0303,    0304,    0305,    0306,    0307,
  310.     0310,    0311,    0312,    0313,    0314,    0315,    0316,    0317,
  311.     0320,    0321,    0322,    0323,    0324,    0325,    0326,    0367,
  312.     0330,    0331,    0332,    0333,    0334,    0335,    0336,    0377,
  313. };
  314. #endif /* NLS */
  315.