Annotation of embedaddon/quagga/doc/mdate-sh, revision 1.1.1.1
1.1 misho 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:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>