CLI: take input date format from configuration file, do not accept time

Before this patch the input date parsing accepts three formats:
yyyy/mm/dd, mm/dd/yyyy, yyyy-mm-dd. They are tried in sequence. It also
accepts an additional time (hh:mm), or a time without a date.

There are several issues with this:

- it is not documented
- the date format dd/mm/yyyy is not accepted
- print_date() and filter option settings (in parse_args()) can only
  handle midnight times (which are the result of a date without time)
- it is highly uncertain what happens if a time (without a date) is
  given; at least the -d option treats a time without colon (1215 for
  12:15) as a number

It seems that acceptance of time input is a by-product and not needed.
For these reasons the input date parsing has been changed:

- the format is taken from the configuration file (as is the case for
  the output date format)
- only a date, and no time, is accepted

Because the input date format is used during parsing of the command
line, the configuration file must be loaded first, i.e. the options -D
or -C must be parsed before the remaining ones. Loading the
configuration file may result in errors (e.g. caused by changes between
versions). For this reason config_load() has been made more tolerant and
issues warnings instead of exiting.

A followup patch will introduce two options to allow the configuration
file settings to be overridden for input and output date formats.

Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk>
Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
Lars Henriksen
2017-12-29 20:59:53 +01:00
committed by Lukas Fleischer
parent 215e90d348
commit 3d7bb89c88
2 changed files with 49 additions and 73 deletions

View File

@@ -629,12 +629,9 @@ static int config_load_cb(const char *key, const char *value, void *dummy)
int result = config_set_conf(key, value);
if (result < 0) {
EXIT(_("configuration variable unknown: \"%s\""), key);
/* NOTREACHED */
WARN_MSG(_("unknown user option: \"%s\""), key);
} else if (result == 0) {
EXIT(_("wrong configuration variable format for \"%s\""),
key);
/* NOTREACHED */
WARN_MSG(_("invalid option format: \"%s\""), key);
}
return 1;