]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
calendarspec: allow whole second ranges
authorDouglas Christman <DouglasChristman@gmail.com>
Thu, 24 Nov 2016 20:51:07 +0000 (15:51 -0500)
committerDouglas Christman <DouglasChristman@gmail.com>
Thu, 24 Nov 2016 23:22:08 +0000 (18:22 -0500)
Previously a string like "00:00:01..03" would fail to parse due to the
ambiguity between a decimal point and the start of a range.

src/basic/calendarspec.c
src/test/test-calendarspec.c

index 1de04feedf5de3d0072414fff2cf97c20ea35bcb..4ef22dfffb40a6d68c69125d102abaf8f684d07c 100644 (file)
@@ -486,6 +486,10 @@ static int parse_component_decimal(const char **p, bool usec, unsigned long *res
                 if (*e == '.') {
                         unsigned add;
 
+                        /* This is the start of a range, not a fractional part */
+                        if (e[1] == '.')
+                                goto finish;
+
                         e++;
                         r = parse_fractional_part_u(&e, 6, &add);
                         if (r < 0)
@@ -497,6 +501,7 @@ static int parse_component_decimal(const char **p, bool usec, unsigned long *res
                 }
         }
 
+finish:
         *p = e;
         *res = value;
 
index d4bb4a17071bb2ee887104aa38e0cd095b64c043..0bb29af545fc5824db676e4fc872a90a8c91e7c1 100644 (file)
@@ -177,6 +177,7 @@ int main(int argc, char* argv[]) {
         test_one("1..3-1..3 1..3:1..3", "*-01,02,03-01,02,03 01,02,03:01,02,03:00");
         test_one("00:00:1.125..2.125", "*-*-* 00:00:01.125000,02.125000");
         test_one("00:00:1.0..3.8", "*-*-* 00:00:01,02,03");
+        test_one("00:00:01..03", "*-*-* 00:00:01,02,03");
         test_one("*-*~1 Utc", "*-*~01 00:00:00 UTC");
         test_one("*-*~05,3 ", "*-*~03,05 00:00:00");
         test_one("*-*~* 00:00:00", "*-*-* 00:00:00");