diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-07-27 17:43:09 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1993-07-27 17:43:09 +0000 |
commit | 38bbfd37955ebeb355922d7dad7d33d64537d5f2 (patch) | |
tree | f9d1de18bbd98a9c6d63fc678adeb35a82b41e64 /gdb/fork-child.c | |
parent | 4e95866e2c5d769e6b7db09ca3247d497af941c9 (diff) | |
download | gdb-38bbfd37955ebeb355922d7dad7d33d64537d5f2.zip gdb-38bbfd37955ebeb355922d7dad7d33d64537d5f2.tar.gz gdb-38bbfd37955ebeb355922d7dad7d33d64537d5f2.tar.bz2 |
* fork-child.c (fork_inferior): Only quote exec file if needed.
* mipsread.c (parse_symbol): Remove 21 Jul 93 change with
stTypedef inside an stBlock.
Diffstat (limited to 'gdb/fork-child.c')
-rw-r--r-- | gdb/fork-child.c | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/gdb/fork-child.c b/gdb/fork-child.c index b413889..40f7680 100644 --- a/gdb/fork-child.c +++ b/gdb/fork-child.c @@ -97,20 +97,58 @@ fork_inferior (exec_file, allargs, env, traceme_fun, init_trace_fun) #endif strcat (shell_command, "exec "); - /* Now add exec_file, quoting as necessary. Quoting in this style is - said to work with all shells. */ + /* Now add exec_file, quoting as necessary. */ { char *p; + int need_to_quote; - strcat (shell_command, "'"); - for (p = exec_file; *p != '\0'; ++p) + /* Quoting in this style is said to work with all shells. But csh + on IRIX 4.0.1 can't deal with it. So we only quote it if we need + to. */ + p = exec_file; + while (1) { - if (*p == '\'') - strcat (shell_command, "'\\''"); - else - strncat (shell_command, p, 1); + switch (*p) + { + case '\'': + case '"': + case '(': + case ')': + case '$': + case '&': + case ';': + case '<': + case '>': + case ' ': + case '\n': + case '\t': + need_to_quote = 1; + goto end_scan; + + case '\0': + need_to_quote = 0; + goto end_scan; + + default: + break; + } + ++p; + } + end_scan: + if (need_to_quote) + { + strcat (shell_command, "'"); + for (p = exec_file; *p != '\0'; ++p) + { + if (*p == '\'') + strcat (shell_command, "'\\''"); + else + strncat (shell_command, p, 1); + } + strcat (shell_command, "'"); } - strcat (shell_command, "'"); + else + strcat (shell_command, exec_file); } strcat (shell_command, " "); |