Subversion Repositories Kolibri OS

Rev

Rev 4872 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4349 Serge 1
/* Copyright (c) 2002 Red Hat Incorporated.
2
   All rights reserved.
3
 
4
   Redistribution and use in source and binary forms, with or without
5
   modification, are permitted provided that the following conditions are met:
6
 
7
     Redistributions of source code must retain the above copyright
8
     notice, this list of conditions and the following disclaimer.
9
 
10
     Redistributions in binary form must reproduce the above copyright
11
     notice, this list of conditions and the following disclaimer in the
12
     documentation and/or other materials provided with the distribution.
13
 
14
     The name of Red Hat Incorporated may not be used to endorse
15
     or promote products derived from this software without specific
16
     prior written permission.
17
 
18
   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19
   AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20
   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21
   ARE DISCLAIMED.  IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY
22
   DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23
   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24
   LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25
   ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26
   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27
   SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28
*/
29
 
30
/*
31
FUNCTION
32
	<>---get wide-character classification type
33
 
34
INDEX
35
	wctype
36
 
37
ANSI_SYNOPSIS
38
	#include 
39
	wctype_t wctype(const char *<[c]>);
40
 
41
TRAD_SYNOPSIS
42
	#include 
43
	wctype_t wctype(<[c]>)
44
	const char * <[c]>;
45
 
46
 
47
DESCRIPTION
48
<> is a function which takes a string <[c]> and gives back
49
the appropriate wctype_t type value associated with the string,
50
if one exists.  The following values are guaranteed to be recognized:
51
"alnum", "alpha", "blank", "cntrl", "digit", "graph", "lower", "print",
52
"punct", "space", "upper", and "xdigit".
53
 
54
RETURNS
55
<> returns 0 and sets <> to <> if the
56
given name is invalid.  Otherwise, it returns a valid non-zero wctype_t
57
value.
58
 
59
PORTABILITY
60
<> is C99.
61
 
62
No supporting OS subroutines are required.
63
*/
64
 
65
#include <_ansi.h>
66
#include 
67
#include 
68
#include 
69
#include 
70
#include "local.h"
71
 
72
wctype_t
73
_DEFUN (_wctype_r, (r, c),
74
	struct _reent *r _AND
75
	const char *c)
76
{
77
  switch (*c)
78
    {
79
    case 'a':
80
      if (!strcmp (c, "alnum"))
81
        return WC_ALNUM;
82
      else if (!strcmp (c, "alpha"))
83
        return WC_ALPHA;
84
      break;
85
    case 'b':
86
      if (!strcmp (c, "blank"))
87
        return WC_BLANK;
88
      break;
89
    case 'c':
90
      if (!strcmp (c, "cntrl"))
91
        return WC_CNTRL;
92
      break;
93
    case 'd':
94
      if (!strcmp (c, "digit"))
95
        return WC_DIGIT;
96
      break;
97
    case 'g':
98
      if (!strcmp (c, "graph"))
99
        return WC_GRAPH;
100
      break;
101
    case 'l':
102
      if (!strcmp (c, "lower"))
103
        return WC_LOWER;
104
      break;
105
    case 'p':
106
      if (!strcmp (c, "print"))
107
        return WC_PRINT;
108
      else if (!strcmp (c, "punct"))
109
        return WC_PUNCT;
110
      break;
111
    case 's':
112
      if (!strcmp (c, "space"))
113
        return WC_SPACE;
114
      break;
115
    case 'u':
116
      if (!strcmp (c, "upper"))
117
        return WC_UPPER;
118
      break;
119
    case 'x':
120
      if (!strcmp (c, "xdigit"))
121
        return WC_XDIGIT;
122
      break;
123
    }
124
 
125
  /* otherwise invalid */
126
  r->_errno = EINVAL;
127
  return 0;
128
}
129
 
130
#ifndef _REENT_ONLY
131
wctype_t
132
_DEFUN (wctype, (c),
133
	const char *c)
134
{
135
  return _wctype_r (_REENT, c);
136
}
137
#endif /* !_REENT_ONLY */