~ubuntu-branches/ubuntu/natty/mysql-5.1/natty-proposed

« back to all changes in this revision

Viewing changes to cmd-line-utils/libedit/chartype.h

  • Committer: Package Import Robot
  • Author(s): Marc Deslauriers
  • Date: 2012-02-22 08:30:45 UTC
  • mfrom: (1.4.1)
  • Revision ID: package-import@ubuntu.com-20120222083045-2rd53r4bnyx7qus4
Tags: 5.1.61-0ubuntu0.11.04.1
* SECURITY UPDATE: Update to 5.1.61 to fix multiple security issues
  (LP: #937869)
  - http://www.oracle.com/technetwork/topics/security/cpujan2012-366304.html
  - CVE-2011-2262
  - CVE-2012-0075
  - CVE-2012-0112
  - CVE-2012-0113
  - CVE-2012-0114
  - CVE-2012-0115
  - CVE-2012-0116
  - CVE-2012-0117
  - CVE-2012-0118
  - CVE-2012-0119
  - CVE-2012-0120
  - CVE-2012-0484
  - CVE-2012-0485
  - CVE-2012-0486
  - CVE-2012-0487
  - CVE-2012-0488
  - CVE-2012-0489
  - CVE-2012-0490
  - CVE-2012-0491
  - CVE-2012-0492
  - CVE-2012-0493
  - CVE-2012-0494
  - CVE-2012-0495
  - CVE-2012-0496

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*      $NetBSD: chartype.h,v 1.8 2011/07/29 23:44:44 christos Exp $    */
 
2
 
 
3
/*-
 
4
 * Copyright (c) 2009 The NetBSD Foundation, Inc.
 
5
 * All rights reserved.
 
6
 *
 
7
 * Redistribution and use in source and binary forms, with or without
 
8
 * modification, are permitted provided that the following conditions
 
9
 * are met:
 
10
 * 1. Redistributions of source code must retain the above copyright
 
11
 *    notice, this list of conditions and the following disclaimer.
 
12
 * 2. Redistributions in binary form must reproduce the above copyright
 
13
 *    notice, this list of conditions and the following disclaimer in the
 
14
 *    documentation and/or other materials provided with the distribution.
 
15
 * 3. All advertising materials mentioning features or use of this software
 
16
 *    must display the following acknowledgement:
 
17
 *        This product includes software developed by the NetBSD
 
18
 *        Foundation, Inc. and its contributors.
 
19
 * 4. Neither the name of The NetBSD Foundation nor the names of its
 
20
 *    contributors may be used to endorse or promote products derived
 
21
 *    from this software without specific prior written permission.
 
22
 *
 
23
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 
24
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 
25
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 
26
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
 
27
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 
28
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 
29
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 
30
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 
31
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 
32
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 
33
 * POSSIBILITY OF SUCH DAMAGE.
 
34
 */
 
35
 
 
36
#ifndef _h_chartype_f
 
37
#define _h_chartype_f
 
38
 
 
39
 
 
40
 
 
41
#ifdef WIDECHAR
 
42
 
 
43
/* Ideally we should also test the value of the define to see if it
 
44
 * supports non-BMP code points without requiring UTF-16, but nothing
 
45
 * seems to actually advertise this properly, despite Unicode 3.1 having
 
46
 * been around since 2001... */
 
47
 
 
48
/* XXXMYSQL : Added FreeBSD to bypass this check.
 
49
  TODO : Verify if FreeBSD stores ISO 10646 in wchar_t. */
 
50
#if !defined(__NetBSD__) && !defined(__sun) \
 
51
  && !(defined(__APPLE__) && defined(__MACH__)) \
 
52
  && !defined(__FreeBSD__)
 
53
#ifndef __STDC_ISO_10646__
 
54
/* In many places it is assumed that the first 127 code points are ASCII
 
55
 * compatible, so ensure wchar_t indeed does ISO 10646 and not some other
 
56
 * funky encoding that could break us in weird and wonderful ways. */
 
57
        #error wchar_t must store ISO 10646 characters
 
58
#endif
 
59
#endif
 
60
 
 
61
/* Oh for a <uchar.h> with char32_t and __STDC_UTF_32__ in it...
 
62
 * ref: ISO/IEC DTR 19769
 
63
 */
 
64
#if WCHAR_MAX < INT32_MAX
 
65
#warning Build environment does not support non-BMP characters
 
66
#endif
 
67
 
 
68
#ifndef HAVE_WCSDUP
 
69
wchar_t *wcsdup(const wchar_t *s);
 
70
#endif
 
71
 
 
72
#define ct_wctomb            wctomb
 
73
#define ct_wctomb_reset      wctomb(0,0)
 
74
#define ct_wcstombs          wcstombs
 
75
#define ct_mbstowcs          mbstowcs
 
76
 
 
77
#define Char                    wchar_t
 
78
#define Int                     wint_t
 
79
#define FUN(prefix,rest)        prefix ## _w ## rest
 
80
#define FUNW(type)              type ## _w
 
81
#define TYPE(type)              type ## W
 
82
#define FSTR                    "%ls"
 
83
#define STR(x)                  L ## x
 
84
#define UC(c)                   c
 
85
#define Isalpha(x)  iswalpha(x)
 
86
#define Isalnum(x)  iswalnum(x)
 
87
#define Isgraph(x)  iswgraph(x)
 
88
#define Isspace(x)  iswspace(x)
 
89
#define Isdigit(x)  iswdigit(x)
 
90
#define Iscntrl(x)  iswcntrl(x)
 
91
#define Isprint(x)  iswprint(x)
 
92
 
 
93
#define Isupper(x)  iswupper(x)
 
94
#define Islower(x)  iswlower(x)
 
95
#define Toupper(x)  towupper(x)
 
96
#define Tolower(x)  towlower(x)
 
97
 
 
98
#define IsASCII(x)  (x < 0x100)
 
99
 
 
100
#define Strlen(x)       wcslen(x)
 
101
#define Strchr(s,c)     wcschr(s,c)
 
102
#define Strrchr(s,c)    wcsrchr(s,c)
 
103
#define Strstr(s,v)     wcsstr(s,v)
 
104
#define Strdup(x)       wcsdup(x)
 
105
#define Strcpy(d,s)     wcscpy(d,s)
 
106
#define Strncpy(d,s,n)  wcsncpy(d,s,n)
 
107
#define Strncat(d,s,n)  wcsncat(d,s,n)
 
108
 
 
109
#define Strcmp(s,v)     wcscmp(s,v)
 
110
#define Strncmp(s,v,n)  wcsncmp(s,v,n)
 
111
#define Strcspn(s,r)    wcscspn(s,r)
 
112
 
 
113
#define Strtol(p,e,b)   wcstol(p,e,b)
 
114
 
 
115
#define Width(c)        wcwidth(c)
 
116
 
 
117
#else /* NARROW */
 
118
 
 
119
#define ct_mbtowc            error
 
120
#define ct_mbtowc_reset      
 
121
#define ct_wctomb            error
 
122
#define ct_wctomb_reset      
 
123
#define ct_wcstombs(a, b, c)    (strncpy(a, b, c), strlen(a))
 
124
#define ct_mbstowcs(a, b, c)    (strncpy(a, b, c), strlen(a))
 
125
 
 
126
#define Char                    char
 
127
#define Int                     int
 
128
#define FUN(prefix,rest)        prefix ## _ ## rest
 
129
#define FUNW(type)              type
 
130
#define TYPE(type)              type
 
131
#define FSTR                    "%s"
 
132
#define STR(x)                  x
 
133
#define UC(c)                   (unsigned char)(c)
 
134
 
 
135
#define Isalpha(x)  isalpha((unsigned char)x)
 
136
#define Isalnum(x)  isalnum((unsigned char)x)
 
137
#define Isgraph(x)  isgraph((unsigned char)x)
 
138
#define Isspace(x)  isspace((unsigned char)x)
 
139
#define Isdigit(x)  isdigit((unsigned char)x)
 
140
#define Iscntrl(x)  iscntrl((unsigned char)x)
 
141
#define Isprint(x)  isprint((unsigned char)x)
 
142
 
 
143
#define Isupper(x)  isupper((unsigned char)x)
 
144
#define Islower(x)  islower((unsigned char)x)
 
145
#define Toupper(x)  toupper((unsigned char)x)
 
146
#define Tolower(x)  tolower((unsigned char)x)
 
147
 
 
148
#define IsASCII(x)  isascii((unsigned char)x)
 
149
 
 
150
#define Strlen(x)       strlen(x)
 
151
#define Strchr(s,c)     strchr(s,c)
 
152
#define Strrchr(s,c)    strrchr(s,c)
 
153
#define Strstr(s,v)     strstr(s,v)
 
154
#define Strdup(x)       strdup(x)
 
155
#define Strcpy(d,s)     strcpy(d,s)
 
156
#define Strncpy(d,s,n)  strncpy(d,s,n)
 
157
#define Strncat(d,s,n)  strncat(d,s,n)
 
158
 
 
159
#define Strcmp(s,v)     strcmp(s,v)
 
160
#define Strncmp(s,v,n)  strncmp(s,v,n)
 
161
#define Strcspn(s,r)    strcspn(s,r)
 
162
 
 
163
#define Strtol(p,e,b)   strtol(p,e,b)
 
164
 
 
165
#define Width(c)        1
 
166
 
 
167
#endif
 
168
 
 
169
 
 
170
#ifdef WIDECHAR
 
171
/*
 
172
 * Conversion buffer
 
173
 */
 
174
typedef struct ct_buffer_t {
 
175
        char    *cbuff;
 
176
        size_t  csize;
 
177
        Char *wbuff;
 
178
        size_t  wsize;
 
179
} ct_buffer_t;
 
180
 
 
181
#define ct_encode_string __ct_encode_string
 
182
/* Encode a wide-character string and return the UTF-8 encoded result. */
 
183
public char *ct_encode_string(const Char *, ct_buffer_t *);
 
184
 
 
185
#define ct_decode_string __ct_decode_string
 
186
/* Decode a (multi)?byte string and return the wide-character string result. */
 
187
public Char *ct_decode_string(const char *, ct_buffer_t *);
 
188
 
 
189
/* Decode a (multi)?byte argv string array.
 
190
 * The pointer returned must be free()d when done. */
 
191
protected Char **ct_decode_argv(int, const char *[],  ct_buffer_t *);
 
192
 
 
193
/* Resizes the conversion buffer(s) if needed. */
 
194
protected void ct_conv_buff_resize(ct_buffer_t *, size_t, size_t);
 
195
protected ssize_t ct_encode_char(char *, size_t, Char, mbstate_t *);
 
196
protected size_t ct_enc_width(Char);
 
197
 
 
198
#define ct_free_argv(s) el_free(s)
 
199
 
 
200
#else
 
201
#define ct_encode_string(s, b)  (s)
 
202
#define ct_decode_string(s, b)  (s)
 
203
#define ct_decode_argv(l, s, b) (s)
 
204
#define ct_conv_buff_resize(b, os, ns)
 
205
#define ct_encode_char(d, l, s, ps)     (*d = s, 1)
 
206
#define ct_free_argv(s)
 
207
#endif
 
208
 
 
209
#ifndef NARROWCHAR
 
210
/* Encode a characted into the destination buffer, provided there is sufficent
 
211
 * buffer space available. Returns the number of bytes used up (zero if the
 
212
 * character cannot be encoded, -1 if there was not enough space available). */
 
213
 
 
214
/* The maximum buffer size to hold the most unwieldly visual representation,
 
215
 * in this case \U+nnnnn. */
 
216
#define VISUAL_WIDTH_MAX ((size_t)8)
 
217
 
 
218
/* The terminal is thought of in terms of X columns by Y lines. In the cases
 
219
 * where a wide character takes up more than one column, the adjacent 
 
220
 * occupied column entries will contain this faux character. */
 
221
#define MB_FILL_CHAR ((Char)-1)
 
222
 
 
223
/* Visual width of character c, taking into account ^? , \0177 and \U+nnnnn
 
224
 * style visual expansions. */
 
225
protected int ct_visual_width(Char);
 
226
 
 
227
/* Turn the given character into the appropriate visual format, matching
 
228
 * the width given by ct_visual_width(). Returns the number of characters used
 
229
 * up, or -1 if insufficient space. Buffer length is in count of Char's. */
 
230
protected ssize_t ct_visual_char(Char *, size_t, Char);
 
231
 
 
232
/* Convert the given string into visual format, using the ct_visual_char()
 
233
 * function. Uses a static buffer, so not threadsafe. */
 
234
protected const Char *ct_visual_string(const Char *);
 
235
 
 
236
 
 
237
/* printable character, use ct_visual_width() to find out display width */
 
238
#define CHTYPE_PRINT        ( 0)
 
239
/* control character found inside the ASCII portion of the charset */
 
240
#define CHTYPE_ASCIICTL     (-1)
 
241
/* a \t */
 
242
#define CHTYPE_TAB          (-2)
 
243
/* a \n */
 
244
#define CHTYPE_NL           (-3)
 
245
/* non-printable character */
 
246
#define CHTYPE_NONPRINT     (-4)
 
247
/* classification of character c, as one of the above defines */
 
248
protected int ct_chr_class(Char c);
 
249
#endif
 
250
 
 
251
 
 
252
#endif /* _chartype_f */