From: Paul Eggert Date: Sun, 11 Oct 2015 01:03:49 +0000 (-0700) Subject: Use ‘echo’ safely with ‘\’ or leading ‘-’ X-Git-Tag: emacs-25.0.90~1169 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=29dfca23553b9995a8ec3b50090a652a6a0ecb01;p=emacs.git 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’. --- diff --git a/Makefile.in b/Makefile.in index 4ee84f96ad6..1245f76fabf 100644 --- a/Makefile.in +++ b/Makefile.in @@ -314,8 +314,6 @@ etc-emacsver: ${srcdir}/build-aux/move-if-change emacsver.tex.$$$$ \ ${srcdir}/etc/refcards/emacsver.tex -removenullpaths=sed -e 's/^:*//' -e 's/:*$$//g' -e 's/::*/:/g' - # Generate epaths.h from epaths.in. This target is invoked by 'configure'. # See comments in configure.ac for why it is done this way, as opposed # to just letting configure generate epaths.h from epaths.in in a @@ -324,20 +322,18 @@ epaths-force: @for dir in '$(abs_srcdir)' '$(lispdir)' '$(archlibdir)'; do \ case $$dir in \ *:*) \ - echo >&2 "Build or installation directory '$$dir'"; \ + printf >&2 "Build or installation directory '%s'\\n" "$$dir"; \ echo >&2 "cannot contain ':'."; \ exit 1;; \ esac; \ done - @(standardlisppath=`echo "${standardlisppath}" | ${removenullpaths}` ; \ - locallisppath=`echo "${locallisppath}" | ${removenullpaths}` ; \ - buildlisppath=`echo "${buildlisppath}" | ${removenullpaths}` ; \ - x_default_search_path=`echo ${x_default_search_path}`; \ - gamedir=`echo ${gamedir}`; \ + @(gamedir='${gamedir}'; \ sed < ${srcdir}/src/epaths.in > epaths.h.$$$$ \ - -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "'"$${standardlisppath}"'";' \ - -e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "'"$${locallisppath}"'";' \ - -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "'"$${buildlisppath}"'";' \ + -e 's;\(#.*PATH_LOADSEARCH\).*$$;\1 "${standardlisppath}";' \ + -e 's;\(#.*PATH_SITELOADSEARCH\).*$$;\1 "${locallisppath}";' \ + -e 's;\(#.*PATH_DUMPLOADSEARCH\).*$$;\1 "${buildlisppath}";' \ + -e '/^#define PATH_[^ ]*SEARCH /s/\([":]\):*/\1/g' \ + -e '/^#define PATH_[^ ]*SEARCH /s/:"/"/' \ -e 's;\(#.*PATH_EXEC\).*$$;\1 "${archlibdir}";' \ -e 's;\(#.*PATH_INFO\).*$$;\1 "${infodir}";' \ -e 's;\(#.*PATH_DATA\).*$$;\1 "${etcdir}";' \ @@ -577,7 +573,7 @@ install-arch-indep: lisp install-info install-man ${INSTALL_ARCH_INDEP_EXTRA} fi; \ rm -rf "$${dest}" ; \ umask 022; ${MKDIR_P} "$${dest}" ; \ - echo "Copying $${dir} to $${dest}..." ; \ + printf 'Copying %s to %s...\n' "$$dir" "$$dest" ; \ (cd $${dir}; tar -chf - . ) \ | (cd "$${dest}"; umask 022; \ tar -xvf - && cat > /dev/null) || exit 1; \ @@ -632,7 +628,8 @@ install-etcdoc: src install-arch-indep if [ "`cd ./etc; /bin/pwd`" != "$$exp_etcdocdir" ]; \ then \ docfile="DOC"; \ - echo "Copying etc/$${docfile} to $(DESTDIR)${etcdocdir} ..." ; \ + printf 'Copying %s to %s ...\n' "etc/$$docfile" \ + "$(DESTDIR)${etcdocdir}"; \ ${INSTALL_DATA} etc/$${docfile} "$(DESTDIR)${etcdocdir}/$${docfile}"; \ $(set_installuser); \ chown $${installuser} "$(DESTDIR)${etcdocdir}/$${docfile}" || true ; \ @@ -721,7 +718,7 @@ install-etc: for icon in $${dir}/${EMACS_ICON}[.-]*; do \ [ -r $${icon} ] || continue ; \ ext=`echo "$${icon}" | sed -e 's|.*\.||'`; \ - dest=`echo "$${icon}" | sed -e 's|.*/||' -e "s|\.$${ext}$$||" -e 's/$(EMACS_ICON)/emacs/' -e '$(TRANSFORM)'`.$${ext} ; \ + dest=`echo "$${icon}" | sed -e 's|.*/||' -e "s|\\.$${ext}\$$||" -e 's/$(EMACS_ICON)/emacs/' -e '$(TRANSFORM)'`.$${ext} ; \ ( cd "$${thisdir}"; \ ${INSTALL_DATA} ${iconsrcdir}/$${icon} "$(DESTDIR)${icondir}/$${dir}/$${dest}" ) \ || exit 1; \ diff --git a/admin/charsets/mapconv b/admin/charsets/mapconv index 32ba6421a86..3747ae2ad77 100755 --- a/admin/charsets/mapconv +++ b/admin/charsets/mapconv @@ -64,7 +64,7 @@ case "$3" in KANJI-DATABASE) SOURCE="http://kanji-database.cvs.sourceforge.net/viewvc/*checkout*/kanji-database/kanji-database/data/cns2ucsdkw.txt?revision=1.4";; *) - echo "Unknown file type: $3"; + printf 'Unknown file type: %s\n' "$3" exit 1;; esac @@ -147,7 +147,6 @@ elif [ "$3" = "KANJI-DATABASE" ] ; then | sed -e 's/...\(....\) U+\([0-9A-F]*\).*/0x\1 0x\2/' \ | sort | ${AWKPROG} else - echo "Invalid arguments: $3" + printf 'Invalid arguments: %s\n' "$3" exit 1 fi - diff --git a/admin/merge-gnulib b/admin/merge-gnulib index 963c3a06e1a..818dc1afce9 100755 --- a/admin/merge-gnulib +++ b/admin/merge-gnulib @@ -71,7 +71,7 @@ case $gnulib_srcdir in esac case $src in -*) - echo >&2 "$0: usage: $0 [GNULIB_SRCDIR [SRCDIR]] + printf '%s\n' >&2 "$0: usage: $0 [GNULIB_SRCDIR [SRCDIR]] SRCDIR is the Emacs source directory (default: working directory). GNULIB_SRCDIR is the Gnulib source directory (default: SRCDIR/../gnulib)." @@ -79,7 +79,7 @@ case $src in esac test -x "$src"autogen.sh || { - echo >&2 "$0: '${src:-.}' is not an Emacs source directory." + printf '%s\n' >&2 "$0: '${src:-.}' is not an Emacs source directory." exit 1 } @@ -88,7 +88,7 @@ git clone -- "$GNULIB_URL" "$gnulib_srcdir" || exit test -x "$gnulib_srcdir"/gnulib-tool || { - echo >&2 "$0: '$gnulib_srcdir' is not a Gnulib source directory." + printf '%s\n' >&2 "$0: '$gnulib_srcdir' is not a Gnulib source directory." exit 1 } diff --git a/admin/merge-pkg-config b/admin/merge-pkg-config index 2ee633d36c1..302937269df 100755 --- a/admin/merge-pkg-config +++ b/admin/merge-pkg-config @@ -49,15 +49,15 @@ test -n "$dir" } || { - echo >&2 "$0: cannot find pkg.m4" + printf >&2 '%s\n' "$0: cannot find pkg.m4" exit 1 } test -d m4 || { - echo >&2 "$0: please run this command in the main source directory" + printf >&2 '%s\n' "$0: please run this command in the main source directory" exit 1 } -echo >&2 "$0: copying $dir/pkg.m4 to m4/pkg.m4" +printf >&2 '%s\n' "$0: copying $dir/pkg.m4 to m4/pkg.m4" cp $dir/pkg.m4 m4 diff --git a/admin/quick-install-emacs b/admin/quick-install-emacs index 55510fb0252..4de7416e3d6 100755 --- a/admin/quick-install-emacs +++ b/admin/quick-install-emacs @@ -121,11 +121,11 @@ EOF -[!-]?*) # split concatenated single-letter options apart FIRST="$1"; shift - set -- `echo $FIRST | sed 's/-\(.\)\(.*\)/-\1 -\2/'` "$@" + set -- `printf '%s\n' "$FIRST" | sed 's/-\(.\)\(.*\)/-\1 -\2/'` "$@" ;; -*) - echo 1>&2 "$me: unrecognized option '$1'" - echo 1>&2 "$TRY" + printf '%s\n' >&2 "$me: unrecognized option '$1'" + printf '%s\n' >&2 "$TRY" exit 1 ;; *) @@ -140,17 +140,18 @@ case $# in 1) BUILD="$1";; 2) BUILD="$1"; prefix="$2";; *) - echo 1>&2 "$USAGE" - echo 1>&2 "$TRY" + printf '%s\n' >&2 "$USAGE" + printf '%s\n' >&2 "$TRY" exit 1 ;; esac if test ! -d "$BUILD"; then - echo 1>&2 "$me: $BUILD: Build tree not found" + printf '%s\n' >&2 "$me: $BUILD: Build tree not found" exit 2 elif test ! -r "$BUILD/config.status"; then - echo 1>&2 "$me: $BUILD: Not a proper build tree, config.status not found" + printf '%s\n' >&2 \ + "$me: $BUILD: Not a proper build tree, config.status not found" exit 2 fi @@ -160,7 +161,8 @@ get_config_var () { sed -n "s/^S[[]\"$1\"[]]=\"\([^\"]*\)\"/\1/p" $CONFIG_STATUS | sed q | grep ''; } || { sed -n "s/^s\(.\)@$1@\1\(|#_!!_#|\)*\(.*\)\1.*$/\3/p" $CONFIG_STATUS | sed q | grep ''; } || { - echo 1>&2 "$me: $1: Configuration variable not found in $CONFIG_STATUS" + printf '%s\n' >&2 \ + "$me: $1: Configuration variable not found in $CONFIG_STATUS" exit 4 } } @@ -172,7 +174,7 @@ test x"$ARCH" = x && { ARCH="`get_config_var host`" || exit 4 ; } VERSION=` sed -n 's/^AC_INIT(emacs,[ ]*\([^ )]*\).*/\1/p' <$SRC/configure.ac ` || exit 4 -test -n "$VERSION" || { echo >&2 "$me: no version in configure.ac"; exit 4; } +test -n "$VERSION" || { printf '%s\n' >&2 "$me: no version in configure.ac"; exit 4; } DST_SHARE="$prefix/share/emacs/$VERSION" DST_BIN="$prefix/bin" @@ -209,7 +211,7 @@ maybe_mkdir "$DST_INFO" PRUNED="" if test x"$PRUNE" != xno; then for D in `ls -1t $BUILD/src/emacs-$VERSION.* | sed 1d`; do - echo $REMOVE_CMD $D + printf '%s\n' "$REMOVE_CMD $D" PRUNED="$PRUNED $D" done fi @@ -219,7 +221,7 @@ test x"$PRUNE" = xonly && exit 0 maybe_emit_copy () { if test "$FORCE" = yes || ! cmp -s $1 $2; then - echo $LINK_CMD $1 $2 + printf '%s\n' "$LINK_CMD $1 $2" fi } @@ -240,7 +242,7 @@ for SUBDIR in lisp leim etc lib-src info; do # defaults SHARED=no FORCED='' - AVOID_PAT="`echo "($AVOID)" | tr ' ' '|'`" + AVOID_PAT="`printf '%s\n' "($AVOID)" | tr ' ' '|'`" # Set subdir-specific values case $SUBDIR in @@ -255,7 +257,7 @@ for SUBDIR in lisp leim etc lib-src info; do ;; lib-src) DST="$DST_LIBEXEC" - AVOID_PAT="`echo "($AVOID ($PUBLIC_LIBSRC_BINARIES)\$)" | tr ' ' '|'`" + AVOID_PAT="`printf '%s\n' "($AVOID ($PUBLIC_LIBSRC_BINARIES)\$)" | tr ' ' '|'`" ;; info) DST="$DST_INFO" @@ -267,10 +269,10 @@ for SUBDIR in lisp leim etc lib-src info; do if [ -d $PFX/$SUBDIR ]; then for DIR in `(cd $PFX/$SUBDIR; find . -type d -print | sed 's@^./@@')`; do if [ -d $DST/$DIR ]; then - echo Directory $DST/$DIR exists + printf '%s\n' "Directory $DST/$DIR exists" else - echo Directory $DST/$DIR non-existent - if [ "`echo $DIR | egrep -v "$AVOID_PAT"`" ]; then + printf '%s\n' "Directory $DST/$DIR non-existent" + if [ "`printf '%s\n' "$DIR" | grep -Ev "$AVOID_PAT"`" ]; then maybe_mkdir $DST/$DIR fi fi diff --git a/build-aux/gitlog-to-emacslog b/build-aux/gitlog-to-emacslog index 51ef2a7fc72..3d61ba1e389 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 diff --git a/configure.ac b/configure.ac index d537f73c939..90c4e12e7df 100644 --- a/configure.ac +++ b/configure.ac @@ -401,7 +401,7 @@ gamegroup= case ${with_gameuser} in no) ;; "" | yes) gamegroup=games ;; - :*) gamegroup=`echo "${with_gameuser}" | sed -e "s/://"` ;; + :*) gamegroup=${with_gameuser#:} ;; *) gameuser=${with_gameuser} ;; esac @@ -1702,15 +1702,17 @@ fi LD_SWITCH_X_SITE_RPATH= if test "${x_libraries}" != NONE; then if test -n "${x_libraries}"; then - LD_SWITCH_X_SITE=-L`echo ${x_libraries} | sed -e "s/:/ -L/g"` - LD_SWITCH_X_SITE_RPATH=-Wl,-rpath,`echo ${x_libraries} | sed -e "s/:/ -Wl,-rpath,/g"` + LD_SWITCH_X_SITE=-L`AS_ECHO(["$x_libraries"]) | sed -e 's/:/ -L/g'` + LD_SWITCH_X_SITE_RPATH=-Wl,-rpath,` + AS_ECHO(["$x_libraries"]) | sed -e 's/:/ -Wl,-rpath,/g' + ` fi x_default_search_path="" x_search_path=${x_libraries} if test -z "${x_search_path}"; then x_search_path=/usr/lib fi - for x_library in `echo ${x_search_path}: | \ + for x_library in `AS_ECHO(["$x_search_path:"]) | \ sed -e "s/:/ /g" -e p -e "s:/lib[[^ /]]* :/share :g"`; do x_search_path="\ ${x_library}/X11/%L/%T/%N%C%S:\ @@ -1729,15 +1731,15 @@ fi AC_SUBST(LD_SWITCH_X_SITE_RPATH) if test "${x_includes}" != NONE && test -n "${x_includes}"; then - C_SWITCH_X_SITE="$isystem"`echo ${x_includes} | sed -e "s/:/ $isystem/g"` + C_SWITCH_X_SITE=$isystem`AS_ECHO(["$x_includes"]) | sed -e "s/:/ $isystem/g"` fi if test x"${x_includes}" = x; then bitmapdir=/usr/include/X11/bitmaps else # accumulate include directories that have X11 bitmap subdirectories - bmd_acc="dummyval" - for bmd in `echo ${x_includes} | sed -e "s/:/ /g"`; do + bmd_acc= + for bmd in `AS_ECHO(["$x_includes"]) | sed -e 's/:/ /g'`; do if test -d "${bmd}/X11/bitmaps"; then bmd_acc="${bmd_acc}:${bmd}/X11/bitmaps" fi @@ -1745,9 +1747,7 @@ else bmd_acc="${bmd_acc}:${bmd}/bitmaps" fi done - if test ${bmd_acc} != "dummyval"; then - bitmapdir=`echo ${bmd_acc} | sed -e "s/^dummyval://"` - fi + bitmapdir=${bmdacc#:} fi test "${with_ns}" = maybe && test "${opsys}" != darwin && with_ns=no @@ -1777,11 +1777,23 @@ if test "${with_ns}" != no; then elif test -f $GNUSTEP_CONFIG_FILE; then NS_IMPL_GNUSTEP=yes dnl FIXME sourcing this several times in subshells seems inefficient. - GNUSTEP_SYSTEM_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_HEADERS)" - GNUSTEP_SYSTEM_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_SYSTEM_LIBRARIES)" + GNUSTEP_SYSTEM_HEADERS=$( + . $GNUSTEP_CONFIG_FILE + AS_ECHO(["$GNUSTEP_SYSTEM_HEADERS"]) + ) + GNUSTEP_SYSTEM_LIBRARIES=$( + . $GNUSTEP_CONFIG_FILE + AS_ECHO(["$GNUSTEP_SYSTEM_LIBRARIES"]) + ) dnl I seemed to need these as well with GNUstep-startup 0.25. - GNUSTEP_LOCAL_HEADERS="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_HEADERS)" - GNUSTEP_LOCAL_LIBRARIES="$(. $GNUSTEP_CONFIG_FILE; echo $GNUSTEP_LOCAL_LIBRARIES)" + GNUSTEP_LOCAL_HEADERS=$( + . $GNUSTEP_CONFIG_FILE + AS_ECHO(["$GNUSTEP_LOCAL_HEADERS"]) + ) + GNUSTEP_LOCAL_LIBRARIES=$( + . $GNUSTEP_CONFIG_FILE + AS_ECHO(["$GNUSTEP_LOCAL_LIBRARIES"]) + ) test "x${GNUSTEP_LOCAL_HEADERS}" != "x" && \ GNUSTEP_LOCAL_HEADERS="-I${GNUSTEP_LOCAL_HEADERS}" test "x${GNUSTEP_LOCAL_LIBRARIES}" != "x" && \ @@ -2057,7 +2069,11 @@ if test "$window_system" = none && test "X$with_x" != "Xno"; then AC_CHECK_PROG(HAVE_XSERVER, X, true, false) if test "$HAVE_XSERVER" = true || test -n "$DISPLAY" || - test "`echo /usr/lib/libX11.*`" != "/usr/lib/libX11.*"; then + { + for emacs_libX11 in /usr/lib/libX11.*; do break; done + test "$emacs_libX11" != '/usr/lib/libX11.*' + } + then AC_MSG_ERROR([You seem to be running X, but no X development libraries were found. You should install the relevant development files for X and for the toolkit you want, such as Gtk+ or Motif. Also make @@ -4718,11 +4734,13 @@ CPPFLAGS="$REAL_CPPFLAGS" LIBS="$REAL_LIBS" ## Hack to detect a buggy GCC version. -if test "x$GCC" = xyes \ - && test x"`$CC --version 2> /dev/null | grep 'gcc.* 4.5.0'`" != x \ - && test x"`echo $CFLAGS | grep '\-O@<:@23@:>@'`" != x \ - && test x"`echo $CFLAGS | grep '\-fno-optimize-sibling-calls'`" = x; then - AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS'.]) +if test "$GCC" = yes && \ + $CC --version 2> /dev/null | grep 'gcc.* 4.5.0' >/dev/null; then + case $CFLAGS in + *-fno-optimize-sibling-calls*) ;; + *-O@<:@23@:>@*) + AC_MSG_ERROR([GCC 4.5.0 has problems compiling Emacs; see etc/PROBLEMS.]);; + esac fi version=$PACKAGE_VERSION @@ -4976,7 +4994,7 @@ LIBS=$SAVE_LIBS if test "${opsys}" = "mingw32"; then CPPFLAGS="$CPPFLAGS -DUSE_CRT_DLL=1 -I \${abs_top_srcdir}/nt/inc" # Remove unneeded switches from the value of CC that goes to Makefiles - CC=`echo $CC | sed -e "s,$GCC_TEST_OPTIONS,,"` + CC=`AS_ECHO(["$CC"]) | sed -e "s,$GCC_TEST_OPTIONS,,"` fi case "$opsys" in @@ -5124,7 +5142,8 @@ else ACL_SUMMARY=no fi -echo " +emacs_standard_dirs='Standard dirs' +AS_ECHO([" Configured for '${canonical}'. Where should the build process find the source code? ${srcdir} @@ -5133,18 +5152,9 @@ Configured for '${canonical}'. Should Emacs use a relocating allocator for buffers? ${REL_ALLOC} Should Emacs use mmap(2) for buffer allocation? $use_mmap_for_buffers What window system should Emacs use? ${window_system} - What toolkit should Emacs use? ${USE_X_TOOLKIT}" - -if test -n "${x_includes}"; then -echo " Where do we find X Windows header files? ${x_includes}" -else -echo " Where do we find X Windows header files? Standard dirs" -fi -if test -n "${x_libraries}"; then -echo " Where do we find X Windows libraries? ${x_libraries}" -else -echo " Where do we find X Windows libraries? Standard dirs" -fi + What toolkit should Emacs use? ${USE_X_TOOLKIT} + Where do we find X Windows header files? ${x_includes:-$emacs_standard_dirs} + Where do we find X Windows libraries? ${x_libraries:-$emacs_standard_dirs}"]) optsep= emacs_config_features= @@ -5174,57 +5184,53 @@ done AC_DEFINE_UNQUOTED(EMACS_CONFIG_FEATURES, "${emacs_config_features}", [Summary of some of the main features enabled by configure.]) -echo " Does Emacs use -lXaw3d? ${HAVE_XAW3D}" -echo " Does Emacs use -lXpm? ${HAVE_XPM}" -echo " Does Emacs use -ljpeg? ${HAVE_JPEG}" -echo " Does Emacs use -ltiff? ${HAVE_TIFF}" -echo " Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF" -echo " Does Emacs use a png library? ${HAVE_PNG} $LIBPNG" -echo " Does Emacs use -lrsvg-2? ${HAVE_RSVG}" -echo " Does Emacs use cairo? ${USE_CAIRO}" -echo " Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK}" - -echo " Does Emacs support sound? ${HAVE_SOUND}" - -echo " Does Emacs use -lgpm? ${HAVE_GPM}" -echo " Does Emacs use -ldbus? ${HAVE_DBUS}" -echo " Does Emacs use -lgconf? ${HAVE_GCONF}" -echo " Does Emacs use GSettings? ${HAVE_GSETTINGS}" -echo " Does Emacs use a file notification library? ${NOTIFY_SUMMARY}" -echo " Does Emacs use access control lists? ${ACL_SUMMARY}" -echo " Does Emacs use -lselinux? ${HAVE_LIBSELINUX}" -echo " Does Emacs use -lgnutls? ${HAVE_GNUTLS}" -echo " Does Emacs use -lxml2? ${HAVE_LIBXML2}" - -echo " Does Emacs use -lfreetype? ${HAVE_FREETYPE}" -echo " Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT}" -echo " Does Emacs use -lotf? ${HAVE_LIBOTF}" -echo " Does Emacs use -lxft? ${HAVE_XFT}" -echo " Does Emacs directly use zlib? ${HAVE_ZLIB}" - -echo " Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}" -echo +AS_ECHO([" Does Emacs use -lXaw3d? ${HAVE_XAW3D} + Does Emacs use -lXpm? ${HAVE_XPM} + Does Emacs use -ljpeg? ${HAVE_JPEG} + Does Emacs use -ltiff? ${HAVE_TIFF} + Does Emacs use a gif library? ${HAVE_GIF} $LIBGIF + Does Emacs use a png library? ${HAVE_PNG} $LIBPNG + Does Emacs use -lrsvg-2? ${HAVE_RSVG} + Does Emacs use cairo? ${USE_CAIRO} + Does Emacs use imagemagick? ${HAVE_IMAGEMAGICK} + Does Emacs support sound? ${HAVE_SOUND} + Does Emacs use -lgpm? ${HAVE_GPM} + Does Emacs use -ldbus? ${HAVE_DBUS} + Does Emacs use -lgconf? ${HAVE_GCONF} + Does Emacs use GSettings? ${HAVE_GSETTINGS} + Does Emacs use a file notification library? ${NOTIFY_SUMMARY} + Does Emacs use access control lists? ${ACL_SUMMARY} + Does Emacs use -lselinux? ${HAVE_LIBSELINUX} + Does Emacs use -lgnutls? ${HAVE_GNUTLS} + Does Emacs use -lxml2? ${HAVE_LIBXML2} + Does Emacs use -lfreetype? ${HAVE_FREETYPE} + Does Emacs use -lm17n-flt? ${HAVE_M17N_FLT} + Does Emacs use -lotf? ${HAVE_LIBOTF} + Does Emacs use -lxft? ${HAVE_XFT} + Does Emacs directly use zlib? ${HAVE_ZLIB} + Does Emacs use toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS} +"]) if test -n "${EMACSDATA}"; then - echo " Environment variable EMACSDATA set to: $EMACSDATA" + AS_ECHO([" Environment variable EMACSDATA set to: $EMACSDATA"]) fi if test -n "${EMACSDOC}"; then - echo " Environment variable EMACSDOC set to: $EMACSDOC" + AS_ECHO([" Environment variable EMACSDOC set to: $EMACSDOC"]) fi echo if test "$HAVE_NS" = "yes"; then echo - echo "You must run \"${MAKE-make} install\" in order to test the built application. + AS_ECHO(["You must run \"${MAKE-make} install\" in order to test the built application. The installed application will go to nextstep/Emacs.app and can be -run or moved from there." +run or moved from there."]) if test "$EN_NS_SELF_CONTAINED" = "yes"; then echo "The application will be fully self-contained." else - echo "The lisp resources for the application will be installed under ${prefix}. + AS_ECHO(["The lisp resources for the application will be installed under ${prefix}. You may need to run \"${MAKE-make} install\" with sudo. The application will fail -to run if these resources are not installed." +to run if these resources are not installed."]) fi echo fi @@ -5238,10 +5244,12 @@ if test "${opsys}" = "cygwin"; then fi # Remove any trailing slashes in these variables. -[test "${prefix}" != NONE && - prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'` -test "${exec_prefix}" != NONE && - exec_prefix=`echo "${exec_prefix}" | sed 's,\([^/]\)/*$,\1,'`] +case $prefix in + */) prefix=`AS_DIRNAME(["$prefix."])`;; +esac +case $exec_prefix in + */) exec_prefix=`AS_DIRNAME(["$exec_prefix."])`;; +esac if test "$HAVE_NS" = "yes"; then if test "$NS_IMPL_GNUSTEP" = yes; then @@ -5319,7 +5327,7 @@ dnl is not yet set, sigh. Or we could use ../$srcdir/src/.gdbinit, dnl or a symlink? AC_CONFIG_COMMANDS([src/.gdbinit], [ if test ! -f src/.gdbinit && test -f "$srcdir/src/.gdbinit"; then - echo "source $ac_abs_top_srcdir/src/.gdbinit" > src/.gdbinit + AS_ECHO(["source $ac_abs_top_srcdir/src/.gdbinit"]) > src/.gdbinit fi ]) diff --git a/doc/lispref/two-volume.make b/doc/lispref/two-volume.make index 64799d8fc04..bdcdb2f4fdd 100644 --- a/doc/lispref/two-volume.make +++ b/doc/lispref/two-volume.make @@ -26,9 +26,9 @@ tex2 = sed '/^@setfilename/a\ # elisp.texi specially defines \tocreadfilename when VOL1 or VOL2 is # set, so we can use our premade .toc's. -# +# vol1.pdf: elisp1med-fns-ready elisp1med-aux-ready elisp1med-toc-ready - @echo -e "\f Final TeX run for volume 1..." + @printf '\f Final TeX run for volume 1...\n' cp elisp1med-toc-ready elisp1-toc-ready.toc cp elisp1med-fns-ready vol1.fns cp elisp1med-aux-ready vol1.aux @@ -42,27 +42,27 @@ vol2.pdf: elisp2med-fns-ready elisp2med-aux-ready elisp2med-toc-ready $(tex2) # intermediate toc files. -# +# # vol1 toc: volume 1, page break, volume 2 (with II: prepended). elisp1med-toc-ready: elisp1med-init elisp2med-init echo '@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@ cat elisp1med-toc >>$@ echo '@page' >>$@ echo '@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@ - sed 's/{\([^}]*\)}$$/{II:\1}/' elisp2med-toc >>$@ + sed 's/{\([^}]*\)}$$/{II:\1}/' elisp2med-toc >>$@ # # vol2 toc: volume 1 (with I: prepended), page break, volume 2. elisp2med-toc-ready: elisp1med-init elisp2med-init echo '@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@ - sed 's/{\([^}]*\)}$$/{I:\1}/' elisp1med-toc >>$@ + sed 's/{\([^}]*\)}$$/{I:\1}/' elisp1med-toc >>$@ echo '@page' >>$@ echo '@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@ cat elisp2med-toc >>$@ # intermediate aux files. -# -# append vol2's fixed aux to normal vol1. +# +# append vol2's fixed aux to normal vol1. elisp1med-aux-ready: elisp2med-aux-vol-added cat elisp1med-aux $< >$@ # @@ -78,7 +78,7 @@ elisp2med-aux-vol-added: elisp2med-init sed 's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie2}/' elisp2med-aux >$@ # intermediate index (fns) file. -# +# elisp1med-fns-ready: elisp1med-fn-vol-added elisp2med-fn-vol-added cat elisp2med-fn-vol-added >>vol1.fn texindex vol1.fn @@ -103,17 +103,17 @@ elisp2med-fn-vol-added: elisp2med-init # ----------------------------------------------------------------------------- # intermediate TeX runs. -# +# # this generates what would be the final versions -- except the page # numbers aren't right. The process of adding the I: and II: changes # the page breaks, so a few index entries, at least are wrong. (In # 2007, x-meta-keysym in vol.II ended up on page 374 when the index had # it on page 375 from the initial run.) -# +# # So, we start all over again, from these fns/aux/toc files. -# +# elisp1med-init: elisp1-fns-ready elisp1-aux-ready elisp1init-toc-ready $(texinfodir)/texinfo.tex - @echo -e "\f Intermediate TeX run for volume 1..." + @printf '\f Intermediate TeX run for volume 1...\n' cp elisp1init-toc-ready elisp1-toc-ready.toc cp elisp1-fns-ready vol1.fns cp elisp1-aux-ready vol1.aux @@ -134,26 +134,26 @@ elisp2med-init: elisp2-fns-ready elisp2-aux-ready elisp2init-toc-ready $(texinfo # initial toc files. -# +# # vol1 toc: volume 1, page break, volume 2 (with II: prepended). elisp1init-toc-ready: elisp1-init elisp2-init echo '@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@ cat elisp1-toc >>$@ echo '@page' >>$@ echo '@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@ - sed 's/{\([^}]*\)}$$/{II:\1}/' elisp2-toc >>$@ + sed 's/{\([^}]*\)}$$/{II:\1}/' elisp2-toc >>$@ # # vol2 toc: volume 1 (with I: prepended), page break, volume 2. elisp2init-toc-ready: elisp1-init elisp2-init echo '@unnchapentry{@b{Volume 1}}{10001}{vol1}{}' >$@ - sed 's/{\([^}]*\)}$$/{I:\1}/' elisp1-toc >>$@ + sed 's/{\([^}]*\)}$$/{I:\1}/' elisp1-toc >>$@ echo '@page' >>$@ echo '@unnchapentry{@b{Volume 2}}{10001}{vol2}{}' >>$@ cat elisp2-toc >>$@ # initial aux files. -# +# # append vol2's fixed aux to normal vol1. The initial runs saved # elisp1-aux and elisp2-aux. elisp1-aux-ready: elisp2-aux-vol-added @@ -171,7 +171,7 @@ elisp2-aux-vol-added: elisp2-init sed 's/-pg}{\(.*\)}$$/-pg}{\1, vol.@tie2}/' elisp2-aux >$@ # initial index (fns) file. -# +# # Append other volume's index entries to this one's. # Index entries in this volume will then take precedence. elisp1-fns-ready: elisp1-fn-vol-added elisp2-fn-vol-added @@ -195,14 +195,14 @@ elisp2-fn-vol-added: elisp2-init # initial TeX runs. -# +# # We use the .fn, .aux, and .toc files created here in subsequent # processing. The page numbers generated here will not be correct yet, # but we run texindex and TeX a second time just to get them closer. # Otherwise it might take even longer for them to converge. -# +# elisp1-init: elisp.texi - @echo -e "\f Initial TeX run for volume 1..." + @printf '\f Initial TeX run for volume 1...\n' rm -f vol1.aux vol1.toc $(tex1) texindex vol1.?? @@ -220,17 +220,16 @@ elisp2-init: elisp.texi touch $@ # COPYING CONDITIONS -# +# # This file is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. -# +# # This file is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. -# +# # You should have received a copy of the GNU General Public License # along with this file. If not, see . - diff --git a/lib-src/rcs2log b/lib-src/rcs2log index d1bd3693183..4ee303d03a1 100755 --- a/lib-src/rcs2log +++ b/lib-src/rcs2log @@ -130,7 +130,8 @@ do case $1 in -n) case ${2?}${3?}${4?} in *"$tab"* | *"$nl"*) - echo >&2 "$0: -n '$2' '$3' '$4': tabs, newlines not allowed" + printf '%s\n' >&2 \ + "$0: -n '$2' '$3' '$4': tabs, newlines not allowed" exit 1;; esac login=$2 @@ -140,7 +141,7 @@ do # If $2 is not tab-separated, use colon for separator. case ${2?} in *"$nl"*) - echo >&2 "$0: -u '$2': newlines not allowed" + printf '%s\n' >&2 "$0: -u '$2': newlines not allowed" exit 1;; *"$tab"*) t=$tab;; @@ -149,7 +150,7 @@ do esac case $2 in *"$t"*"$t"*"$t"*) - echo >&2 "$0: -u '$2': too many fields" + printf '%s\n' >&2 "$0: -u '$2': too many fields" exit 1;; *"$t"*"$t"*) uf="[^$t]*$t" # An unselected field, followed by a separator. @@ -161,7 +162,7 @@ do expr "X$2" : "$uf$uf$sf" `;; *) - echo >&2 "$0: -u '$2': not enough fields" + printf '%s\n' >&2 "$0: -u '$2': not enough fields" exit 1;; esac shift;; @@ -186,9 +187,9 @@ do --version) set $Id rcs2logVersion=$3 - echo >&2 "rcs2log (GNU Emacs) $rcs2logVersion$nl$Copyright" + printf '%s\n' >&2 "rcs2log (GNU Emacs) $rcs2logVersion$nl$Copyright" exit 0;; - -*) echo >&2 "Usage: $0 [OPTION]... [FILE ...]$nl$Help" + -*) printf '%s\n' >&2 "Usage: $0 [OPTION]... [FILE ...]$nl$Help" case $1 in --help) exit 0;; *) exit 1;; @@ -303,7 +304,8 @@ case $rlogfile in esac if test ! -d "$repository" then - echo >&2 "$0: $repository: bad repository (see CVS/Repository)" + printf '%s\n' >&2 \ + "$0: $repository: bad repository (see CVS/Repository)" exit 1 fi pository=$repository;; @@ -330,7 +332,7 @@ case $rlogfile in T?*) rlog_options=-r`expr "$CVSTAG" : 'T\(.*\)'`;; *) - echo >&2 "$0: invalid CVS/Tag"; exit 1;; + printf '%s\n' >&2 "$0: invalid CVS/Tag"; exit 1;; esac fi;; esac @@ -595,7 +597,7 @@ case $hostname in hostname=`( hostname || uname -n || uuname -l || cat /etc/whoami ) 2>/dev/null` || { - echo >&2 "$0: cannot deduce hostname" + printf '%s\n' >&2 "$0: cannot deduce hostname" exit 1 } diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 15d4d37f7ba..ed1246b0cf4 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -221,7 +221,7 @@ lisptagsfiles2 = $(srcdir)/*/*.el lisptagsfiles3 = $(srcdir)/*/*/*.el lisptagsfiles4 = $(srcdir)/*/*/*/*.el -## The echo | sed | xargs is to stop the command line getting too long +## The ls | sed | xargs is to stop the command line getting too long ## on MS Windows, when the MSYS Bash passes it to a MinGW compiled ## etags. It might be better to use find in a similar way to ## compile-main. But maybe this is not even necessary any more now @@ -229,10 +229,9 @@ lisptagsfiles4 = $(srcdir)/*/*/*/*.el TAGS: $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) rm -f $@ touch $@ - echo $(lisptagsfiles1) $(lisptagsfiles2) $(lisptagsfiles3) $(lisptagsfiles4) | \ - sed -e 's,$(srcdir)/[^ ]*loaddefs[^ ]*,,g' \ - -e 's,$(srcdir)/ldefs-boot[^ ]*,,' \ - -e 's,$(srcdir)/[^ ]*esh-groups.el[^ ]*,,' | \ + ls $(lisptagsfiles1) $(lisptagsfiles2) \ + $(lisptagsfiles3) $(lisptagsfiles4) | \ + sed -e '/loaddefs/d; /\/ldefs-boot/d; /esh-groups\.el/d' | \ xargs $(XARGS_LIMIT) "$(ETAGS)" -a -o $@ diff --git a/lisp/term.el b/lisp/term.el index e5ae5530ce9..41577c90301 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -245,86 +245,48 @@ ;; ---------------------------------------- ;; ;; Notice: for directory/host/user tracking you need to have something -;; like this in your shell startup script ( this is for tcsh but should -;; be quite easy to port to other shells ) +;; like this in your shell startup script (this is for a POSIXish shell +;; like Bash but should be quite easy to port to other shells) ;; ;; ---------------------------------------- ;; -;; -;; set os = `uname` -;; set host = `hostname` -;; set date = `date` +;; # Set HOSTNAME if not already set. +;; : ${HOSTNAME=$(uname -n)} ;; ;; # su does not change this but I'd like it to ;; -;; set user = `whoami` +;; USER=$(whoami) ;; ;; # ... ;; -;; if ( eterm =~ $TERM ) then -;; -;; echo -------------------------------------------------------------- -;; echo Hello $user -;; echo Today is $date -;; echo We are on $host running $os under Emacs term mode -;; echo -------------------------------------------------------------- -;; -;; setenv EDITOR emacsclient -;; -;; # Notice: $host and $user have been set before to 'hostname' and 'whoami' -;; # this is necessary because, f.e., certain versions of 'su' do not change -;; # $user, YMMV: if you don't want to fiddle with them define a couple -;; # of new variables and use these instead. -;; # NOTICE that there is a space between "AnSiT?" and $whatever NOTICE -;; -;; # These are because we want the real cwd in the messages, not the login -;; # time one ! -;; -;; set cwd_hack='$cwd' -;; set host_hack='$host' -;; set user_hack='$user' +;; case $TERM in +;; eterm*) ;; -;; # Notice that the ^[ character is an ESC, not two chars. You can -;; # get it in various ways, for example by typing -;; # echo -e '\033' > escape.file -;; # or by using your favorite editor +;; printf '%s\n' \ +;; -------------------------------------------------------------- \ +;; "Hello $user" \ +;; "Today is $(date)" \ +;; "We are on $HOSTNAME running $(uname) under Emacs term mode" \ +;; -------------------------------------------------------------- ;; -;; foreach temp (cd pushd) -;; alias $temp "$temp \!* ; echo 'AnSiTc' $cwd_hack" -;; end -;; alias popd 'popd ;echo "AnSiTc" $cwd' +;; export EDITOR=emacsclient ;; -;; # Every command that can modify the user/host/directory should be aliased -;; # as follows for the tracking mechanism to work. +;; # The \033 stands for ESC. +;; # There is a space between "AnSiT?" and $whatever. ;; -;; foreach temp ( rlogin telnet rsh sh ksh csh tcsh zsh bash tcl su ) -;; alias $temp "$temp \!* ; echo 'AnSiTh' $host_hack ; \ -;; echo 'AnSiTu' $user_hack ;echo 'AnSiTc' $cwd_hack" -;; end +;; cd() { command cd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } +;; pushd() { command pushd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } +;; popd() { command popd "$@"; printf '\033AnSiTc %s\n' "$PWD"; } ;; -;; # Start up & use color ls +;; printf '\033AnSiTc %s\n' "$PWD" +;; printf '\033AnSiTh %s\n' "$HOSTNAME" +;; printf '\033AnSiTu %s\n' "$USER" ;; -;; echo "AnSiTh" $host -;; echo "AnSiTu" $user -;; echo "AnSiTc" $cwd -;; -;; # some housekeeping -;; -;; unset cwd_hack -;; unset host_hack -;; unset user_hack -;; unset temp -;; -;; eval `/bin/dircolors /home/marco/.emacs_dircolors` -;; endif +;; eval $(dircolors $HOME/.emacs_dircolors) +;; esac ;; ;; # ... ;; -;; # Let's not clutter user space -;; -;; unset os -;; unset date -;; ;; ;;; Original Commentary: diff --git a/make-dist b/make-dist index 79db904a2c8..48a2836fa0a 100755 --- a/make-dist +++ b/make-dist @@ -110,7 +110,7 @@ while [ $# -gt 0 ]; do ;; "--help") - echo "Usage: ${progname} [options]" + printf '%s\n' "Usage: ${progname} [options]" echo "" echo " --bzip2 use bzip2 instead of gzip" echo " --clean-up delete staging directories when done" @@ -128,7 +128,7 @@ while [ $# -gt 0 ]; do ;; * ) - echo "${progname}: Unrecognized argument: $1" >&2 + printf '%s\n' "${progname}: Unrecognized argument: $1" >&2 exit 1 ;; esac @@ -137,9 +137,9 @@ done ### Make sure we're running in the right place. if [ ! -d src -o ! -f src/lisp.h -o ! -d lisp -o ! -f lisp/subr.el ]; then - echo "${progname}: Can't find 'src/lisp.h' and 'lisp/subr.el'." >&2 - echo "${progname} must be run in the top directory of the Emacs" >&2 - echo "distribution tree. cd to that directory and try again." >&2 + printf '%s\n' "${progname}: Can't find 'src/lisp.h' and 'lisp/subr.el'." >&2 + printf '%s\n' "${progname} must be run in the top directory of the Emacs" >&2 + printf '%s\n' "distribution tree. cd to that directory and try again." >&2 exit 1 fi @@ -155,7 +155,7 @@ then /*) ;; *) if [ ! -f "$EMACS" ]; then - echo "$0: You must set the EMACS environment variable " \ + printf '%s\n' "$0: You must set the EMACS environment variable " \ "to an absolute file name." 2>&1 exit 1 fi;; @@ -168,7 +168,8 @@ version=` sed -n 's/^AC_INIT(GNU Emacs,[ ]*\([^ ,)]*\).*/\1/p' &2 + printf '%s\n' \ + "${progname}: can't find current Emacs version in './src/emacs.c'" >&2 exit 1 fi @@ -195,7 +196,7 @@ fi ### Make sure the subdirectory is available. tempparent="make-dist.tmp.$$" if [ -d ${tempparent} ]; then - echo "${progname}: staging directory '${tempparent}' already exists. + printf '%s\n' "${progname}: staging directory '${tempparent}' already exists. Perhaps a previous invocation of '${progname}' failed to clean up after itself. Check that directories whose names are of the form '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 done if [ "${newer}" ]; then - echo "Removing files older than $newer" + printf '%s\n' "Removing files older than $newer" ## We remove .elc files unconditionally, on the theory that anyone picking ## up an incremental distribution already has a running Emacs to byte-compile ## them with. @@ -544,8 +545,9 @@ find ${tempparent} \( -name '*~' -o -name '#*#' -o -name '.*ignore' -o -name '=* if [ "${make_tar}" = yes ]; then echo "Looking for $default_gzip" found=0 - temppath=`echo $PATH | sed -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' \ - -e 's/:/ /g'` + temppath=`printf '%s\n' "$PATH" | + sed -e 's/^:/.:/' -e 's/::/:.:/g' -e 's/:$/:./' -e 's/:/ /g' + ` for dir in ${temppath}; do [ -x ${dir}/$default_gzip ] || continue found=1; break diff --git a/src/Makefile.in b/src/Makefile.in index 1fb770d6657..f73575938d3 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -443,7 +443,7 @@ all: emacs$(EXEEXT) $(OTHER_FILES) shortlisp = lisp.mk: $(lispsource)/loadup.el @rm -f $@ - ${AM_V_GEN}( echo "shortlisp = \\"; \ + ${AM_V_GEN}( printf 'shortlisp = \\\n'; \ sed -n 's/^[ \t]*(load "\([^"]*\)".*/\1/p' $< | \ sed -e 's/$$/.elc \\/' -e 's/\.el\.elc/.el/'; \ echo "" ) > $@ diff --git a/test/etags/make-src/Makefile b/test/etags/make-src/Makefile index daf605d0016..016c633d791 100644 --- a/test/etags/make-src/Makefile +++ b/test/etags/make-src/Makefile @@ -15,7 +15,7 @@ ERLSRC=gs_dialog.erl lines.erl lists.erl FORTHSRC=test-forth.fth FSRC=entry.for entry.strange_suffix entry.strange HTMLSRC=softwarelibero.html index.shtml algrthms.html software.html -JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol.java TG.java +JAVASRC=AWTEMul.java KeyEve.java SMan.java SysCol.java TG.java LUASRC=allegro.lua MAKESRC=Makefile OBJCSRC=Subprocess.h Subprocess.m PackInsp.h PackInsp.m @@ -120,9 +120,9 @@ rsyncfromfly: rsync --exclude "*~" --exclude core --exclude etags -zauRv fly:gnu/etags/ ../.. web ftp publish: - @-echo -e \\ttesting with debugging enabled...; $(MAKE) quiettest - @-echo -e \\ttesting standalone...; $(MAKE) standalone quiettest - @-echo -e \\ttesting fast versions...; $(MAKE) fastetags fastctags quiettest + @-printf '\ttesting with debugging enabled...\n'; $(MAKE) quiettest + @-printf '\ttesting standalone...\n'; $(MAKE) standalone quiettest + @-printf '\ttesting fast versions...\n'; $(MAKE) fastetags fastctags quiettest @$(MAKE) /home/www/pub/etags.c.gz @$(MAKE) /home/www/pub/software/unix/etags.tar.gz