It is not acceptable to index the array out of bounds if an illegal index
[dragonfly.git] / lib / libc / gen / toupper.c
1 /*      $NetBSD: src/lib/libc/gen/toupper_.c,v 1.9 2003/07/26 19:24:45 salo Exp $       */
2 /*      $DragonFly: src/lib/libc/gen/toupper.c,v 1.2 2005/07/07 07:17:47 dillon Exp $ */
3
4 /*
5  * Written by J.T. Conklin <jtc@NetBSD.org>.
6  * Public domain.
7  */
8
9 #include <ctype.h>
10 #include <stdint.h>
11 #include <stdio.h>
12
13 #if EOF != -1
14 #error "EOF != -1"
15 #endif
16
17 const int16_t __libc_C_toupper_[1 + 256] = {
18         EOF,
19         0x00,   0x01,   0x02,   0x03,   0x04,   0x05,   0x06,   0x07,
20         0x08,   0x09,   0x0a,   0x0b,   0x0c,   0x0d,   0x0e,   0x0f,
21         0x10,   0x11,   0x12,   0x13,   0x14,   0x15,   0x16,   0x17,
22         0x18,   0x19,   0x1a,   0x1b,   0x1c,   0x1d,   0x1e,   0x1f,
23         0x20,   0x21,   0x22,   0x23,   0x24,   0x25,   0x26,   0x27,
24         0x28,   0x29,   0x2a,   0x2b,   0x2c,   0x2d,   0x2e,   0x2f,
25         0x30,   0x31,   0x32,   0x33,   0x34,   0x35,   0x36,   0x37,
26         0x38,   0x39,   0x3a,   0x3b,   0x3c,   0x3d,   0x3e,   0x3f,
27         0x40,   0x41,   0x42,   0x43,   0x44,   0x45,   0x46,   0x47,
28         0x48,   0x49,   0x4a,   0x4b,   0x4c,   0x4d,   0x4e,   0x4f,
29         0x50,   0x51,   0x52,   0x53,   0x54,   0x55,   0x56,   0x57,
30         0x58,   0x59,   0x5a,   0x5b,   0x5c,   0x5d,   0x5e,   0x5f,
31         0x60,   'A',    'B',    'C',    'D',    'E',    'F',    'G',
32         'H',    'I',    'J',    'K',    'L',    'M',    'N',    'O',
33         'P',    'Q',    'R',    'S',    'T',    'U',    'V',    'W',
34         'X',    'Y',    'Z',    0x7b,   0x7c,   0x7d,   0x7e,   0x7f,
35         0x80,   0x81,   0x82,   0x83,   0x84,   0x85,   0x86,   0x87,
36         0x88,   0x89,   0x8a,   0x8b,   0x8c,   0x8d,   0x8e,   0x8f,
37         0x90,   0x91,   0x92,   0x93,   0x94,   0x95,   0x96,   0x97,
38         0x98,   0x99,   0x9a,   0x9b,   0x9c,   0x9d,   0x9e,   0x9f,
39         0xa0,   0xa1,   0xa2,   0xa3,   0xa4,   0xa5,   0xa6,   0xa7,
40         0xa8,   0xa9,   0xaa,   0xab,   0xac,   0xad,   0xae,   0xaf,
41         0xb0,   0xb1,   0xb2,   0xb3,   0xb4,   0xb5,   0xb6,   0xb7,
42         0xb8,   0xb9,   0xba,   0xbb,   0xbc,   0xbd,   0xbe,   0xbf,
43         0xc0,   0xc1,   0xc2,   0xc3,   0xc4,   0xc5,   0xc6,   0xc7,
44         0xc8,   0xc9,   0xca,   0xcb,   0xcc,   0xcd,   0xce,   0xcf,
45         0xd0,   0xd1,   0xd2,   0xd3,   0xd4,   0xd5,   0xd6,   0xd7,
46         0xd8,   0xd9,   0xda,   0xdb,   0xdc,   0xdd,   0xde,   0xdf,
47         0xe0,   0xe1,   0xe2,   0xe3,   0xe4,   0xe5,   0xe6,   0xe7,
48         0xe8,   0xe9,   0xea,   0xeb,   0xec,   0xed,   0xee,   0xef,
49         0xf0,   0xf1,   0xf2,   0xf3,   0xf4,   0xf5,   0xf6,   0xf7,
50         0xf8,   0xf9,   0xfa,   0xfb,   0xfc,   0xfd,   0xfe,   0xff
51 };
52
53 const int16_t *__libc_toupper_tab_ = __libc_C_toupper_;
54
55 #undef toupper
56 int
57 toupper(int c)
58 {
59         return(__libc_ctype_convert(__libc_toupper_tab_, c));
60 }