changeset 30192:5cefa8b0f3d9

Fix previous patch, and tweak references to $0. * posix-modules: Call func_gnulib_dir before using $gnulib_dir. (func_version, func_gnulib_dir): Don't call this program gnulib-tool. (func_gnulib_dir, func_tmpdir, func_fatal_error): Avoid shell bugs with using $0 in function. * gnulib-tool (func_gnulib_dir, func_tmpdir): Likewise. (func_fatal_error): Reuse the name the user invoked us with. Signed-off-by: Eric Blake <ebb9@byu.net>
author Eric Blake <ebb9@byu.net>
date Fri, 26 Sep 2008 14:47:41 -0600
parents 988b942ceba9
children af87096ba89d
files ChangeLog gnulib-tool posix-modules
diffstat 3 files changed, 49 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Sat Sep 27 19:14:53 2008 +0200
+++ b/ChangeLog	Fri Sep 26 14:47:41 2008 -0600
@@ -1,3 +1,14 @@
+2008-09-27  Eric Blake  <ebb9@byu.net>
+
+	Fix previous patch, and tweak references to $0.
+	* posix-modules: Call func_gnulib_dir before using $gnulib_dir.
+	(func_version, func_gnulib_dir): Don't call this program
+	gnulib-tool.
+	(func_gnulib_dir, func_tmpdir, func_fatal_error): Avoid shell bugs
+	with using $0 in function.
+	* gnulib-tool (func_gnulib_dir, func_tmpdir): Likewise.
+	(func_fatal_error): Reuse the name the user invoked us with.
+
 2008-09-27  Bruno Haible  <bruno@clisp.org>
 
 	* m4/iconv_h.m4 (gl_REPLACE_ICONV_H): New macro.
@@ -150,7 +161,7 @@
 	* m4/sigpipe.m4: New file.
 
 2008-09-25  Derek Price  <derek@ximbiot.com>
-            Bruno Haible  <bruno@clisp.org>
+	    Bruno Haible  <bruno@clisp.org>
 
 	* gnulib-tool (func_import): Report all license incompatibilities, not
 	just the first one.
--- a/gnulib-tool	Sat Sep 27 19:14:53 2008 +0200
+++ b/gnulib-tool	Fri Sep 26 14:47:41 2008 -0600
@@ -272,14 +272,16 @@
 
 # func_gnulib_dir
 # locates the directory where the gnulib repository lives
+# Input:
+# - progname                 name of this program
 # Sets variables
 # - self_abspathname         absolute pathname of gnulib-tool
 # - gnulib_dir               absolute pathname of gnulib repository
 func_gnulib_dir ()
 {
-  case "$0" in
-    /*) self_abspathname="$0" ;;
-    */*) self_abspathname=`pwd`/"$0" ;;
+  case "$progname" in
+    /*) self_abspathname="$progname" ;;
+    */*) self_abspathname=`pwd`/"$progname" ;;
     *)
       # Look in $PATH.
       # Iterate through the elements of $PATH.
@@ -326,8 +328,8 @@
       for d in $pathx; do
         IFS="$save_IFS"
         test -z "$d" && d=.
-        if test -x "$d/$0" && test ! -d "$d/$0"; then
-          self_abspathname="$d/$0"
+        if test -x "$d/$progname" && test ! -d "$d/$progname"; then
+          self_abspathname="$d/$progname"
           break
         fi
       done
@@ -351,6 +353,8 @@
 
 # func_tmpdir
 # creates a temporary directory.
+# Input:
+# - progname                 name of this program
 # Sets variable
 # - tmp             pathname of freshly created temporary directory
 func_tmpdir ()
@@ -375,7 +379,7 @@
     (umask 077 && mkdir "$tmp")
   } ||
   {
-    echo "$0: cannot create a temporary directory in $TMPDIR" >&2
+    echo "$progname: cannot create a temporary directory in $TMPDIR" >&2
     func_exit 1
   }
 }
@@ -398,10 +402,12 @@
 
 # func_fatal_error message
 # outputs to stderr a fatal error message, and terminates the program.
