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
132
133
134
135
|
/*
* 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];
};
/* anything below here can be changed */
#define SYSCRONDIR "/etc/cron.d/crontabs"
/*
* 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 */
|