diff options
| author | Paul Eggert | 2015-10-10 18:03:49 -0700 |
|---|---|---|
| committer | Paul Eggert | 2015-10-10 18:11:27 -0700 |
| commit | 29dfca23553b9995a8ec3b50090a652a6a0ecb01 (patch) | |
| tree | a5d968df7cadd8259e029d89e6150dfe6762cb96 /make-dist | |
| parent | ec0d4d24fd11b5040de9f7657b486c3b1e743071 (diff) | |
| download | emacs-29dfca23553b9995a8ec3b50090a652a6a0ecb01.tar.gz emacs-29dfca23553b9995a8ec3b50090a652a6a0ecb01.zip | |
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 'make-dist')
| -rwxr-xr-x | make-dist | 24 |
1 files changed, 13 insertions, 11 deletions
| @@ -110,7 +110,7 @@ while [ $# -gt 0 ]; do | |||
| 110 | ;; | 110 | ;; |
| 111 | 111 | ||
| 112 | "--help") | 112 | "--help") |
| 113 | echo "Usage: ${progname} [options]" | 113 | printf '%s\n' "Usage: ${progname} [options]" |
| 114 | echo "" | 114 | echo "" |
| 115 | echo " --bzip2 use bzip2 instead of gzip" | 115 | echo " --bzip2 use bzip2 instead of gzip" |
| 116 | echo " --clean-up delete staging directories when done" | 116 | echo " --clean-up delete staging directories when done" |
| @@ -128,7 +128,7 @@ while [ $# -gt 0 ]; do | |||
| 128 | ;; | 128 | ;; |
| 129 | 129 | ||
| 130 | * ) | 130 | * ) |
| 131 | echo "${progname}: Unrecognized argument: $1" >&2 | 131 | printf '%s\n' "${progname}: Unrecognized argument: $1" >&2 |
| 132 | exit 1 | 132 | exit 1 |
| 133 | ;; | 133 | ;; |
| 134 | esac | 134 | esac |
| @@ -137,9 +137,9 @@ done | |||
| 137 | 137 | ||
| 138 | ### Make sure we're running in the right place. | 138 | ### Make sure we're running in the right place. |
| 139 | if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/subr.el ]; then | 139 | if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/subr.el ]; then |
| 140 | echo "${progname}: Can't find 'src/lisp.h' and 'lisp/subr.el'." >&2 | 140 | printf '%s\n' "${progname}: Can't find 'src/lisp.h' and 'lisp/subr.el'." >&2 |
| 141 | echo "${progname} must be run in the top directory of the Emacs" >&2 | 141 | printf '%s\n' "${progname} must be run in the top directory of the Emacs" >&2 |
| 142 | echo "distribution tree. cd to that directory and try again." >&2 | 142 | printf '%s\n' "distribution tree. cd to that directory and try again." >&2 |
| 143 | exit 1 | 143 | exit 1 |
| 144 | fi | 144 | fi |
| 145 | 145 | ||
| @@ -155,7 +155,7 @@ then | |||
| 155 | /*) ;; | 155 | /*) ;; |
| 156 | *) | 156 | *) |
| 157 | if [ ! -f "$EMACS" ]; then | 157 | if [ ! -f "$EMACS" ]; then |
| 158 | echo "$0: You must set the EMACS environment variable " \ | 158 | printf '%s\n' "$0: You must set the EMACS environment variable " \ |
| 159 | "to an absolute file name." 2>&1 | 159 | "to an absolute file name." 2>&1 |
| 160 | exit 1 | 160 | exit 1 |
| 161 | fi;; | 161 | fi;; |
| @@ -168,7 +168,8 @@ version=` | |||
| 168 | sed -n 's/^AC_INIT(GNU Emacs,[ ]*\([^ ,)]*\).*/\1/p' <configure.ac | 168 | sed -n 's/^AC_INIT(GNU Emacs,[ ]*\([^ ,)]*\).*/\1/p' <configure.ac |
| 169 | ` || version= | 169 | ` || version= |
| 170 | if [ ! "${version}" ]; then | 170 | if [ ! "${version}" ]; then |
| 171 | echo "${progname}: can't find current Emacs version in './src/emacs.c'" >&2 | 171 | printf '%s\n' \ |
| 172 | "${progname}: can't find current Emacs version in './src/emacs.c'" >&2 | ||
| 172 | exit 1 | 173 | exit 1 |
| 173 | fi | 174 | fi |
| 174 | 175 | ||
| @@ -195,7 +196,7 @@ fi | |||
| 195 | ### Make sure the subdirectory is available. | 196 | ### Make sure the subdirectory is available. |
| 196 | tempparent="make-dist.tmp.$$" | 197 | tempparent="make-dist.tmp.$$" |
| 197 | if [ -d ${tempparent} ]; then | 198 | if [ -d ${tempparent} ]; then |
| 198 | echo "${progname}: staging directory '${tempparent}' already exists. | 199 | printf '%s\n' "${progname}: staging directory '${tempparent}' already exists. |
| 199 | Perhaps a previous invocation of '${progname}' failed to clean up after | 200 | Perhaps a previous invocation of '${progname}' failed to clean up after |
| 200 | itself. Check that directories whose names are of the form | 201 | itself. Check that directories whose names are of the form |
| 201 | 'make-dist.tmp.NNNNN' don't contain any important information, remove | 202 | 'make-dist.tmp.NNNNN' don't contain any important information, remove |
| @@ -530,7 +531,7 @@ for subdir in . etc leim lib lib-src lisp lwlib msdos nt src; do | |||
| 530 | done | 531 | done |
| 531 | 532 | ||
| 532 | if [ "${newer}" ]; then | 533 | if [ "${newer}" ]; then |
| 533 | echo "Removing files older than $newer" | 534 | printf '%s\n' "Removing files older than $newer" |
| 534 | ## We remove .elc files unconditionally, on the theory that anyone picking | 535 | ## We remove .elc files unconditionally, on the theory that anyone picking |
| 535 | ## up an incremental distribution already has a running Emacs to byte-compile | 536 | ## up an incremental distribution already has a running Emacs to byte-compile |
| 536 | ## them with. | 537 | ## them with. |
| @@ -544,8 +545,9 @@ find ${tempparent} \( -name '*~' -o -name '#*#' -o -name '.*ignore' -o -name '=* | |||
| 544 | if [ "${make_tar}" = yes ]; then | 545 | if [ "${make_tar}" = yes ]; then |
| 545 | echo "Looking for $default_gzip" | 546 | echo "Looking for $default_gzip" |
| 546 | found=0 | 547 | found=0 |
| 547 | temppath=`echo $PATH | sed -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \ | 548 | temppath=`printf '%s\n' "$PATH" | |
| 548 | -e 's/:/ /g'` | 549 | sed -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' -e 's/:/ /g' |
| 550 | ` | ||
| 549 | for dir in ${temppath}; do | 551 | for dir in ${temppath}; do |
| 550 | [ -x ${dir}/$default_gzip ] || continue | 552 | [ -x ${dir}/$default_gzip ] || continue |
| 551 | found=1; break | 553 | found=1; break |