diff options
Diffstat (limited to 'bin/date/date.c')
-rw-r--r-- | bin/date/date.c | 31 |
1 files changed, 11 insertions, 20 deletions
diff --git a/bin/date/date.c b/bin/date/date.c index 4dc5df0dccfc..0ff3b9f74cbd 100644 --- a/bin/date/date.c +++ b/bin/date/date.c @@ -29,21 +29,6 @@ * SUCH DAMAGE. */ -#ifndef lint -static char const copyright[] = -"@(#) Copyright (c) 1985, 1987, 1988, 1993\n\ - The Regents of the University of California. All rights reserved.\n"; -#endif /* not lint */ - -#if 0 -#ifndef lint -static char sccsid[] = "@(#)date.c 8.2 (Berkeley) 4/28/95"; -#endif /* not lint */ -#endif - -#include <sys/cdefs.h> -__FBSDID("$FreeBSD$"); - #include <sys/param.h> #include <sys/time.h> #include <sys/stat.h> @@ -68,12 +53,12 @@ __FBSDID("$FreeBSD$"); static time_t tval; static void badformat(void); -static void iso8601_usage(const char *); +static void iso8601_usage(const char *) __dead2; static void multipleformats(void); static void printdate(const char *); static void printisodate(struct tm *); static void setthetime(const char *, const char *, int); -static void usage(void); +static void usage(void) __dead2; static const struct iso8601_fmt { const char *refname; @@ -95,7 +80,7 @@ main(int argc, char *argv[]) bool Iflag, jflag, Rflag; const char *format; char buf[1024]; - char *fmt; + char *fmt, *outzone = NULL; char *tmp; struct vary *v; const struct vary *badv; @@ -108,7 +93,7 @@ main(int argc, char *argv[]) (void) setlocale(LC_TIME, ""); rflag = 0; Iflag = jflag = Rflag = 0; - while ((ch = getopt(argc, argv, "f:I::jnRr:uv:")) != -1) + while ((ch = getopt(argc, argv, "f:I::jnRr:uv:z:")) != -1) switch((char)ch) { case 'f': fmt = optarg; @@ -152,6 +137,9 @@ main(int argc, char *argv[]) case 'u': /* do everything in UTC */ (void)setenv("TZ", "UTC0", 1); break; + case 'z': + outzone = optarg; + break; case 'v': v = vary_append(v, optarg); break; @@ -189,6 +177,8 @@ main(int argc, char *argv[]) format = *argv + 1; } + if (outzone != NULL && setenv("TZ", outzone, 1) != 0) + err(1, "setenv(TZ)"); lt = localtime(&tval); if (lt == NULL) errx(1, "invalid time"); @@ -211,6 +201,7 @@ main(int argc, char *argv[]) */ setlocale(LC_TIME, "C"); + (void)strftime(buf, sizeof(buf), format, lt); printdate(buf); } @@ -385,7 +376,7 @@ usage(void) (void)fprintf(stderr, "%s\n%s\n%s\n", "usage: date [-jnRu] [-I[date|hours|minutes|seconds]] [-f input_fmt]", " " - "[-r filename|seconds] [-v[+|-]val[y|m|w|d|H|M|S]]", + "[ -z output_zone ] [-r filename|seconds] [-v[+|-]val[y|m|w|d|H|M|S]]", " " "[[[[[[cc]yy]mm]dd]HH]MM[.SS] | new_date] [+output_fmt]" ); |