git: 9front

Download patch

ref: c81270f162863f843aefea269e916ee416d94d93
parent: 3723ffc1ded7ba5fdb1466fef009d30af87db52b
author: google <google@daverabbitz.ath.cx>
date: Sun Sep 2 19:08:14 EDT 2012

Add -i and -t options to date for isodate and isotime display.

--- a/sys/man/1/date
+++ b/sys/man/1/date
@@ -24,6 +24,12 @@
 .B -n
 Report the date as the number of seconds since the
 epoch, 00:00:00 GMT, January 1, 1970.
+.TP
+.B -i
+Report the date as ISO-8601 without time and timezone suffix.
+.TP
+.B -t
+Report the date as ISO-8601 with time and timezone suffix.
 .PP
 The conversion from Greenwich Mean Time to local time depends on the
 .B $timezone
--- a/sys/src/cmd/date.c
+++ b/sys/src/cmd/date.c
@@ -1,17 +1,19 @@
 #include <u.h>
 #include <libc.h>
 
-int uflg, nflg;
+int uflg, nflg, iflg, tflg;
 
 void
 main(int argc, char *argv[])
 {
 	ulong now;
-
+	Tm *tm;
 	ARGBEGIN{
 	case 'n':	nflg = 1; break;
 	case 'u':	uflg = 1; break;
-	default:	fprint(2, "usage: date [-un] [seconds]\n"); exits("usage");
+	case 't':	tflg = 1; /* implies -i */
+	case 'i':	iflg = 1; break;
+	default:	fprint(2, "usage: date [-itun] [seconds]\n"); exits("usage");
 	}ARGEND
 
 	if(argc == 1)
@@ -21,10 +23,17 @@
 
 	if(nflg)
 		print("%ld\n", now);
-	else if(uflg)
-		print("%s", asctime(gmtime(now)));
-	else
-		print("%s", ctime(now));
-	
+	else if(iflg) {
+		tm = uflg ? gmtime(now) : localtime(now);
+		if(tflg)
+			print("%s\n", isotime(tm));
+		else
+			print("%s\n", isodate(tm));
+	} else {
+		if(uflg)
+			print("%s", asctime(gmtime(now)));
+		else
+			print("%s", ctime(now));
+	}
 	exits(0);
 }
--