summaryrefslogtreecommitdiff
path: root/missing/strftime.c
diff options
context:
space:
mode:
Diffstat (limited to 'missing/strftime.c')
-rw-r--r--missing/strftime.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/missing/strftime.c b/missing/strftime.c
index 3042649aeb..a9e0bc0757 100644
--- a/missing/strftime.c
+++ b/missing/strftime.c
@@ -175,7 +175,8 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
char *start = s;
auto char tbuf[100];
long off;
- int i, w, y;
+ int i, w;
+ long y;
static short first = 1;
#ifdef POSIX_SEMANTICS
static char *savetz = NULL;
@@ -378,7 +379,7 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
break;
case 'Y': /* year with century */
- sprintf(tbuf, "%d", 1900 + timeptr->tm_year);
+ sprintf(tbuf, "%ld", 1900L + timeptr->tm_year);
break;
#ifdef MAILHEADER_EXT
@@ -503,10 +504,10 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
#ifdef VMS_EXT
case 'v': /* date as dd-bbb-YYYY */
- sprintf(tbuf, "%2d-%3.3s-%4d",
+ sprintf(tbuf, "%2d-%3.3s-%4ld",
range(1, timeptr->tm_mday, 31),
months_a[range(0, timeptr->tm_mon, 11)],
- timeptr->tm_year + 1900);
+ timeptr->tm_year + 1900L);
for (i = 3; i < 6; i++)
if (islower(tbuf[i]))
tbuf[i] = toupper(tbuf[i]);
@@ -516,7 +517,7 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
#ifdef POSIX2_DATE
case 'C':
- sprintf(tbuf, "%02d", (timeptr->tm_year + 1900) / 100);
+ sprintf(tbuf, "%02ld", (timeptr->tm_year + 1900L) / 100);
break;
@@ -550,16 +551,16 @@ strftime(char *s, size_t maxsize, const char *format, const struct tm *timeptr)
*/
w = iso8601wknum(timeptr);
if (timeptr->tm_mon == 11 && w == 1)
- y = 1900 + timeptr->tm_year + 1;
+ y = 1900L + timeptr->tm_year + 1;
else if (timeptr->tm_mon == 0 && w >= 52)
- y = 1900 + timeptr->tm_year - 1;
+ y = 1900L + timeptr->tm_year - 1;
else
- y = 1900 + timeptr->tm_year;
+ y = 1900L + timeptr->tm_year;
if (*format == 'G')
- sprintf(tbuf, "%d", y);
+ sprintf(tbuf, "%ld", y);
else
- sprintf(tbuf, "%02d", y % 100);
+ sprintf(tbuf, "%02ld", y % 100);
break;
#endif /* ISO_DATE_EXT */
default:
@@ -590,10 +591,10 @@ out:
#ifndef __STDC__
static int
isleap(year)
-int year;
+long year;
#else
static int
-isleap(int year)
+isleap(long year)
#endif
{
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0);
@@ -684,7 +685,7 @@ iso8601wknum(const struct tm *timeptr)
dec31ly.tm_mon = 11;
dec31ly.tm_mday = 31;
dec31ly.tm_wday = (jan1day == 0) ? 6 : jan1day - 1;
- dec31ly.tm_yday = 364 + isleap(dec31ly.tm_year + 1900);
+ dec31ly.tm_yday = 364 + isleap(dec31ly.tm_year + 1900L);
weeknum = iso8601wknum(& dec31ly);
#endif
}