modernc.org/libc@v1.24.1/freebsd/table.c (about)

     1  // +build ingore
     2  
     3  /*-
     4   * SPDX-License-Identifier: BSD-3-Clause
     5   *
     6   * Copyright (c) 1993
     7   *	The Regents of the University of California.  All rights reserved.
     8   *
     9   * This code is derived from software contributed to Berkeley by
    10   * Paul Borman at Krystal Technologies.
    11   *
    12   * Copyright (c) 2011 The FreeBSD Foundation
    13   * All rights reserved.
    14   * Portions of this software were developed by David Chisnall
    15   * under sponsorship from the FreeBSD Foundation.
    16   *
    17   * Redistribution and use in source and binary forms, with or without
    18   * modification, are permitted provided that the following conditions
    19   * are met:
    20   * 1. Redistributions of source code must retain the above copyright
    21   *    notice, this list of conditions and the following disclaimer.
    22   * 2. Redistributions in binary form must reproduce the above copyright
    23   *    notice, this list of conditions and the following disclaimer in the
    24   *    documentation and/or other materials provided with the distribution.
    25   * 3. Neither the name of the University nor the names of its contributors
    26   *    may be used to endorse or promote products derived from this software
    27   *    without specific prior written permission.
    28   *
    29   * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
    30   * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    31   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    32   * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
    33   * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    34   * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    35   * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    36   * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
    37   * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
    38   * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    39   * SUCH DAMAGE.
    40   */
    41  
    42  #if defined(LIBC_SCCS) && !defined(lint)
    43  static char sccsid[] = "@(#)table.c	8.1 (Berkeley) 6/27/93";
    44  #endif /* LIBC_SCCS and not lint */
    45  #include <sys/cdefs.h>
    46  __FBSDID("$FreeBSD$");
    47  
    48  #include <ctype.h>
    49  #include <runetype.h>
    50  #include <wchar.h>
    51  #include "mblocal.h"
    52  
    53  const _RuneLocale _DefaultRuneLocale = {
    54      _RUNE_MAGIC_1,
    55      "NONE",
    56      NULL,
    57      NULL,
    58      0xFFFD,
    59  
    60      {	/*00*/	_CTYPE_C,
    61  		_CTYPE_C,
    62  		_CTYPE_C,
    63  		_CTYPE_C,
    64  		_CTYPE_C,
    65  		_CTYPE_C,
    66  		_CTYPE_C,
    67  		_CTYPE_C,
    68  	/*08*/	_CTYPE_C,
    69  		_CTYPE_C|_CTYPE_S|_CTYPE_B,
    70  		_CTYPE_C|_CTYPE_S,
    71  		_CTYPE_C|_CTYPE_S,
    72  		_CTYPE_C|_CTYPE_S,
    73  		_CTYPE_C|_CTYPE_S,
    74  		_CTYPE_C,
    75  		_CTYPE_C,
    76  	/*10*/	_CTYPE_C,
    77  		_CTYPE_C,
    78  		_CTYPE_C,
    79  		_CTYPE_C,
    80  		_CTYPE_C,
    81  		_CTYPE_C,
    82  		_CTYPE_C,
    83  		_CTYPE_C,
    84  	/*18*/	_CTYPE_C,
    85  		_CTYPE_C,
    86  		_CTYPE_C,
    87  		_CTYPE_C,
    88  		_CTYPE_C,
    89  		_CTYPE_C,
    90  		_CTYPE_C,
    91  		_CTYPE_C,
    92  	/*20*/	_CTYPE_S|_CTYPE_B|_CTYPE_R,
    93  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    94  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    95  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    96  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    97  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    98  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
    99  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   100  	/*28*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
   101  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   102  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   103  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   104  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   105  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   106  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   107  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   108  	/*30*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|0,
   109  		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|1,
   110  		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|2,
   111  		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|3,
   112  		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|4,
   113  		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|5,
   114  		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|6,
   115  		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|7,
   116  	/*38*/	_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|8,
   117  		_CTYPE_D|_CTYPE_R|_CTYPE_G|_CTYPE_X|_CTYPE_N|9,
   118  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   119  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   120  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   121  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   122  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   123  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   124  	/*40*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
   125  		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10,
   126  		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11,
   127  		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12,
   128  		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13,
   129  		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14,
   130  		_CTYPE_U|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15,
   131  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   132  	/*48*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   133  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   134  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   135  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   136  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   137  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   138  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   139  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   140  	/*50*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   141  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   142  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   143  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   144  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   145  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   146  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   147  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   148  	/*58*/	_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   149  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   150  		_CTYPE_U|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   151  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   152  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   153  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   154  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   155  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   156  	/*60*/	_CTYPE_P|_CTYPE_R|_CTYPE_G,
   157  		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|10,
   158  		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|11,
   159  		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|12,
   160  		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|13,
   161  		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|14,
   162  		_CTYPE_L|_CTYPE_X|_CTYPE_R|_CTYPE_G|_CTYPE_A|15,
   163  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   164  	/*68*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   165  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   166  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   167  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   168  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   169  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   170  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   171  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   172  	/*70*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   173  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   174  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   175  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   176  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   177  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   178  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   179  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   180  	/*78*/	_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   181  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   182  		_CTYPE_L|_CTYPE_R|_CTYPE_G|_CTYPE_A,
   183  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   184  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   185  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   186  		_CTYPE_P|_CTYPE_R|_CTYPE_G,
   187  		_CTYPE_C,
   188      },
   189      {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
   190       	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
   191  	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
   192       	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
   193  	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
   194       	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
   195  	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
   196       	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
   197  	0x40,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
   198       	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
   199  	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
   200       	'x',	'y',	'z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
   201  	0x60,	'a',	'b',	'c',	'd',	'e',	'f',	'g',
   202       	'h',	'i',	'j',	'k',	'l',	'm',	'n',	'o',
   203  	'p',	'q',	'r',	's',	't',	'u',	'v',	'w',
   204       	'x',	'y',	'z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
   205  	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
   206       	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
   207  	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
   208       	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
   209  	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
   210       	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
   211  	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
   212       	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
   213  	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
   214       	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
   215  	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
   216       	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
   217  	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
   218       	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
   219  	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
   220       	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
   221      },
   222      {	0x00,	0x01,	0x02,	0x03,	0x04,	0x05,	0x06,	0x07,
   223       	0x08,	0x09,	0x0a,	0x0b,	0x0c,	0x0d,	0x0e,	0x0f,
   224  	0x10,	0x11,	0x12,	0x13,	0x14,	0x15,	0x16,	0x17,
   225       	0x18,	0x19,	0x1a,	0x1b,	0x1c,	0x1d,	0x1e,	0x1f,
   226  	0x20,	0x21,	0x22,	0x23,	0x24,	0x25,	0x26,	0x27,
   227       	0x28,	0x29,	0x2a,	0x2b,	0x2c,	0x2d,	0x2e,	0x2f,
   228  	0x30,	0x31,	0x32,	0x33,	0x34,	0x35,	0x36,	0x37,
   229       	0x38,	0x39,	0x3a,	0x3b,	0x3c,	0x3d,	0x3e,	0x3f,
   230  	0x40,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
   231       	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
   232  	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
   233       	'X',	'Y',	'Z',	0x5b,	0x5c,	0x5d,	0x5e,	0x5f,
   234  	0x60,	'A',	'B',	'C',	'D',	'E',	'F',	'G',
   235       	'H',	'I',	'J',	'K',	'L',	'M',	'N',	'O',
   236  	'P',	'Q',	'R',	'S',	'T',	'U',	'V',	'W',
   237       	'X',	'Y',	'Z',	0x7b,	0x7c,	0x7d,	0x7e,	0x7f,
   238  	0x80,	0x81,	0x82,	0x83,	0x84,	0x85,	0x86,	0x87,
   239       	0x88,	0x89,	0x8a,	0x8b,	0x8c,	0x8d,	0x8e,	0x8f,
   240  	0x90,	0x91,	0x92,	0x93,	0x94,	0x95,	0x96,	0x97,
   241       	0x98,	0x99,	0x9a,	0x9b,	0x9c,	0x9d,	0x9e,	0x9f,
   242  	0xa0,	0xa1,	0xa2,	0xa3,	0xa4,	0xa5,	0xa6,	0xa7,
   243       	0xa8,	0xa9,	0xaa,	0xab,	0xac,	0xad,	0xae,	0xaf,
   244  	0xb0,	0xb1,	0xb2,	0xb3,	0xb4,	0xb5,	0xb6,	0xb7,
   245       	0xb8,	0xb9,	0xba,	0xbb,	0xbc,	0xbd,	0xbe,	0xbf,
   246  	0xc0,	0xc1,	0xc2,	0xc3,	0xc4,	0xc5,	0xc6,	0xc7,
   247       	0xc8,	0xc9,	0xca,	0xcb,	0xcc,	0xcd,	0xce,	0xcf,
   248  	0xd0,	0xd1,	0xd2,	0xd3,	0xd4,	0xd5,	0xd6,	0xd7,
   249       	0xd8,	0xd9,	0xda,	0xdb,	0xdc,	0xdd,	0xde,	0xdf,
   250  	0xe0,	0xe1,	0xe2,	0xe3,	0xe4,	0xe5,	0xe6,	0xe7,
   251       	0xe8,	0xe9,	0xea,	0xeb,	0xec,	0xed,	0xee,	0xef,
   252  	0xf0,	0xf1,	0xf2,	0xf3,	0xf4,	0xf5,	0xf6,	0xf7,
   253       	0xf8,	0xf9,	0xfa,	0xfb,	0xfc,	0xfd,	0xfe,	0xff,
   254      },
   255  };
   256  
   257  #undef _CurrentRuneLocale
   258  const _RuneLocale *_CurrentRuneLocale = &_DefaultRuneLocale;
   259  
   260  _RuneLocale *
   261  __runes_for_locale(locale_t locale, int *mb_sb_limit)
   262  {
   263  	FIX_LOCALE(locale);
   264  	struct xlocale_ctype *c = XLOCALE_CTYPE(locale);
   265  	*mb_sb_limit = c->__mb_sb_limit;
   266  	return c->runes;
   267  }