1#ifdef PROTOTYPES 2int main (int argc, char **argv, char **envp) 3#else 4main (argc, argv, envp) 5 int argc; 6 char **argv; 7 char **envp; 8#endif 9{ 10 extern void dummy(); 11#ifdef usestubs 12 set_debug_traps(); 13 breakpoint(); 14#endif 15 dummy(); 16 return 0; 17 18} 19 20/* We put main() right up front so its line number doesn't keep changing. */ 21 22/* 23 * Test file with lots of different types, for testing the 24 * "whatis" command. 25 */ 26 27/* 28 * First the basic C types. 29 */ 30 31#if !defined (__STDC__) && !defined (_AIX) 32#define signed /**/ 33#endif 34 35char v_char; 36signed char v_signed_char; 37unsigned char v_unsigned_char; 38 39short v_short; 40signed short v_signed_short; 41unsigned short v_unsigned_short; 42 43int v_int; 44signed int v_signed_int; 45unsigned int v_unsigned_int; 46 47long v_long; 48signed long v_signed_long; 49unsigned long v_unsigned_long; 50 51float v_float; 52double v_double; 53/* 54 * Now some derived types, which are arrays, functions-returning, 55 * pointers, structures, unions, and enumerations. 56 */ 57 58/**** arrays *******/ 59 60char v_char_array[2]; 61signed char v_signed_char_array[2]; 62unsigned char v_unsigned_char_array[2]; 63 64short v_short_array[2]; 65signed short v_signed_short_array[2]; 66unsigned short v_unsigned_short_array[2]; 67 68int v_int_array[2]; 69signed int v_signed_int_array[2]; 70unsigned int v_unsigned_int_array[2]; 71 72long v_long_array[2]; 73signed long v_signed_long_array[2]; 74unsigned long v_unsigned_long_array[2]; 75 76float v_float_array[2]; 77double v_double_array[2]; 78/**** pointers *******/ 79 80char *v_char_pointer; 81signed char *v_signed_char_pointer; 82unsigned char *v_unsigned_char_pointer; 83 84short *v_short_pointer; 85signed short *v_signed_short_pointer; 86unsigned short *v_unsigned_short_pointer; 87 88int *v_int_pointer; 89signed int *v_signed_int_pointer; 90unsigned int *v_unsigned_int_pointer; 91 92long *v_long_pointer; 93signed long *v_signed_long_pointer; 94unsigned long *v_unsigned_long_pointer; 95 96float *v_float_pointer; 97double *v_double_pointer; 98 99/**** structs *******/ 100 101struct t_struct { 102 char v_char_member; 103 short v_short_member; 104 int v_int_member; 105 long v_long_member; 106 float v_float_member; 107 double v_double_member; 108} v_struct1; 109 110struct { 111 char v_char_member; 112 short v_short_member; 113 int v_int_member; 114 long v_long_member; 115 float v_float_member; 116 double v_double_member; 117} v_struct2; 118 119/**** unions *******/ 120 121union t_union { 122 char v_char_member; 123 short v_short_member; 124 int v_int_member; 125 long v_long_member; 126 float v_float_member; 127 double v_double_member; 128} v_union; 129 130union { 131 char v_char_member; 132 short v_short_member; 133 int v_int_member; 134 long v_long_member; 135 float v_float_member; 136 double v_double_member; 137} v_union2; 138 139/*** Functions returning type ********/ 140 141char v_char_func () { return(0); } 142signed char v_signed_char_func () { return (0); } 143unsigned char v_unsigned_char_func () { return (0); } 144 145short v_short_func () { return (0); } 146signed short v_signed_short_func () { return (0); } 147unsigned short v_unsigned_short_func () { return (0); } 148 149int v_int_func () { return (0); } 150signed int v_signed_int_func () { return (0); } 151unsigned int v_unsigned_int_func () { return (0); } 152 153long v_long_func () { return (0); } 154signed long v_signed_long_func () { return (0); } 155unsigned long v_unsigned_long_func () { return (0); } 156 157float v_float_func () { return (0.0); } 158double v_double_func () { return (0.0); } 159 160/**** Some misc more complicated things *******/ 161 162struct link { 163 struct link *next; 164#ifdef __STDC__ 165 struct link *(*linkfunc) (struct link *this, int flags); 166#else 167 struct link *(*linkfunc) (); 168#endif 169 struct t_struct stuff[1][2][3]; 170} *s_link; 171 172union tu_link { 173 struct link *next; 174#ifdef __STDC__ 175 struct link *(*linkfunc) (struct link *this, int flags); 176#else 177 struct link *(*linkfunc) (); 178#endif 179 struct t_struct stuff[1][2][3]; 180} u_link; 181 182/**** Enumerations *******/ 183 184enum colors {red, green, blue} color; 185enum cars {chevy, ford, porsche} clunker; 186 187 188void dummy() 189{ 190 /* Some linkers (e.g. on AIX) remove unreferenced variables, 191 so make sure to reference them. */ 192 v_char = 0; 193 v_signed_char = 1; 194 v_unsigned_char = 2; 195 196 v_short = 3; 197 v_signed_short = 4; 198 v_unsigned_short = 5; 199 200 v_int = 6; 201 v_signed_int = 7; 202 v_unsigned_int = 8; 203 204 v_long = 9; 205 v_signed_long = 10; 206 v_unsigned_long = 11; 207 208 v_float = 100.0; 209 v_double = 200.0; 210 v_char_array[0] = v_char; 211 v_signed_char_array[0] = v_signed_char; 212 v_unsigned_char_array[0] = v_unsigned_char; 213 214 v_short_array[0] = v_short; 215 v_signed_short_array[0] = v_signed_short; 216 v_unsigned_short_array[0] = v_unsigned_short; 217 218 v_int_array[0] = v_int; 219 v_signed_int_array[0] = v_signed_int; 220 v_unsigned_int_array[0] = v_unsigned_int; 221 222 v_long_array[0] = v_long; 223 v_signed_long_array[0] = v_signed_long; 224 v_unsigned_long_array[0] = v_unsigned_long; 225 226 v_float_array[0] = v_float; 227 v_double_array[0] = v_double; 228 v_char_pointer = &v_char; 229 v_signed_char_pointer = &v_signed_char; 230 v_unsigned_char_pointer = &v_unsigned_char; 231 232 v_short_pointer = &v_short; 233 v_signed_short_pointer = &v_signed_short; 234 v_unsigned_short_pointer = &v_unsigned_short; 235 236 v_int_pointer = &v_int; 237 v_signed_int_pointer = &v_signed_int; 238 v_unsigned_int_pointer = &v_unsigned_int; 239 240 v_long_pointer = &v_long; 241 v_signed_long_pointer = &v_signed_long; 242 v_unsigned_long_pointer = &v_unsigned_long; 243 244 v_float_pointer = &v_float; 245 v_double_pointer = &v_double; 246 247 color = red; 248 clunker = porsche; 249 250 u_link.next = s_link; 251 252 v_struct2.v_int_member = v_struct1.v_int_member; 253 v_union2.v_short_member = v_union.v_short_member; 254} 255