summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDouglas Christman <DouglasChristman@gmail.com>2016-11-24 14:34:17 -0500
committerDouglas Christman <DouglasChristman@gmail.com>2016-11-24 18:22:08 -0500
commit3215e35c405278491f55fb486d349f132e93f516 (patch)
tree92e59a861b2882caa1d720805bc0c07caa98bdb6 /src
parent9dfa81a00a9a7d4536f96848119c5ad40d9d72b4 (diff)
calendarspec: make specifications with seconds wildcard reversible
"*:*:*" is now formatted as "*:*:*" instead of "*:*:00/1"
Diffstat (limited to 'src')
-rw-r--r--src/basic/calendarspec.c8
-rw-r--r--src/test/test-calendarspec.c1
2 files changed, 8 insertions, 1 deletions
diff --git a/src/basic/calendarspec.c b/src/basic/calendarspec.c
index 1555230e30..1de04feedf 100644
--- a/src/basic/calendarspec.c
+++ b/src/basic/calendarspec.c
@@ -286,6 +286,7 @@ static void format_chain(FILE *f, int space, const CalendarComponent *c, bool us
}
int calendar_spec_to_string(const CalendarSpec *c, char **p) {
+ CalendarComponent *cc;
char *buf = NULL;
size_t sz = 0;
FILE *f;
@@ -313,7 +314,12 @@ int calendar_spec_to_string(const CalendarSpec *c, char **p) {
fputc(':', f);
format_chain(f, 2, c->minute, false);
fputc(':', f);
- format_chain(f, 2, c->microsecond, true);
+
+ cc = c->microsecond;
+ if (cc && !cc->value && cc->repeat == USEC_PER_SEC && !cc->next)
+ fputc('*', f);
+ else
+ format_chain(f, 2, c->microsecond, true);
if (c->utc)
fputs(" UTC", f);
diff --git a/src/test/test-calendarspec.c b/src/test/test-calendarspec.c
index 873a4910d2..d4bb4a1707 100644
--- a/src/test/test-calendarspec.c
+++ b/src/test/test-calendarspec.c
@@ -183,6 +183,7 @@ int main(int argc, char* argv[]) {
test_one("Monday", "Mon *-*-* 00:00:00");
test_one("Monday *-*-*", "Mon *-*-* 00:00:00");
test_one("*-*-*", "*-*-* 00:00:00");
+ test_one("*:*:*", "*-*-* *:*:*");
test_next("2016-03-27 03:17:00", "", 12345, 1459048620000000);
test_next("2016-03-27 03:17:00", "CET", 12345, 1459041420000000);