Codebase list texinfo / debian/6.6.0.dfsg.1-2 build-aux / mdate-sh
debian/6.6.0.dfsg.1-2

Tree @debian/6.6.0.dfsg.1-2 (Download .tar.gz)

mdate-sh @debian/6.6.0.dfsg.1-2

4d6631a
 
 
f2f4aae
4d6631a
f2f4aae
4d6631a
 
 
 
 
 
 
 
 
 
 
 
 
f2f4aae
4d6631a
 
 
 
 
 
 
 
 
 
2a17ecd
 
 
 
 
 
 
 
 
4d6631a
 
2a17ecd
4d6631a
 
 
 
 
 
2a17ecd
 
4d6631a
 
 
 
 
 
 
 
 
 
 
2a17ecd
 
 
 
 
 
 
4d6631a
 
 
 
 
 
 
 
f2f4aae
 
 
 
4d6631a
2a17ecd
4d6631a
 
 
 
 
 
 
 
 
 
 
 
 
 
2a17ecd
 
 
 
4d6631a
2a17ecd
4d6631a
 
 
 
 
 
2a17ecd
4d6631a
 
 
 
 
2a17ecd
4d6631a
 
 
 
 
 
2a17ecd
4d6631a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2a17ecd
 
4d6631a
2a17ecd
4d6631a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
f2f4aae
4d6631a
 
f2f4aae
2a17ecd
4d6631a
#!/bin/sh
# Get modification time of a file or directory and pretty-print it.

scriptversion=2018-03-07.03; # UTC

# Copyright (C) 1995-2018 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
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program 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 program.  If not, see <https://www.gnu.org/licenses/>.

# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.

# This file is maintained in Automake, please report
# bugs to <bug-automake@gnu.org> or send patches to
# <automake-patches@gnu.org>.

if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
  emulate sh
  NULLCMD=:
  # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
  # is contrary to our usage.  Disable this feature.
  alias -g '${1+"$@"}'='"$@"'
  setopt NO_GLOB_SUBST
fi

case $1 in
  '')
     echo "$0: No file.  Try '$0 --help' for more information." 1>&2
     exit 1;
     ;;
  -h | --h*)
    cat <<\EOF
Usage: mdate-sh [--help] [--version] FILE

Pretty-print the modification day of FILE, in the format:
1 January 1970

Report bugs to <bug-automake@gnu.org>.
EOF
    exit $?
    ;;
  -v | --v*)
    echo "mdate-sh $scriptversion"
    exit $?
    ;;
esac

error ()
{
  echo "$0: $1" >&2
  exit 1
}


# Prevent date giving response in another language.
LANG=C
export LANG
LC_ALL=C
export LC_ALL
LC_TIME=C
export LC_TIME

# Use UTC to get reproducible result.
TZ=UTC0
export TZ

# 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
  ls_command='ls -L -l -d'
else
  ls_command='ls -l -d'
fi
# Avoid user/group names that might have spaces, when possible.
if ls -n /dev/null 1>/dev/null 2>&1; then
  ls_command="$ls_command -n"
fi

# A 'ls -l' line looks as follows on OS/2.
#  drwxrwx---        0 Aug 11  2001 foo
# This differs from Unix, which adds ownership information.
#  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
#
# To find the date, we split the line on spaces and iterate on words
# until we find a month.  This cannot work with files whose owner is a
# user named "Jan", or "Feb", etc.  However, it's unlikely that '/'
# will be owned by a user whose name is a month.  So we first look at
# the extended ls output of the root directory to decide how many
# 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 /`

# Find which argument is the month.
month=
command=
until test $month
do
  test $# -gt 0 || error "failed parsing '$ls_command /' output"
  shift
  # Add another shift to the command.
  command="$command shift;"
  case $1 in
    Jan) month=January; nummonth=1;;
    Feb) month=February; nummonth=2;;
    Mar) month=March; nummonth=3;;
    Apr) month=April; nummonth=4;;
    May) month=May; nummonth=5;;
    Jun) month=June; nummonth=6;;
    Jul) month=July; nummonth=7;;
    Aug) month=August; nummonth=8;;
    Sep) month=September; nummonth=9;;
    Oct) month=October; nummonth=10;;
    Nov) month=November; nummonth=11;;
    Dec) month=December; nummonth=12;;
  esac
done

test -n "$month" || error "failed parsing '$ls_command /' output"

# Get the extended ls output of the file or directory.
set dummy x`eval "$ls_command \"\\\$save_arg1\""`

# Remove all preceding arguments
eval $command

# 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;;
  Apr) month=April; nummonth=4;;
  May) month=May; nummonth=5;;
  Jun) month=June; nummonth=6;;
  Jul) month=July; nummonth=7;;
  Aug) month=August; nummonth=8;;
  Sep) month=September; nummonth=9;;
  Oct) month=October; nummonth=10;;
  Nov) month=November; nummonth=11;;
  Dec) month=December; nummonth=12;;
esac

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.
case $3 in
  *:*) set `date`; eval year=\$$#
       case $2 in
	 Jan) nummonthtod=1;;
	 Feb) nummonthtod=2;;
	 Mar) nummonthtod=3;;
	 Apr) nummonthtod=4;;
	 May) nummonthtod=5;;
	 Jun) nummonthtod=6;;
	 Jul) nummonthtod=7;;
	 Aug) nummonthtod=8;;
	 Sep) nummonthtod=9;;
	 Oct) nummonthtod=10;;
	 Nov) nummonthtod=11;;
	 Dec) nummonthtod=12;;
       esac
       # For the first six month of the year the time notation can also
       # be used for files modified in the last year.
       if (expr $nummonth \> $nummonthtod) > /dev/null;
       then
	 year=`expr $year - 1`
       fi;;
  *) year=$3;;
esac

# The result.
echo $day $month $year

# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'before-save-hook 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC0"
# time-stamp-end: "; # UTC"
# End: