1*2e6cac80Smillert /* $OpenBSD: structs.h,v 1.10 2020/04/16 17:51:56 millert Exp $ */ 2f454ebdeSmillert 3f454ebdeSmillert /* 4a5198fa1Smillert * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") 5f454ebdeSmillert * Copyright (c) 1997,2000 by Internet Software Consortium, Inc. 6f454ebdeSmillert * 7f454ebdeSmillert * Permission to use, copy, modify, and distribute this software for any 8f454ebdeSmillert * purpose with or without fee is hereby granted, provided that the above 9f454ebdeSmillert * copyright notice and this permission notice appear in all copies. 10f454ebdeSmillert * 11a5198fa1Smillert * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 12a5198fa1Smillert * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 13a5198fa1Smillert * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 14a5198fa1Smillert * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 15a5198fa1Smillert * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 16a5198fa1Smillert * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 17a5198fa1Smillert * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 18f454ebdeSmillert */ 19f454ebdeSmillert 208a6f8ff3Smillert #include <sys/queue.h> 218a6f8ff3Smillert 22fa575ea2Smillert struct passwd; 23fa575ea2Smillert 24f454ebdeSmillert typedef struct _entry { 258a6f8ff3Smillert SLIST_ENTRY(_entry) entries; 262b139a93Smillert struct passwd *pwd; 27f454ebdeSmillert char **envp; 28f454ebdeSmillert char *cmd; 29f454ebdeSmillert bitstr_t bit_decl(minute, MINUTE_COUNT); 30f454ebdeSmillert bitstr_t bit_decl(hour, HOUR_COUNT); 31f454ebdeSmillert bitstr_t bit_decl(dom, DOM_COUNT); 32f454ebdeSmillert bitstr_t bit_decl(month, MONTH_COUNT); 33f454ebdeSmillert bitstr_t bit_decl(dow, DOW_COUNT); 34f454ebdeSmillert int flags; 35f454ebdeSmillert #define MIN_STAR 0x01 36f454ebdeSmillert #define HR_STAR 0x02 37f454ebdeSmillert #define DOM_STAR 0x04 38f454ebdeSmillert #define DOW_STAR 0x08 39f454ebdeSmillert #define WHEN_REBOOT 0x10 40f454ebdeSmillert #define DONT_LOG 0x20 4114eea816Sjob #define MAIL_WHEN_ERR 0x40 42*2e6cac80Smillert #define SINGLE_JOB 0x80 43f454ebdeSmillert } entry; 44f454ebdeSmillert 45f454ebdeSmillert /* the crontab database will be a list of the 46f454ebdeSmillert * following structure, one element per user 47f454ebdeSmillert * plus one for the system. 48f454ebdeSmillert * 49f454ebdeSmillert * These are the crontabs. 50f454ebdeSmillert */ 51f454ebdeSmillert 52f454ebdeSmillert typedef struct _user { 538a6f8ff3Smillert TAILQ_ENTRY(_user) entries; /* links */ 54f454ebdeSmillert char *name; 5595f2b4e2Smillert struct timespec mtime; /* last modtime of crontab */ 568a6f8ff3Smillert SLIST_HEAD(crontab_list, _entry) crontab; /* this person's crontab */ 57f454ebdeSmillert } user; 58f454ebdeSmillert 59f454ebdeSmillert typedef struct _cron_db { 608a6f8ff3Smillert TAILQ_HEAD(user_list, _user) users; 6195f2b4e2Smillert struct timespec mtime; /* last modtime on spooldir */ 62f454ebdeSmillert } cron_db; 632b139a93Smillert 642b139a93Smillert typedef struct _atjob { 658a6f8ff3Smillert TAILQ_ENTRY(_atjob) entries; /* links */ 662b139a93Smillert uid_t uid; /* uid of the job */ 672b139a93Smillert gid_t gid; /* gid of the job */ 682b139a93Smillert int queue; /* name of the at queue */ 692b139a93Smillert time_t run_time; /* time to run at job */ 702b139a93Smillert } atjob; 712b139a93Smillert 722b139a93Smillert typedef struct _at_db { 738a6f8ff3Smillert TAILQ_HEAD(atjob_list, _atjob) jobs; 7495f2b4e2Smillert struct timespec mtime; /* last modtime on spooldir */ 752b139a93Smillert } at_db; 76