]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Quote shell commands in logs from build-many-glibcs.py.
authorJoseph Myers <joseph@codesourcery.com>
Fri, 18 Nov 2016 18:22:09 +0000 (18:22 +0000)
committerJoseph Myers <joseph@codesourcery.com>
Fri, 18 Nov 2016 18:22:09 +0000 (18:22 +0000)
As requested in
<https://sourceware.org/ml/libc-alpha/2016-11/msg00664.html>, this
patch makes the commands recorded in build-many-glibcs.py quote words
so they can be cut-and-pasted back into a shell.  (Note that these
logs are generated by the wrapper script generated to run commands
with logs, hence the needs for quoting logic to be implemented in that
shell script.)

* scripts/build-many-glibcs.py (Context.write_files): Make wrapper
script quote words in command output to log suitably for input to
the shell.

ChangeLog
scripts/build-many-glibcs.py

index 619111f582358433059295f463cac4793bee5eed..2232d456a5af467b9394c1d11e33808f28d29de6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-11-18  Joseph Myers  <joseph@codesourcery.com>
+
+       * scripts/build-many-glibcs.py (Context.write_files): Make wrapper
+       script quote words in command output to log suitably for input to
+       the shell.
+
 2016-11-18  Matthew Fortune  <Matthew.Fortune@imgtec.com>
            Maciej W. Rozycki  <macro@imgtec.com>
 
index b0e0f5e8ef2dd8331e94a238d55ada33b7bb275b..517dec4974aeed720b84aa07fe065a0d33f0fa1a 100755 (executable)
@@ -423,7 +423,17 @@ class Context(object):
             'date > "$this_log"\n'
             'echo >> "$this_log"\n'
             'echo "Description: $desc" >> "$this_log"\n'
-            'echo "Command: $*" >> "$this_log"\n'
+            'printf "%s" "Command:" >> "$this_log"\n'
+            'for word in "$@"; do\n'
+            '  if expr "$word" : "[]+,./0-9@A-Z_a-z-]\\\\{1,\\\\}\\$" > /dev/null; then\n'
+            '    printf " %s" "$word"\n'
+            '  else\n'
+            '    printf " \'"\n'
+            '    printf "%s" "$word" | sed -e "s/\'/\'\\\\\\\\\'\'/"\n'
+            '    printf "\'"\n'
+            '  fi\n'
+            'done >> "$this_log"\n'
+            'echo >> "$this_log"\n'
             'echo "Directory: $dir" >> "$this_log"\n'
             'echo "Path addition: $path" >> "$this_log"\n'
             'echo >> "$this_log"\n'