1 /* Copyright 1988,1990,1993,1994 by Paul Vixie
4 * Distribute freely, except: don't remove my name from the source or
5 * documentation (don't take credit for my work), mark your changes (don't
6 * get me blamed for your possible bugs), don't alter or remove this
7 * notice. May be sold if buildable source is provided to buyer. No
8 * warrantee of any kind, express or implied, is included with this
9 * software; use at your own risk, responsibility for damages (if any) to
10 * anyone resulting from the use of this software rests entirely with the
13 * Send bug reports, bug fixes, enhancements, requests, flames, etc., and
14 * I'll try to keep a version up to date. I can be reached as follows:
15 * Paul Vixie <paul@vix.com> uunet!decwrl!vixie!paul
17 * $FreeBSD: src/usr.sbin/cron/cron/user.c,v 1.8 1999/08/28 01:15:50 peter Exp $
18 * $DragonFly: src/usr.sbin/cron/cron/user.c,v 1.3 2003/11/16 11:51:14 eirikn Exp $
21 /* vix 26jan87 [log is in RCS file]
27 static char *User_name;
35 for (e = u->crontab; e != NULL; e = ne) {
45 log_it(User_name, getpid(), "PARSE", msg);
49 load_user(int crontab_fd, struct passwd *pw, char *name)
50 /* pw == NULL implies syscrontab */
52 char envstr[MAX_ENVSTR];
59 if (!(file = fdopen(crontab_fd, "r"))) {
60 warn("fdopen on crontab_fd in load_user");
64 Debug(DPARS, ("load_user()\n"))
66 /* file is open. build user entry, then read the crontab file.
68 if ((u = (user *) malloc(sizeof(user))) == NULL) {
72 if ((u->name = strdup(name)) == NULL) {
80 * init environment. this will be copied/augmented for each entry.
82 if ((envp = env_init()) == NULL) {
91 while ((status = load_env(envstr, file)) >= OK) {
98 User_name = u->name; /* for log_error */
99 e = load_entry(file, log_error, pw, envp);
101 e->next = u->crontab;
106 if ((tenvp = env_set(envp, envstr))) {
120 Debug(DPARS, ("...load_user() done\n"))