38 lines
720 B
C
38 lines
720 B
C
#include <time.h>
|
|
#include <stdint.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
|
|
typedef enum parse_error {
|
|
ParseOk = 0,
|
|
ParseInvalidExpression = 1,
|
|
ParseInvalidNumber = 2,
|
|
ParseOutOfRange = 3
|
|
} ParseError;
|
|
|
|
typedef struct cron_expression {
|
|
uint8_t *minutes;
|
|
uint8_t *hours;
|
|
uint8_t *days;
|
|
uint8_t *months;
|
|
uint8_t minute_count;
|
|
uint8_t hour_count;
|
|
uint8_t day_count;
|
|
uint8_t month_count;
|
|
} CronExpression;
|
|
|
|
typedef struct simple_time {
|
|
int year;
|
|
int month;
|
|
int day;
|
|
int hour;
|
|
int minute;
|
|
} SimpleTime;
|
|
|
|
/**
|
|
* Given a
|
|
*/
|
|
int ce_next(SimpleTime *out, CronExpression *ce, SimpleTime *ref);
|
|
|
|
ParseError ce_parse_expression(CronExpression *out, char *s);
|