diff options
Diffstat (limited to 'usr/src/cmd/cron/crontab.c')
| -rw-r--r-- | usr/src/cmd/cron/crontab.c | 20 | 
1 files changed, 18 insertions, 2 deletions
| diff --git a/usr/src/cmd/cron/crontab.c b/usr/src/cmd/cron/crontab.c index 327a71388b..ff39d93824 100644 --- a/usr/src/cmd/cron/crontab.c +++ b/usr/src/cmd/cron/crontab.c @@ -236,8 +236,24 @@ main(int argc, char **argv)  		exit(0);  	}  	if (lflag) { -		if ((fp = fopen(cf, "r")) == NULL) -			crabort(BADOPEN); +		int sys_done = 0; +		char sysconf[PATH_MAX]; + +		if (snprintf(sysconf, sizeof (sysconf), "%s/%s", +		    SYSCRONDIR, login) < sizeof (sysconf) && +		    (fp = fopen(sysconf, "r")) != NULL) { +			while (fgets(line, CTLINESIZE, fp) != NULL) +				fputs(line, stdout); +			fclose(fp); +			sys_done = 1; +		} + +		if ((fp = fopen(cf, "r")) == NULL) { +			if (!sys_done) +				crabort(BADOPEN); +			else +				exit(0); +		}  		while (fgets(line, CTLINESIZE, fp) != NULL)  			fputs(line, stdout);  		fclose(fp); | 
