Marcela Mašláňová 657001
diff -up at-3.1.14/atd.c.seg at-3.1.14/atd.c
Marcela Mašláňová 657001
--- at-3.1.14/atd.c.seg	2013-12-02 14:33:48.650769756 +0100
Marcela Mašláňová 657001
+++ at-3.1.14/atd.c	2013-12-02 14:52:49.057437721 +0100
Marcela Mašláňová 657001
@@ -752,14 +752,17 @@ run_loop()
Marcela Mašláňová 657001
 	/* Is the file already locked?
Marcela Mašláňová 657001
 	 */
Marcela Mašláňová 657001
 	if (buf.st_nlink > 1) {
Marcela Mašláňová 657001
-	    if (run_time + CHECK_INTERVAL <= now) {
Marcela Mašláňová 657001
-
Marcela Mašláňová 657001
+	    if (buf.st_mtime + CHECK_INTERVAL <= now) {
Marcela Mašláňová 657001
 		/* Something went wrong the last time this was executed.
Marcela Mašláňová 657001
 		 * Let's remove the lockfile and reschedule.
Marcela Mašláňová 657001
+		 * We also change the timestamp to avoid rerunning the job more
Marcela Mašláňová 657001
+		 * than once every CHECK_INTERVAL.
Marcela Mašláňová 657001
 		 */
Marcela Mašláňová 657001
 		strncpy(lock_name, dirent->d_name, sizeof(lock_name));
Marcela Mašláňová 657001
 		lock_name[sizeof(lock_name)-1] = '\0';
Marcela Mašláňová 657001
 		lock_name[0] = '=';
Marcela Mašláňová 657001
+		if (utime(lock_name, 0) < 0)
Marcela Mašláňová 657001
+			syslog(LOG_ERR, "utime couldn't be set for lock file %s\n", lock_name);
Marcela Mašláňová 657001
 		unlink(lock_name);
Marcela Mašláňová 657001
 		next_job = now;
Marcela Mašláňová 657001
 		nothing_to_do = 0;