Handle dates past January 19th, 2038
Try to support dates past year 2038 on systems with 64-bit time_t. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
This commit is contained in:
parent
4fd8f0b11e
commit
a12833ec08
@ -310,7 +310,7 @@ date_arg_from_to(long from, long to, int add_line, const char *fmt_apt,
|
||||
}
|
||||
}
|
||||
|
||||
static int parse_datearg(const char *str)
|
||||
static long parse_datearg(const char *str)
|
||||
{
|
||||
struct date day;
|
||||
|
||||
@ -329,7 +329,7 @@ static int parse_datearg(const char *str)
|
||||
return -1;
|
||||
}
|
||||
|
||||
static int parse_datetimearg(const char *str)
|
||||
static long parse_datetimearg(const char *str)
|
||||
{
|
||||
char *date = mem_strdup(str);
|
||||
char *time;
|
||||
|
@ -630,9 +630,7 @@ void ui_calendar_change_day(int datefmt)
|
||||
char *outstr;
|
||||
int dday, dmonth, dyear;
|
||||
int wrong_day = 1;
|
||||
const char *mesg_line1 =
|
||||
_("The day you entered is not valid "
|
||||
"(should be between 01/01/1902 and 12/31/2037)");
|
||||
const char *mesg_line1 = _("The day you entered is not valid");
|
||||
const char *mesg_line2 = _("Press [ENTER] to continue");
|
||||
const char *request_date =
|
||||
_("Enter the day to go to [ENTER for today] : %s");
|
||||
@ -739,10 +737,6 @@ void ui_calendar_move(enum move move, int count)
|
||||
t.tm_mday = 1;
|
||||
t.tm_mon = 0;
|
||||
t.tm_year = 2;
|
||||
} else if (t.tm_year > 137) {
|
||||
t.tm_mday = 31;
|
||||
t.tm_mon = 11;
|
||||
t.tm_year = 137;
|
||||
}
|
||||
|
||||
slctd_day.dd = t.tm_mday;
|
||||
|
@ -651,10 +651,8 @@ char *new_tempfile(const char *prefix)
|
||||
*/
|
||||
int check_date(unsigned year, unsigned month, unsigned day)
|
||||
{
|
||||
return (year >= 1902 && year <= 2037 && month >= 1 && month <= 12
|
||||
&& day >= 1 && day <= days[month - 1] + (month == 2
|
||||
&& ISLEAP(year)) ?
|
||||
1 : 0);
|
||||
return (year >= 1902 && month >= 1 && month <= 12 && day >= 1 &&
|
||||
day <= days[month - 1] + (month == 2 && ISLEAP(year)) ? 1 : 0);
|
||||
}
|
||||
|
||||
/*
|
||||
|
4
test/data/apts-y2k38-001
Normal file
4
test/data/apts-y2k38-001
Normal file
@ -0,0 +1,4 @@
|
||||
01/19/2038 [1] Event 1
|
||||
01/20/2038 [1] Event 2
|
||||
01/01/2100 [1] Event 3
|
||||
01/01/9999 [1] Event 4
|
27
test/y2k38-001.sh
Executable file
27
test/y2k38-001.sh
Executable file
@ -0,0 +1,27 @@
|
||||
#!/bin/sh
|
||||
|
||||
. "${TEST_INIT:-./test-init.sh}"
|
||||
|
||||
if [ "$1" = 'actual' ]; then
|
||||
"$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-y2k38-001" \
|
||||
-d01/19/2038
|
||||
"$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-y2k38-001" \
|
||||
-d01/20/2038
|
||||
"$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-y2k38-001" \
|
||||
-d01/01/2100
|
||||
"$CALCURSE" --read-only -D "$DATA_DIR"/ -c "$DATA_DIR/apts-y2k38-001" \
|
||||
-d01/01/9999
|
||||
elif [ "$1" = 'expected' ]; then
|
||||
cat <<EOD
|
||||
01/19/38:
|
||||
* Event 1
|
||||
01/20/38:
|
||||
* Event 2
|
||||
01/01/00:
|
||||
* Event 3
|
||||
01/01/99:
|
||||
* Event 4
|
||||
EOD
|
||||
else
|
||||
./run-test "$0"
|
||||
fi
|
Loading…
x
Reference in New Issue
Block a user