summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@calcurse.org>2017-10-26 20:44:45 +0200
committerLukas Fleischer <lfleischer@calcurse.org>2017-10-26 20:49:30 +0200
commit760c297027efca75e095940d76d2078b1da1b677 (patch)
tree965a41a1d717c45a711691af4879255ca68492e1
parenteddee590ec11f4c53a4e01981fa0166abb9662d2 (diff)
downloadcalcurse-760c297027efca75e095940d76d2078b1da1b677.tar.gz
calcurse-760c297027efca75e095940d76d2078b1da1b677.zip
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>
-rw-r--r--src/calcurse.h4
-rw-r--r--src/ui-day.c10
-rw-r--r--src/utils.c7
3 files changed, 13 insertions, 8 deletions
diff --git a/src/calcurse.h b/src/calcurse.h
index 72426e6..2124bb2 100644
--- a/src/calcurse.h
+++ b/src/calcurse.h
@@ -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 *);
diff --git a/src/ui-day.c b/src/ui-day.c
index 3c0547d..9c858f1 100644
--- a/src/ui-day.c
+++ b/src/ui-day.c
@@ -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;
diff --git a/src/utils.c b/src/utils.c
index 11d4582..8f27756 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -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.
*