2017-08-20 21:19:17 +00:00
|
|
|
/*
|
2019-09-10 12:56:40 +00:00
|
|
|
* Copyright 2017-2019 The OpenSSL Project Authors. All Rights Reserved.
|
2017-08-20 21:19:17 +00:00
|
|
|
*
|
|
|
|
* Licensed under the OpenSSL license (the "License"). You may not use
|
|
|
|
* this file except in compliance with the License. You can obtain a copy
|
|
|
|
* in the file LICENSE in the source distribution or at
|
|
|
|
* https://www.openssl.org/source/license.html
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* This version of ctype.h provides a standardised and platform
|
|
|
|
* independent implementation that supports seven bit ASCII characters.
|
|
|
|
* The specific intent is to not pass extended ASCII characters (> 127)
|
|
|
|
* even if the host operating system would.
|
|
|
|
*
|
|
|
|
* There is EBCDIC support included for machines which use this. However,
|
|
|
|
* there are a number of concerns about how well EBCDIC is supported
|
|
|
|
* throughout the rest of the source code. Refer to issue #4154 for
|
|
|
|
* details.
|
|
|
|
*/
|
2019-09-27 21:58:12 +00:00
|
|
|
#ifndef OSSL_CRYPTO_CTYPE_H
|
|
|
|
# define OSSL_CRYPTO_CTYPE_H
|
2017-08-20 21:19:17 +00:00
|
|
|
|
|
|
|
# define CTYPE_MASK_lower 0x1
|
|
|
|
# define CTYPE_MASK_upper 0x2
|
|
|
|
# define CTYPE_MASK_digit 0x4
|
|
|
|
# define CTYPE_MASK_space 0x8
|
|
|
|
# define CTYPE_MASK_xdigit 0x10
|
|
|
|
# define CTYPE_MASK_blank 0x20
|
|
|
|
# define CTYPE_MASK_cntrl 0x40
|
|
|
|
# define CTYPE_MASK_graph 0x80
|
|
|
|
# define CTYPE_MASK_print 0x100
|
|
|
|
# define CTYPE_MASK_punct 0x200
|
|
|
|
# define CTYPE_MASK_base64 0x400
|
|
|
|
# define CTYPE_MASK_asn1print 0x800
|
|
|
|
|
|
|
|
# define CTYPE_MASK_alpha (CTYPE_MASK_lower | CTYPE_MASK_upper)
|
|
|
|
# define CTYPE_MASK_alnum (CTYPE_MASK_alpha | CTYPE_MASK_digit)
|
|
|
|
|
|
|
|
/*
|
|
|
|
* The ascii mask assumes that any other classification implies that
|
|
|
|
* the character is ASCII and that there are no ASCII characters
|
|
|
|
* that aren't in any of the classifications.
|
|
|
|
*
|
|
|
|
* This assumption holds at the moment, but it might not in the future.
|
|
|
|
*/
|
|
|
|
# define CTYPE_MASK_ascii (~0)
|
|
|
|
|
|
|
|
# ifdef CHARSET_EBCDIC
|
|
|
|
int ossl_toascii(int c);
|
|
|
|
int ossl_fromascii(int c);
|
|
|
|
# else
|
|
|
|
# define ossl_toascii(c) (c)
|
|
|
|
# define ossl_fromascii(c) (c)
|
|
|
|
# endif
|
|
|
|
int ossl_ctype_check(int c, unsigned int mask);
|
|
|
|
int ossl_tolower(int c);
|
|
|
|
int ossl_toupper(int c);
|
|
|
|
|
2019-08-08 18:11:38 +00:00
|
|
|
int ascii_isdigit(const char inchar);
|
|
|
|
|
2017-08-20 21:19:17 +00:00
|
|
|
# define ossl_isalnum(c) (ossl_ctype_check((c), CTYPE_MASK_alnum))
|
|
|
|
# define ossl_isalpha(c) (ossl_ctype_check((c), CTYPE_MASK_alpha))
|
|
|
|
# ifdef CHARSET_EBCDIC
|
|
|
|
# define ossl_isascii(c) (ossl_ctype_check((c), CTYPE_MASK_ascii))
|
|
|
|
# else
|
|
|
|
# define ossl_isascii(c) (((c) & ~127) == 0)
|
|
|
|
# endif
|
|
|
|
# define ossl_isblank(c) (ossl_ctype_check((c), CTYPE_MASK_blank))
|
|
|
|
# define ossl_iscntrl(c) (ossl_ctype_check((c), CTYPE_MASK_cntrl))
|
|
|
|
# define ossl_isdigit(c) (ossl_ctype_check((c), CTYPE_MASK_digit))
|
|
|
|
# define ossl_isgraph(c) (ossl_ctype_check((c), CTYPE_MASK_graph))
|
|
|
|
# define ossl_islower(c) (ossl_ctype_check((c), CTYPE_MASK_lower))
|
|
|
|
# define ossl_isprint(c) (ossl_ctype_check((c), CTYPE_MASK_print))
|
|
|
|
# define ossl_ispunct(c) (ossl_ctype_check((c), CTYPE_MASK_punct))
|
|
|
|
# define ossl_isspace(c) (ossl_ctype_check((c), CTYPE_MASK_space))
|
|
|
|
# define ossl_isupper(c) (ossl_ctype_check((c), CTYPE_MASK_upper))
|
|
|
|
# define ossl_isxdigit(c) (ossl_ctype_check((c), CTYPE_MASK_xdigit))
|
|
|
|
# define ossl_isbase64(c) (ossl_ctype_check((c), CTYPE_MASK_base64))
|
|
|
|
# define ossl_isasn1print(c) (ossl_ctype_check((c), CTYPE_MASK_asn1print))
|
|
|
|
|
|
|
|
#endif
|