[misc] [PATCH 1/2] 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@xxxxxxxxxxxx>
---
 src/calcurse.h |  4 ++--
 src/ui-day.c   | 10 ++++------
 src/utils.c    |  7 +++++++
 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.
  *
-- 
2.14.3

Links