| 514 | } |
| 515 | |
| 516 | static void dump_argument(FILE *report_file, const char *a) |
| 517 | { |
| 518 | const unsigned char *p; |
| 519 | |
| 520 | for (p = a; *p; p++) |
| 521 | if (!((*p >= '+' && *p <= ':') || (*p >= '@' && *p <= 'Z') || |
| 522 | *p == '_' || (*p >= 'a' && *p <= 'z'))) |
| 523 | break; |
| 524 | if (!*p) { |
| 525 | fputs(a, report_file); |
| 526 | return; |
| 527 | } |
| 528 | fputc('"', report_file); |
| 529 | for (p = a; *p; p++) { |
| 530 | if (*p == '\\' || *p == '"' || *p == '$' || *p == '`') |
| 531 | fprintf(report_file, "\\%c", *p); |
| 532 | else if (*p < ' ' || *p > '~') |
| 533 | fprintf(report_file, "\\x%02x", *p); |
| 534 | else |
| 535 | fputc(*p, report_file); |
| 536 | } |
| 537 | fputc('"', report_file); |
| 538 | } |
| 539 | |
| 540 | static void check_options(const OptionDef *po) |
| 541 | { |