summaryrefslogtreecommitdiffstats
path: root/bin
diff options
context:
space:
mode:
authorjilles <jilles@FreeBSD.org>2009-06-23 22:53:34 +0000
committerjilles <jilles@FreeBSD.org>2009-06-23 22:53:34 +0000
commit3e00d0029ad8885cc6209293016ac09f816415ec (patch)
tree2cf0c57efdd587343b50c8f9f6389056f59789cb /bin
parent5bc3a65e406b90cd9e2a47b79117e453bdb56413 (diff)
downloadFreeBSD-src-3e00d0029ad8885cc6209293016ac09f816415ec.zip
FreeBSD-src-3e00d0029ad8885cc6209293016ac09f816415ec.tar.gz
Quote -x tracing output so it is unambiguous.
It is usually but not always suitable for re-input to the shell. Approved by: ed (mentor) (implicit)
Diffstat (limited to 'bin')
-rw-r--r--bin/sh/eval.c19
1 files changed, 17 insertions, 2 deletions
diff --git a/bin/sh/eval.c b/bin/sh/eval.c
index c0b2096..39e1660 100644
--- a/bin/sh/eval.c
+++ b/bin/sh/eval.c
@@ -642,17 +642,32 @@ evalcommand(union node *cmd, int flags, struct backcmd *backcmd)
/* Print the command if xflag is set. */
if (xflag) {
char sep = 0;
+ const char *p;
out2str(ps4val());
for (sp = varlist.list ; sp ; sp = sp->next) {
if (sep != 0)
outc(' ', &errout);
- out2str(sp->text);
+ p = sp->text;
+ while (*p != '=' && *p != '\0')
+ out2c(*p++);
+ if (*p != '\0') {
+ out2c(*p++);
+ out2qstr(p);
+ }
sep = ' ';
}
for (sp = arglist.list ; sp ; sp = sp->next) {
if (sep != 0)
outc(' ', &errout);
- out2str(sp->text);
+ /* Disambiguate command looking like assignment. */
+ if (sp == arglist.list &&
+ strchr(sp->text, '=') != NULL &&
+ strchr(sp->text, '\'') == NULL) {
+ out2c('\'');
+ out2str(sp->text);
+ out2c('\'');
+ } else
+ out2qstr(sp->text);
sep = ' ';
}
outc('\n', &errout);
OpenPOWER on IntegriCloud