[PATCH] date (add gnu-ism)

David Edwards busybox at dpe.lusars.net
Wed Oct 1 00:34:25 UTC 2008


This patch adds the ability to specify time as seconds from epoch using 
the @integer syntax. It's a (poorly-documented) gnu-ism (and has been 
for a number of years) that is really handy for a couple things. 
Examples: Replace ntpdate with a short script, or calculate "when is now 
plus 45,100 seconds?".

Please consider applying.

Index: busybox/coreutils/date.c
===================================================================
--- busybox/coreutils/date.c	(revision 23570)
+++ busybox/coreutils/date.c	(working copy)
@@ -146,6 +146,14 @@
 						end = '\0';
 					/* else end != NUL and we error out 
*/
 				}
+			} else if (date_str[0] == '@') {
+				/* The format '@SECONDS' is a poorly-documented GNU-ism. */
+				/* The 'SECONDS' counts from 1 Jan 1970 - just like time_t. */
+				int seconds; /* Avoiding casting time_t */
+				if (sscanf(date_str, "@%d%c", &seconds, &end) < 1)
+					bb_error_msg_and_die(bb_msg_invalid_date, date_str);
+				tm = seconds;
+				memcpy(&tm_time, localtime(&tm), sizeof(tm_time));
 			} else {
 				if (sscanf(date_str, "%2u%2u%2u%2u%u%c", &tm_time.tm_mon,
 							&tm_time.tm_mday, &tm_time.tm_hour, &tm_time.tm_min,



More information about the busybox mailing list