Add -u option to date (POSIX and Plan 9, and useful)
This commit is contained in:
12
date.c
12
date.c
@@ -11,21 +11,27 @@ main(int argc, char *argv[])
|
||||
char buf[BUFSIZ], c;
|
||||
char *fmt = "%c";
|
||||
struct tm *now = NULL;
|
||||
struct tm *(*tztime)(const time_t *) = localtime;
|
||||
const char *tz = "local";
|
||||
time_t t;
|
||||
|
||||
t = time(NULL);
|
||||
while((c = getopt(argc, argv, "d:")) != -1)
|
||||
while((c = getopt(argc, argv, "d:u")) != -1)
|
||||
switch(c) {
|
||||
case 'd':
|
||||
t = estrtol(optarg, 0);
|
||||
break;
|
||||
case 'u':
|
||||
tztime = gmtime;
|
||||
tz = "gm";
|
||||
break;
|
||||
default:
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
if(optind < argc && argv[optind][0] == '+')
|
||||
fmt = &argv[optind][1];
|
||||
if(!(now = localtime(&t)))
|
||||
eprintf("localtime failed\n");
|
||||
if(!(now = tztime(&t)))
|
||||
eprintf("%stime failed\n", tz);
|
||||
|
||||
strftime(buf, sizeof buf, fmt, now);
|
||||
puts(buf);
|
||||
|
Reference in New Issue
Block a user