Print this page
2964 need POSIX 2008 locale object support
Reviewed by: Robert Mustacchi <rm@joyent.com>
Reviewed by: Gordon Ross <gordon.ross@nexenta.com>
Approved by: TBD

Split Close
Expand all
Collapse all
          --- old/usr/src/cmd/mdb/common/libstand/ctype.c
          +++ new/usr/src/cmd/mdb/common/libstand/ctype.c
   1    1  /*
   2      - * CDDL HEADER START
        2 + * This file and its contents are supplied under the terms of the
        3 + * Common Development and Distribution License ("CDDL"), version 1.0.
        4 + * You may only use this file in accordance with the terms of version
        5 + * 1.0 of the CDDL.
   3    6   *
   4      - * The contents of this file are subject to the terms of the
   5      - * Common Development and Distribution License, Version 1.0 only
   6      - * (the "License").  You may not use this file except in compliance
   7      - * with the License.
   8      - *
   9      - * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  10      - * or http://www.opensolaris.org/os/licensing.
  11      - * See the License for the specific language governing permissions
  12      - * and limitations under the License.
  13      - *
  14      - * When distributing Covered Code, include this CDDL HEADER in each
  15      - * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  16      - * If applicable, add the following below this CDDL HEADER, with the
  17      - * fields enclosed by brackets "[]" replaced with your own identifying
  18      - * information: Portions Copyright [yyyy] [name of copyright owner]
  19      - *
  20      - * CDDL HEADER END
        7 + * A full copy of the text of the CDDL should have accompanied this
        8 + * source.  A copy of the CDDL is also available via the Internet at
        9 + * http://www.illumos.org/license/CDDL.
  21   10   */
       11 +
  22   12  /*
  23      - * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  24      - * Use is subject to license terms.
       13 + * Copyright 2014 Garrett D'Amore <garrett@damore.org>
  25   14   */
  26   15  
  27      -#pragma ident   "%Z%%M% %I%     %E% SMI"
       16 +/*
       17 + * ASCII versions of ctype character classification functions.  This avoids
       18 + * pulling in the entire locale framework that is in libc.
       19 + */
  28   20  
  29      -#include <ctype.h>
       21 +int
       22 +isdigit(int c)
       23 +{
       24 +        return ((c >= '0' && c <= '9') ? 1 : 0);
       25 +}
  30   26  
  31      -unsigned char __ctype[129] =
       27 +int
       28 +isupper(int c)
  32   29  {
  33      -        0, /* EOF */
  34      -        _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C,
  35      -        _C,     _S|_C,  _S|_C,  _S|_C,  _S|_C,  _S|_C,  _C,     _C,
  36      -        _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C,
  37      -        _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C,
  38      -        _S|_B,  _P,     _P,     _P,     _P,     _P,     _P,     _P,
  39      -        _P,     _P,     _P,     _P,     _P,     _P,     _P,     _P,
  40      -        _N|_X,  _N|_X,  _N|_X,  _N|_X,  _N|_X,  _N|_X,  _N|_X,  _N|_X,
  41      -        _N|_X,  _N|_X,  _P,     _P,     _P,     _P,     _P,     _P,
  42      -        _P,     _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U,
  43      -        _U,     _U,     _U,     _U,     _U,     _U,     _U,     _U,
  44      -        _U,     _U,     _U,     _U,     _U,     _U,     _U,     _U,
  45      -        _U,     _U,     _U,     _P,     _P,     _P,     _P,     _P,
  46      -        _P,     _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L,
  47      -        _L,     _L,     _L,     _L,     _L,     _L,     _L,     _L,
  48      -        _L,     _L,     _L,     _L,     _L,     _L,     _L,     _L,
  49      -        _L,     _L,     _L,     _P,     _P,     _P,     _P,     _C,
  50      -};
       30 +        return ((c >= 'A' && c <= 'Z') ? 1 : 0);
       31 +}
       32 +
       33 +
       34 +int
       35 +islower(int c)
       36 +{
       37 +        return ((c >= 'a' && c <= 'z') ? 1 : 0);
       38 +}
       39 +
       40 +int
       41 +isspace(int c)
       42 +{
       43 +        return (((c == ' ') || (c == '\t') || (c == '\r') || (c == '\n') ||
       44 +            (c == '\v') || (c == '\f')) ? 1 : 0);
       45 +}
       46 +
       47 +int
       48 +isxdigit(int c)
       49 +{
       50 +        return ((isdigit(c) || (c >= 'A' && c <= 'F') ||
       51 +            (c >= 'a' && c <= 'f')) ? 1 : 0);
       52 +}
       53 +
       54 +int
       55 +isalpha(int c)
       56 +{
       57 +        return ((isupper(c) || islower(c)) ? 1 : 0);
       58 +}
       59 +
       60 +
       61 +int
       62 +isalnum(int c)
       63 +{
       64 +        return ((isalpha(c) || isdigit(c)) ? 1 : 0);
       65 +}
       66 +
       67 +int
       68 +ispunct(int c)
       69 +{
       70 +        return (((c >= '!') && (c <= '/')) ||
       71 +            ((c >= ':') && (c <= '@')) ||
       72 +            ((c >= '[') && (c <= '`')) ||
       73 +            ((c >= '{') && (c <= '~')));
       74 +}
       75 +
       76 +int
       77 +iscntrl(int c)
       78 +{
       79 +        return ((c < 0x20) || (c == 0x7f));
       80 +}
       81 +
       82 +int
       83 +isprint(int c)
       84 +{
       85 +        /*
       86 +         * Almost the inverse of iscntrl, but be careful that c > 0x7f
       87 +         * returns false for everything.
       88 +         */
       89 +        return ((c >= ' ') && (c <= '~'));
       90 +}
       91 +
       92 +int
       93 +isgraph(int c)
       94 +{
       95 +        /* isgraph is like is print, but excludes <space> */
       96 +        return ((c >= '!') && (c <= '~'));
       97 +}
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX