toupper_.c revision 1.17
11.17Sriastrad/* $NetBSD: toupper_.c,v 1.17 2025/03/30 00:07:51 riastradh Exp $ */ 21.6Scgd 31.1Sjtc/* 41.9Ssalo * Written by J.T. Conklin <jtc@NetBSD.org>. 51.7Sjtc * Public domain. 61.1Sjtc */ 71.1Sjtc 81.8Schristos#include <sys/cdefs.h> 91.1Sjtc#if defined(LIBC_RCS) && !defined(lint) 101.17Sriastrad__RCSID("$NetBSD: toupper_.c,v 1.17 2025/03/30 00:07:51 riastradh Exp $"); 111.1Sjtc#endif /* LIBC_RCS and not lint */ 121.1Sjtc 131.13Stnozaki#include <sys/ctype_bits.h> 141.15Sriastrad#include <sys/mman.h> 151.15Sriastrad 161.1Sjtc#include <stdio.h> 171.15Sriastrad 181.15Sriastrad#include "ctype_guard.h" 191.12Stnozaki#include "ctype_local.h" 201.1Sjtc 211.1Sjtc#if EOF != -1 221.1Sjtc#error "EOF != -1" 231.1Sjtc#endif 241.1Sjtc 251.15Sriastrad__ctype_table 261.15Sriastradstatic const short _C_toupper_tab_guarded_[_C_TOUPPER_TAB_GUARD + 271.15Sriastrad 1 + _CTYPE_NUM_CHARS] = { 281.15Sriastrad [_C_TOUPPER_TAB_GUARD] = EOF, 291.1Sjtc 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 301.1Sjtc 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 311.1Sjtc 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 321.1Sjtc 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, 331.1Sjtc 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 341.1Sjtc 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, 351.1Sjtc 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 361.1Sjtc 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 371.1Sjtc 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 381.1Sjtc 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 391.1Sjtc 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 401.1Sjtc 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, 411.1Sjtc 0x60, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 421.1Sjtc 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 431.1Sjtc 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 441.1Sjtc 'X', 'Y', 'Z', 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, 451.1Sjtc 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 461.1Sjtc 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 471.1Sjtc 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 481.1Sjtc 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f, 491.1Sjtc 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 501.1Sjtc 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 511.1Sjtc 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 521.1Sjtc 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf, 531.1Sjtc 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 541.1Sjtc 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 551.1Sjtc 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 561.1Sjtc 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf, 571.1Sjtc 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 581.1Sjtc 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef, 591.1Sjtc 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 601.1Sjtc 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff 611.1Sjtc}; 621.17Sriastrad__ctype_table_guarded(_C_toupper_tab_, _C_toupper_tab_guarded_, 631.16Sriastrad 1 + _CTYPE_NUM_CHARS, __SIZEOF_SHORT__); 641.1Sjtc 651.14Sjoerg#ifdef __BUILD_LEGACY 661.14Sjoerg#ifdef __weak_alias 671.14Sjoerg__weak_alias(_C_toupper_, _C_toupper_tab_) 681.14Sjoerg#endif 691.14Sjoerg#endif 701.14Sjoerg 711.14Sjoergconst short *_toupper_tab_ = &_C_toupper_tab_[0]; 721.15Sriastrad 731.15Sriastrad#if _CTYPE_GUARD_PAGE 741.15Sriastrad__attribute__((constructor)) 751.15Sriastradstatic void 761.15Sriastrad_C_toupper_tab_guard_init(void) 771.15Sriastrad{ 781.15Sriastrad 791.15Sriastrad (void)mprotect(__UNCONST(_C_toupper_tab_guarded_), _CTYPE_GUARD_SIZE, 801.15Sriastrad PROT_NONE); 811.15Sriastrad} 821.15Sriastrad#endif /* _CTYPE_GUARD_PAGE */ 83