diff options
Diffstat (limited to 'doc/mdate-sh')
-rwxr-xr-x | doc/mdate-sh | 53 |
1 files changed, 42 insertions, 11 deletions
diff --git a/doc/mdate-sh b/doc/mdate-sh index 05e828b0..cd916c0a 100755 --- a/doc/mdate-sh +++ b/doc/mdate-sh @@ -1,9 +1,10 @@ #!/bin/sh # Get modification time of a file or directory and pretty-print it. -scriptversion=2003-11-09.00 +scriptversion=2005-06-29.22 -# Copyright (C) 1995, 1996, 1997, 2003 Free Software Foundation, Inc. +# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005 Free Software +# Foundation, Inc. # written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995 # # This program is free software; you can redistribute it and/or modify @@ -18,7 +19,7 @@ scriptversion=2003-11-09.00 # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software Foundation, -# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a @@ -42,11 +43,11 @@ Pretty-print the modification time of FILE. Report bugs to <bug-automake@gnu.org>. EOF - exit 0 + exit $? ;; -v | --v*) echo "mdate-sh $scriptversion" - exit 0 + exit $? ;; esac @@ -58,7 +59,15 @@ export LC_ALL LC_TIME=C export LC_TIME -save_arg1="$1" +# GNU ls changes its time format in response to the TIME_STYLE +# variable. Since we cannot assume `unset' works, revert this +# variable to its documented default. +if test "${TIME_STYLE+set}" = set; then + TIME_STYLE=posix-long-iso + export TIME_STYLE +fi + +save_arg1=$1 # Find out how to get the extended ls output of a file or directory. if ls -L /dev/null 1>/dev/null 2>&1; then @@ -80,7 +89,7 @@ fi # words should be skipped to get the date. # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below. -set - x`$ls_command /` +set x`ls -l -d /` # Find which argument is the month. month= @@ -107,13 +116,32 @@ do done # Get the extended ls output of the file or directory. -set - x`eval "$ls_command \"\$save_arg1\""` +set dummy x`eval "$ls_command \"\$save_arg1\""` # Remove all preceding arguments eval $command -# Get the month. Next argument is day, followed by the year or time. -case $1 in +# Because of the dummy argument above, month is in $2. +# +# On a POSIX system, we should have +# +# $# = 5 +# $1 = file size +# $2 = month +# $3 = day +# $4 = year or time +# $5 = filename +# +# On Darwin 7.7.0 and 7.6.0, we have +# +# $# = 4 +# $1 = day +# $2 = month +# $3 = year or time +# $4 = filename + +# Get the month. +case $2 in Jan) month=January; nummonth=1;; Feb) month=February; nummonth=2;; Mar) month=March; nummonth=3;; @@ -128,7 +156,10 @@ case $1 in Dec) month=December; nummonth=12;; esac -day=$2 +case $3 in + ???*) day=$1;; + *) day=$3; shift;; +esac # Here we have to deal with the problem that the ls output gives either # the time of day or the year. |