tags:

views:

25

answers:

1

Does anyone know of a library which will assist in decoding cron style timings, i.e.

30 7 * * 1-5 

Which is 7:30am every Monday, Tuesday, Wednesday, Thursday, Friday.

M.

+2  A: 

There is a library for PHP, Perl but I never saw one for C++. The good thing is that Cron's source is freely available and you can reuse its code to parse entries in the cron format.

The entry data structure is defined in "cron.h" file:

typedef struct _entry {
        struct _entry   *next;
        uid_t           uid;
        gid_t           gid;
        char            **envp;
        char            *cmd;
        bitstr_t        bit_decl(minute, MINUTE_COUNT);
        bitstr_t        bit_decl(hour,   HOUR_COUNT);
        bitstr_t        bit_decl(dom,    DOM_COUNT);
        bitstr_t        bit_decl(month,  MONTH_COUNT);
        bitstr_t        bit_decl(dow,    DOW_COUNT);
        int             flags;
#define DOM_STAR        0x01
#define DOW_STAR        0x02
#define WHEN_REBOOT     0x04
#define MIN_STAR        0x08
#define HR_STAR         0x10
} entry;

And there are two functions you need from "entry.c" file (too large to post code here):

void free_entry (e);
entry *load_entry (file, error_func, pw, envp);

You can compile those files into a shared library or object files and use directly in your project.

This is an example of getting cron source code in Debian (Ubuntu):

apt-get source cron

You can also download it from http://cron.sourcearchive.com/

Vlad Lazarenko