summaryrefslogtreecommitdiff
path: root/usr/src/cmd/cron/cron.h
blob: b2e241f202a478a39f96072c7de39b9b459b5853 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */
/*
 * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

/*
 * Copyright 2019 OmniOS Community Edition (OmniOSce) Association.
 * Copyright 2022 Sebastian Wiedenroth
 */

#ifndef	_CRON_H
#define	_CRON_H

#include <unistd.h>

/*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
/*	  All Rights Reserved	*/

#ifdef	__cplusplus
extern "C" {
#endif

#define	FALSE		0
#define	TRUE		1
#define	MINUTE		60L
#define	HOUR		60L*60L
#define	DAY		24L*60L*60L
#define	NQUEUE		26		/* number of queues available */
#define	ATEVENT		0
#define	BATCHEVENT	1
#define	CRONEVENT	2

#define	ADD		'a'
#define	DELETE		'd'
#define	AT		'a'
#define	CRON		'c'
#define	REFRESH		'r'

#define	QUE(x)		('a'+(x))
#define	RCODE(x)	(((x)>>8)&0377)
#define	TSTAT(x)	((x)&0377)

/* This constant must be at least sysconf(_SC_LOGIN_NAME_MAX) in size */
#define	UNAMESIZE	32	/* max chars in a user name */

#define	FLEN	UNAMESIZE
#define	LLEN	UNAMESIZE

/*
 * structure used for passing messages from the at and crontab commands to cron
 */
struct	message {
	char	etype;
	char	action;
	char	fname[FLEN];
	char	logname[LLEN];
};

/*
 * Errors from the crontab field parser.
 */
typedef enum {
	CFOK = 0,
	CFEOLN,
	CFUNEXPECT,
	CFOUTOFBOUND,
	CFEOVERFLOW,
	CFENOMEM
} cferror_t;

#define	CRONDIR		"/var/spool/cron/crontabs"
#define	ATDIR		"/var/spool/cron/atjobs"
#define	ACCTFILE	"/var/cron/log"
#define	CRONALLOW	"/etc/cron.d/cron.allow"
#define	CRONDENY	"/etc/cron.d/cron.deny"
#define	ATALLOW		"/etc/cron.d/at.allow"
#define	ATDENY		"/etc/cron.d/at.deny"
#define	PROTO		"/etc/cron.d/.proto"
#define	QUEDEFS		"/etc/cron.d/queuedefs"
#define	FIFO		"/etc/cron.d/FIFO"
#define	DEFFILE		"/etc/default/cron"

#define	SHELL		"/usr/bin/sh"	/* shell to execute */

#define	ENV_SHELL		"SHELL="
#define	ENV_TZ			"TZ="
#define	ENV_HOME		"HOME="
#define	ENV_RANDOM_DELAY	"RANDOM_DELAY="

#define	CTLINESIZE	1000	/* max chars in a crontab line */

extern int	allowed(char *, char *, char *);
extern int	days_in_mon(int, int);
extern char	*errmsg(int);
extern char	*getuser(uid_t);
extern void	cron_sendmsg(char, char *, char *, char);
extern time_t	 num(char **);
extern void	*xmalloc(size_t);
extern void	*xcalloc(size_t, size_t);
extern char	*xstrdup(const char *);
extern int	isvalid_shell(const char *shell);
extern int	isvalid_dir(const char *dir);

extern int	cron_admin(const char *);
extern cferror_t next_field(uint_t, uint_t, char *, int *, char **);

#ifdef	__cplusplus
}
#endif

#endif	/* _CRON_H */