diff options
Diffstat (limited to 'package/utils/busybox/patches/250-date-k-flag.patch')
-rw-r--r-- | package/utils/busybox/patches/250-date-k-flag.patch | 92 |
1 files changed, 0 insertions, 92 deletions
diff --git a/package/utils/busybox/patches/250-date-k-flag.patch b/package/utils/busybox/patches/250-date-k-flag.patch deleted file mode 100644 index 5aadbb233c..0000000000 --- a/package/utils/busybox/patches/250-date-k-flag.patch +++ /dev/null @@ -1,92 +0,0 @@ ---- a/coreutils/date.c -+++ b/coreutils/date.c -@@ -123,6 +123,7 @@ - //usage: IF_FEATURE_DATE_ISOFMT( - //usage: "\n -D FMT Use FMT (strptime format) for -d TIME conversion" - //usage: ) -+//usage: "\n -k Set Kernel timezone from localtime and exit" - //usage: "\n" - //usage: "\nRecognized TIME formats:" - //usage: "\n hh:mm[:ss]" -@@ -139,9 +140,8 @@ - - #include "libbb.h" - #include "common_bufsiz.h" --#if ENABLE_FEATURE_DATE_NANO --# include <sys/syscall.h> --#endif -+#include <sys/time.h> -+#include <sys/syscall.h> - - enum { - OPT_RFC2822 = (1 << 0), /* R */ -@@ -149,8 +149,9 @@ enum { - OPT_UTC = (1 << 2), /* u */ - OPT_DATE = (1 << 3), /* d */ - OPT_REFERENCE = (1 << 4), /* r */ -- OPT_TIMESPEC = (1 << 5) * ENABLE_FEATURE_DATE_ISOFMT, /* I */ -- OPT_HINT = (1 << 6) * ENABLE_FEATURE_DATE_ISOFMT, /* D */ -+ OPT_KERNELTZ = (1 << 5), /* k */ -+ OPT_TIMESPEC = (1 << 6) * ENABLE_FEATURE_DATE_ISOFMT, /* I */ -+ OPT_HINT = (1 << 7) * ENABLE_FEATURE_DATE_ISOFMT, /* D */ - }; - - #if ENABLE_LONG_OPTS -@@ -162,6 +163,7 @@ static const char date_longopts[] ALIGN1 - /* "universal\0" No_argument "u" */ - "date\0" Required_argument "d" - "reference\0" Required_argument "r" -+ "set-kernel-tz\0" No_argument "k" - ; - #endif - -@@ -181,6 +183,8 @@ static void maybe_set_utc(int opt) - int date_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; - int date_main(int argc UNUSED_PARAM, char **argv) - { -+ time_t tt; -+ struct timezone tz; - struct timespec ts; - struct tm tm_time; - char buf_fmt_dt2str[64]; -@@ -193,7 +197,7 @@ int date_main(int argc UNUSED_PARAM, cha - char *isofmt_arg = NULL; - - opt = getopt32long(argv, "^" -- "Rs:ud:r:" -+ "Rs:ud:r:k" - IF_FEATURE_DATE_ISOFMT("I::D:") - "\0" - "d--s:s--d" -@@ -256,6 +260,31 @@ int date_main(int argc UNUSED_PARAM, cha - if (*argv) - bb_show_usage(); - -+ /* Setting of kernel timezone was requested */ -+ if (opt & OPT_KERNELTZ) { -+ tt = time(NULL); -+ localtime_r(&tt, &tm_time); -+ -+ /* workaround warp_clock() on first invocation */ -+ memset(&tz, 0, sizeof(tz)); -+ syscall(SYS_settimeofday, NULL, &tz); -+ -+ memset(&tz, 0, sizeof(tz)); -+#ifdef __USE_MISC -+ tz.tz_minuteswest = -(tm_time.tm_gmtoff / 60); -+#else -+ tz.tz_minuteswest = -(tm_time.__tm_gmtoff / 60); -+#endif -+ -+ if (syscall(SYS_settimeofday, NULL, &tz)) -+ { -+ bb_perror_msg("can't set kernel time zone"); -+ return EXIT_FAILURE; -+ } -+ -+ return EXIT_SUCCESS; -+ } -+ - /* Now we have parsed all the information except the date format - * which depends on whether the clock is being set or read */ - |