Author: jilles
Date: Tue Jun 23 22:53:34 2009
New Revision: 194786
URL: http://svn.freebsd.org/changeset/base/194786

Log:
  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)

Modified:
  head/bin/sh/eval.c

Modified: head/bin/sh/eval.c
==============================================================================
--- head/bin/sh/eval.c  Tue Jun 23 22:47:34 2009        (r194785)
+++ head/bin/sh/eval.c  Tue Jun 23 22:53:34 2009        (r194786)
@@ -642,17 +642,32 @@ evalcommand(union node *cmd, int flags, 
        /* 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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to