]> git.ipfire.org Git - thirdparty/shadow.git/commitdiff
lib/time/day_to_str.[ch]: day_to_str(): Accept a day instead of a date, and rename...
authorAlejandro Colomar <alx@kernel.org>
Mon, 29 Jan 2024 14:34:20 +0000 (15:34 +0100)
committerSerge Hallyn <serge@hallyn.com>
Thu, 14 Mar 2024 21:30:46 +0000 (16:30 -0500)
It was always being called with 'day * DAY', so do that internally and
simplify.  This grabs some code from print_day_as_date().

Cc: Tobias Stoeckmann <tobias@stoeckmann.org>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
lib/time/day_to_str.c
lib/time/day_to_str.h

index 4acfe907d04db404396d4b4bae21d03451f1a241..e3e42210bc45e52839ae7099e52a069c5761e17e 100644 (file)
@@ -1,4 +1,5 @@
 // SPDX-FileCopyrightText: 2021-2024, Alejandro Colomar <alx@kernel.org>
+// SPDX-FileCopyrightText: 2024, Tobias Stoeckmann <tobias@stoeckmann.org>
 // SPDX-License-Identifier: BSD-3-Clause
 
 
@@ -7,4 +8,4 @@
 #include "time/day_to_str.h"
 
 
-extern inline void date_to_str(size_t size, char buf[size], long date);
+extern inline void day_to_str(size_t size, char buf[size], long day);
index 2689794ba9443f88d311130d9d01b66002cb19f2..6aa855ac70feb43045956ac54dee30f1ef106f51 100644 (file)
@@ -1,7 +1,6 @@
-/*
- * SPDX-FileCopyrightText: 2021-2023, Alejandro Colomar <alx@kernel.org>
- * SPDX-License-Identifier: BSD-3-Clause
- */
+// SPDX-FileCopyrightText: 2021-2024, Alejandro Colomar <alx@kernel.org>
+// SPDX-FileCopyrightText: 2024, Tobias Stoeckmann <tobias@stoeckmann.org>
+// SPDX-License-Identifier: BSD-3-Clause
 
 
 #ifndef SHADOW_INCLUDE_LIB_TIME_DAY_TO_STR_H_
 #include "string/strtcpy.h"
 
 
-#define DAY_TO_STR(str, day)   date_to_str(NITEMS(str), str, day * DAY)
+#define DAY_TO_STR(str, day)   day_to_str(NITEMS(str), str, day)
 
 
-inline void date_to_str(size_t size, char buf[size], long date);
+inline void day_to_str(size_t size, char buf[size], long day);
 
 
 inline void
-date_to_str(size_t size, char buf[size], long date)
+day_to_str(size_t size, char buf[size], long day)
 {
-       time_t           t;
+       time_t           date;
        const struct tm  *tm;
 
-       t = date;
-       if (date < 0) {
-               (void) strtcpy(buf, "never", size);
+       if (day < 0) {
+               strtcpy(buf, "never", size);
                return;
        }
 
-       tm = gmtime(&t);
+       if (__builtin_mul_overflow(day, DAY, &date)) {
+               strtcpy(buf, "future", size);
+               return;
+       }
+
+       tm = gmtime(&date);
        if (tm == NULL) {
-               (void) strtcpy(buf, "future", size);
+               strtcpy(buf, "future", size);
                return;
        }
 
        if (strftime(buf, size, "%Y-%m-%d", tm) == 0)
-               (void) strtcpy(buf, "future", size);
+               strtcpy(buf, "future", size);
 }