17c478bd9Sstevel@tonic-gate /* 27c478bd9Sstevel@tonic-gate * CDDL HEADER START 37c478bd9Sstevel@tonic-gate * 47c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 57c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 67c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 77c478bd9Sstevel@tonic-gate * with the License. 87c478bd9Sstevel@tonic-gate * 97c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 107c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 117c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 127c478bd9Sstevel@tonic-gate * and limitations under the License. 137c478bd9Sstevel@tonic-gate * 147c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 157c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 167c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 177c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 187c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 197c478bd9Sstevel@tonic-gate * 207c478bd9Sstevel@tonic-gate * CDDL HEADER END 217c478bd9Sstevel@tonic-gate */ 227c478bd9Sstevel@tonic-gate /* Copyright (c) 1988 AT&T */ 23*b4203d75SMarcel Telka /* All Rights Reserved */ 247c478bd9Sstevel@tonic-gate 257c478bd9Sstevel@tonic-gate /* 26ba3594baSGarrett D'Amore * Copyright 2014 Garrett D'Amore <garrett@damore.org> 27ba3594baSGarrett D'Amore * 287c478bd9Sstevel@tonic-gate * Copyright 2004 Sun Microsystems, Inc. All rights reserved. 297c478bd9Sstevel@tonic-gate * Use is subject to license terms. 307c478bd9Sstevel@tonic-gate */ 317c478bd9Sstevel@tonic-gate 327c478bd9Sstevel@tonic-gate /* 337c478bd9Sstevel@tonic-gate * An application should not include this header directly. Instead it 347c478bd9Sstevel@tonic-gate * should be included only through the inclusion of other Sun headers. 357c478bd9Sstevel@tonic-gate * 367c478bd9Sstevel@tonic-gate * The contents of this header is limited to identifiers specified in the 377c478bd9Sstevel@tonic-gate * C Standard. Any new identifiers specified in future amendments to the 387c478bd9Sstevel@tonic-gate * C Standard must be placed in this header. If these new identifiers 397c478bd9Sstevel@tonic-gate * are required to also be in the C++ Standard "std" namespace, then for 407c478bd9Sstevel@tonic-gate * anything other than macro definitions, corresponding "using" directives 417c478bd9Sstevel@tonic-gate * must also be added to <ctype.h>. 427c478bd9Sstevel@tonic-gate */ 437c478bd9Sstevel@tonic-gate 447c478bd9Sstevel@tonic-gate #ifndef _ISO_CTYPE_ISO_H 457c478bd9Sstevel@tonic-gate #define _ISO_CTYPE_ISO_H 467c478bd9Sstevel@tonic-gate 477c478bd9Sstevel@tonic-gate #include <sys/feature_tests.h> 487c478bd9Sstevel@tonic-gate 497c478bd9Sstevel@tonic-gate #ifdef __cplusplus 507c478bd9Sstevel@tonic-gate extern "C" { 517c478bd9Sstevel@tonic-gate #endif 527c478bd9Sstevel@tonic-gate 537c478bd9Sstevel@tonic-gate #define _U 0x00000001 /* Upper case */ 547c478bd9Sstevel@tonic-gate #define _L 0x00000002 /* Lower case */ 557c478bd9Sstevel@tonic-gate #define _N 0x00000004 /* Numeral (digit) */ 567c478bd9Sstevel@tonic-gate #define _S 0x00000008 /* Spacing character */ 577c478bd9Sstevel@tonic-gate #define _P 0x00000010 /* Punctuation */ 587c478bd9Sstevel@tonic-gate #define _C 0x00000020 /* Control character */ 597c478bd9Sstevel@tonic-gate #define _B 0x00000040 /* Blank */ 607c478bd9Sstevel@tonic-gate #define _X 0x00000080 /* heXadecimal digit */ 617c478bd9Sstevel@tonic-gate 627c478bd9Sstevel@tonic-gate #define _ISUPPER _U 637c478bd9Sstevel@tonic-gate #define _ISLOWER _L 647c478bd9Sstevel@tonic-gate #define _ISDIGIT _N 657c478bd9Sstevel@tonic-gate #define _ISSPACE _S 667c478bd9Sstevel@tonic-gate #define _ISPUNCT _P 677c478bd9Sstevel@tonic-gate #define _ISCNTRL _C 687c478bd9Sstevel@tonic-gate #define _ISBLANK _B 697c478bd9Sstevel@tonic-gate #define _ISXDIGIT _X 707c478bd9Sstevel@tonic-gate #define _ISGRAPH 0x00002000 717c478bd9Sstevel@tonic-gate #define _ISALPHA 0x00004000 727c478bd9Sstevel@tonic-gate #define _ISPRINT 0x00008000 737c478bd9Sstevel@tonic-gate #define _ISALNUM (_ISALPHA | _ISDIGIT) 747c478bd9Sstevel@tonic-gate 752d08521bSGarrett D'Amore extern unsigned char __ctype[]; 76415a310dSRobert Mustacchi extern unsigned int *__ctype_mask; 77415a310dSRobert Mustacchi extern int *__trans_upper; 78415a310dSRobert Mustacchi extern int *__trans_lower; 797c478bd9Sstevel@tonic-gate 802d08521bSGarrett D'Amore #if __cplusplus >= 199711L 812d08521bSGarrett D'Amore namespace std { 822d08521bSGarrett D'Amore #endif 837c478bd9Sstevel@tonic-gate 842d08521bSGarrett D'Amore /* 852d08521bSGarrett D'Amore * These used to be macros, which while more efficient, precludes operation 862d08521bSGarrett D'Amore * with thread specific locales. The old macros will still work, but new 872d08521bSGarrett D'Amore * code compiles to use functions. This is specifically permitted by the 882d08521bSGarrett D'Amore * various standards. Only _tolower and _toupper were required to be 892d08521bSGarrett D'Amore * delivered in macro form. 902d08521bSGarrett D'Amore */ 917c478bd9Sstevel@tonic-gate extern int isalnum(int); 927c478bd9Sstevel@tonic-gate extern int isalpha(int); 937c478bd9Sstevel@tonic-gate extern int iscntrl(int); 947c478bd9Sstevel@tonic-gate extern int isdigit(int); 957c478bd9Sstevel@tonic-gate extern int isgraph(int); 967c478bd9Sstevel@tonic-gate extern int islower(int); 977c478bd9Sstevel@tonic-gate extern int isprint(int); 987c478bd9Sstevel@tonic-gate extern int ispunct(int); 997c478bd9Sstevel@tonic-gate extern int isspace(int); 1007c478bd9Sstevel@tonic-gate extern int isupper(int); 1017c478bd9Sstevel@tonic-gate extern int isxdigit(int); 1022d08521bSGarrett D'Amore #if defined(_XPG6) || defined(_STDC_C99) || !defined(_STRICT_SYMBOLS) 1032d08521bSGarrett D'Amore extern int isblank(int); 1047c478bd9Sstevel@tonic-gate #endif 1057c478bd9Sstevel@tonic-gate 1067c478bd9Sstevel@tonic-gate extern int tolower(int); 1077c478bd9Sstevel@tonic-gate extern int toupper(int); 1087c478bd9Sstevel@tonic-gate 1097c478bd9Sstevel@tonic-gate #if __cplusplus >= 199711L 1107c478bd9Sstevel@tonic-gate } /* end of namespace std */ 1117c478bd9Sstevel@tonic-gate #endif 1127c478bd9Sstevel@tonic-gate 1137c478bd9Sstevel@tonic-gate #ifdef __cplusplus 1147c478bd9Sstevel@tonic-gate } 1157c478bd9Sstevel@tonic-gate #endif 1167c478bd9Sstevel@tonic-gate 1177c478bd9Sstevel@tonic-gate #endif /* _ISO_CTYPE_ISO_H */ 118