home *** CD-ROM | disk | FTP | other *** search
/ ProfitPress Mega CDROM2 …eeware (MSDOS)(1992)(Eng) / ProfitPress-MegaCDROM2.B6I / MISC / GNU / GPTX01AS.ZIP / CTYPE.C < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-25  |  30.2 KB  |  613 lines

  1. /* Character classification and correspondance.
  2.    Copyright (C) 1990 Free Software Foundation, Inc.
  3.    Francois Pinard <pinard@iro.umontreal.ca>, 1988.
  4.  
  5.    $Id$
  6. */
  7.  
  8.  
  9. /* These introduce 256 character set.  Usually, ISO 8859-1 Latin-1 code is
  10.    used as the underlying character set.  However, if MSDOS is defined,
  11.    IBM-PC's character set code is used instead.  */
  12.  
  13.  
  14. #include <stdio.h>
  15. #include "ctype.h"
  16.  
  17.  
  18. char _ctype_set[256] =    /* attributes for each character */
  19.  {
  20.    0                          | _C           , /* 00 nul */
  21.    0                          | _C           , /* 01 soh */
  22.    0                          | _C           , /* 02 stx */
  23.    0                          | _C           , /* 03 etx */
  24.    0                          | _C           , /* 04 eot */
  25.    0                          | _C           , /* 05 enq */
  26.    0                          | _C           , /* 06 ack */
  27.    0                          | _C           , /* 07 bel */
  28.    0                          | _C           , /* 08 bs  */
  29.    0                | _S      | _C           , /* 09 ht  */
  30.    0                | _S      | _C           , /* 0a nl  */
  31.    0                | _S      | _C           , /* 0b vt  */
  32.    0                | _S      | _C           , /* 0c np  */
  33.    0                | _S      | _C           , /* 0d cr  */
  34.    0                          | _C           , /* 0e so  */
  35.    0                          | _C           , /* 0f si  */
  36.    0                          | _C           , /* 10 dle */
  37.    0                          | _C           , /* 11 dc1 */
  38.    0                          | _C           , /* 12 dc2 */
  39.    0                          | _C           , /* 13 dc3 */
  40.    0                          | _C           , /* 14 dc4 */
  41.    0                          | _C           , /* 15 nak */
  42.    0                          | _C           , /* 16 syn */
  43.    0                          | _C           , /* 17 etb */
  44.    0                          | _C           , /* 18 can */
  45.    0                          | _C           , /* 19 em  */
  46.    0                          | _C           , /* 1a sub */
  47.    0                          | _C           , /* 1b esc */
  48.    0                          | _C           , /* 1c fs  */
  49.    0                          | _C           , /* 1d gs  */
  50.    0                          | _C           , /* 1e gs  */
  51.    0                          | _C           , /* 1f rs  */
  52.    0                | _S           | _B      , /* 20 spc */
  53.    0                     | _P                , /* 21  !  */
  54.    0                     | _P                , /* 22  "  */
  55.    0                     | _P                , /* 23  #  */
  56.    0                     | _P                , /* 24  $  */
  57.    0                     | _P                , /* 25  %  */
  58.    0                     | _P                , /* 26  &  */
  59.    0                     | _P                , /* 27  '  */
  60.    0                     | _P                , /* 28  (  */
  61.    0                     | _P                , /* 29  )  */
  62.    0                     | _P                , /* 2a  *  */
  63.    0                     | _P                , /* 2b  +  */
  64.    0                     | _P                , /* 2c  ,  */
  65.    0                     | _P                , /* 2d  -  */
  66.    0                     | _P                , /* 2e  .  */
  67.    0                     | _P                , /* 2f  /  */
  68.    0           | _N                     | _X , /* 30  0  */
  69.    0           | _N                     | _X , /* 31  1  */
  70.    0           | _N                     | _X , /* 32  2  */
  71.    0           | _N                     | _X , /* 33  3  */
  72.    0           | _N                     | _X , /* 34  4  */
  73.    0           | _N                     | _X , /* 35  5  */
  74.    0           | _N                     | _X , /* 36  6  */
  75.    0           | _N                     | _X , /* 37  7  */
  76.    0           | _N                     | _X , /* 38  8  */
  77.    0           | _N                     | _X , /* 39  9  */
  78.    0                     | _P                , /* 3a  :  */
  79.    0                     | _P                , /* 3b  ;  */
  80.    0                     | _P                , /* 3c  <  */
  81.    0                     | _P                , /* 3d  =  */
  82.    0                     | _P                , /* 3e  >  */
  83.    0                     | _P                , /* 3f  ?  */
  84.    0                     | _P                , /* 40  @  */
  85.    0 | _U                               | _X , /* 41  A  */
  86.    0 | _U                               | _X , /* 42  B  */
  87.    0 | _U                               | _X , /* 43  C  */
  88.    0 | _U                               | _X , /* 44  D  */
  89.    0 | _U                               | _X , /* 45  E  */
  90.    0 | _U                               | _X , /* 46  F  */
  91.    0 | _U                                    , /* 47  G  */
  92.    0 | _U                                    , /* 48  H  */
  93.    0 | _U                                    , /* 49  I  */
  94.    0 | _U                                    , /* 4a  J  */
  95.    0 | _U                                    , /* 4b  K  */
  96.    0 | _U                                    , /* 4c  L  */
  97.    0 | _U                                    , /* 4d  M  */
  98.    0 | _U                                    , /* 4e  N  */
  99.    0 | _U                                    , /* 4f  O  */
  100.    0 | _U                                    , /* 50  P  */
  101.    0 | _U                                    , /* 51  Q  */
  102.    0 | _U                                    , /* 52  R  */
  103.    0 | _U                                    , /* 53  S  */
  104.    0 | _U                                    , /* 54  T  */
  105.    0 | _U                                    , /* 55  U  */
  106.    0 | _U                                    , /* 56  V  */
  107.    0 | _U                                    , /* 57  W  */
  108.    0 | _U                                    , /* 58  X  */
  109.    0 | _U                                    , /* 59  Y  */
  110.    0 | _U                                    , /* 5a  Z  */
  111.    0                     | _P                , /* 5b  [  */
  112.    0                     | _P                , /* 5c  \  */
  113.    0                     | _P                , /* 5d  ]  */
  114.    0                     | _P                , /* 5e  ^  */
  115.    0                     | _P                , /* 5f  _  */
  116.    0                     | _P                , /* 60  `  */
  117.    0      | _L                          | _X , /* 61  a  */
  118.    0      | _L                          | _X , /* 62  b  */
  119.    0      | _L                          | _X , /* 63  c  */
  120.    0      | _L                          | _X , /* 64  d  */
  121.    0      | _L                          | _X , /* 65  e  */
  122.    0      | _L                          | _X , /* 66  f  */
  123.    0      | _L                               , /* 67  g  */
  124.    0      | _L                               , /* 68  h  */
  125.    0      | _L                               , /* 69  i  */
  126.    0      | _L                               , /* 6a  j  */
  127.    0      | _L                               , /* 6b  k  */
  128.    0      | _L                               , /* 6c  l  */
  129.    0      | _L                               , /* 6d  m  */
  130.    0      | _L                               , /* 6e  n  */
  131.    0      | _L                               , /* 6f  o  */
  132.    0      | _L                               , /* 70  p  */
  133.    0      | _L                               , /* 71  q  */
  134.    0      | _L                               , /* 72  r  */
  135.    0      | _L                               , /* 73  s  */
  136.    0      | _L                               , /* 74  t  */
  137.    0      | _L                               , /* 75  u  */
  138.    0      | _L                               , /* 76  v  */
  139.    0      | _L                               , /* 77  w  */
  140.    0      | _L                               , /* 78  x  */
  141.    0      | _L                               , /* 79  y  */
  142.    0      | _L                               , /* 7a  z  */
  143.    0                     | _P                , /* 7b  {  */
  144.    0                     | _P                , /* 7c  |  */
  145.    0                     | _P                , /* 7d  }  */
  146.    0                     | _P                , /* 7e  ~  */
  147.    0                          | _C           , /* 7f     */
  148.  
  149. #ifdef MSDOS
  150.  
  151.    0 | _U                                    , /* 80  C, */
  152.    0      | _L                               , /* 81  u" */
  153.    0      | _L                               , /* 82  e' */
  154.    0      | _L                               , /* 83  a^ */
  155.    0      | _L                               , /* 84  a" */
  156.    0      | _L                               , /* 85  a` */
  157.    0      | _L                               , /* 86  a+ */
  158.    0      | _L                               , /* 87  c, */
  159.    0      | _L                               , /* 88  e^ */
  160.    0      | _L                               , /* 89  e" */
  161.    0      | _L                               , /* 8a  e` */
  162.    0      | _L                               , /* 8b  i" */
  163.    0      | _L                               , /* 8c  i^ */
  164.    0      | _L                               , /* 8d  i` */
  165.    0 | _U                                    , /* 8e  A" */
  166.    0 | _U                                    , /* 8f  A+ */
  167.    0 | _U                                    , /* 90  E' */
  168.    0      | _L                               , /* 91  ae */
  169.    0 | _U                                    , /* 92  AE */
  170.    0      | _L                               , /* 93  o^ */
  171.    0      | _L                               , /* 94  o" */
  172.    0      | _L                               , /* 95  o` */
  173.    0      | _L                               , /* 96  u^ */
  174.    0      | _L                               , /* 97  u` */
  175.    0      | _L                               , /* 98  y" */
  176.    0 | _U                                    , /* 99  O" */
  177.    0 | _U                                    , /* 9a  U" */
  178.    0                     | _P                , /* 9b  c| */
  179.    0                     | _P                , /* 9c  ## */
  180.    0                     | _P                , /* 9d  y- */
  181.    0                     | _P                , /* 9e     */
  182.    0                     | _P                , /* 9f     */
  183.    0      | _L                               , /* a0  a' */
  184.    0      | _L                               , /* a1  i' */
  185.    0      | _L                               , /* a2  o' */
  186.    0      | _L                               , /* a3  u' */
  187.    0      | _L                               , /* a4  n~ */
  188.    0 | _U                                    , /* a5  N~ */
  189.    0      | _L                               , /* a6  a- */
  190.    0      | _L                               , /* a7  o- */
  191.    0                     | _P                , /* a8  ?? */
  192.    0                     | _P                , /* a9     */
  193.    0                     | _P                , /* aa  -. */
  194.    0                     | _P                , /* ab  12 */
  195.    0                     | _P                , /* ac  14 */
  196.    0                     | _P                , /* ad  !! */
  197.    0                     | _P                , /* ae  << */
  198.    0                     | _P                , /* af  >> */
  199.    0                     | _P                , /* b0   # */
  200.    0                     | _P                , /* b1   # */
  201.    0                     | _P                , /* b2   # */
  202.    0                     | _P                , /* b3   | */
  203.    0                     | _P                , /* b4   + */
  204.    0                     | _P                , /* b5   | */
  205.    0                     | _P                , /* b6   + */
  206.    0                     | _P                , /* b7   + */
  207.    0                     | _P                , /* b8   = */
  208.    0                     | _P                , /* b9   = */
  209.    0                     | _P                , /* ba   | */
  210.    0                     | _P                , /* bb   = */
  211.    0                     | _P                , /* bc   = */
  212.    0                     | _P                , /* bd   + */
  213.    0                     | _P                , /* be   = */
  214.    0                     | _P                , /* bf   + */
  215.    0                     | _P                , /* c0   + */
  216.    0                     | _P                , /* c1   + */
  217.    0                     | _P                , /* c2   + */
  218.    0                     | _P                , /* c3   + */
  219.    0                     | _P                , /* c4   - */
  220.    0                     | _P                , /* c5   + */
  221.    0                     | _P                , /* c6   | */
  222.    0                     | _P                , /* c7   + */
  223.    0                     | _P                , /* c8   = */
  224.    0                     | _P                , /* c9   = */
  225.    0                     | _P                , /* ca   = */
  226.    0                     | _P                , /* cb   = */
  227.    0                     | _P                , /* cc   = */
  228.    0                     | _P                , /* cd   = */
  229.    0                     | _P                , /* ce   = */
  230.    0                     | _P                , /* cf   = */
  231.    0                     | _P                , /* d0   + */
  232.    0                     | _P                , /* d1   = */
  233.    0                     | _P                , /* d2   + */
  234.    0                     | _P                , /* d3   + */
  235.    0                     | _P                , /* d4   = */
  236.    0                     | _P                , /* d5   = */
  237.    0                     | _P                , /* d6   + */
  238.    0                     | _P                , /* d7   + */
  239.    0                     | _P                , /* d8   = */
  240.    0                     | _P                , /* d9   + */
  241.    0                     | _P                , /* da   + */
  242.    0                     | _P                , /* db   # */
  243.    0                     | _P                , /* dc   # */
  244.    0                     | _P                , /* dd   # */
  245.    0                     | _P                , /* de   # */
  246.    0                     | _P                , /* df   # */
  247.    0                     | _P                , /* e0   a */
  248.    0                     | _P                , /* e1  ss */
  249.    0                     | _P                , /* e2   G */
  250.    0                     | _P                , /* e3   p */
  251.    0                     | _P                , /* e4   S */
  252.    0                     | _P                , /* e5   s */
  253.    0                     | _P                , /* e6  uu */
  254.    0                     | _P                , /* e7   t */
  255.    0                     | _P                , /* e8   F */
  256.    0                     | _P                , /* e9   h */
  257.    0                     | _P                , /* ea   O */
  258.    0                     | _P                , /* eb   d */
  259.    0                     | _P                , /* ec     */
  260.    0                     | _P                , /* ed   f */
  261.    0                     | _P                , /* ee     */
  262.    0                     | _P                , /* ef     */
  263.    0                     | _P                , /* f0     */
  264.    0                     | _P                , /* f1  +- */
  265.    0                     | _P                , /* f2  >= */
  266.    0                     | _P                , /* f3  <= */
  267.    0                     | _P                , /* f4     */
  268.    0                     | _P                , /* f5     */
  269.    0                     | _P                , /* f6  // */
  270.    0                     | _P                , /* f7  ~~ */
  271.    0                     | _P                , /* f8  ++ */
  272.    0                     | _P                , /* f9     */
  273.    0                     | _P                , /* fa     */
  274.    0                     | _P                , /* fb     */
  275.    0                     | _P                , /* fc  nn */
  276.    0                     | _P                , /* fd  22 */
  277.    0                     | _P                , /* fe     */
  278.    0                          | _C           , /* ff     */
  279.  
  280. #else /* MSDOS */
  281.  
  282.    0                          | _C           , /* 80     */
  283.    0                          | _C           , /* 81     */
  284.    0                          | _C           , /* 82     */
  285.    0                          | _C           , /* 83     */
  286.    0                          | _C           , /* 84     */
  287.    0                          | _C           , /* 85     */
  288.    0                          | _C           , /* 86     */
  289.    0                          | _C           , /* 87     */
  290.    0                          | _C           , /* 88     */
  291.    0                          | _C           , /* 89     */
  292.    0                          | _C           , /* 8a     */
  293.    0                          | _C           , /* 8b     */
  294.    0                          | _C           , /* 8c     */
  295.    0                          | _C           , /* 8d     */
  296.    0                          | _C           , /* 8e     */
  297.    0                          | _C           , /* 8f     */
  298.    0                          | _C           , /* 90     */
  299.    0                          | _C           , /* 91     */
  300.    0                          | _C           , /* 92     */
  301.    0                          | _C           , /* 93     */
  302.    0                          | _C           , /* 94     */
  303.    0                          | _C           , /* 95     */
  304.    0                          | _C           , /* 96     */
  305.    0                          | _C           , /* 97     */
  306.    0                          | _C           , /* 98     */
  307.    0                          | _C           , /* 99     */
  308.    0                          | _C           , /* 9a     */
  309.    0                          | _C           , /* 9b     */
  310.    0                          | _C           , /* 9c     */
  311.    0                          | _C           , /* 9d     */
  312.    0                          | _C           , /* 9e     */
  313.    0                          | _C           , /* 9f     */
  314.    0                     | _P                , /* a0 nsp */
  315.    0                     | _P                , /* a1  !! */
  316.    0                     | _P                , /* a2  c| */
  317.    0                     | _P                , /* a3  ## */
  318.    0                     | _P                , /* a4  cu */
  319.    0                     | _P                , /* a5  y- */
  320.    0                     | _P                , /* a6  || */
  321.    0                     | _P                , /* a7  $$ */
  322.    0                     | _P                , /* a8  "" */
  323.    0                     | _P                , /* a9  cO */
  324.    0                     | _P                , /* aa  a- */
  325.    0                     | _P                , /* ab  << */
  326.    0                     | _P                , /* ac  -. */
  327.    0                     | _P                , /* ad  -- */
  328.    0                     | _P                , /* ae  tO */
  329.    0                     | _P                , /* af mac */
  330.    0                     | _P                , /* b0  ++ */
  331.    0                     | _P                , /* b1  +- */
  332.    0                     | _P                , /* b2  22 */
  333.    0                     | _P                , /* b3  33 */
  334.    0                     | _P                , /* b4  '' */
  335.    0                     | _P                , /* b5  uu */
  336.    0                     | _P                , /* b6 pil */
  337.    0                     | _P                , /* b7  .. */
  338.    0                     | _P                , /* b8  ,, */
  339.    0                     | _P                , /* b9  11 */
  340.    0                     | _P                , /* ba  o- */
  341.    0                     | _P                , /* bb  >> */
  342.    0                     | _P                , /* bc  14 */
  343.    0                     | _P                , /* bd  12 */
  344.    0                     | _P                , /* be  34 */
  345.    0                     | _P                , /* bf  ?? */
  346.    0 | _U                                    , /* c0  A` */
  347.    0 | _U                                    , /* c1  A' */
  348.    0 | _U                                    , /* c2  A^ */
  349.    0 | _U                                    , /* c3  A~ */
  350.    0 | _U                                    , /* c4  A" */
  351.    0 | _U                                    , /* c5  A+ */
  352.    0 | _U                                    , /* c6  AE */
  353.    0 | _U                                    , /* c7  C, */
  354.    0 | _U                                    , /* c8  E` */
  355.    0 | _U                                    , /* c9  E' */
  356.    0 | _U                                    , /* ca  E^ */
  357.    0 | _U                                    , /* cb  E" */
  358.    0 | _U                                    , /* cc  I` */
  359.    0 | _U                                    , /* cd  I' */
  360.    0 | _U                                    , /* ce  I^ */
  361.    0 | _U                                    , /* cf  I" */
  362.    0 | _U                                    , /* d0  DD */
  363.    0 | _U                                    , /* d1  N~ */
  364.    0 | _U                                    , /* d2  O` */
  365.    0 | _U                                    , /* d3  O' */
  366.    0 | _U                                    , /* d4  O^ */
  367.    0 | _U                                    , /* d5  O~ */
  368.    0 | _U                                    , /* d6  O" */
  369.    0                     | _P                , /* d7  xx */
  370.    0 | _U                                    , /* d8  O/ */
  371.    0 | _U                                    , /* d9  U` */
  372.    0 | _U                                    , /* da  U' */
  373.    0 | _U                                    , /* db  U^ */
  374.    0 | _U                                    , /* dc  U" */
  375.    0 | _U                                    , /* dd  Y' */
  376.    0 | _U                                    , /* de  PP */
  377.    0      | _L                               , /* df  ss */
  378.    0      | _L                               , /* e0  a` */
  379.    0      | _L                               , /* e1  a' */
  380.    0      | _L                               , /* e2  a^ */
  381.    0      | _L                               , /* e3  a~ */
  382.    0      | _L                               , /* e4  a" */
  383.    0      | _L                               , /* e5  a+ */
  384.    0      | _L                               , /* e6  ae */
  385.    0      | _L                               , /* e7  c, */
  386.    0      | _L                               , /* e8  e` */
  387.    0      | _L                               , /* e9  e' */
  388.    0      | _L                               , /* ea  e^ */
  389.    0      | _L                               , /* eb  e" */
  390.    0      | _L                               , /* ec  i` */
  391.    0      | _L                               , /* ed  i' */
  392.    0      | _L                               , /* ee  i^ */
  393.    0      | _L                               , /* ef  i" */
  394.    0      | _L                               , /* f0  dd */
  395.    0      | _L                               , /* f1  n~ */
  396.    0      | _L                               , /* f2  o` */
  397.    0      | _L                               , /* f3  o' */
  398.    0      | _L                               , /* f4  o^ */
  399.    0      | _L                               , /* f5  o~ */
  400.    0      | _L                               , /* f6  o" */
  401.    0                     | _P                , /* f7  // */
  402.    0      | _L                               , /* f8  o/ */
  403.    0      | _L                               , /* f9  u` */
  404.    0      | _L                               , /* fa  u' */
  405.    0      | _L                               , /* fb  u^ */
  406.    0      | _L                               , /* fc  u" */
  407.    0      | _L                               , /* fd  y' */
  408.    0      | _L                               , /* fe  pp */
  409.    0      | _L                               , /* ff  y" */
  410.  
  411. #endif /* MSDOS */
  412.  };
  413.  
  414.  
  415. #ifdef MSDOS
  416.  
  417. char _ctype_lower[256] =    /* lower case equivalents */
  418.   {
  419.     '\000',    '\001',    '\002',    '\003',    '\004',    '\005',    '\006',    '\007',
  420.     '\010',    '\011',    '\012',    '\013',    '\014',    '\015',    '\016',    '\017',
  421.     '\020',    '\021',    '\022',    '\023',    '\024',    '\025',    '\026',    '\027',
  422.     '\030',    '\031',    '\032',    '\033',    '\034',    '\035',    '\036',    '\037',
  423.     ' ',    '!',    '"',    '#',    '$',    '%',    '&',    '\'',
  424.     '(',    ')',    '*',    '+',    ',',    '-',    '.',    '/',
  425.     '0',    '1',    '2',    '3',    '4',    '5',    '6',    '7',
  426.     '8',    '9',    ':',    ';',    '<',    '=',    '>',    '?',
  427.     '@',    'a',    'b',    'c',    'd',    'e',    'f',    'g',
  428.     'h',    'i',    'j',    'k',    'l',    'm',    'n',    'o',
  429.     'p',    'q',    'r',    's',    't',    'u',    'v',    'w',
  430.     'x',    'y',    'z',    '[',    '\\',    ']',    '^',    '_',
  431.     '`',    'a',    'b',    'c',    'd',    'e',    'f',    'g',
  432.     'h',    'i',    'j',    'k',    'l',    'm',    'n',    'o',
  433.     'p',    'q',    'r',    's',    't',    'u',    'v',    'w',
  434.     'x',    'y',    'z',    '{',    '|',    '}',    '~',    '\177',
  435.     '\227',    '\201',    '\202',    '\203',    '\204',    '\205',    '\206',    '\207',
  436.     '\210',    '\211',    '\212',    '\213',    '\214',    '\215',    '\204',    '\206',
  437.     '\202',    '\221',    '\221',    '\223',    '\224',    '\225',    '\226',    '\227',
  438.     '\230',    '\224',    '\201',    '\233',    '\234',    '\235',    '\236',    '\237',
  439.     '\240',    '\241',    '\242',    '\243',    '\244',    '\244',    '\246',    '\247',
  440.     '\250',    '\251',    '\252',    '\253',    '\254',    '\255',    '\256',    '\257',
  441.     '\260',    '\261',    '\262',    '\263',    '\264',    '\265',    '\266',    '\267',
  442.     '\270',    '\271',    '\272',    '\273',    '\274',    '\275',    '\276',    '\277',
  443.     '\300',    '\301',    '\302',    '\303',    '\304',    '\305',    '\306',    '\307',
  444.     '\310',    '\311',    '\312',    '\313',    '\314',    '\315',    '\316',    '\317',
  445.     '\320',    '\321',    '\322',    '\323',    '\324',    '\325',    '\326',    '\327',
  446.     '\330',    '\331',    '\332',    '\333',    '\334',    '\335',    '\336',    '\337',
  447.     '\340',    '\341',    '\342',    '\343',    '\344',    '\345',    '\346',    '\347',
  448.     '\350',    '\351',    '\352',    '\353',    '\354',    '\355',    '\356',    '\357',
  449.     '\360',    '\361',    '\362',    '\363',    '\364',    '\365',    '\366',    '\367',
  450.     '\370',    '\371',    '\372',    '\373',    '\374',    '\375',    '\376',    '\377',
  451.   };
  452.  
  453. char _ctype_upper[256] =    /* upper case equivalents */
  454.   {
  455.     '\000',    '\001',    '\002',    '\003',    '\004',    '\005',    '\006',    '\007',
  456.     '\010',    '\011',    '\012',    '\013',    '\014',    '\015',    '\016',    '\017',
  457.     '\020',    '\021',    '\022',    '\023',    '\024',    '\025',    '\026',    '\027',
  458.     '\030',    '\031',    '\032',    '\033',    '\034',    '\035',    '\036',    '\037',
  459.     ' ',    '!',    '"',    '#',    '$',    '%',    '&',    '\'',
  460.     '(',    ')',    '*',    '+',    ',',    '-',    '.',    '/',
  461.     '0',    '1',    '2',    '3',    '4',    '5',    '6',    '7',
  462.     '8',    '9',    ':',    ';',    '<',    '=',    '>',    '?',
  463.     '@',    'A',    'B',    'C',    'D',    'E',    'F',    'G',
  464.     'H',    'I',    'J',    'K',    'L',    'M',    'N',    'O',
  465.     'P',    'Q',    'R',    'S',    'T',    'U',    'V',    'W',
  466.     'X',    'Y',    'Z',    '[',    '\\',    ']',    '^',    '_',
  467.     '`',    'A',    'B',    'C',    'D',    'E',    'F',    'G',
  468.     'H',    'I',    'J',    'K',    'L',    'M',    'N',    'O',
  469.     'P',    'Q',    'R',    'S',    'T',    'U',    'V',    'W',
  470.     'X',    'Y',    'Z',    '{',    '|',    '}',    '~',    '\177',
  471.     '\200',    '\232',    '\220',    '\203',    '\216',    '\205',    '\217',    '\207',
  472.     '\210',    '\211',    '\212',    '\213',    '\214',    '\215',    '\216',    '\217',
  473.     '\220',    '\222',    '\222',    '\223',    '\231',    '\225',    '\226',    '\200',
  474.     '\230',    '\231',    '\232',    '\233',    '\234',    '\235',    '\236',    '\237',
  475.     '\240',    '\241',    '\242',    '\243',    '\245',    '\245',    '\246',    '\247',
  476.     '\250',    '\251',    '\252',    '\253',    '\254',    '\255',    '\256',    '\257',
  477.     '\260',    '\261',    '\262',    '\263',    '\264',    '\265',    '\266',    '\267',
  478.     '\270',    '\271',    '\272',    '\273',    '\274',    '\275',    '\276',    '\277',
  479.     '\300',    '\301',    '\302',    '\303',    '\304',    '\305',    '\306',    '\307',
  480.     '\310',    '\311',    '\312',    '\313',    '\314',    '\315',    '\316',    '\317',
  481.     '\320',    '\321',    '\322',    '\323',    '\324',    '\325',    '\326',    '\327',
  482.     '\330',    '\331',    '\332',    '\333',    '\334',    '\335',    '\336',    '\337',
  483.     '\340',    '\341',    '\342',    '\343',    '\344',    '\345',    '\346',    '\347',
  484.     '\350',    '\351',    '\352',    '\353',    '\354',    '\355',    '\356',    '\357',
  485.     '\360',    '\361',    '\362',    '\363',    '\364',    '\365',    '\366',    '\367',
  486.     '\370',    '\371',    '\372',    '\373',    '\374',    '\375',    '\376',    '\377',
  487.   };
  488.  
  489. #endif /* MSDOS */
  490.  
  491.  
  492. char _ctype_base[256] =        /* characters without diacritics */
  493.   {
  494.     0,    0,    0,    0,    0,    0,    0,    0,
  495.     0,    0,    0,    0,    0,    0,    0,    0,
  496.     0,    0,    0,    0,    0,    0,    0,    0,
  497.     0,    0,    0,    0,    0,    0,    0,    0,
  498.     0,    0,    0,    0,    0,    0,    0,    0,
  499.     0,    0,    0,    0,    0,    0,    0,    0,
  500.     0,    0,    0,    0,    0,    0,    0,    0,
  501.     0,    0,    0,    0,    0,    0,    0,    0,
  502.     0,    'A',    'B',    'C',    'D',    'E',    'F',    'G',
  503.     'H',    'I',    'J',    'K',    'L',    'M',    'N',    'O',
  504.     'P',    'Q',    'R',    'S',    'T',    'U',    'V',    'W',
  505.     'X',    'Y',    'Z',    0,    0,    0,    0,    0,
  506.     0,    'a',    'b',    'c',    'd',    'e',    'f',    'g',
  507.     'h',    'i',    'j',    'k',    'l',    'm',    'n',    'o',
  508.     'p',    'q',    'r',    's',    't',    'u',    'v',    'w',
  509.     'x',    'y',    'z',    0,    0,    0,    0,    0,
  510.  
  511. #ifdef MSDOS
  512.  
  513.     'C',    'u',    'e',    'a',    'a',    'a',    'a',    'c',
  514.     'e',    'e',    'e',    'i',    'i',    'i',    'A',    'A',
  515.     'E',    'e',    'E',    'o',    'o',    'o',    'u',    'u',
  516.     'y',    'O',    'U',    0,    0,    0,    0,    0,
  517.     'a',    'i',    'o',    'u',    'n',    'N',    0,    0,
  518.     0,    0,    0,    0,    0,    0,    0,    0,
  519.     0,    0,    0,    0,    0,    0,    0,    0,
  520.     0,    0,    0,    0,    0,    0,    0,    0,
  521.     0,    0,    0,    0,    0,    0,    0,    0,
  522.     0,    0,    0,    0,    0,    0,    0,    0,
  523.     0,    0,    0,    0,    0,    0,    0,    0,
  524.     0,    0,    0,    0,    0,    0,    0,    0,
  525.     0,    0,    0,    0,    0,    0,    0,    0,
  526.     0,    0,    0,    0,    0,    0,    0,    0,
  527.     0,    0,    0,    0,    0,    0,    0,    0,
  528.     0,    0,    0,    0,    0,    0,    0,    0,
  529.  
  530. #else /* MSDOS */
  531.  
  532.     0,    0,    0,    0,    0,    0,    0,    0,
  533.     0,    0,    0,    0,    0,    0,    0,    0,
  534.     0,    0,    0,    0,    0,    0,    0,    0,
  535.     0,    0,    0,    0,    0,    0,    0,    0,
  536.     0,    0,    0,    0,    0,    0,    0,    0,
  537.     0,    0,    0,    0,    0,    0,    0,    0,
  538.     0,    0,    0,    0,    0,    0,    0,    0,
  539.     0,    0,    0,    0,    0,    0,    0,    0,
  540.     'A',    'A',    'A',    'A',    'A',    'A',    'A',    'C',
  541.     'E',    'E',    'E',    'E',    'I',    'I',    'I',    'I',
  542.     0,    'N',    'O',    'O',    'O',    'O',    'O',    0,
  543.     'O',    'U',    'U',    'U',    'U',    'Y',    0,    0,
  544.     'a',    'a',    'a',    'a',    'a',    'a',    'a',    'c',
  545.     'e',    'e',    'e',    'e',    'i',    'i',    'i',    'i',
  546.     0,    'n',    'o',    'o',    'o',    'o',    'o',    0,
  547.     'o',    'u',    'u',    'u',    'u',    'y',    0,    'y',
  548.  
  549. #endif /* MSDOS */
  550.   };
  551.  
  552. char _ctype_diac[256] =        /* diacritic code for each character */
  553.   {
  554.     /*  Codes:   1 eE  2 '  3 `  4 ^  5 "  6 ~  7 ,  8 o  9 |   */
  555.  
  556.     0,    0,    0,    0,    0,    0,    0,    0,
  557.     0,    0,    0,    0,    0,    0,    0,    0,
  558.     0,    0,    0,    0,    0,    0,    0,    0,
  559.     0,    0,    0,    0,    0,    0,    0,    0,
  560.     0,    0,    0,    0,    0,    0,    0,    0,
  561.     0,    0,    0,    0,    0,    0,    0,    0,
  562.     0,    0,    0,    0,    0,    0,    0,    0,
  563.     0,    0,    0,    0,    0,    0,    0,    0,
  564.     0,    0,    0,    0,    0,    0,    0,    0,
  565.     0,    0,    0,    0,    0,    0,    0,    0,
  566.     0,    0,    0,    0,    0,    0,    0,    0,
  567.     0,    0,    0,    0,    0,    0,    4,    0,
  568.     3,    0,    0,    0,    0,    0,    0,    0,
  569.     0,    0,    0,    0,    0,    0,    0,    0,
  570.     0,    0,    0,    0,    0,    0,    0,    0,
  571.     0,    0,    0,    0,    0,    0,    6,    0,
  572.  
  573. #ifdef MSDOS
  574.  
  575.     7,    5,    2,    4,    5,    3,    8,    7,
  576.     4,    5,    3,    5,    4,    3,    5,    8,
  577.     2,    1,    1,    4,    5,    3,    4,    3,
  578.     5,    5,    5,    0,    0,    0,    0,    0,
  579.     2,    2,    2,    2,    6,    6,    0,    0,
  580.     0,    0,    0,    0,    0,    0,    0,    0,
  581.     0,    0,    0,    0,    0,    0,    0,    0,
  582.     0,    0,    0,    0,    0,    0,    0,    0,
  583.     0,    0,    0,    0,    0,    0,    0,    0,
  584.     0,    0,    0,    0,    0,    0,    0,    0,
  585.     0,    0,    0,    0,    0,    0,    0,    0,
  586.     0,    0,    0,    0,    0,    0,    0,    0,
  587.     0,    0,    0,    0,    0,    0,    0,    0,
  588.     0,    0,    0,    0,    0,    0,    0,    0,
  589.     0,    0,    0,    0,    0,    0,    0,    0,
  590.     0,    0,    0,    0,    0,    0,    0,    0,
  591.  
  592. #else /* MSDOS */
  593.  
  594.     0,    0,    0,    0,    0,    0,    0,    0,
  595.     0,    0,    0,    0,    0,    0,    0,    0,
  596.     0,    0,    0,    0,    0,    0,    0,    0,
  597.     0,    0,    0,    0,    0,    0,    0,    0,
  598.     0,    0,    0,    0,    0,    0,    0,    0,
  599.     0,    0,    0,    0,    0,    0,    0,    0,
  600.     0,    0,    0,    0,    0,    0,    0,    0,
  601.     0,    0,    0,    0,    0,    0,    0,    0,
  602.     3,    2,    4,    6,    5,    8,    1,    7,
  603.     3,    2,    4,    5,    3,    2,    4,    5,
  604.     0,    6,    3,    2,    4,    6,    5,    0,
  605.     9,    3,    2,    4,    5,    2,    0,    0,
  606.     3,    2,    4,    6,    5,    8,    1,    7,
  607.     3,    2,    4,    5,    3,    2,    4,    5,
  608.     0,    6,    3,    2,    4,    6,    5,    0,
  609.     9,    3,    2,    4,    5,    2,    0,    0,
  610.  
  611. #endif /* MSDOS */
  612.   };
  613.