| 218 | #define eventname(i) (getstr(tmname[i])) |
| 219 | |
| 220 | static void PrintString(const TString* ts) |
| 221 | { |
| 222 | const char* s=getstr(ts); |
| 223 | size_t i,n=tsslen(ts); |
| 224 | printf("\""); |
| 225 | for (i=0; i<n; i++) |
| 226 | { |
| 227 | int c=(int)(unsigned char)s[i]; |
| 228 | switch (c) |
| 229 | { |
| 230 | case '"': |
| 231 | printf("\\\""); |
| 232 | break; |
| 233 | case '\\': |
| 234 | printf("\\\\"); |
| 235 | break; |
| 236 | case '\a': |
| 237 | printf("\\a"); |
| 238 | break; |
| 239 | case '\b': |
| 240 | printf("\\b"); |
| 241 | break; |
| 242 | case '\f': |
| 243 | printf("\\f"); |
| 244 | break; |
| 245 | case '\n': |
| 246 | printf("\\n"); |
| 247 | break; |
| 248 | case '\r': |
| 249 | printf("\\r"); |
| 250 | break; |
| 251 | case '\t': |
| 252 | printf("\\t"); |
| 253 | break; |
| 254 | case '\v': |
| 255 | printf("\\v"); |
| 256 | break; |
| 257 | default: |
| 258 | if (isprint(c)) printf("%c",c); else printf("\\%03d",c); |
| 259 | break; |
| 260 | } |
| 261 | } |
| 262 | printf("\""); |
| 263 | } |
| 264 | |
| 265 | static void PrintType(const Proto* f, int i) |
| 266 | { |