aboutsummaryrefslogtreecommitdiff
path: root/bin/date/date.c
diff options
context:
space:
mode:
Diffstat (limited to 'bin/date/date.c')
-rw-r--r--bin/date/date.c31
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]"
);