Branch data Line data Source code
1 : : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : : #pragma once 3 : : 4 : : /* A structure for specifying (possibly repetitive) points in calendar 5 : : * time, a la cron */ 6 : : 7 : : #include <stdbool.h> 8 : : 9 : : #include "time-util.h" 10 : : #include "util.h" 11 : : 12 : : typedef struct CalendarComponent { 13 : : int start; 14 : : int stop; 15 : : int repeat; 16 : : 17 : : struct CalendarComponent *next; 18 : : } CalendarComponent; 19 : : 20 : : typedef struct CalendarSpec { 21 : : int weekdays_bits; 22 : : bool end_of_month; 23 : : bool utc; 24 : : int dst; 25 : : char *timezone; 26 : : 27 : : CalendarComponent *year; 28 : : CalendarComponent *month; 29 : : CalendarComponent *day; 30 : : 31 : : CalendarComponent *hour; 32 : : CalendarComponent *minute; 33 : : CalendarComponent *microsecond; 34 : : } CalendarSpec; 35 : : 36 : : CalendarSpec* calendar_spec_free(CalendarSpec *c); 37 : : 38 : : int calendar_spec_normalize(CalendarSpec *spec); 39 : : bool calendar_spec_valid(CalendarSpec *spec); 40 : : 41 : : int calendar_spec_to_string(const CalendarSpec *spec, char **p); 42 : : int calendar_spec_from_string(const char *p, CalendarSpec **spec); 43 : : 44 : : int calendar_spec_next_usec(const CalendarSpec *spec, usec_t usec, usec_t *next); 45 : : 46 [ + + ]: 728 : DEFINE_TRIVIAL_CLEANUP_FUNC(CalendarSpec*, calendar_spec_free);