summaryrefslogtreecommitdiff
path: root/build-aux
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2015-10-10 18:03:49 -0700
committerPaul Eggert <eggert@cs.ucla.edu>2015-10-10 18:11:27 -0700
commit29dfca23553b9995a8ec3b50090a652a6a0ecb01 (patch)
treea5d968df7cadd8259e029d89e6150dfe6762cb96 /build-aux
parentec0d4d24fd11b5040de9f7657b486c3b1e743071 (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-xbuild-aux/gitlog-to-emacslog10
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