calendarspec: always interpret missing seconds as :00 (#4813)

"*:*" should be equivalent to "*-*-* *:*:00" (minutely)
rather than running every microsecond.

Fixes #4804
This commit is contained in:
Doug Christman 2016-12-06 14:41:15 -05:00 committed by Lennart Poettering
parent 9c77d1079d
commit c0df71fa36
2 changed files with 5 additions and 6 deletions

View file

@ -752,12 +752,8 @@ static int parse_calendar_time(const char **p, CalendarSpec *c) {
goto fail;
/* Already at the end? Then it's hours and minutes, and seconds are 0 */
if (*t == 0) {
if (m != NULL)
goto null_second;
goto finish;
}
if (*t == 0)
goto null_second;
if (*t != ':') {
r = -EINVAL;

View file

@ -186,6 +186,9 @@ int main(int argc, char* argv[]) {
test_one("Monday *-*-*", "Mon *-*-* 00:00:00");
test_one("*-*-*", "*-*-* 00:00:00");
test_one("*:*:*", "*-*-* *:*:*");
test_one("*:*", "*-*-* *:*:00");
test_one("12:*", "*-*-* 12:*:00");
test_one("*:30", "*-*-* *:30:00");
test_next("2016-03-27 03:17:00", "", 12345, 1459048620000000);
test_next("2016-03-27 03:17:00", "CET", 12345, 1459041420000000);