OpenCores
URL https://opencores.org/ocsvn/openrisc_2011-10-31/openrisc_2011-10-31/trunk

Subversion Repositories openrisc_2011-10-31

[/] [openrisc/] [tags/] [gnu-src/] [newlib-1.18.0/] [newlib-1.18.0-or32-1.0rc1/] [newlib/] [libc/] [ctype/] [ctype_.c] - Blame information for rev 345

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 207 jeremybenn
/*
2
 * Copyright (c) 1989 The Regents of the University of California.
3
 * All rights reserved.
4
 *
5
 * Redistribution and use in source and binary forms, with or without
6
 * modification, are permitted provided that the following conditions
7
 * are met:
8
 * 1. Redistributions of source code must retain the above copyright
9
 *    notice, this list of conditions and the following disclaimer.
10
 * 2. 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
 * 3. All advertising materials mentioning features or use of this software
14
 *    must display the following acknowledgement:
15
 *      This product includes software developed by the University of
16
 *      California, Berkeley and its contributors.
17
 * 4. Neither the name of the University nor the names of its contributors
18
 *    may be used to endorse or promote products derived from this software
19
 *    without specific prior written permission.
20
 *
21
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31
 * SUCH DAMAGE.
32
 */
33
 
34
#if defined(LIBC_SCCS) && !defined(lint)
35
static char sccsid[] = "@(#)ctype_.c    5.6 (Berkeley) 6/1/90";
36
#endif /* LIBC_SCCS and not lint */
37
 
38
#include <ctype.h>
39
 
40
#define _CTYPE_DATA_0_127 \
41
        _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C, \
42
        _C,     _C|_S, _C|_S, _C|_S,    _C|_S,  _C|_S,  _C,     _C, \
43
        _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C, \
44
        _C,     _C,     _C,     _C,     _C,     _C,     _C,     _C, \
45
        _S|_B,  _P,     _P,     _P,     _P,     _P,     _P,     _P, \
46
        _P,     _P,     _P,     _P,     _P,     _P,     _P,     _P, \
47
        _N,     _N,     _N,     _N,     _N,     _N,     _N,     _N, \
48
        _N,     _N,     _P,     _P,     _P,     _P,     _P,     _P, \
49
        _P,     _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U|_X,  _U, \
50
        _U,     _U,     _U,     _U,     _U,     _U,     _U,     _U, \
51
        _U,     _U,     _U,     _U,     _U,     _U,     _U,     _U, \
52
        _U,     _U,     _U,     _P,     _P,     _P,     _P,     _P, \
53
        _P,     _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L|_X,  _L, \
54
        _L,     _L,     _L,     _L,     _L,     _L,     _L,     _L, \
55
        _L,     _L,     _L,     _L,     _L,     _L,     _L,     _L, \
56
        _L,     _L,     _L,     _P,     _P,     _P,     _P,     _C
57
 
58
#define _CTYPE_DATA_128_255 \
59
        0,       0,       0,       0,       0,       0,       0,       0, \
60
        0,       0,       0,       0,       0,       0,       0,       0, \
61
        0,       0,       0,       0,       0,       0,       0,       0, \
62
        0,       0,       0,       0,       0,       0,       0,       0, \
63
        0,       0,       0,       0,       0,       0,       0,       0, \
64
        0,       0,       0,       0,       0,       0,       0,       0, \
65
        0,       0,       0,       0,       0,       0,       0,       0, \
66
        0,       0,       0,       0,       0,       0,       0,       0, \
67
        0,       0,       0,       0,       0,       0,       0,       0, \
68
        0,       0,       0,       0,       0,       0,       0,       0, \
69
        0,       0,       0,       0,       0,       0,       0,       0, \
70
        0,       0,       0,       0,       0,       0,       0,       0, \
71
        0,       0,       0,       0,       0,       0,       0,       0, \
72
        0,       0,       0,       0,       0,       0,       0,       0, \
73
        0,       0,       0,       0,       0,       0,       0,       0, \
74
        0,       0,       0,       0,       0,       0,       0,       0
75
 
76
#if (defined(__GNUC__) && !defined(__CHAR_UNSIGNED__) && !defined(COMPACT_CTYPE)) || defined (__CYGWIN__)
77
#define ALLOW_NEGATIVE_CTYPE_INDEX
78
#endif
79
 
