@ -8,15 +8,19 @@
//usage: "\n"
//usage: "\nRecognized TIME formats:"
//usage: "\n hh:mm[:ss]"
@@ -138,6 +139,7 @@
@@ -138,9 +139,8 @@
//usage: "Wed Apr 12 18:52:41 MDT 2000\n"
#include "libbb.h"
-#if ENABLE_FEATURE_DATE_NANO
-# include <sys/syscall.h>
-#endif
+#include <sys/time.h>
#if ENABLE_FEATURE_DATE_NANO
# include <sys/syscall.h>
#endif
@@ -148,8 +150,9 @@ enum {
+#include <sys/syscall.h>
enum {
OPT_RFC2822 = (1 << 0), /* R */
@@ -148,8 +148,9 @@ enum {
OPT_UTC = (1 << 2), /* u */
OPT_DATE = (1 << 3), /* d */
OPT_REFERENCE = (1 << 4), /* r */
@ -28,7 +32,7 @@
};
static void maybe_set_utc(int opt)
@@ -167,12 +170 ,15 @@ static const char date_longopts[] ALIGN1
@@ -167,12 +168 ,15 @@ static const char date_longopts[] ALIGN1
/* "universal\0" No_argument "u" */
"date\0" Required_argument "d"
"reference\0" Required_argument "r"
@ -44,7 +48,7 @@
struct timespec ts;
struct tm tm_time;
char buf_fmt_dt2str[64];
@@ -187,7 +193 ,7 @@ int date_main(int argc UNUSED_PARAM, cha
@@ -187,7 +191 ,7 @@ int date_main(int argc UNUSED_PARAM, cha
opt_complementary = "d--s:s--d"
IF_FEATURE_DATE_ISOFMT(":R--I:I--R");
IF_LONG_OPTS(applet_long_options = date_longopts;)
@ -53,7 +57,7 @@
IF_FEATURE_DATE_ISOFMT("I::D:"),
&date_str, &date_str, &filename
IF_FEATURE_DATE_ISOFMT(, &isofmt_arg, &fmt_str2dt));
@@ -244,6 +250 ,31 @@ int date_main(int argc UNUSED_PARAM, cha
@@ -244,6 +248 ,31 @@ int date_main(int argc UNUSED_PARAM, cha
if (*argv)
bb_show_usage();
@ -64,7 +68,7 @@
+
+ /* workaround warp_clock() on first invocation */
+ memset(&tz, 0, sizeof(tz));
+ settimeofday( NULL, &tz);
+ syscall(SYS_settimeofday, NULL, &tz);
+
+ memset(&tz, 0, sizeof(tz));
+#ifdef __USE_MISC
@ -73,7 +77,7 @@
+ tz.tz_minuteswest = -(tm_time.__tm_gmtoff / 60);
+#endif
+
+ if (settimeofday( NULL, &tz))
+ if (syscall(SYS_settimeofday, NULL, &tz))
+ {
+ bb_perror_msg("can't set kernel time zone");
+ return EXIT_FAILURE;