strtolctype.h revision 297077
1/* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 22/* 23 * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27/* Copyright (c) 1988 AT&T */ 28/* All Rights Reserved */ 29 30#ifndef _COMMON_UTIL_CTYPE_H 31#define _COMMON_UTIL_CTYPE_H 32 33#ifdef __cplusplus 34extern "C" { 35#endif 36 37/* 38 * This header file contains a collection of macros that the strtou?ll? 39 * functions in common/util use to test characters. What we need is a kernel 40 * version of ctype.h. 41 * 42 * NOTE: These macros are used within several DTrace probe context functions. 43 * They must not be altered to make function calls or perform actions not 44 * safe in probe context. 45 */ 46 47#if defined(illumos) && (defined(_KERNEL) || defined(_BOOT)) 48 49#define isalnum(ch) (isalpha(ch) || isdigit(ch)) 50#define isalpha(ch) (isupper(ch) || islower(ch)) 51#define isdigit(ch) ((ch) >= '0' && (ch) <= '9') 52#define islower(ch) ((ch) >= 'a' && (ch) <= 'z') 53#define isspace(ch) (((ch) == ' ') || ((ch) == '\r') || ((ch) == '\n') || \ 54 ((ch) == '\t') || ((ch) == '\f')) 55#define isupper(ch) ((ch) >= 'A' && (ch) <= 'Z') 56#define isxdigit(ch) (isdigit(ch) || ((ch) >= 'a' && (ch) <= 'f') || \ 57 ((ch) >= 'A' && (ch) <= 'F')) 58 59#endif /* _KERNEL || _BOOT */ 60 61#define DIGIT(x) \ 62 (isdigit(x) ? (x) - '0' : islower(x) ? (x) + 10 - 'a' : (x) + 10 - 'A') 63 64#define MBASE ('z' - 'a' + 1 + 10) 65 66/* 67 * The following macro is a version of isalnum() that limits alphabetic 68 * characters to the ranges a-z and A-Z; locale dependent characters will not 69 * return 1. The members of a-z and A-Z are assumed to be in ascending order 70 * and contiguous. 71 */ 72#define lisalnum(x) \ 73 (isdigit(x) || ((x) >= 'a' && (x) <= 'z') || ((x) >= 'A' && (x) <= 'Z')) 74 75#ifdef __cplusplus 76} 77#endif 78 79#endif /* _COMMON_UTIL_CTYPE_H */ 80