xref: /openbsd-src/usr.sbin/cron/structs.h (revision 2e6cac80faa0839600eabf86f0b60f68c98b4e81)
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