xref: /openbsd-src/gnu/usr.bin/binutils/gdb/testsuite/gdb.base/charset.c (revision 11efff7f3ac2b3cfeff0c0cddc14294d9b3aca4f)
1b725ae77Skettenis /* This testcase is part of GDB, the GNU debugger.
2b725ae77Skettenis 
3b725ae77Skettenis    Copyright 2001, 2004 Free Software Foundation, Inc.
4b725ae77Skettenis 
5b725ae77Skettenis    Contributed by Red Hat, originally written by Jim Blandy.
6b725ae77Skettenis 
7b725ae77Skettenis    This program is free software; you can redistribute it and/or modify
8b725ae77Skettenis    it under the terms of the GNU General Public License as published by
9b725ae77Skettenis    the Free Software Foundation; either version 2 of the License, or
10b725ae77Skettenis    (at your option) any later version.
11b725ae77Skettenis 
12b725ae77Skettenis    This program is distributed in the hope that it will be useful,
13b725ae77Skettenis    but WITHOUT ANY WARRANTY; without even the implied warranty of
14b725ae77Skettenis    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15b725ae77Skettenis    GNU General Public License for more details.
16b725ae77Skettenis 
17b725ae77Skettenis    You should have received a copy of the GNU General Public License
18b725ae77Skettenis    along with this program; if not, write to the Free Software
19b725ae77Skettenis    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
20b725ae77Skettenis 
21b725ae77Skettenis    Please email any bugs, comments, and/or additions to this file to:
22b725ae77Skettenis    bug-gdb@gnu.org  */
23b725ae77Skettenis 
24b725ae77Skettenis #include <stdio.h>
25*11efff7fSkettenis #include <stdlib.h>
26b725ae77Skettenis #include <string.h>
27b725ae77Skettenis 
28b725ae77Skettenis 
29b725ae77Skettenis /* X_string is a null-terminated string in the X charset whose
30b725ae77Skettenis    elements are as follows.  X should be the name the `set charset'
31b725ae77Skettenis    command uses for the character set, in lower-case, with any
32b725ae77Skettenis    non-identifier characters replaced with underscores.  Where a
33b725ae77Skettenis    character set doesn't have the given character, the string should
34b725ae77Skettenis    contain the character 'x'.
35b725ae77Skettenis 
36b725ae77Skettenis    [0] --- the `alert' character, '\a'
37b725ae77Skettenis    [1] --- the `backspace' character, '\b'
38b725ae77Skettenis    [2] --- the `form feed' character, '\f'
39b725ae77Skettenis    [3] --- the `line feed' character, '\n'
40b725ae77Skettenis    [4] --- the `carriage return' character, '\r'
41b725ae77Skettenis    [5] --- the `horizontal tab' character, '\t'
42b725ae77Skettenis    [6] --- the `vertical tab' character, '\v'
43b725ae77Skettenis    [7  .. 32] --- the uppercase letters A-Z
44b725ae77Skettenis    [33 .. 58] --- the lowercase letters a-z
45b725ae77Skettenis    [59 .. 68] --- the digits 0-9
46b725ae77Skettenis    [69] --- the `cent' character
47b725ae77Skettenis    [70] --- a control character with no defined backslash escape
48b725ae77Skettenis 
49b725ae77Skettenis    Feel free to extend these as you like.  */
50b725ae77Skettenis 
51b725ae77Skettenis #define NUM_CHARS (71)
52b725ae77Skettenis 
53b725ae77Skettenis char ascii_string[NUM_CHARS];
54b725ae77Skettenis char iso_8859_1_string[NUM_CHARS];
55b725ae77Skettenis char ebcdic_us_string[NUM_CHARS];
56b725ae77Skettenis char ibm1047_string[NUM_CHARS];
57b725ae77Skettenis 
58b725ae77Skettenis 
59b725ae77Skettenis void
init_string(char string[],char x,char alert,char backspace,char form_feed,char line_feed,char carriage_return,char horizontal_tab,char vertical_tab,char cent,char misc_ctrl)60b725ae77Skettenis init_string (char string[],
61b725ae77Skettenis              char x,
62b725ae77Skettenis              char alert, char backspace, char form_feed,
63b725ae77Skettenis              char line_feed, char carriage_return, char horizontal_tab,
64b725ae77Skettenis              char vertical_tab, char cent, char misc_ctrl)
65b725ae77Skettenis {
66b725ae77Skettenis   memset (string, x, NUM_CHARS);
67b725ae77Skettenis   string[0] = alert;
68b725ae77Skettenis   string[1] = backspace;
69b725ae77Skettenis   string[2] = form_feed;
70b725ae77Skettenis   string[3] = line_feed;
71b725ae77Skettenis   string[4] = carriage_return;
72b725ae77Skettenis   string[5] = horizontal_tab;
73b725ae77Skettenis   string[6] = vertical_tab;
74b725ae77Skettenis   string[69] = cent;
75b725ae77Skettenis   string[70] = misc_ctrl;
76b725ae77Skettenis }
77b725ae77Skettenis 
78b725ae77Skettenis 
79b725ae77Skettenis void
fill_run(char string[],int start,int len,int first)80b725ae77Skettenis fill_run (char string[], int start, int len, int first)
81b725ae77Skettenis {
82b725ae77Skettenis   int i;
83b725ae77Skettenis 
84b725ae77Skettenis   for (i = 0; i < len; i++)
85b725ae77Skettenis     string[start + i] = first + i;
86b725ae77Skettenis }
87b725ae77Skettenis 
88b725ae77Skettenis 
main()89b725ae77Skettenis int main ()
90b725ae77Skettenis {
91b725ae77Skettenis #ifdef usestubs
92b725ae77Skettenis   set_debug_traps();
93b725ae77Skettenis   breakpoint();
94b725ae77Skettenis #endif
95b725ae77Skettenis   (void) malloc (1);
96b725ae77Skettenis   /* Initialize ascii_string.  */
97b725ae77Skettenis   init_string (ascii_string,
98b725ae77Skettenis                120,
99b725ae77Skettenis                7, 8, 12,
100b725ae77Skettenis                10, 13, 9,
101b725ae77Skettenis                11, 120, 17);
102b725ae77Skettenis   fill_run (ascii_string, 7, 26, 65);
103b725ae77Skettenis   fill_run (ascii_string, 33, 26, 97);
104b725ae77Skettenis   fill_run (ascii_string, 59, 10, 48);
105b725ae77Skettenis 
106b725ae77Skettenis   /* Initialize iso_8859_1_string.  */
107b725ae77Skettenis   init_string (iso_8859_1_string,
108b725ae77Skettenis                120,
109b725ae77Skettenis                7, 8, 12,
110b725ae77Skettenis                10, 13, 9,
111b725ae77Skettenis                11, 162, 17);
112b725ae77Skettenis   fill_run (iso_8859_1_string, 7, 26, 65);
113b725ae77Skettenis   fill_run (iso_8859_1_string, 33, 26, 97);
114b725ae77Skettenis   fill_run (iso_8859_1_string, 59, 10, 48);
115b725ae77Skettenis 
116b725ae77Skettenis   /* Initialize ebcdic_us_string.  */
117b725ae77Skettenis   init_string (ebcdic_us_string,
118b725ae77Skettenis                167,
119b725ae77Skettenis                47, 22, 12,
120b725ae77Skettenis                37, 13, 5,
121b725ae77Skettenis                11, 74, 17);
122b725ae77Skettenis   /* In EBCDIC, the upper-case letters are broken into three separate runs.  */
123b725ae77Skettenis   fill_run (ebcdic_us_string, 7, 9, 193);
124b725ae77Skettenis   fill_run (ebcdic_us_string, 16, 9, 209);
125b725ae77Skettenis   fill_run (ebcdic_us_string, 25, 8, 226);
126b725ae77Skettenis   /* The lower-case letters are, too.  */
127b725ae77Skettenis   fill_run (ebcdic_us_string, 33, 9, 129);
128b725ae77Skettenis   fill_run (ebcdic_us_string, 42, 9, 145);
129b725ae77Skettenis   fill_run (ebcdic_us_string, 51, 8, 162);
130b725ae77Skettenis   /* The digits, at least, are contiguous.  */
131b725ae77Skettenis   fill_run (ebcdic_us_string, 59, 10, 240);
132b725ae77Skettenis 
133b725ae77Skettenis   /* Initialize ibm1047_string.  */
134b725ae77Skettenis   init_string (ibm1047_string,
135b725ae77Skettenis                167,
136b725ae77Skettenis                47, 22, 12,
137b725ae77Skettenis                37, 13, 5,
138b725ae77Skettenis                11, 74, 17);
139b725ae77Skettenis   /* In EBCDIC, the upper-case letters are broken into three separate runs.  */
140b725ae77Skettenis   fill_run (ibm1047_string, 7, 9, 193);
141b725ae77Skettenis   fill_run (ibm1047_string, 16, 9, 209);
142b725ae77Skettenis   fill_run (ibm1047_string, 25, 8, 226);
143b725ae77Skettenis   /* The lower-case letters are, too.  */
144b725ae77Skettenis   fill_run (ibm1047_string, 33, 9, 129);
145b725ae77Skettenis   fill_run (ibm1047_string, 42, 9, 145);
146b725ae77Skettenis   fill_run (ibm1047_string, 51, 8, 162);
147b725ae77Skettenis   /* The digits, at least, are contiguous.  */
148b725ae77Skettenis   fill_run (ibm1047_string, 59, 10, 240);
149b725ae77Skettenis 
150b725ae77Skettenis   puts ("All set!");            /* all strings initialized */
151b725ae77Skettenis }
152