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/head/ctype.h
          +++ new/usr/src/head/ctype.h
↓ open down ↓ 19 lines elided ↑ open up ↑
  20   20   * CDDL HEADER END
  21   21   */
  22   22  /*      Copyright (c) 1988 AT&T */
  23   23  /*        All Rights Reserved   */
  24   24  
  25   25  
  26   26  /*
  27   27   * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
  28   28   * Use is subject to license terms.
  29   29   */
       30 +/*
       31 + * Copyright 2014 Garrett D'Amore <garrett@damore.org>
       32 + */
  30   33  
  31   34  #ifndef _CTYPE_H
  32   35  #define _CTYPE_H
  33   36  
  34      -#pragma ident   "%Z%%M% %I%     %E% SMI"
  35      -
  36   37  #include <iso/ctype_iso.h>
  37      -#include <iso/ctype_c99.h>
  38   38  
  39   39  /*
  40   40   * Allow global visibility for symbols defined in
  41   41   * C++ "std" namespace in <iso/ctype_iso.h>.
  42   42   */
  43   43  #if __cplusplus >= 199711L
  44   44  using std::isalnum;
  45   45  using std::isalpha;
  46   46  using std::iscntrl;
  47   47  using std::isdigit;
  48   48  using std::isgraph;
  49   49  using std::islower;
  50   50  using std::isprint;
  51   51  using std::ispunct;
  52   52  using std::isspace;
  53   53  using std::isupper;
  54   54  using std::isxdigit;
  55   55  using std::tolower;
  56   56  using std::toupper;
       57 +#if _cplusplus >= 201103L
       58 +using std::isblank;
  57   59  #endif
       60 +#endif
  58   61  
  59   62  #ifdef  __cplusplus
  60   63  extern "C" {
  61   64  #endif
  62   65  
  63   66  #if defined(__STDC__)
  64   67  
  65   68  #if defined(__EXTENSIONS__) || \
  66   69          ((!defined(_STRICT_STDC) && !defined(_POSIX_C_SOURCE)) || \
  67   70          defined(_XOPEN_SOURCE))
↓ open down ↓ 5 lines elided ↑ open up ↑
  73   76  
  74   77  #endif /* defined(__EXTENSIONS__) || ((!defined(_STRICT_STDC) ... */
  75   78  
  76   79  #if !defined(__lint)
  77   80  
  78   81  #if defined(__EXTENSIONS__) || \
  79   82          ((!defined(_STRICT_STDC) && !defined(_POSIX_C_SOURCE)) || \
  80   83          defined(_XOPEN_SOURCE)) || defined(__XPG4_CHAR_CLASS__)
  81   84  #define isascii(c)      (!(((int)(c)) & ~0177))
  82   85  #define toascii(c)      (((int)(c)) & 0177)
  83      -#if defined(__XPG4_CHAR_CLASS__) || defined(_XPG4)
  84      -#define _toupper(c)     (__trans_upper[(int)(c)])
  85      -#define _tolower(c)     (__trans_lower[(int)(c)])
  86      -#else
  87      -#define _toupper(c)     ((__ctype + 258)[(int)(c)])
  88      -#define _tolower(c)     ((__ctype + 258)[(int)(c)])
  89      -#endif /* defined(__XPG4_CHAR_CLASS__) || defined(_XPG4) */
       86 +#define _toupper(c)     (toupper(c))
       87 +#define _tolower(c)     (tolower(c))
  90   88  
  91   89  #endif /* defined(__EXTENSIONS__) || ((!defined(_STRICT_STDC) ... */
  92   90  
  93   91  #endif  /* !defined(__lint) */
  94   92  
       93 +#if defined(_XPG7) || !defined(_STRICT_SYMBOLS)
       94 +
       95 +#ifndef _LOCALE_T
       96 +#define _LOCALE_T
       97 +typedef struct locale *locale_t;
       98 +#endif
       99 +
      100 +extern int isalnum_l(int, locale_t);
      101 +extern int isalpha_l(int, locale_t);
      102 +extern int isblank_l(int, locale_t);
      103 +extern int iscntrl_l(int, locale_t);
      104 +extern int isdigit_l(int, locale_t);
      105 +extern int isgraph_l(int, locale_t);
      106 +extern int islower_l(int, locale_t);
      107 +extern int isprint_l(int, locale_t);
      108 +extern int ispunct_l(int, locale_t);
      109 +extern int isspace_l(int, locale_t);
      110 +extern int isupper_l(int, locale_t);
      111 +extern int isxdigit_l(int, locale_t);
      112 +
      113 +#endif /* defined(_XPG7) || !defined(_STRICT_SYMBOLS) */
      114 +
  95  115  #else   /* defined(__STDC__) */
  96  116  
  97  117  #if !defined(__lint)
  98  118  
  99  119  #define isascii(c)      (!(((int)(c)) & ~0177))
 100      -#define _toupper(c)     ((_ctype + 258)[(int)(c)])
 101      -#define _tolower(c)     ((_ctype + 258)[(int)(c)])
      120 +#define _toupper(c)     (isascii(c) ? __trans_upper[(int)(c)] : toupper(c))
      121 +#define _tolower(c)     (isascii(c) ? __trans_lower[(int)(c)] : tolower(c))
 102  122  #define toascii(c)      (((int)(c)) & 0177)
 103  123  
 104  124  #endif  /* !defined(__lint) */
 105  125  
 106  126  #endif  /* defined(__STDC__) */
 107  127  
 108  128  #ifdef  __cplusplus
 109  129  }
 110  130  #endif
 111  131  
 112  132  #endif  /* _CTYPE_H */
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX