diff options
author | brian <brian@FreeBSD.org> | 1997-08-04 03:37:07 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 1997-08-04 03:37:07 +0000 |
commit | fdc5ce4a45ba240d51b1446cd73859d43e9a11c7 (patch) | |
tree | ba21dc6c79ca9c2ec10d7ae68044d956d485f7dd /bin/date/date.c | |
parent | eb599a86b687c502745bbc36a4b17d788cdc28c5 (diff) | |
download | FreeBSD-src-fdc5ce4a45ba240d51b1446cd73859d43e9a11c7.zip FreeBSD-src-fdc5ce4a45ba240d51b1446cd73859d43e9a11c7.tar.gz |
Add [-DWMY] flags for date adjustment.
Discussed with: freebsd-hackers
Diffstat (limited to 'bin/date/date.c')
-rw-r--r-- | bin/date/date.c | 28 |
1 files changed, 24 insertions, 4 deletions
diff --git a/bin/date/date.c b/bin/date/date.c index 8d95bda..ad9ffca 100644 --- a/bin/date/date.c +++ b/bin/date/date.c @@ -30,7 +30,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: date.c,v 1.12 1997/04/16 05:59:21 danny Exp $ + * $Id: date.c,v 1.13 1997/06/06 06:34:37 charnier Exp $ */ #ifndef lint @@ -57,6 +57,7 @@ static char const sccsid[] = "@(#)date.c 8.2 (Berkeley) 4/28/95"; #include <locale.h> #include "extern.h" +#include "vary.h" time_t tval; int retval, nflag; @@ -79,12 +80,16 @@ main(argc, argv) char *format, buf[1024]; char *endptr; int set_timezone; + struct vary *v; + const struct vary *badv; + struct tm lt; + v = NULL; (void) setlocale(LC_TIME, ""); tz.tz_dsttime = tz.tz_minuteswest = 0; rflag = 0; set_timezone = 0; - while ((ch = getopt(argc, argv, "d:nr:ut:")) != -1) + while ((ch = getopt(argc, argv, "D:W:M:Y:d:nr:ut:")) != -1) switch((char)ch) { case 'd': /* daylight savings time */ tz.tz_dsttime = strtol(optarg, &endptr, 10) ? 1 : 0; @@ -109,6 +114,12 @@ main(argc, argv) usage(); set_timezone = 1; break; + case 'D': + case 'W': + case 'M': + case 'Y': + v = vary_append(v, ch, optarg); + break; default: usage(); } @@ -141,7 +152,16 @@ main(argc, argv) if (*argv && **argv == '+') format = *argv + 1; - (void)strftime(buf, sizeof(buf), format, localtime(&tval)); + lt = *localtime(&tval); + badv = vary_apply(v, <); + if (badv) { + fprintf(stderr, "-%c %s: Cannot apply date adjustment\n", + badv->flag, badv->arg); + vary_destroy(v); + usage(); + } + vary_destroy(v); + (void)strftime(buf, sizeof(buf), format, <); (void)printf("%s\n", buf); exit(retval); } @@ -239,6 +259,6 @@ usage() { (void)fprintf(stderr, "%s\n%s\n", "usage: date [-nu] [-d dst] [-r seconds] [-t west] [+format]", - " [yy[mm[dd[hh]]]]mm[.ss]]"); + " [-DWMY [+|-]val] [[[[yy]mm]dd]HH]MM[.ss]]"); exit(1); } |