diff options
author | Paul Eggert <eggert@cs.ucla.edu> | 2015-10-10 18:03:49 -0700 |
---|---|---|
committer | Paul Eggert <eggert@cs.ucla.edu> | 2015-10-10 18:11:27 -0700 |
commit | 29dfca23553b9995a8ec3b50090a652a6a0ecb01 (patch) | |
tree | a5d968df7cadd8259e029d89e6150dfe6762cb96 /build-aux | |
parent | ec0d4d24fd11b5040de9f7657b486c3b1e743071 (diff) |
Use ‘echo’ safely with ‘\’ or leading ‘-’
POSIX says that ‘echo FOO’ produces implementation-defined output
if FOO contains leading ‘-’, or ‘\’ anywhere, so don’t assume GNU
behavior in that case.
* Makefile.in (removenullpaths): Remove.
(epaths-force): Rewrite to avoid the need for ‘echo’.
(install-etc): Be clearer about escaping the shell metacharacters
‘\’ and ‘$’.
* Makefile.in (install-arch-indep, install-etcdoc):
* admin/charsets/mapconv, admin/merge-gnulib, admin/merge-pkg-config:
* admin/quick-install-emacs, build-aux/gitlog-to-emacslog:
* configure.ac, lib-src/rcs2log, make-dist:
* src/Makefile.in (lisp.mk):
Don’t assume ‘echo’ outputs ‘\’ and leading ‘-’ unscathed.
For example, use ‘printf '%s\n' "$foo"’ rather than ‘echo "$foo"’
if $foo can contain arbitrary characters.
* lisp/Makefile.in (TAGS): Use ‘ls’, not ‘echo’, to avoid ‘\’ issues.
* doc/lispref/two-volume.make (vol1.pdf):
* test/etags/make-src/Makefile (web ftp publish):
Use ‘printf’ rather than ‘echo -e’.
Diffstat (limited to 'build-aux')
-rwxr-xr-x | build-aux/gitlog-to-emacslog | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog index 51ef2a7fc7..3d61ba1e38 100755 --- a/build-aux/gitlog-to-emacslog +++ b/build-aux/gitlog-to-emacslog @@ -35,14 +35,14 @@ while [ $# -gt 0 ]; do -f|--force) force=1 ;; -n|--nmax) nmax="$2"; shift ;; -o|--output) output="$2" ; shift ;; - *) echo "Unrecognized argument: $1" >&2; exit 1 ;; + *) printf '%s\n' "Unrecognized argument: $1" >&2; exit 1 ;; esac shift done if [ ! -f ChangeLog.$nmax ]; then - echo "Can't find ChangeLog.$nmax" >&2 - echo "Must be run from the top source directory" >&2 + printf '%s\n' "Can't find ChangeLog.$nmax" >&2 + printf '%s\n' "Must be run from the top source directory" >&2 exit 1 fi @@ -52,7 +52,7 @@ fi gen_origin_line=` grep -E '^commit [0-9a-f]+ [(]inclusive[)]' ChangeLog.$nmax ` || { - echo "ChangeLog.$nmax lacks a 'commit ... (inclusive)' line" >&2 + printf '%s\n' "ChangeLog.$nmax lacks a 'commit ... (inclusive)' line" >&2 exit 1 } set $gen_origin_line @@ -63,7 +63,7 @@ fi new_origin=`git log --pretty=format:%H 'HEAD^!'` || exit if [ -f "$output" ]; then - [ ! "$force" ] && echo "$output exists" >&2 && exit 1 + [ ! "$force" ] && printf '%s\n' "$output exists" >&2 && exit 1 rm -f "$output" || exit 1 fi |