+static void
+RunJob(const char *user, CronLine *line)
+{
+ char mailFile[128];
+ int mailFd;
+
+ line->cl_Pid = 0;
+ line->cl_MailFlag = 0;
+
+ /*
+ * open mail file - owner root so nobody can screw with it.
+ */
+
+ snprintf(mailFile, sizeof(mailFile), TMPDIR "/cron.%s.%d",
+ user, getpid());
+ mailFd = open(mailFile, O_CREAT|O_TRUNC|O_WRONLY|O_EXCL|O_APPEND, 0600);
+
+ if (mailFd >= 0) {
+ line->cl_MailFlag = 1;
+ fdprintf(mailFd, "To: %s\nSubject: cron: %s\n\n", user,
+ line->cl_Shell);
+ line->cl_MailPos = lseek(mailFd, 0, 1);
+ } else {
+ crondlog("\024unable to create mail file user %s file %s, output to /dev/null\n",
+ user, mailFile);
+ }
+
+ ForkJob(user, line, mailFd, DEFAULT_SHELL, "-c", line->cl_Shell, mailFile);
+}
+