diff options
Diffstat (limited to 'src/ui-calendar.c')
-rw-r--r-- | src/ui-calendar.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/src/ui-calendar.c b/src/ui-calendar.c index 93115da..07d82f3 100644 --- a/src/ui-calendar.c +++ b/src/ui-calendar.c @@ -713,18 +713,30 @@ void ui_calendar_move(enum move move, int count) ret = 1; /* NOTREACHED */ } - - if (ret == 0) { + if (ret == 1 || (YEAR1902_2037 && t.tm_year < 2) + || (YEAR1902_2037 && t.tm_year > 137)) { + char *out, *msg = _("The move failed (%d/%d/%d, ret=%d)."), ch; + asprintf(&out, msg, t.tm_mday, t.tm_mon + 1, t.tm_year + 1900, ret); + do { + status_mesg(out, _("Press [ENTER] to continue")); + ch = keys_wgetch(win[KEY].p); + } while (ch != '\n'); + mem_free(out); + wins_update(FLAG_STA); if (t.tm_year < 2) { t.tm_mday = 1; t.tm_mon = 0; t.tm_year = 2; } - - slctd_day.dd = t.tm_mday; - slctd_day.mm = t.tm_mon + 1; - slctd_day.yyyy = t.tm_year + 1900; + if (t.tm_year > 137) { + t.tm_mday = 31; + t.tm_mon = 11; + t.tm_year = 137; + } } + slctd_day.dd = t.tm_mday; + slctd_day.mm = t.tm_mon + 1; + slctd_day.yyyy = t.tm_year + 1900; } /* Returns the beginning of current year as a long. */ |