Add parse_date_interactive()

Add a wrapper around parse_date() which picks the current input date
format as well as the currently selected day and passes both values to
parse_date(), alongside with the parameters passed to
parse_date_interactive() itself.

Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
Lukas Fleischer 2017-10-26 20:44:45 +02:00
parent eddee590ec
commit 760c297027
3 changed files with 13 additions and 8 deletions

View File

@ -1150,8 +1150,8 @@ void print_bool_option_incolor(WINDOW *, unsigned, int, int);
const char *get_tempdir(void);
char *new_tempfile(const char *);
int check_date(unsigned, unsigned, unsigned);
int parse_date(const char *, enum datefmt, int *, int *, int *,
struct date *);
int parse_date(const char *, enum datefmt, int *, int *, int *, struct date *);
int parse_date_interactive(const char *, int *, int *, int *);
int check_time(unsigned, unsigned);
int parse_time(const char *, unsigned *, unsigned *);
int parse_duration(const char *, unsigned *);

View File

@ -293,9 +293,8 @@ static void update_rept(struct rpt **rpt, const long start)
new_date.mm = lt.tm_mon + 1;
new_date.yyyy = lt.tm_year + 1900;
} else {
if (!parse_date(timstr, conf.input_datefmt, &newyear,
&newmonth, &newday,
ui_calendar_get_slctd_day())) {
if (!parse_date_interactive(timstr, &newyear,
&newmonth, &newday)) {
asprintf(&outstr, msg_fmts,
DATEFMT_DESC(conf.input_datefmt));
status_mesg(msg_wrong_date, outstr);
@ -787,9 +786,8 @@ void ui_day_item_repeat(void)
until_date.dd = lt.tm_mday;
until_date.mm = lt.tm_mon + 1;
until_date.yyyy = lt.tm_year + 1900;
} else if (parse_date(user_input, conf.input_datefmt,
&year, &month, &day,
ui_calendar_get_slctd_day())) {
} else if (parse_date_interactive(user_input, &year, &month,
&day)) {
t = p->start;
localtime_r(&t, &lt);
until_date.dd = day;

View File

@ -886,6 +886,13 @@ parse_date(const char *date_string, enum datefmt datefmt, int *year,
return 1;
}
int
parse_date_interactive(const char *datestr, int *year, int *month, int *day)
{
return parse_date(datestr, conf.input_datefmt, year, month, day,
ui_calendar_get_slctd_day());
}
/*
* Convert a date duration string into a number of days.
*