80
#if defined(_MB_CAPABLE)
81
#if defined(_MB_EXTENDED_CHARSETS_ISO)
82
#include "ctype_iso.h"
83
#endif
84
#if defined(_MB_EXTENDED_CHARSETS_WINDOWS)
85
#include "ctype_cp.h"
86
#endif
87
#endif
88
 
89
#if defined(ALLOW_NEGATIVE_CTYPE_INDEX)
90
/* No static const on Cygwin since it's referenced and potentially overwritten
91
   for compatibility with older applications. */
92
#ifndef __CYGWIN__
93
static _CONST
94
#endif
95
char _ctype_b[128 + 256] = {
96
        _CTYPE_DATA_128_255,
97
        _CTYPE_DATA_0_127,
98
        _CTYPE_DATA_128_255
99
};
100
 
101
#ifndef _MB_CAPABLE
102
_CONST
103
#endif
104
char __EXPORT *__ctype_ptr__ = (char *) _ctype_b + 127;
105
 
106
#  ifdef __CYGWIN__
107
 
108
__asm__ ("                                      \n\
109
        .data                                   \n\
110
        .globl  __ctype_                        \n\
111
        .set    __ctype_,__ctype_b+127          \n\
112
        .text                                   \n\
113
");
114
 
115
#  else /* !__CYGWIN__ */
116
 
117
_CONST char _ctype_[1 + 256] = {
118
        0,
119
        _CTYPE_DATA_0_127,
120
        _CTYPE_DATA_128_255
121
};
122
#  endif /* !__CYGWIN__ */
123
 
124
#else   /* !defined(ALLOW_NEGATIVE_CTYPE_INDEX) */
125
 
126
_CONST char _ctype_[1 + 256] = {
127
        0,
128
        _CTYPE_DATA_0_127,
129
        _CTYPE_DATA_128_255
130
};
131
 
132
#ifndef _MB_CAPABLE
133
_CONST
134
#endif
135
char *__ctype_ptr__ = (char *) _ctype_;
136
 
137
#endif
138
 
139
#if defined(_MB_CAPABLE)
140
/* Cygwin has its own implementation which additionally maintains backward
141
   compatibility with applications built under older Cygwin releases. */
142
#ifndef __CYGWIN__
143
void
144
__set_ctype (const char *charset)
145
{
146
#if defined(_MB_EXTENDED_CHARSETS_ISO) || defined(_MB_EXTENDED_CHARSETS_WINDOWS)
147
  int idx;
148
#endif
149
 
150
  switch (*charset)
151
    {
152
#if defined(_MB_EXTENDED_CHARSETS_ISO)
153
    case 'I':
154
      idx = __iso_8859_index (charset + 9);
155
      /* The ctype table has a leading ISO-8859-1 element so we have to add
156
         1 to the index returned by __iso_8859_index.  If __iso_8859_index
157
         returns < 0, it's ISO-8859-1. */
158
      if (idx < 0)
159
        idx = 0;
160
      else
161
        ++idx;
162
#  if defined(ALLOW_NEGATIVE_CTYPE_INDEX)
163
      __ctype_ptr__ = (char *) (__ctype_iso[idx] + 127);
164
#  else
165
      __ctype_ptr__ = (char *) __ctype_iso[idx];
166
#  endif
167
      return;
168
#endif
169
#if defined(_MB_EXTENDED_CHARSETS_WINDOWS)
170
    case 'C':
171
      idx = __cp_index (charset + 2);
172
      if (idx < 0)
173
        break;
174
#  if defined(ALLOW_NEGATIVE_CTYPE_INDEX)
175
      __ctype_ptr__ = (char *) (__ctype_cp[idx] + 127);
176
#  else
177
      __ctype_ptr__ = (char *) __ctype_cp[idx];
178
#  endif
179
      return;
180
#endif
181
    default:
182
      break;
183
    }
184
#  if defined(ALLOW_NEGATIVE_CTYPE_INDEX)
185
  __ctype_ptr__ = (char *) _ctype_b + 127;
186
#  else
187
  __ctype_ptr__ = (char *) _ctype_;
188
#  endif
189
}
190
#endif /* !__CYGWIN__ */
191
#endif /* _MB_CAPABLE */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.