+# Input:
+# - progname                 name of this program
 func_fatal_error ()
 {
-  echo "gnulib-tool: *** $1" 1>&2
-  echo "gnulib-tool: *** Stop." 1>&2
+  echo "$progname: *** $1" 1>&2
+  echo "$progname: *** Stop." 1>&2
   func_exit 1
 }
 
--- a/posix-modules	Sat Sep 27 19:14:53 2008 +0200
+++ b/posix-modules	Fri Sep 26 14:47:41 2008 -0600
@@ -66,7 +66,7 @@
   fi
   year=`"$gnulib_dir"/build-aux/mdate-sh "$self_abspathname" | sed 's,^.* ,,'`
   echo "\
-gnulib-tool (GNU $package $date)$version
+posix-modules (GNU $package $date)$version
 Copyright (C) $year Free Software Foundation, Inc.
 License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
 This is free software: you are free to change and redistribute it.
@@ -86,14 +86,16 @@
 
 # func_gnulib_dir
 # locates the directory where the gnulib repository lives
+# Input:
+# - progname                 name of this program
 # Sets variables
-# - self_abspathname         absolute pathname of gnulib-tool
+# - self_abspathname         absolute pathname of this program
 # - gnulib_dir               absolute pathname of gnulib repository
 func_gnulib_dir ()
 {
-  case "$0" in
-    /*) self_abspathname="$0" ;;
-    */*) self_abspathname=`pwd`/"$0" ;;
+  case "$progname" in
+    /*) self_abspathname="$progname" ;;
+    */*) self_abspathname=`pwd`/"$progname" ;;
     *)
       # Look in $PATH.
       # Iterate through the elements of $PATH.
@@ -140,14 +142,14 @@
       for d in $pathx; do
         IFS="$save_IFS"
         test -z "$d" && d=.
-        if test -x "$d/$0" && test ! -d "$d/$0"; then
-          self_abspathname="$d/$0"
+        if test -x "$d/$progname" && test ! -d "$d/$progname"; then
+          self_abspathname="$d/$progname"
           break
         fi
       done
       IFS="$save_IFS"
       if test -z "$self_abspathname"; then
-        func_fatal_error "could not locate the gnulib-tool program - how did you invoke it?"
+        func_fatal_error "could not locate the posix-modules program - how did you invoke it?"
       fi
       ;;
   esac
@@ -165,6 +167,8 @@
 
 # func_tmpdir
 # creates a temporary directory.
+# Input:
+# - progname                 name of this program
 # Sets variable
 # - tmp             pathname of freshly created temporary directory
 func_tmpdir ()
@@ -189,17 +193,19 @@
     (umask 077 && mkdir "$tmp")
   } ||
   {
-    echo "$0: cannot create a temporary directory in $TMPDIR" >&2
+    echo "$progname: cannot create a temporary directory in $TMPDIR" >&2
     func_exit 1
   }
 }
 
 # func_fatal_error message
 # outputs to stderr a fatal error message, and terminates the program.
+# Input:
+# - progname                 name of this program
 func_fatal_error ()
 {
-  echo "gnulib-tool: *** $1" 1>&2
-  echo "gnulib-tool: *** Stop." 1>&2
+  echo "$progname: *** $1" 1>&2
+  echo "$progname: *** Stop." 1>&2
   func_exit 1
 }
 
@@ -240,6 +246,7 @@
   esac
 done
 
+func_gnulib_dir
 (
   # Get the header modules.
   LC_ALL=C grep -h '^Gnulib module: ' "$gnulib_dir"/doc/posix-headers/* 2>/dev/null \
@@ -253,3 +260,8 @@
       tr ' ' '\012' | sed -e '/^---$/d' -e '/^and$/d' -e '/^or$/d' -e '/-gnu$/d'
     } \
   | LC_ALL=C sort | LC_ALL=C uniq
+
+# Local Variables:
+# indent-tabs-mode: nil
+# whitespace-check-buffer-indent: nil
+# End: