github.com/prattmic/llgo-embedded@v0.0.0-20150820070356-41cfecea0e1e/third_party/gofrontend/libffi/mdate-sh (about)

     1  #!/bin/sh
     2  # Get modification time of a file or directory and pretty-print it.
     3  
     4  scriptversion=2009-04-28.21; # UTC
     5  
     6  # Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009 Free
     7  # Software Foundation, Inc.
     8  # written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
     9  #
    10  # This program is free software; you can redistribute it and/or modify
    11  # it under the terms of the GNU General Public License as published by
    12  # the Free Software Foundation; either version 2, or (at your option)
    13  # any later version.
    14  #
    15  # This program is distributed in the hope that it will be useful,
    16  # but WITHOUT ANY WARRANTY; without even the implied warranty of
    17  # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    18  # GNU General Public License for more details.
    19  #
    20  # You should have received a copy of the GNU General Public License
    21  # along with this program.  If not, see <http://www.gnu.org/licenses/>.
    22  
    23  # As a special exception to the GNU General Public License, if you
    24  # distribute this file as part of a program that contains a
    25  # configuration script generated by Autoconf, you may include it under
    26  # the same distribution terms that you use for the rest of that program.
    27  
    28  # This file is maintained in Automake, please report
    29  # bugs to <bug-automake@gnu.org> or send patches to
    30  # <automake-patches@gnu.org>.
    31  
    32  case $1 in
    33    '')
    34       echo "$0: No file.  Try \`$0 --help' for more information." 1>&2
    35       exit 1;
    36       ;;
    37    -h | --h*)
    38      cat <<\EOF
    39  Usage: mdate-sh [--help] [--version] FILE
    40  
    41  Pretty-print the modification time of FILE.
    42  
    43  Report bugs to <bug-automake@gnu.org>.
    44  EOF
    45      exit $?
    46      ;;
    47    -v | --v*)
    48      echo "mdate-sh $scriptversion"
    49      exit $?
    50      ;;
    51  esac
    52  
    53  # Prevent date giving response in another language.
    54  LANG=C
    55  export LANG
    56  LC_ALL=C
    57  export LC_ALL
    58  LC_TIME=C
    59  export LC_TIME
    60  
    61  # GNU ls changes its time format in response to the TIME_STYLE
    62  # variable.  Since we cannot assume `unset' works, revert this
    63  # variable to its documented default.
    64  if test "${TIME_STYLE+set}" = set; then
    65    TIME_STYLE=posix-long-iso
    66    export TIME_STYLE
    67  fi
    68  
    69  save_arg1=$1
    70  
    71  # Find out how to get the extended ls output of a file or directory.
    72  if ls -L /dev/null 1>/dev/null 2>&1; then
    73    ls_command='ls -L -l -d'
    74  else
    75    ls_command='ls -l -d'
    76  fi
    77  # Avoid user/group names that might have spaces, when possible.
    78  if ls -n /dev/null 1>/dev/null 2>&1; then
    79    ls_command="$ls_command -n"
    80  fi
    81  
    82  # A `ls -l' line looks as follows on OS/2.
    83  #  drwxrwx---        0 Aug 11  2001 foo
    84  # This differs from Unix, which adds ownership information.
    85  #  drwxrwx---   2 root  root      4096 Aug 11  2001 foo
    86  #
    87  # To find the date, we split the line on spaces and iterate on words
    88  # until we find a month.  This cannot work with files whose owner is a
    89  # user named `Jan', or `Feb', etc.  However, it's unlikely that `/'
    90  # will be owned by a user whose name is a month.  So we first look at
    91  # the extended ls output of the root directory to decide how many
    92  # words should be skipped to get the date.
    93  
    94  # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
    95  set x`$ls_command /`
    96  
    97  # Find which argument is the month.
    98  month=
    99  command=
   100  until test $month
   101  do
   102    shift
   103    # Add another shift to the command.
   104    command="$command shift;"
   105    case $1 in
   106      Jan) month=January; nummonth=1;;
   107      Feb) month=February; nummonth=2;;
   108      Mar) month=March; nummonth=3;;
   109      Apr) month=April; nummonth=4;;
   110      May) month=May; nummonth=5;;
   111      Jun) month=June; nummonth=6;;
   112      Jul) month=July; nummonth=7;;
   113      Aug) month=August; nummonth=8;;
   114      Sep) month=September; nummonth=9;;
   115      Oct) month=October; nummonth=10;;
   116      Nov) month=November; nummonth=11;;
   117      Dec) month=December; nummonth=12;;
   118    esac
   119  done
   120  
   121  # Get the extended ls output of the file or directory.
   122  set dummy x`eval "$ls_command \"\$save_arg1\""`
   123  
   124  # Remove all preceding arguments
   125  eval $command
   126  
   127  # Because of the dummy argument above, month is in $2.
   128  #
   129  # On a POSIX system, we should have
   130  #
   131  # $# = 5
   132  # $1 = file size
   133  # $2 = month
   134  # $3 = day
   135  # $4 = year or time
   136  # $5 = filename
   137  #
   138  # On Darwin 7.7.0 and 7.6.0, we have
   139  #
   140  # $# = 4
   141  # $1 = day
   142  # $2 = month
   143  # $3 = year or time
   144  # $4 = filename
   145  
   146  # Get the month.
   147  case $2 in
   148    Jan) month=January; nummonth=1;;
   149    Feb) month=February; nummonth=2;;
   150    Mar) month=March; nummonth=3;;
   151    Apr) month=April; nummonth=4;;
   152    May) month=May; nummonth=5;;
   153    Jun) month=June; nummonth=6;;
   154    Jul) month=July; nummonth=7;;
   155    Aug) month=August; nummonth=8;;
   156    Sep) month=September; nummonth=9;;
   157    Oct) month=October; nummonth=10;;
   158    Nov) month=November; nummonth=11;;
   159    Dec) month=December; nummonth=12;;
   160  esac
   161  
   162  case $3 in
   163    ???*) day=$1;;
   164    *) day=$3; shift;;
   165  esac
   166  
   167  # Here we have to deal with the problem that the ls output gives either
   168  # the time of day or the year.
   169  case $3 in
   170    *:*) set `date`; eval year=\$$#
   171         case $2 in
   172  	 Jan) nummonthtod=1;;
   173  	 Feb) nummonthtod=2;;
   174  	 Mar) nummonthtod=3;;
   175  	 Apr) nummonthtod=4;;
   176  	 May) nummonthtod=5;;
   177  	 Jun) nummonthtod=6;;
   178  	 Jul) nummonthtod=7;;
   179  	 Aug) nummonthtod=8;;
   180  	 Sep) nummonthtod=9;;
   181  	 Oct) nummonthtod=10;;
   182  	 Nov) nummonthtod=11;;
   183  	 Dec) nummonthtod=12;;
   184         esac
   185         # For the first six month of the year the time notation can also
   186         # be used for files modified in the last year.
   187         if (expr $nummonth \> $nummonthtod) > /dev/null;
   188         then
   189  	 year=`expr $year - 1`
   190         fi;;
   191    *) year=$3;;
   192  esac
   193  
   194  # The result.
   195  echo $day $month $year
   196  
   197  # Local Variables:
   198  # mode: shell-script
   199  # sh-indentation: 2
   200  # eval: (add-hook 'write-file-hooks 'time-stamp)
   201  # time-stamp-start: "scriptversion="
   202  # time-stamp-format: "%:y-%02m-%02d.%02H"
   203  # time-stamp-time-zone: "UTC"
   204  # time-stamp-end: "; # UTC"
   205  # End: