Useless trivia:

awk 'BEGIN { print 
"\x1B\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
 }' | \
nc -u -w 1 $NTP_SERVER 123 | od -t x1 -j 32 -N 4 | \
awk 'NR == 1 { bar = "0x" $2 $3 $4 $5; print strtonum(bar) - 2208988800 }'

will fetch the time (in seconds from 1 JAN 1970) from your NTP server, and 
print it. Works swimmingly on the SVN version of busybox.

With GNU date, you can use this to set your system time (approximately) by 
specifying the time in the '@SECONDS' format. Unfortunately, busybox date 
doesn't recognize the '@SECONDS' format.

So I wrote a patch. (Constructive) criticism happily accepted. If 
there's interest, I'll work up a patch to 'rdate' to directly set time 
from a NTP server.


Index: busybox/coreutils/date.c
===================================================================
--- busybox/coreutils/date.c    (revision 23413)
+++ 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 pointers */
+                               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,




$ ./scripts/bloat-o-meter busybox_unstripped.old busybox_unstripped
function                                             old     new   delta
date_main                                           1201    1282     +81
.rodata                                           120143  120144      +1
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 2/0 up/down: 82/0)               Total: 82 bytes

_______________________________________________
busybox mailing list
[email protected]
http://busybox.net/cgi-bin/mailman/listinfo/busybox

Reply via email to