summaryrefslogtreecommitdiffstats
path: root/misc-utils/cal.c
diff options
context:
space:
mode:
authorJ William Piggott2018-01-18 03:21:02 +0100
committerKarel Zak2018-01-22 11:33:20 +0100
commit1dca3edc361ed73334c7789a692b7cd1c85081fa (patch)
treef65d7fe8d794557355e1f36174348da2a2e32529 /misc-utils/cal.c
parentbuild-sys: remove redundant EXTRA_DIST files (diff)
downloadkernel-qcow2-util-linux-1dca3edc361ed73334c7789a692b7cd1c85081fa.tar.gz
kernel-qcow2-util-linux-1dca3edc361ed73334c7789a692b7cd1c85081fa.tar.xz
kernel-qcow2-util-linux-1dca3edc361ed73334c7789a692b7cd1c85081fa.zip
cal: fix julian calendars for large years
Before: cal --r julian 31 12 2147483646 December 2147483646 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Patched: cal --r julian 31 12 2147483646 December 2147483646 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Signed-off-by: J William Piggott <elseifthen@gmx.com>
Diffstat (limited to 'misc-utils/cal.c')
-rw-r--r--misc-utils/cal.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/misc-utils/cal.c b/misc-utils/cal.c
index 543fbc6e1..a854eaf9d 100644
--- a/misc-utils/cal.c
+++ b/misc-utils/cal.c
@@ -924,14 +924,15 @@ static int day_in_week(const struct cal_control *ctl, int day,
|| (year == ctl->reform_year && REFORMATION_MONTH < month)
|| (year == ctl->reform_year
&& month == REFORMATION_MONTH && 13 < day)) {
- int64_t long_year = year;
- return (long_year + (year / 4) - (year / 100) + (year / 400) +
- reform[month - 1] + day) % DAYS_IN_WEEK;
+ return ((int64_t) year + (year / 4)
+ - (year / 100) + (year / 400)
+ + reform[month - 1] + day) % DAYS_IN_WEEK;
}
if (year < ctl->reform_year
|| (year == ctl->reform_year && month < REFORMATION_MONTH)
|| (year == ctl->reform_year && month == REFORMATION_MONTH && day < 3))
- return (year + year / 4 + old[month - 1] + day) % DAYS_IN_WEEK;
+ return ((int64_t) year + year / 4 + old[month - 1] + day)
+ % DAYS_IN_WEEK;
return NONEDAY;
}