fix fork of processes with active async io contexts
[musl] / src / time / strftime.c
index 708875e..cc53d53 100644 (file)
@@ -6,11 +6,8 @@
 #include <time.h>
 #include <limits.h>
 #include "locale_impl.h"
-#include "libc.h"
 #include "time_impl.h"
 
-const char *__nl_langinfo_l(nl_item, locale_t);
-
 static int is_leap(int y)
 {
        /* Avoid overflow */
@@ -45,9 +42,6 @@ static int week_num(const struct tm *tm)
        return val;
 }
 
-const char *__tm_to_tzname(const struct tm *);
-size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t);
-
 const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *tm, locale_t loc, int pad)
 {
        nl_item item;
@@ -181,9 +175,8 @@ const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *
                        *l = 0;
                        return "";
                }
-               *l = snprintf(*s, sizeof *s, "%+.2d%.2d",
-                       (tm->__tm_gmtoff)/3600,
-                       abs(tm->__tm_gmtoff%3600)/60);
+               *l = snprintf(*s, sizeof *s, "%+.4ld",
+                       tm->__tm_gmtoff/3600*100 + tm->__tm_gmtoff%3600/60);
                return *s;
        case 'Z':
                if (tm->tm_isdst < 0) {