Annotation of embedaddon/quagga/doc/mdate-sh, revision 1.1.1.4
1.1 misho 1: #!/bin/sh
2: # Get modification time of a file or directory and pretty-print it.
3:
1.1.1.2 misho 4: scriptversion=2010-08-21.06; # UTC
1.1 misho 5:
1.1.1.4 ! misho 6: # Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007, 2009, 2010
! 7: # Free Software Foundation, Inc.
1.1 misho 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:
1.1.1.2 misho 32: if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
33: emulate sh
34: NULLCMD=:
35: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
36: # is contrary to our usage. Disable this feature.
37: alias -g '${1+"$@"}'='"$@"'
38: setopt NO_GLOB_SUBST
39: fi
40:
1.1 misho 41: case $1 in
42: '')
1.1.1.4 ! misho 43: echo "$0: No file. Try \`$0 --help' for more information." 1>&2
1.1 misho 44: exit 1;
45: ;;
46: -h | --h*)
47: cat <<\EOF
48: Usage: mdate-sh [--help] [--version] FILE
49:
1.1.1.2 misho 50: Pretty-print the modification day of FILE, in the format:
51: 1 January 1970
1.1 misho 52:
53: Report bugs to <bug-automake@gnu.org>.
54: EOF
55: exit $?
56: ;;
57: -v | --v*)
58: echo "mdate-sh $scriptversion"
59: exit $?
60: ;;
61: esac
62:
1.1.1.2 misho 63: error ()
64: {
65: echo "$0: $1" >&2
66: exit 1
67: }
68:
69:
1.1 misho 70: # Prevent date giving response in another language.
71: LANG=C
72: export LANG
73: LC_ALL=C
74: export LC_ALL
75: LC_TIME=C
76: export LC_TIME
77:
78: # GNU ls changes its time format in response to the TIME_STYLE
1.1.1.4 ! misho 79: # variable. Since we cannot assume `unset' works, revert this
1.1 misho 80: # variable to its documented default.
81: if test "${TIME_STYLE+set}" = set; then
82: TIME_STYLE=posix-long-iso
83: export TIME_STYLE
84: fi
85:
86: save_arg1=$1
87:
88: # Find out how to get the extended ls output of a file or directory.
89: if ls -L /dev/null 1>/dev/null 2>&1; then
90: ls_command='ls -L -l -d'
91: else
92: ls_command='ls -l -d'
93: fi
94: # Avoid user/group names that might have spaces, when possible.
95: if ls -n /dev/null 1>/dev/null 2>&1; then
96: ls_command="$ls_command -n"
97: fi
98:
1.1.1.4 ! misho 99: # A `ls -l' line looks as follows on OS/2.
1.1 misho 100: # drwxrwx--- 0 Aug 11 2001 foo
101: # This differs from Unix, which adds ownership information.
102: # drwxrwx--- 2 root root 4096 Aug 11 2001 foo
103: #
104: # To find the date, we split the line on spaces and iterate on words
105: # until we find a month. This cannot work with files whose owner is a
1.1.1.4 ! misho 106: # user named `Jan', or `Feb', etc. However, it's unlikely that `/'
1.1 misho 107: # will be owned by a user whose name is a month. So we first look at
108: # the extended ls output of the root directory to decide how many
109: # words should be skipped to get the date.
110:
111: # On HPUX /bin/sh, "set" interprets "-rw-r--r--" as options, so the "x" below.
112: set x`$ls_command /`
113:
114: # Find which argument is the month.
115: month=
116: command=
117: until test $month
118: do
1.1.1.4 ! misho 119: test $# -gt 0 || error "failed parsing \`$ls_command /' output"
1.1 misho 120: shift
121: # Add another shift to the command.
122: command="$command shift;"
123: case $1 in
124: Jan) month=January; nummonth=1;;
125: Feb) month=February; nummonth=2;;
126: Mar) month=March; nummonth=3;;
127: Apr) month=April; nummonth=4;;
128: May) month=May; nummonth=5;;
129: Jun) month=June; nummonth=6;;
130: Jul) month=July; nummonth=7;;
131: Aug) month=August; nummonth=8;;
132: Sep) month=September; nummonth=9;;
133: Oct) month=October; nummonth=10;;
134: Nov) month=November; nummonth=11;;
135: Dec) month=December; nummonth=12;;
136: esac
137: done
138:
1.1.1.4 ! misho 139: test -n "$month" || error "failed parsing \`$ls_command /' output"
1.1.1.2 misho 140:
1.1 misho 141: # Get the extended ls output of the file or directory.
1.1.1.2 misho 142: set dummy x`eval "$ls_command \"\\\$save_arg1\""`
1.1 misho 143:
144: # Remove all preceding arguments
145: eval $command
146:
147: # Because of the dummy argument above, month is in $2.
148: #
149: # On a POSIX system, we should have
150: #
151: # $# = 5
152: # $1 = file size
153: # $2 = month
154: # $3 = day
155: # $4 = year or time
156: # $5 = filename
157: #
158: # On Darwin 7.7.0 and 7.6.0, we have
159: #
160: # $# = 4
161: # $1 = day
162: # $2 = month
163: # $3 = year or time
164: # $4 = filename
165:
166: # Get the month.
167: case $2 in
168: Jan) month=January; nummonth=1;;
169: Feb) month=February; nummonth=2;;
170: Mar) month=March; nummonth=3;;
171: Apr) month=April; nummonth=4;;
172: May) month=May; nummonth=5;;
173: Jun) month=June; nummonth=6;;
174: Jul) month=July; nummonth=7;;
175: Aug) month=August; nummonth=8;;
176: Sep) month=September; nummonth=9;;
177: Oct) month=October; nummonth=10;;
178: Nov) month=November; nummonth=11;;
179: Dec) month=December; nummonth=12;;
180: esac
181:
182: case $3 in
183: ???*) day=$1;;
184: *) day=$3; shift;;
185: esac
186:
187: # Here we have to deal with the problem that the ls output gives either
188: # the time of day or the year.
189: case $3 in
190: *:*) set `date`; eval year=\$$#
191: case $2 in
192: Jan) nummonthtod=1;;
193: Feb) nummonthtod=2;;
194: Mar) nummonthtod=3;;
195: Apr) nummonthtod=4;;
196: May) nummonthtod=5;;
197: Jun) nummonthtod=6;;
198: Jul) nummonthtod=7;;
199: Aug) nummonthtod=8;;
200: Sep) nummonthtod=9;;
201: Oct) nummonthtod=10;;
202: Nov) nummonthtod=11;;
203: Dec) nummonthtod=12;;
204: esac
205: # For the first six month of the year the time notation can also
206: # be used for files modified in the last year.
207: if (expr $nummonth \> $nummonthtod) > /dev/null;
208: then
209: year=`expr $year - 1`
210: fi;;
211: *) year=$3;;
212: esac
213:
214: # The result.
215: echo $day $month $year
216:
217: # Local Variables:
218: # mode: shell-script
219: # sh-indentation: 2
220: # eval: (add-hook 'write-file-hooks 'time-stamp)
221: # time-stamp-start: "scriptversion="
222: # time-stamp-format: "%:y-%02m-%02d.%02H"
223: # time-stamp-time-zone: "UTC"
224: # time-stamp-end: "; # UTC"
225: # End:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>