ports/sysutils/anacron/files/patch-runjob.c
Fernando Apesteguía 1a76a776c7 sysutils/anacron: Fix start after resume
The anacron utility should be run by it's rc(8) script after resume, since the
time to run jobs from the anacrontab(5) might have passed while the system was
sleeping.

PR:	253567
Reported by:	walter.von.entferndt@posteo.net
Approved by:	dz@426.ch (maintainer)
2021-04-07 13:20:03 +02:00

43 lines
1 KiB
C

--- runjob.c.orig 2000-06-20 23:12:18 UTC
+++ runjob.c
@@ -39,26 +39,14 @@ static int
temp_file()
/* Open a temporary file and return its file descriptor */
{
- const int max_retries = 50;
- char *name;
- int fd, i;
+ int fd;
+ char name[] = "/tmp/anacron.XXXXXX";
- i = 0;
- name = NULL;
- do
- {
- i++;
- free(name);
- name = tempnam(NULL, NULL);
- if (name == NULL) die("Can't find a unique temporary filename");
- fd = open(name, O_RDWR | O_CREAT | O_EXCL | O_APPEND,
- S_IRUSR | S_IWUSR);
- /* I'm not sure we actually need to be so persistent here */
- } while (fd == -1 && errno == EEXIST && i < max_retries);
-
+ fd = mkstemp(name);
+
if (fd == -1) die_e("Can't open temporary file");
if (unlink(name)) die_e("Can't unlink temporary file");
- free(name);
+
fcntl(fd, F_SETFD, 1); /* set close-on-exec flag */
return fd;
}
@@ -84,7 +72,7 @@ username()
}
static void
-xputenv(const char *s)
+xputenv(char *s)
{
if (putenv(s)) die_e("Can't set the environment");
}