From 1377f84c456c34b794380202f664a0e2b9922ee5 Mon Sep 17 00:00:00 2001 From: Luka Perkov Date: Tue, 10 May 2016 22:36:12 +0000 Subject: [PATCH] busybox: fix setting the kernel timezone The settimeofday() syscall wrapper provided by musl filters out the timezone argument, breaking the ability to set the kernel timezone through the function. Adjust busybox patch to issue the syscall directly in order to circumvent the problem. Signed-off-by: Jo-Philipp Wich SVN-Revision: 49322 --- .../busybox/patches/250-date-k-flag.patch | 24 +++++++++++-------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/package/utils/busybox/patches/250-date-k-flag.patch b/package/utils/busybox/patches/250-date-k-flag.patch index f0dab26898..111a86156f 100644 --- a/package/utils/busybox/patches/250-date-k-flag.patch +++ b/package/utils/busybox/patches/250-date-k-flag.patch @@ -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 +-#endif +#include - #if ENABLE_FEATURE_DATE_NANO - # include - #endif -@@ -148,8 +150,9 @@ enum { ++#include + + 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; -- 2.30.2