chiark / gitweb /
strv: add new STR_IN_SET() macro that operates similar to IN_SET() but for strings
[elogind.git] / src / shared / calendarspec.c
index 13f70d8e72edaae269b5fddc5f56142a5b7563e9..7075159183152d191b5430fd43cfc5b2a56e3b18 100644 (file)
@@ -133,7 +133,7 @@ int calendar_spec_normalize(CalendarSpec *c) {
         return 0;
 }
 
-static bool chain_valid(CalendarComponent *c, int from, int to) {
+_pure_ static bool chain_valid(CalendarComponent *c, int from, int to) {
         if (!c)
                 return true;
 
@@ -149,7 +149,7 @@ static bool chain_valid(CalendarComponent *c, int from, int to) {
         return true;
 }
 
-bool calendar_spec_valid(CalendarSpec *c) {
+_pure_ bool calendar_spec_valid(CalendarSpec *c) {
         assert(c);
 
         if (c->weekdays_bits > 127)
@@ -686,6 +686,23 @@ int calendar_spec_from_string(const char *p, CalendarSpec **spec) {
                 if (r < 0)
                         goto fail;
 
+        } else if (strcaseeq(p, "anually") || strcaseeq(p, "yearly")) {
+                r = const_chain(1, &c->month);
+                if (r < 0)
+                        goto fail;
+                r = const_chain(1, &c->day);
+                if (r < 0)
+                        goto fail;
+                r = const_chain(0, &c->hour);
+                if (r < 0)
+                        goto fail;
+                r = const_chain(0, &c->minute);
+                if (r < 0)
+                        goto fail;
+                r = const_chain(0, &c->second);
+                if (r < 0)
+                        goto fail;
+
         } else if (strcaseeq(p, "weekly")) {
 
                 c->weekdays_bits = 1;