[prev in list] [next in list] [prev in thread] [next in thread]
List: busybox
Subject: SV: [PATCH] hwclock: separate invocations settimeofday time&zone
From: Lukasz Serafin <Lukasz.Serafin () axis ! com>
Date: 2020-07-20 17:12:46
Message-ID: 1595265165987.47480 () axis ! com
[Download RAW message or body]
"So this will just silently stop to work if someone upgrades glibc?"
Yes, unfortunately that is how it is.
"Whats the downside by just always doing it the 'new way' "
Good question. We have the "#if" because of a comment by Markus Gothe:
http://lists.busybox.net/pipermail/busybox/2020-July/088083.html
BR
Lukasz
________________________________________
Från: Norbert Lange <nolange79@gmail.com>
Skickat: den 14 juli 2020 14:28
Till: Lukasz Serafin
Kopia: busybox@busybox.net; Fredrik M Olsson
Ämne: Re: [PATCH] hwclock: separate invocations settimeofday time&zone
Am Di., 14. Juli 2020 um 14:09 Uhr schrieb Lukasz Serafin
<Lukasz.Serafin@axis.com>:
>
> Refactor usage of settimeofday to be compatible with glibc v2.31.
>
> Signed-off-by: Fredrik M Olsson <fredriol@axis.com>
> ---
> util-linux/hwclock.c | 20 ++++++++++++++++----
> 1 file changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/util-linux/hwclock.c b/util-linux/hwclock.c
> index 29f5102..d3884f6 100644
> --- a/util-linux/hwclock.c
> +++ b/util-linux/hwclock.c
> @@ -117,6 +117,20 @@ static void show_clock(const char **pp_rtcname, int utc)
> #endif
> }
>
> +static void set_time_and_zone(const struct timeval *tv, const struct timezone *tz)
> +{
> +#if defined(__GLIBC__) && __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 31
> + if (settimeofday(NULL, tz))
> + bb_perror_msg_and_die("settimeofday tz");
> +
> + if (settimeofday(tv, NULL))
> + bb_perror_msg_and_die("settimeofday tv");
> +#else
> + if (settimeofday(tv, tz))
> + bb_perror_msg_and_die("settimeofday");
> +#endif
> +}
> +
So this will just silently stop to work if someone upgrades glibc?
Whats the downside by just always doing it the "new way"
(until that wont work either, see https://lwn.net/Articles/811275/)
> static void to_sys_clock(const char **pp_rtcname, int utc)
> {
> struct timeval tv;
> @@ -131,8 +145,7 @@ static void to_sys_clock(const char **pp_rtcname, int utc)
>
> tv.tv_sec = read_rtc(pp_rtcname, NULL, utc);
> tv.tv_usec = 0;
> - if (settimeofday(&tv, &tz))
> - bb_perror_msg_and_die("settimeofday");
> + set_time_and_zone(&tv, &tz);
> }
>
> static void from_sys_clock(const char **pp_rtcname, int utc)
> @@ -283,8 +296,7 @@ static void set_system_clock_timezone(int utc)
> gettimeofday(&tv, NULL);
> if (!utc)
> tv.tv_sec += tz.tz_minuteswest * 60;
> - if (settimeofday(&tv, &tz))
> - bb_perror_msg_and_die("settimeofday");
> + set_time_and_zone(&tv, &tz);
> }
>
> //usage:#define hwclock_trivial_usage
> --
> 2.11.0
>
> _______________________________________________
> busybox mailing list
> busybox@busybox.net
> http://lists.busybox.net/mailman/listinfo/busybox
Norbert
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic