1e93f7393Sniklas /* This table is used as a source for every ascii character.
2e93f7393Sniklas It is explicitly unsigned to avoid differences due to native characters
3e93f7393Sniklas being either signed or unsigned. */
4*b725ae77Skettenis #include <stdlib.h>
5e93f7393Sniklas unsigned char ctable1[256] = {
6e93f7393Sniklas 0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007,
7e93f7393Sniklas 0010, 0011, 0012, 0013, 0014, 0015, 0016, 0017,
8e93f7393Sniklas 0020, 0021, 0022, 0023, 0024, 0025, 0026, 0027,
9e93f7393Sniklas 0030, 0031, 0032, 0033, 0034, 0035, 0036, 0037,
10e93f7393Sniklas 0040, 0041, 0042, 0043, 0044, 0045, 0046, 0047,
11e93f7393Sniklas 0050, 0051, 0052, 0053, 0054, 0055, 0056, 0057,
12e93f7393Sniklas 0060, 0061, 0062, 0063, 0064, 0065, 0066, 0067,
13e93f7393Sniklas 0070, 0071, 0072, 0073, 0074, 0075, 0076, 0077,
14e93f7393Sniklas 0100, 0101, 0102, 0103, 0104, 0105, 0106, 0107,
15e93f7393Sniklas 0110, 0111, 0112, 0113, 0114, 0115, 0116, 0117,
16e93f7393Sniklas 0120, 0121, 0122, 0123, 0124, 0125, 0126, 0127,
17e93f7393Sniklas 0130, 0131, 0132, 0133, 0134, 0135, 0136, 0137,
18e93f7393Sniklas 0140, 0141, 0142, 0143, 0144, 0145, 0146, 0147,
19e93f7393Sniklas 0150, 0151, 0152, 0153, 0154, 0155, 0156, 0157,
20e93f7393Sniklas 0160, 0161, 0162, 0163, 0164, 0165, 0166, 0167,
21e93f7393Sniklas 0170, 0171, 0172, 0173, 0174, 0175, 0176, 0177,
22e93f7393Sniklas 0200, 0201, 0202, 0203, 0204, 0205, 0206, 0207,
23e93f7393Sniklas 0210, 0211, 0212, 0213, 0214, 0215, 0216, 0217,
24e93f7393Sniklas 0220, 0221, 0222, 0223, 0224, 0225, 0226, 0227,
25e93f7393Sniklas 0230, 0231, 0232, 0233, 0234, 0235, 0236, 0237,
26e93f7393Sniklas 0240, 0241, 0242, 0243, 0244, 0245, 0246, 0247,
27e93f7393Sniklas 0250, 0251, 0252, 0253, 0254, 0255, 0256, 0257,
28e93f7393Sniklas 0260, 0261, 0262, 0263, 0264, 0265, 0266, 0267,
29e93f7393Sniklas 0270, 0271, 0272, 0273, 0274, 0275, 0276, 0277,
30e93f7393Sniklas 0300, 0301, 0302, 0303, 0304, 0305, 0306, 0307,
31e93f7393Sniklas 0310, 0311, 0312, 0313, 0314, 0315, 0316, 0317,
32e93f7393Sniklas 0320, 0321, 0322, 0323, 0324, 0325, 0326, 0327,
33e93f7393Sniklas 0330, 0331, 0332, 0333, 0334, 0335, 0336, 0337,
34e93f7393Sniklas 0340, 0341, 0342, 0343, 0344, 0345, 0346, 0347,
35e93f7393Sniklas 0350, 0351, 0352, 0353, 0354, 0355, 0356, 0357,
36e93f7393Sniklas 0360, 0361, 0362, 0363, 0364, 0365, 0366, 0367,
37e93f7393Sniklas 0370, 0371, 0372, 0373, 0374, 0375, 0376, 0377
38e93f7393Sniklas };
39e93f7393Sniklas
40e93f7393Sniklas unsigned char ctable2[] = {
41e93f7393Sniklas 'a','X','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
42e93f7393Sniklas 'a','a','X','X','X','X','X','X','X','X','X','X','X','X','X','X',
43e93f7393Sniklas 'a','a','a','X','X','X','X','X','X','X','X','X','X','X','X','X',
44e93f7393Sniklas 'a','a','a','a','X','X','X','X','X','X','X','X','X','X','X','X',
45e93f7393Sniklas 'a','a','a','a','a','X','X','X','X','X','X','X','X','X','X','X',
46e93f7393Sniklas 'a','a','a','a','a','a','X','X','X','X','X','X','X','X','X','X',
47e93f7393Sniklas 'a','a','a','a','a','a','a','X','X','X','X','X','X','X','X','X',
48e93f7393Sniklas 'a','a','a','a','a','a','a','a','X','X','X','X','X','X','X','X',
49e93f7393Sniklas 'a','a','a','a','a','a','a','a','a','X','X','X','X','X','X','X',
50e93f7393Sniklas 'a','a','a','a','a','a','a','a','a','a','X','X','X','X','X','X',
51e93f7393Sniklas 'a','a','a','a','a','a','a','a','a','a','a','X','X','X','X','X',
52e93f7393Sniklas 'a','a','a','a','a','a','a','a','a','a','a','a','X','X','X','X',
53e93f7393Sniklas 'a','a','a','a','a','a','a','a','a','a','a','a','a','X','X','X',
54e93f7393Sniklas 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','X','X',
55e93f7393Sniklas 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','X',
56*b725ae77Skettenis 'a','a','a','a','a','a','a','a','a','a','a','a','a','a','a','a', 0
57e93f7393Sniklas };
58e93f7393Sniklas
59e93f7393Sniklas /* Single and multidimensional arrays to test access and printing of array
60e93f7393Sniklas members. */
61e93f7393Sniklas
62*b725ae77Skettenis typedef int ArrayInt [10];
63*b725ae77Skettenis ArrayInt a1 = {2,4,6,8,10,12,14,16,18,20};
64*b725ae77Skettenis
65*b725ae77Skettenis typedef char ArrayChar [5];
66*b725ae77Skettenis ArrayChar a2 = {'a','b','c','d','\0'};
67*b725ae77Skettenis
68e93f7393Sniklas int int1dim[12] = {0,1,2,3,4,5,6,7,8,9,10,11};
69e93f7393Sniklas int int2dim[3][4] = {{0,1,2,3},{4,5,6,7},{8,9,10,11}};
70e93f7393Sniklas int int3dim[2][3][2] = {{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}};
71e93f7393Sniklas int int4dim[1][2][3][2] = {{{{0,1},{2,3},{4,5}},{{6,7},{8,9},{10,11}}}};
72e93f7393Sniklas
73*b725ae77Skettenis char *teststring = (char*)"teststring contents";
74e93f7393Sniklas
75e93f7393Sniklas /* Test printing of a struct containing character arrays. */
76e93f7393Sniklas
77e93f7393Sniklas struct some_arrays {
78e93f7393Sniklas unsigned char array1[4];
79e93f7393Sniklas unsigned char array2[1];
80e93f7393Sniklas unsigned char array3[1];
81e93f7393Sniklas unsigned char array4[2];
82e93f7393Sniklas unsigned char array5[4];
83e93f7393Sniklas } arrays = {
84e93f7393Sniklas {'a', 'b', 'c', '\0'},
85e93f7393Sniklas {'d'},
86e93f7393Sniklas {'e'},
87e93f7393Sniklas {'f', 'g' },
88e93f7393Sniklas {'h', 'i', 'j', '\0'}
89e93f7393Sniklas };
90e93f7393Sniklas
91e93f7393Sniklas struct some_arrays *parrays = &arrays;
92e93f7393Sniklas
93e93f7393Sniklas /* -- */
94e93f7393Sniklas
main()95*b725ae77Skettenis int main ()
96e93f7393Sniklas {
97e93f7393Sniklas #ifdef usestubs
98e93f7393Sniklas set_debug_traps();
99e93f7393Sniklas breakpoint();
100e93f7393Sniklas #endif
101e93f7393Sniklas malloc(1);
102e93f7393Sniklas
103e93f7393Sniklas /* Prevent AIX linker from removing variables. */
104e93f7393Sniklas return ctable1[0] + ctable2[0] + int1dim[0] + int2dim[0][0]
105e93f7393Sniklas + int3dim[0][0][0] + int4dim[0][0][0][0] + teststring[0] +
106*b725ae77Skettenis *parrays -> array1 + a1[0] + a2[0];
107e93f7393Sniklas }
108