Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
29b2ab51d0 | ||
|
|
bbeab6c813 |
16 changed files with 1179 additions and 1 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
anacron_2.3.orig.tar.gz
|
||||
anacron.init
|
||||
107
anacron-2.3-fdclose.patch
Normal file
107
anacron-2.3-fdclose.patch
Normal file
|
|
@ -0,0 +1,107 @@
|
|||
diff -uNr anacron-2.3-orig/global.h anacron-2.3/global.h
|
||||
--- anacron-2.3-orig/global.h 2000-06-23 01:00:14.000000000 +0100
|
||||
+++ anacron-2.3/global.h 2006-03-20 15:31:28.000000000 +0000
|
||||
@@ -60,6 +60,7 @@
|
||||
int tab_line;
|
||||
int arg_num;
|
||||
int timestamp_fd;
|
||||
+ int input_fd;
|
||||
int output_fd;
|
||||
int mail_header_size;
|
||||
pid_t job_pid;
|
||||
diff -uNr anacron-2.3-orig/runjob.c anacron-2.3/runjob.c
|
||||
--- anacron-2.3-orig/runjob.c 2006-02-21 14:05:08.000000000 +0000
|
||||
+++ anacron-2.3/runjob.c 2006-03-20 15:32:32.000000000 +0000
|
||||
@@ -38,12 +38,12 @@
|
||||
#include <langinfo.h>
|
||||
|
||||
static int
|
||||
-temp_file()
|
||||
+temp_file(job_rec *jr)
|
||||
/* Open a temporary file and return its file descriptor */
|
||||
{
|
||||
const int max_retries = 50;
|
||||
char *name;
|
||||
- int fd, i;
|
||||
+ int fdin, fdout, i;
|
||||
|
||||
i = 0;
|
||||
name = NULL;
|
||||
@@ -53,16 +53,24 @@
|
||||
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);
|
||||
+ fdout = open(name, O_WRONLY | O_CREAT | O_EXCL | O_APPEND,
|
||||
+ S_IRUSR | S_IWUSR);
|
||||
+ if ( fdout != -1 )
|
||||
+ fdin = open(name, O_RDONLY, S_IRUSR | S_IWUSR);
|
||||
/* I'm not sure we actually need to be so persistent here */
|
||||
- } while (fd == -1 && errno == EEXIST && i < max_retries);
|
||||
+ } while (fdout == -1 && errno == EEXIST && i < max_retries);
|
||||
|
||||
- if (fd == -1) die_e("Can't open temporary file");
|
||||
+ if (fdout == -1) die_e("Can't open temporary file for writing");
|
||||
+ if (fdin == -1) die_e("Can't open temporary file for reading");
|
||||
if (unlink(name)) die_e("Can't unlink temporary file");
|
||||
free(name);
|
||||
- fcntl(fd, F_SETFD, 1); /* set close-on-exec flag */
|
||||
- return fd;
|
||||
+ fcntl(fdout, F_SETFD, 1); /* set close-on-exec flag */
|
||||
+ fcntl(fdin, F_SETFD, 1); /* set close-on-exec flag */
|
||||
+
|
||||
+ jr->input_fd = fdin;
|
||||
+ jr->output_fd = fdout;
|
||||
+
|
||||
+ return fdout;
|
||||
}
|
||||
|
||||
static off_t
|
||||
@@ -170,17 +178,28 @@
|
||||
pid = xfork();
|
||||
if (pid == 0)
|
||||
{
|
||||
+ long fdflags;
|
||||
+
|
||||
/* child */
|
||||
in_background = 1;
|
||||
/* set stdin to the job's output */
|
||||
xclose(0);
|
||||
- if (dup2(jr->output_fd, 0) != 0) die_e("Can't dup2()");
|
||||
+ if (dup2(jr->input_fd, 0) != 0) die_e("Can't dup2()");
|
||||
if (lseek(0, 0, SEEK_SET) != 0) die_e("Can't lseek()");
|
||||
umask(old_umask);
|
||||
if (sigprocmask(SIG_SETMASK, &old_sigmask, NULL))
|
||||
die_e("sigprocmask error");
|
||||
xcloselog();
|
||||
|
||||
+ /* Ensure stdout/stderr are sane before exec-ing sendmail */
|
||||
+ xclose(1); xopen(1, "/dev/null", O_WRONLY);
|
||||
+ xclose(2); xopen(2, "/dev/null", O_WRONLY);
|
||||
+ xclose(jr->output_fd);
|
||||
+
|
||||
+ /* Ensure stdin is not appendable ... ? */
|
||||
+ /* fdflags = fcntl(0, F_GETFL); fdflags &= ~O_APPEND; */
|
||||
+ /* fcntl(0, F_SETFL, fdflags ); */
|
||||
+
|
||||
/* Here, I basically mirrored the way /usr/sbin/sendmail is called
|
||||
* by cron on a Debian system, except for the "-oem" and "-or0s"
|
||||
* options, which don't seem to be appropriate here.
|
||||
@@ -225,7 +244,7 @@
|
||||
setup_env(jr);
|
||||
|
||||
/* create temporary file for stdout and stderr of the job */
|
||||
- fd = jr->output_fd = temp_file();
|
||||
+ temp_file(jr); fd = jr->output_fd;
|
||||
/* write mail header */
|
||||
xwrite(fd, "From: ");
|
||||
xwrite(fd, username());
|
||||
@@ -283,6 +302,7 @@
|
||||
running_jobs--;
|
||||
if (mail_output) launch_mailer(jr);
|
||||
xclose(jr->output_fd);
|
||||
+ xclose(jr->input_fd);
|
||||
}
|
||||
|
||||
void
|
||||
44
anacron-2.3-hostname.patch
Normal file
44
anacron-2.3-hostname.patch
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
--- anacron-2.3/runjob.c.hostname 2006-10-04 11:58:55.000000000 +0200
|
||||
+++ anacron-2.3/runjob.c 2006-10-09 09:43:23.000000000 +0200
|
||||
@@ -94,6 +94,17 @@
|
||||
}
|
||||
|
||||
static char *
|
||||
+hostname()
|
||||
+{
|
||||
+ char hostname[MAXHOSTNAME];
|
||||
+
|
||||
+ if (gethostname(hostname, MAXHOSTNAME) == 0)
|
||||
+ return hostname;
|
||||
+ else
|
||||
+ die_e("Can't resolve hostname");
|
||||
+}
|
||||
+
|
||||
+static char *
|
||||
mailto()
|
||||
{
|
||||
char *alias;
|
||||
@@ -255,9 +266,11 @@
|
||||
xwrite(fd, "Content-Type: text/plain; charset=\"");
|
||||
xwrite(fd, nl_langinfo(CODESET));
|
||||
xwrite(fd, "\"\n");
|
||||
- xwrite(fd, "Subject: Anacron job '");
|
||||
+ xwrite(fd, "Subject: Anacron job for '");
|
||||
+ xwrite(fd, hostname());
|
||||
+ xwrite(fd, "' ");
|
||||
xwrite(fd, jr->ident);
|
||||
- xwrite(fd, "'\n\n");
|
||||
+ xwrite(fd, "\n");
|
||||
jr->mail_header_size = file_size(fd);
|
||||
|
||||
pid = xfork();
|
||||
--- anacron-2.3/global.h.hostname 2006-10-04 11:58:55.000000000 +0200
|
||||
+++ anacron-2.3/global.h 2006-10-04 11:58:55.000000000 +0200
|
||||
@@ -33,6 +33,7 @@
|
||||
|
||||
/* Mail interface. (All MTAs should supply this command) */
|
||||
#define SENDMAIL "/usr/sbin/sendmail"
|
||||
+#define MAXHOSTNAME 64
|
||||
|
||||
#ifndef PID_FILE
|
||||
#define PID_FILE "/var/run/anacron.pid"
|
||||
248
anacron-2.3-lock-files.patch
Normal file
248
anacron-2.3-lock-files.patch
Normal file
|
|
@ -0,0 +1,248 @@
|
|||
--- anacron-2.3/main.c.lock-files 2000-06-22 20:00:14.000000000 -0400
|
||||
+++ anacron-2.3/main.c 2006-04-13 20:38:13.000000000 -0400
|
||||
@@ -21,39 +21,42 @@
|
||||
`COPYING' that comes with the Anacron source distribution.
|
||||
*/
|
||||
|
||||
-
|
||||
-#include <time.h>
|
||||
-#include <stdio.h>
|
||||
+#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
+#include <time.h>
|
||||
#include <signal.h>
|
||||
#include <fcntl.h>
|
||||
-#include <sys/types.h>
|
||||
+#include <sys/ioctl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <string.h>
|
||||
+#include <stdio.h>
|
||||
+#include <stdlib.h>
|
||||
+#include <limits.h>
|
||||
+#include <errno.h>
|
||||
#include "global.h"
|
||||
#include "gregor.h"
|
||||
|
||||
-pid_t primary_pid;
|
||||
-int day_now;
|
||||
-int year, month, day_of_month; /* date anacron started */
|
||||
-
|
||||
-char *program_name;
|
||||
-char *anacrontab;
|
||||
-int serialize, force, update_only, now,
|
||||
- no_daemon, quiet; /* command-line options */
|
||||
-char **args; /* vector of "job" command-line arguments */
|
||||
-int nargs; /* number of these */
|
||||
+pid_t primary_pid=-1;
|
||||
+int day_now=0;
|
||||
+int year=0, month=0, day_of_month=0; /* date anacron started */
|
||||
+
|
||||
+char *program_name=0;
|
||||
+char *anacrontab=0;
|
||||
+int serialize=0, force=0, update_only=0, now=0,
|
||||
+ no_daemon=0, quiet=0; /* command-line options */
|
||||
+char **args=0; /* vector of "job" command-line arguments */
|
||||
+int nargs=0; /* number of these */
|
||||
char *defarg = "*";
|
||||
-int in_background; /* are we in the background? */
|
||||
-int old_umask; /* umask when started */
|
||||
-sigset_t old_sigmask; /* signal mask when started */
|
||||
-
|
||||
-job_rec *first_job_rec;
|
||||
-env_rec *first_env_rec;
|
||||
-
|
||||
-static time_t start_sec; /* time anacron started */
|
||||
-static volatile int got_sigalrm, got_sigchld, got_sigusr1;
|
||||
-int running_jobs, running_mailers; /* , number of */
|
||||
+int in_background=0; /* are we in the background? */
|
||||
+int old_umask=0; /* umask when started */
|
||||
+sigset_t old_sigmask={0}; /* signal mask when started */
|
||||
+
|
||||
+job_rec *first_job_rec=0;
|
||||
+env_rec *first_env_rec=0;
|
||||
+
|
||||
+static time_t start_sec=0; /* time anacron started */
|
||||
+static volatile int got_sigalrm=0, got_sigchld=0, got_sigusr1=0;
|
||||
+int running_jobs=0, running_mailers=0; /* , number of */
|
||||
|
||||
static void
|
||||
print_version()
|
||||
@@ -183,6 +186,8 @@
|
||||
if (close(fd)) die_e("Can't close file descriptor %d", fd);
|
||||
}
|
||||
|
||||
+static int anacron_already_running();
|
||||
+
|
||||
static void
|
||||
go_background()
|
||||
/* Become a daemon. The foreground process exits successfully. */
|
||||
@@ -206,9 +211,16 @@
|
||||
else
|
||||
{
|
||||
/* child */
|
||||
+ xcloselog();
|
||||
primary_pid = getpid();
|
||||
if (setsid() == -1) die_e("setsid() error");
|
||||
in_background = 1;
|
||||
+ chdir(SPOOLDIR);
|
||||
+ if( anacron_already_running() )
|
||||
+ {
|
||||
+ errno=EDEADLK;
|
||||
+ die_e("Cannot run in daemon mode - anacron already running.");
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -265,6 +277,16 @@
|
||||
sa.sa_mask = ss;
|
||||
sa.sa_flags = 0;
|
||||
if (sigaction(SIGUSR1, &sa, NULL)) die_e("sigaction error");
|
||||
+ /* setup SIGQUIT handler */
|
||||
+ sa.sa_handler = handle_sigusr1;
|
||||
+ sa.sa_mask = ss;
|
||||
+ sa.sa_flags = 0;
|
||||
+ if (sigaction(SIGQUIT, &sa, NULL)) die_e("sigaction error");
|
||||
+ /* setup SIGTERM handler */
|
||||
+ sa.sa_handler = handle_sigusr1;
|
||||
+ sa.sa_mask = ss;
|
||||
+ sa.sa_flags = 0;
|
||||
+ if (sigaction(SIGTERM, &sa, NULL)) die_e("sigaction error");
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -409,6 +431,94 @@
|
||||
explain("Jobs will be executed sequentially");
|
||||
}
|
||||
|
||||
+static void remove_lock_and_pid_files(void)
|
||||
+{
|
||||
+ unlink(PID_FILE);
|
||||
+ unlink(LOCK_FILE);
|
||||
+}
|
||||
+
|
||||
+static int anacron_already_running()
|
||||
+{
|
||||
+ char buf[PATH_MAX], buf2[PATH_MAX], buf3[32];
|
||||
+ FILE *fp=0;
|
||||
+ pid_t pid=-1;
|
||||
+ mode_t mode;
|
||||
+ int len, fd;
|
||||
+
|
||||
+ if ( access( PID_FILE, F_OK ) == 0 )
|
||||
+ {
|
||||
+ if ( ( fp = fopen( PID_FILE, "r" ) ) == 0L )
|
||||
+ {
|
||||
+ complain("%s exists but is not readable",PID_FILE);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ if ( fscanf(fp,"%u",&pid) != 1 )
|
||||
+ {
|
||||
+ explain("%s does not contain a valid pid",PID_FILE);
|
||||
+ return 1;
|
||||
+ }
|
||||
+
|
||||
+ fclose(fp);
|
||||
+
|
||||
+ snprintf(buf, PATH_MAX, "/proc/%u", pid);
|
||||
+
|
||||
+ if( access(buf, F_OK) == 0 )
|
||||
+ {
|
||||
+
|
||||
+ snprintf(buf3, 32, "/proc/%u/exe", pid);
|
||||
+ if( (len = readlink(buf3, buf2, PATH_MAX)) <= 0 )
|
||||
+ len = 0;
|
||||
+
|
||||
+ buf2[len] = '\0';
|
||||
+
|
||||
+ snprintf(buf3, 32, "/proc/%u/exe", getpid());
|
||||
+ if( (len = readlink(buf3, buf, PATH_MAX)) <= 0 )
|
||||
+ len = 0;
|
||||
+ buf[len] = '\0';
|
||||
+
|
||||
+ if( strcmp( buf, buf2 ) == 0 )
|
||||
+ return 1;
|
||||
+ }
|
||||
+ }
|
||||
+ /* main process removes lock files once it
|
||||
+ * has determined no other anacron is running:
|
||||
+ */
|
||||
+ remove_lock_and_pid_files();
|
||||
+
|
||||
+ if( no_daemon || in_background )
|
||||
+ {
|
||||
+ /* daemon process, or main process in no_daemon mode,
|
||||
+ * creates the lock and pid files:
|
||||
+ */
|
||||
+ if( ( fd = open(LOCK_FILE, O_CREAT | O_WRONLY | O_EXCL, 0600) ) == -1 )
|
||||
+ {
|
||||
+ complain("Cannot exclusively create %s: %s",PID_FILE,strerror(errno));
|
||||
+ return 1;
|
||||
+ }
|
||||
+ close(fd);
|
||||
+
|
||||
+ mode = umask(0077);
|
||||
+ if( ( fp = fopen(PID_FILE, "w") ) == 0L )
|
||||
+ {
|
||||
+ complain("Cannot create %s",PID_FILE);
|
||||
+ umask(mode);
|
||||
+ return 1;
|
||||
+ }
|
||||
+ umask(mode);
|
||||
+
|
||||
+ /* lock and pid files removed automatically at normal exit
|
||||
+ * by creator process:
|
||||
+ */
|
||||
+ atexit( remove_lock_and_pid_files );
|
||||
+
|
||||
+ fprintf(fp,"%u",getpid());
|
||||
+ fflush(fp);
|
||||
+ fclose(fp);
|
||||
+ }
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
int
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
@@ -423,6 +533,12 @@
|
||||
|
||||
parse_opts(argc, argv);
|
||||
|
||||
+ if ( anacron_already_running() )
|
||||
+ {
|
||||
+ errno=EDEADLK;
|
||||
+ die_e("Cannot run - another anacron process is already running.");
|
||||
+ }
|
||||
+
|
||||
if (anacrontab == NULL)
|
||||
anacrontab = strdup(ANACRONTAB);
|
||||
|
||||
@@ -433,7 +549,9 @@
|
||||
old_umask = umask(0);
|
||||
|
||||
if (sigprocmask(0, NULL, &old_sigmask)) die_e("sigset error");
|
||||
-
|
||||
+
|
||||
+ if( !no_daemon )
|
||||
+ ioctl(0,TIOCNOTTY,0);
|
||||
if (fclose(stdin)) die_e("Can't close stdin");
|
||||
xopen(0, "/dev/null", O_RDONLY);
|
||||
|
||||
--- anacron-2.3/global.h.lock-files 2000-06-22 20:00:14.000000000 -0400
|
||||
+++ anacron-2.3/global.h 2006-04-13 20:25:42.000000000 -0400
|
||||
@@ -34,6 +34,14 @@
|
||||
/* Mail interface. (All MTAs should supply this command) */
|
||||
#define SENDMAIL "/usr/sbin/sendmail"
|
||||
|
||||
+#ifndef PID_FILE
|
||||
+#define PID_FILE "/var/run/anacron.pid"
|
||||
+#endif
|
||||
+
|
||||
+#ifndef LOCK_FILE
|
||||
+#define LOCK_FILE "/var/lock/subsys/anacron"
|
||||
+#endif
|
||||
+
|
||||
/* End of user-configurable section */
|
||||
|
||||
|
||||
22
anacron-2.3-mail-content-type-77108.patch
Normal file
22
anacron-2.3-mail-content-type-77108.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
diff -u anacron-2.3/runjob.c~ anacron-2.3/runjob.c
|
||||
--- anacron-2.3/runjob.c~ 2003-07-10 15:25:44.000000000 +0900
|
||||
+++ anacron-2.3/runjob.c 2003-07-10 15:25:44.000000000 +0900
|
||||
@@ -35,6 +35,8 @@
|
||||
#include <string.h>
|
||||
#include "global.h"
|
||||
|
||||
+#include <langinfo.h>
|
||||
+
|
||||
static int
|
||||
temp_file()
|
||||
/* Open a temporary file and return its file descriptor */
|
||||
@@ -217,6 +219,9 @@
|
||||
xwrite(fd, "To: ");
|
||||
xwrite(fd, username());
|
||||
xwrite(fd, "\n");
|
||||
+ xwrite(fd, "Content-Type: text/plain; charset=\"");
|
||||
+ xwrite(fd, nl_langinfo(CODESET));
|
||||
+ xwrite(fd, "\"\n");
|
||||
xwrite(fd, "Subject: Anacron job '");
|
||||
xwrite(fd, jr->ident);
|
||||
xwrite(fd, "'\n\n");
|
||||
58
anacron-2.3-mailto.patch
Normal file
58
anacron-2.3-mailto.patch
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
diff -U 3 anacron-2.3.oud/runjob.c anacron-2.3/runjob.c
|
||||
--- anacron-2.3.oud/runjob.c 2000-06-21 01:12:18.000000000 +0200
|
||||
+++ anacron-2.3/runjob.c 2004-07-09 19:05:22.314056376 +0200
|
||||
@@ -83,6 +83,18 @@
|
||||
return ps->pw_name;
|
||||
}
|
||||
|
||||
+static char *
|
||||
+mailto()
|
||||
+{
|
||||
+ char *alias;
|
||||
+
|
||||
+ alias = getenv("MAILTO");
|
||||
+ if (alias == NULL || strlen(alias) == 0)
|
||||
+ return username();
|
||||
+ else
|
||||
+ return alias;
|
||||
+}
|
||||
+
|
||||
static void
|
||||
xputenv(const char *s)
|
||||
{
|
||||
@@ -109,7 +121,6 @@
|
||||
run_job(const job_rec *jr)
|
||||
/* This is called to start the job, after the fork */
|
||||
{
|
||||
- setup_env(jr);
|
||||
/* setup stdout and stderr */
|
||||
xclose(1);
|
||||
xclose(2);
|
||||
@@ -173,7 +184,7 @@
|
||||
* options, which don't seem to be appropriate here.
|
||||
* Hopefully, this will keep all the MTAs happy. */
|
||||
execl(SENDMAIL, SENDMAIL, "-FAnacron", "-odi",
|
||||
- username(), (char *)NULL);
|
||||
+ mailto(), (char *)NULL);
|
||||
die_e("Can't exec " SENDMAIL);
|
||||
}
|
||||
/* parent */
|
||||
@@ -208,6 +219,9 @@
|
||||
pid_t pid;
|
||||
int fd;
|
||||
|
||||
+ /* import environment for mailto() to work properly */
|
||||
+ setup_env(jr);
|
||||
+
|
||||
/* create temporary file for stdout and stderr of the job */
|
||||
fd = jr->output_fd = temp_file();
|
||||
/* write mail header */
|
||||
@@ -215,7 +229,7 @@
|
||||
xwrite(fd, username());
|
||||
xwrite(fd, " (Anacron)\n");
|
||||
xwrite(fd, "To: ");
|
||||
- xwrite(fd, username());
|
||||
+ xwrite(fd, mailto());
|
||||
xwrite(fd, "\n");
|
||||
xwrite(fd, "Subject: Anacron job '");
|
||||
xwrite(fd, jr->ident);
|
||||
213
anacron-2.3-memleaking.patch
Normal file
213
anacron-2.3-memleaking.patch
Normal file
|
|
@ -0,0 +1,213 @@
|
|||
diff -ur anacron-2.3.orig/global.h anacron-2.3/global.h
|
||||
--- anacron-2.3.orig/global.h 2006-10-08 09:58:47.000000000 -0400
|
||||
+++ anacron-2.3/global.h 2006-10-08 10:08:18.000000000 -0400
|
||||
@@ -108,18 +108,25 @@
|
||||
/* main.c */
|
||||
int xopen(int fd, const char *file_name, int flags);
|
||||
void xclose(int fd);
|
||||
-pid_t xfork();
|
||||
+pid_t xfork(void);
|
||||
+
|
||||
+#ifdef __GNUC__
|
||||
+#define PRINTF_FORMAT(n, m) \
|
||||
+ __attribute__ ((format (printf, n, m)))
|
||||
+#else
|
||||
+#define PRINTF_FORMAT(n, m)
|
||||
+#endif
|
||||
|
||||
/* log.c */
|
||||
-void explain(const char *fmt, ...);
|
||||
-void explain_e(const char *fmt, ...);
|
||||
-void complain(const char *fmt, ...);
|
||||
-void complain_e(const char *fmt, ...);
|
||||
-void die(const char *fmt, ...);
|
||||
-void die_e(const char *fmt, ...);
|
||||
-void xdebug(const char *fmt, ...);
|
||||
-void xdebug_e(const char *fmt, ...);
|
||||
-void xcloselog();
|
||||
+void explain(const char *fmt, ...)PRINTF_FORMAT(1,2);
|
||||
+void explain_e(const char *fmt, ...)PRINTF_FORMAT(1,2);
|
||||
+void complain(const char *fmt, ...)PRINTF_FORMAT(1,2);
|
||||
+void complain_e(const char *fmt, ...)PRINTF_FORMAT(1,2);
|
||||
+void die(const char *fmt, ...)PRINTF_FORMAT(1,2);
|
||||
+void die_e(const char *fmt, ...)PRINTF_FORMAT(1,2);
|
||||
+void xdebug(const char *fmt, ...)PRINTF_FORMAT(1,2);
|
||||
+void xdebug_e(const char *fmt, ...)PRINTF_FORMAT(1,2);
|
||||
+void xcloselog(void);
|
||||
|
||||
#ifdef DEBUG
|
||||
#define Debug(args) xdebug args
|
||||
@@ -130,8 +137,8 @@
|
||||
#endif /* not DEBUG */
|
||||
|
||||
/* readtab.c */
|
||||
-void read_tab();
|
||||
-void arrange_jobs();
|
||||
+void read_tab(void);
|
||||
+void arrange_jobs(void);
|
||||
|
||||
/* lock.c */
|
||||
int consider_job(job_rec *jr);
|
||||
diff -ur anacron-2.3.orig/gregor.c anacron-2.3/gregor.c
|
||||
--- anacron-2.3.orig/gregor.c 2006-10-08 09:58:47.000000000 -0400
|
||||
+++ anacron-2.3/gregor.c 2006-10-08 10:24:05.000000000 -0400
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <limits.h>
|
||||
#include "gregor.h"
|
||||
|
||||
-const static int
|
||||
+static const int
|
||||
days_in_month[] = {
|
||||
31, /* Jan */
|
||||
28, /* Feb (non-leap) */
|
||||
diff -ur anacron-2.3.orig/lock.c anacron-2.3/lock.c
|
||||
--- anacron-2.3.orig/lock.c 2006-10-08 09:58:47.000000000 -0400
|
||||
+++ anacron-2.3/lock.c 2006-10-08 16:14:14.000000000 -0400
|
||||
@@ -42,7 +42,7 @@
|
||||
jr->timestamp_fd = open(jr->ident, O_RDWR | O_CREAT, S_IRUSR | S_IWUSR);
|
||||
if (jr->timestamp_fd == -1)
|
||||
die_e("Can't open timestamp file for job %s", jr->ident);
|
||||
- fcntl(jr->timestamp_fd, F_SETFD, 1); /* set close-on-exec flag */
|
||||
+ fcntl(jr->timestamp_fd, F_SETFD, FD_CLOEXEC); /* set close-on-exec flag */
|
||||
/* We want to own this file, and set its mode to 0600. This is necessary
|
||||
* in order to prevent other users from putting locks on it. */
|
||||
if (fchown(jr->timestamp_fd, getuid(), getgid()))
|
||||
diff -ur anacron-2.3.orig/log.c anacron-2.3/log.c
|
||||
--- anacron-2.3.orig/log.c 2006-10-08 09:58:47.000000000 -0400
|
||||
+++ anacron-2.3/log.c 2006-10-08 10:27:29.000000000 -0400
|
||||
@@ -35,6 +35,7 @@
|
||||
*/
|
||||
|
||||
#include <unistd.h>
|
||||
+#include <stdlib.h>
|
||||
#include <syslog.h>
|
||||
#include <stdio.h>
|
||||
#include <stdarg.h>
|
||||
@@ -79,7 +80,7 @@
|
||||
}
|
||||
|
||||
static void
|
||||
-log(int priority, const char *fmt, va_list args)
|
||||
+slog(int priority, const char *fmt, va_list args)
|
||||
/* Log a message, described by "fmt" and "args", with the specified
|
||||
* "priority". */
|
||||
{
|
||||
@@ -97,7 +98,7 @@
|
||||
|
||||
static void
|
||||
log_e(int priority, const char *fmt, va_list args)
|
||||
-/* Same as log(), but also appends an error description corresponding
|
||||
+/* Same as slog(), but also appends an error description corresponding
|
||||
* to "errno". */
|
||||
{
|
||||
int saved_errno;
|
||||
@@ -123,7 +124,7 @@
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
- log(EXPLAIN_LEVEL, fmt, args);
|
||||
+ slog(EXPLAIN_LEVEL, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
@@ -145,7 +146,7 @@
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
- log(COMPLAIN_LEVEL, fmt, args);
|
||||
+ slog(COMPLAIN_LEVEL, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
@@ -167,7 +168,7 @@
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
- log(COMPLAIN_LEVEL, fmt, args);
|
||||
+ slog(COMPLAIN_LEVEL, fmt, args);
|
||||
va_end(args);
|
||||
if (getpid() == primary_pid) complain("Aborted");
|
||||
|
||||
@@ -199,7 +200,7 @@
|
||||
va_list args;
|
||||
|
||||
va_start(args, fmt);
|
||||
- log(DEBUG_LEVEL, fmt, args);
|
||||
+ slog(DEBUG_LEVEL, fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
diff -ur anacron-2.3.orig/matchrx.c anacron-2.3/matchrx.c
|
||||
--- anacron-2.3.orig/matchrx.c 2006-10-08 09:58:47.000000000 -0400
|
||||
+++ anacron-2.3/matchrx.c 2006-10-08 10:29:24.000000000 -0400
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <regex.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdlib.h>
|
||||
+#include <string.h>
|
||||
#include "matchrx.h"
|
||||
|
||||
int
|
||||
@@ -49,11 +50,23 @@
|
||||
sub_offsets = malloc(sizeof(regmatch_t) * (n_sub + 1));
|
||||
memset(sub_offsets, 0, sizeof(regmatch_t) * (n_sub + 1));
|
||||
|
||||
- if (regcomp(&crx, rx, REG_EXTENDED)) return - 1;
|
||||
+ if (regcomp(&crx, rx, REG_EXTENDED))
|
||||
+ {
|
||||
+ free(sub_offsets);
|
||||
+ return - 1;
|
||||
+ }
|
||||
r = regexec(&crx, string, n_sub + 1, sub_offsets, 0);
|
||||
- if (r != 0 && r != REG_NOMATCH) return - 1;
|
||||
+ if (r != 0 && r != REG_NOMATCH)
|
||||
+ {
|
||||
+ free(sub_offsets);
|
||||
+ return - 1;
|
||||
+ }
|
||||
regfree(&crx);
|
||||
- if (r == REG_NOMATCH) return 0;
|
||||
+ if (r == REG_NOMATCH)
|
||||
+ {
|
||||
+ free(sub_offsets);
|
||||
+ return 0;
|
||||
+ }
|
||||
|
||||
va_start(va, n_sub);
|
||||
n = 1;
|
||||
@@ -62,7 +75,11 @@
|
||||
substring = va_arg(va, char**);
|
||||
if (substring != NULL)
|
||||
{
|
||||
- if (sub_offsets[n].rm_so == -1) return - 1;
|
||||
+ if (sub_offsets[n].rm_so == -1)
|
||||
+ {
|
||||
+ free(sub_offsets);
|
||||
+ return - 1;
|
||||
+ }
|
||||
*substring = string + sub_offsets[n].rm_so;
|
||||
*(string + sub_offsets[n].rm_eo) = 0;
|
||||
}
|
||||
diff -ur anacron-2.3.orig/runjob.c anacron-2.3/runjob.c
|
||||
--- anacron-2.3.orig/runjob.c 2006-10-08 09:58:47.000000000 -0400
|
||||
+++ anacron-2.3/runjob.c 2006-10-08 16:09:37.000000000 -0400
|
||||
@@ -64,8 +64,8 @@
|
||||
if (fdin == -1) die_e("Can't open temporary file for reading");
|
||||
if (unlink(name)) die_e("Can't unlink temporary file");
|
||||
free(name);
|
||||
- fcntl(fdout, F_SETFD, 1); /* set close-on-exec flag */
|
||||
- fcntl(fdin, F_SETFD, 1); /* set close-on-exec flag */
|
||||
+ fcntl(fdout, F_SETFD, FD_CLOEXEC); /* set close-on-exec flag */
|
||||
+ fcntl(fdin, F_SETFD, FD_CLOEXEC); /* set close-on-exec flag */
|
||||
|
||||
jr->input_fd = fdin;
|
||||
jr->output_fd = fdout;
|
||||
@@ -178,7 +178,7 @@
|
||||
pid = xfork();
|
||||
if (pid == 0)
|
||||
{
|
||||
- long fdflags;
|
||||
+ /* long fdflags; */
|
||||
|
||||
/* child */
|
||||
in_background = 1;
|
||||
12
anacron-2.3-mk-incl.patch
Normal file
12
anacron-2.3-mk-incl.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
diff -u anacron-2.3/Makefile~ anacron-2.3/Makefile
|
||||
--- anacron-2.3/Makefile~ 2002-08-28 19:18:49.000000000 +0900
|
||||
+++ anacron-2.3/Makefile 2002-08-28 19:18:49.000000000 +0900
|
||||
@@ -54,7 +54,7 @@
|
||||
$(SHELL) -ec "$(CC) -MM $(ALL_CPPFLAGS) $< \
|
||||
| sed '1s/^\(.*\)\.o[ :]*/\1.d &/1' > $@"
|
||||
|
||||
-include $(csources:.c=.d)
|
||||
+-include $(csources:.c=.d)
|
||||
|
||||
anacron: $(objects)
|
||||
$(CC) $(LDFLAGS) $^ $(LOADLIBES) -o $@
|
||||
11
anacron-2.3-noconst.patch
Normal file
11
anacron-2.3-noconst.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
--- anacron-2.3/gregor.c.sopwith 2004-07-02 10:51:24.000000000 -0400
|
||||
+++ anacron-2.3/gregor.c 2004-07-02 10:51:33.000000000 -0400
|
||||
@@ -65,7 +65,7 @@
|
||||
{
|
||||
int dn;
|
||||
int i;
|
||||
- const int isleap; /* save three calls to leap() */
|
||||
+ int isleap; /* save three calls to leap() */
|
||||
|
||||
/* Some validity checks */
|
||||
|
||||
11
anacron-2.3-path.patch
Normal file
11
anacron-2.3-path.patch
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
--- ./anacrontab.path 2006-08-30 14:57:23.000000000 +0200
|
||||
+++ ./anacrontab 2006-08-30 14:58:09.000000000 +0200
|
||||
@@ -3,7 +3,7 @@
|
||||
# See anacron(8) and anacrontab(5) for details.
|
||||
|
||||
SHELL=/bin/sh
|
||||
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
MAILTO=root
|
||||
|
||||
1 65 cron.daily run-parts /etc/cron.daily
|
||||
12
anacron-2.3-pic.patch
Normal file
12
anacron-2.3-pic.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
--- anacron-2.3/Makefile.piee 2006-10-17 12:39:39.000000000 +0200
|
||||
+++ anacron-2.3/Makefile 2006-10-17 12:39:39.000000000 +0200
|
||||
@@ -22,7 +22,8 @@
|
||||
PREFIX =
|
||||
BINDIR = $(PREFIX)/usr/sbin
|
||||
MANDIR = $(PREFIX)/usr/man
|
||||
-CFLAGS = -Wall -pedantic -O2
|
||||
+LDFLAGS = -fpie -Wl,-z,relro
|
||||
+CFLAGS = -Wall -pedantic -W -Wundef -fpie
|
||||
#CFLAGS = -Wall -O2 -g -DDEBUG
|
||||
|
||||
# If you change these, please update the man-pages too
|
||||
83
anacron.init
Executable file
83
anacron.init
Executable file
|
|
@ -0,0 +1,83 @@
|
|||
#!/bin/sh
|
||||
# Startup script for anacron
|
||||
#
|
||||
# chkconfig: 2345 95 05
|
||||
# description: Run cron jobs that were left out due to downtime
|
||||
# pidfile: /var/run/anacron.pid
|
||||
#
|
||||
# Source function library.
|
||||
. /etc/rc.d/init.d/functions
|
||||
|
||||
[ -f /usr/sbin/anacron ] || exit 0
|
||||
|
||||
prog="anacron"
|
||||
PIDFILE=/var/run/${prog}.pid
|
||||
LOCKFILE=/var/lock/subsys/$prog
|
||||
#
|
||||
# NOTE: anacron exits after it has determined it has no more work to do.
|
||||
# Hence, its initscript cannot do normal lock file management.
|
||||
# The anacron binary now creates its own /var/run/anacron.pid pid file
|
||||
# and /var/lock/subsys lock files, and removes them automatically at exit,
|
||||
# so at least there will be no more "anacron is dead but subsys locked"
|
||||
# messages.
|
||||
#
|
||||
|
||||
start() {
|
||||
echo -n $"Starting $prog: "
|
||||
daemon +19 anacron -s
|
||||
RETVAL=$?
|
||||
if [ $RETVAL -ne 0 ]; then
|
||||
failure;
|
||||
fi;
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
stop() {
|
||||
echo -n $"Stopping $prog: "
|
||||
if [ -f $PIDFILE ]; then
|
||||
killproc anacron
|
||||
RETVAL=$?
|
||||
if [ $RETVAL -ne 0 ]; then
|
||||
failure;
|
||||
fi;
|
||||
else
|
||||
RETVAL=1
|
||||
failure;
|
||||
fi
|
||||
echo
|
||||
return $RETVAL
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
start
|
||||
;;
|
||||
|
||||
stop)
|
||||
stop
|
||||
;;
|
||||
|
||||
status)
|
||||
status anacron
|
||||
;;
|
||||
|
||||
restart)
|
||||
stop
|
||||
start
|
||||
;;
|
||||
|
||||
condrestart)
|
||||
if [ -f $LOCKFILE ]; then
|
||||
stop
|
||||
start
|
||||
fi
|
||||
;;
|
||||
|
||||
*)
|
||||
echo $"Usage: $0 {start|stop|restart|condrestart|status}"
|
||||
exit 1
|
||||
|
||||
esac
|
||||
|
||||
exit $RETVAL
|
||||
343
anacron.spec
Normal file
343
anacron.spec
Normal file
|
|
@ -0,0 +1,343 @@
|
|||
Summary: A cron-like program that can run jobs lost during downtime
|
||||
Name: anacron
|
||||
Version: 2.3
|
||||
Release: 47%{?dist}
|
||||
License: GPL
|
||||
Group: System Environment/Base
|
||||
URL: http://packages.debian.org/stable/source/anacron
|
||||
Source: http://ftp.debian.org/debian/pool/main/a/anacron/%{name}_%{version}.orig.tar.gz
|
||||
Source1: anacrontab
|
||||
Source2: anacron.init
|
||||
Patch0: anacron-2.3-mk-incl.patch
|
||||
Patch1: anacron-2.3-mail-content-type-77108.patch
|
||||
Patch2: anacron-2.3-noconst.patch
|
||||
Patch3: anacron-2.3-mailto.patch
|
||||
Patch4: anacron-2.3-lock-files.patch
|
||||
Patch5: anacron-2.3-fdclose.patch
|
||||
Patch6: anacron-2.3-hostname.patch
|
||||
#Patch7: anacron-2.3-pie.patch
|
||||
#Patch8: anacron-2.3-memoryleak.patch
|
||||
Patch9: anacron-2.3-pic.patch
|
||||
Patch10: anacron-2.3-memleaking.patch
|
||||
Requires: /bin/sh
|
||||
Requires: crontabs
|
||||
Requires: initscripts
|
||||
Requires(post): /sbin/chkconfig
|
||||
Requires(preun): /sbin/chkconfig
|
||||
Requires(postun): /sbin/service
|
||||
Requires(preun): /sbin/service
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-buildroot
|
||||
|
||||
%description
|
||||
Anacron (like `anac(h)ronistic') is a periodic command scheduler.
|
||||
It executes commands at intervals specified in days. Unlike cron, it
|
||||
does not assume that the system is running continuously. It can
|
||||
therefore be used to control the execution of daily, weekly and
|
||||
monthly jobs (or anything with a period of n days), on systems that
|
||||
don't run 24 hours a day. When installed and configured properly,
|
||||
Anacron will make sure that the commands are run at the specified
|
||||
intervals as closely as machine-uptime permits.
|
||||
|
||||
This package is pre-configured to execute the daily jobs of the Red
|
||||
Hat Linux (Fedora Core) system. You should install this program if your
|
||||
system isn't powered on 24 hours a day to make sure the maintenance
|
||||
jobs of other Red Hat Linux (Fedora Core) packages are executed each day.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch0 -p1 -b .incl
|
||||
%patch1 -p1 -b .charset
|
||||
%patch2 -p1 -b .noconst
|
||||
%patch3 -p1 -b .mailto
|
||||
%patch4 -p1 -b .lock-files
|
||||
%patch5 -p1 -b .fdclose
|
||||
%patch6 -p1 -b .hostname
|
||||
#%patch7 -p1 -b .pie
|
||||
#%patch8 -p1 -b .memoryleak
|
||||
%patch9 -p1 -b .pic
|
||||
%patch10 -p1 -b .memleaking
|
||||
|
||||
%build
|
||||
make CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
mkdir -p $RPM_BUILD_ROOT/{etc/,usr/sbin/,%{_mandir}/man5,%{_mandir}/man8/}
|
||||
mkdir -p $RPM_BUILD_ROOT/var/spool/anacron/
|
||||
|
||||
#
|
||||
cp anacron $RPM_BUILD_ROOT/usr/sbin
|
||||
cp anacron.8 $RPM_BUILD_ROOT/%{_mandir}/man8/
|
||||
cp anacrontab.5 $RPM_BUILD_ROOT/%{_mandir}/man5/
|
||||
cp %SOURCE1 $RPM_BUILD_ROOT/etc
|
||||
|
||||
for i in cron.daily cron.weekly cron.monthly;do
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/$i/
|
||||
cat << EOF > $RPM_BUILD_ROOT/etc/$i/0anacron
|
||||
#!/bin/sh
|
||||
#
|
||||
# anacron's cron script
|
||||
#
|
||||
# This script updates anacron time stamps. It is called through run-parts
|
||||
# either by anacron itself or by cron.
|
||||
#
|
||||
# The script is called "0anacron" to assure that it will be executed
|
||||
# _before_ all other scripts.
|
||||
|
||||
# Don't run anacron if this script is called by anacron.
|
||||
if [ ! -e /var/run/anacron.pid ]; then
|
||||
anacron -u $i
|
||||
fi
|
||||
|
||||
EOF
|
||||
chmod +x $RPM_BUILD_ROOT/etc/$i/0anacron
|
||||
done
|
||||
|
||||
#
|
||||
#for i in `find $RPM_BUILD_ROOT/ -type 'f' -perm '+a=x'`;do
|
||||
# file $i|grep -q "not stripped" && strip $i
|
||||
#done
|
||||
|
||||
mkdir -p $RPM_BUILD_ROOT/etc/rc.d/init.d/
|
||||
install -c -m755 %SOURCE2 $RPM_BUILD_ROOT/etc/rc.d/init.d/anacron
|
||||
|
||||
%clean
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
|
||||
|
||||
%post
|
||||
/sbin/chkconfig --add anacron
|
||||
|
||||
%preun
|
||||
if [ "$1" = "0" ]; then
|
||||
service anacron stop >/dev/null 2>&1
|
||||
/sbin/chkconfig --del anacron
|
||||
fi
|
||||
|
||||
%postun
|
||||
if [ "$1" -ge "1" ]; then
|
||||
service anacron condrestart >/dev/null 2>&1
|
||||
fi
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,0755)
|
||||
%doc COPYING README
|
||||
%config(noreplace) /etc/anacrontab
|
||||
%dir /var/spool/anacron/
|
||||
%config(noreplace) /etc/rc.d/init.d/*
|
||||
/%{_mandir}/man5/*
|
||||
/%{_mandir}/man8/*
|
||||
/usr/sbin/anacron
|
||||
##%config(noreplace) /etc/cron.daily/0anacron
|
||||
%attr(755,root,root) %dir /etc/cron.daily/0anacron
|
||||
%attr(755,root,root) %dir /etc/cron.monthly/0anacron
|
||||
%attr(755,root,root) %dir /etc/cron.weekly/0anacron
|
||||
|
||||
%changelog
|
||||
* Tue Feb 6 2007 Marcela Maslanova <mmaslano@redhat.com> 2.3-47
|
||||
- thanks for review from Jef Spaleta
|
||||
- rhbz#225247, rhbz#211309
|
||||
|
||||
* Mon Dec 04 2006 Marcela Maslanova <mmaslano@redhat.com> 2.3-45
|
||||
- rebuilt with pie insted pic
|
||||
|
||||
* Tue Oct 10 2006 Marcela Maslanova <mmaslano@redhat.com> 2.3-44
|
||||
- fix memory leaking (both #210020)
|
||||
- PIE(PIC) executable
|
||||
|
||||
* Tue Oct 2 2006 Marcela Maslanova <mmaslano@redhat.com> 2.3-42
|
||||
- hostname added to mail (#208914)
|
||||
|
||||
* Fri Sep 29 2006 Marcela Maslanova <mmaslano@redhat.com> 2.3-41
|
||||
- change spec file - patch from Orion Poplawski (#191410)
|
||||
|
||||
* Mon Sep 11 2006 Dan Walsh <dwalsh@redhat.com> 2.3-40
|
||||
- Grab the fdclose patch from FC4
|
||||
- fix bug 185973: allow use of sendmail under selinux-policy-strict:
|
||||
apply patch contributed by Ted Rule<ejtr@layer3.co.uk>
|
||||
|
||||
* Wed Aug 30 2006 Jitka Kudrnacova <jkudrnac@redhat.com> - 2.3-39
|
||||
- modified PATH in /etc/anacrontab file to make the same as in /etc/crontab (#61891)
|
||||
|
||||
* Wed Jul 12 2006 Jesse Keating <jkeating@redhat.com> - 2.3-38.FC6.1
|
||||
- rebuild
|
||||
|
||||
* Thu Apr 13 2006 Jason Vas Dias <jvdias@redhat.com> - 2.3-38.1
|
||||
- fix bug 188403: anacron SysVinit locking:
|
||||
Since anacron just exits when it has no more work to do, the
|
||||
initscript cannot do normal /var/lock/subsys/anacron lock file
|
||||
creation, else messages such as 'anacron dead but subsys locked'
|
||||
will appear when changing init levels.
|
||||
|
||||
Now, the anacron process itself creates its own
|
||||
/var/lock/subsys/anacron SysVinit lock file and
|
||||
/var/run/anacron.pid pid file to co-operate more
|
||||
gracefully with the initscript system.
|
||||
|
||||
* Fri Feb 10 2006 Jesse Keating <jkeating@redhat.com> - 2.3-36.1
|
||||
- bump again for double-long bug on ppc(64)
|
||||
|
||||
* Tue Feb 07 2006 Jason Vas Dias <jvdias@redhat.com> - 2.3-36
|
||||
- rebuild for new gcc, glibc, glibc-kernheaders
|
||||
|
||||
* Wed Jan 11 2006 Peter Jones <pjones@redhat.com> 2.3-35
|
||||
- Fix initscript so changing runlevel shuts it down correctly
|
||||
|
||||
* Fri Dec 09 2005 Jesse Keating <jkeating@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Wed Mar 16 2005 Jason Vas Dias <jvdias@redhat.com> 2.3-34
|
||||
- Rebuild with gcc4 in FC4.
|
||||
|
||||
* Mon Feb 21 2005 Jason Vas Dias <jvdias@redhat.com> 2.3-33
|
||||
- Rebuild for FC4 .
|
||||
|
||||
* Tue Sep 28 2004 Rik van Riel <riel@redhat.com> 2.3-32
|
||||
- add MAILTO option, like vixie cron has (bz#127924)
|
||||
|
||||
* Fri Jul 2 2004 Elliot Lee <sopwith@redhat.com>
|
||||
- rebuilt
|
||||
- Add noconst patch to fix invalid C
|
||||
|
||||
* Fri Feb 13 2004 Elliot Lee <sopwith@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Thu Jul 10 2003 Jens Petersen <petersen@redhat.com> - 2.3-29
|
||||
- don't require vixie-cron (#21176) [reported by Gerald Teschl]
|
||||
- in init script don't remove /var/lock/subsys/anacron when stopping (#58462)
|
||||
- exit init script with actual exit status (#44600) [reported by Enrico Scholz]
|
||||
|
||||
* Thu Jul 10 2003 Jens Petersen <petersen@redhat.com> - 2.3-28
|
||||
- add a Content-Type header to mails giving the charset encoding (#77108)
|
||||
|
||||
* Thu Jul 10 2003 Jens Petersen <petersen@redhat.com> - 2.3-27
|
||||
- in init script do not touch /var/lock/subsys/anacron when starting (#58462)
|
||||
- require crontabs (#21176)
|
||||
- update source url
|
||||
|
||||
* Wed Jun 04 2003 Elliot Lee <sopwith@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Wed Jan 22 2003 Tim Powers <timp@redhat.com>
|
||||
- rebuilt
|
||||
|
||||
* Wed Dec 11 2002 Tim Powers <timp@redhat.com> 2.3-24
|
||||
- rebuild on all arches
|
||||
|
||||
* Fri Aug 23 2002 Jens Petersen <petersen@redhat.com> 2.3-23
|
||||
- delay the start of anacron by 60min to make startup more pleasant (#68304)
|
||||
- at startup run jobs serially and nice 19 to reduce load (#65870, #68304)
|
||||
- spec file now in utf-8
|
||||
- dont install non-existant NEWS file
|
||||
- silence make include warnings
|
||||
|
||||
* Fri Jul 19 2002 Akira TAGOH <tagoh@redhat.com> 2.3-22
|
||||
- fix the stripped binary issue.
|
||||
|
||||
* Mon Jul 08 2002 Bill Huang <bhuang@redhat.com>
|
||||
- Update "Copyright" to "License" in spec file
|
||||
|
||||
* Fri Jun 21 2002 Tim Powers <timp@redhat.com>
|
||||
- automated rebuild
|
||||
|
||||
* Thu May 23 2002 Tim Powers <timp@redhat.com>
|
||||
- automated rebuild
|
||||
|
||||
* Wed Jan 09 2002 Tim Powers <timp@redhat.com>
|
||||
- automated rebuild
|
||||
|
||||
* Sun Jun 24 2001 Elliot Lee <sopwith@redhat.com>
|
||||
- Bump release + rebuild.
|
||||
|
||||
* Tue Apr 3 2001 Crutcher Dunnavant <crutcher@redhat.com>
|
||||
- add dependancy to vixie-cron (for /usr/bin/run-parts)
|
||||
|
||||
* Tue Feb 13 2001 Tim Waugh <twaugh@redhat.com>
|
||||
- killproc is a shell function and can't be passed as a parameter
|
||||
(bug #27150).
|
||||
|
||||
* Mon Feb 5 2001 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||
- Fix i18n in initscript ("Stopping anacron" wasn't translated)
|
||||
(#26076)
|
||||
|
||||
* Fri Feb 2 2001 Trond Eivind Glomsrød <teg@redhat.com>
|
||||
- i18nize initscript
|
||||
|
||||
* Thu Dec 7 2000 Crutcher Dunnavant <crutcher@redhat.com>
|
||||
- rebuild in rebuild cycle.
|
||||
|
||||
* Mon Oct 30 2000 Matt Wilson <msw@redhat.com>
|
||||
- touch /var/lock/subsys/anacron to prevent excess startage during
|
||||
init level change
|
||||
|
||||
* Wed Aug 30 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||
- Shut down earlier to prevent NFS mounted /usr filesystems from causing
|
||||
problems (Bug #16257)
|
||||
|
||||
* Fri Aug 4 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||
- Start it later so services some cron scripts may depend on are running
|
||||
(Bug #15335)
|
||||
|
||||
* Thu Aug 3 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||
- Fix up initscript (Bug #15123 and an unreported bug)
|
||||
|
||||
* Sat Jul 15 2000 Bill Nottingham <notting@redhat.com>
|
||||
- move initscript back
|
||||
|
||||
* Wed Jul 12 2000 Prospector <bugzilla@redhat.com>
|
||||
- automatic rebuild
|
||||
|
||||
* Mon Jul 10 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||
- Fix up initscripts (Bug #13625)
|
||||
|
||||
* Tue Jul 4 2000 Matt Wilson <msw@redhat.com>
|
||||
- Prereq: /sbin/chkconfig
|
||||
|
||||
* Mon Jun 26 2000 Preston Brown <pbrown@redhat.com>
|
||||
- move initscript to /etc/init.d, fix up post/preun/postun scripts.
|
||||
|
||||
* Sun Jun 26 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||
- 2.3
|
||||
|
||||
* Sun Jun 18 2000 Matt Wilson <msw@redhat.com>
|
||||
- use %%{_mandir}
|
||||
|
||||
* Fri Mar 03 2000 Tim Powers <timp@redhat.com>
|
||||
- fixed startup script so that it doesn't put stuff in /var/lock/subsys.
|
||||
Complains since anacronda turns itself off when it is run, and the file in
|
||||
/var/lock/subsys isn't removed.
|
||||
|
||||
* Mon Feb 28 2000 Tim Powers <timp@redhat.com>
|
||||
- fixed startup script, now it actually stops, gives status and restarts.
|
||||
Fixes bug #9835
|
||||
|
||||
* Mon Feb 7 2000 Bill Nottingham <notting@redhat.com>
|
||||
- handle compressed manpages
|
||||
|
||||
* Fri Feb 4 2000 Bernhard Rosenkraenzer <bero@redhat.com>
|
||||
- rebuild to get compressed man pages
|
||||
- mark /etc/cron.daily/... as config files
|
||||
|
||||
* Wed Feb 02 2000 Cristian Gafton <gafton@redhat.com>
|
||||
- fix annoying defines
|
||||
- rebuild to update description and group
|
||||
|
||||
* Thu Jan 6 2000 Bernhard Rosenkränzer <bero@redhat.com>
|
||||
- initial Red Hat package
|
||||
|
||||
* Wed Dec 29 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
|
||||
- Remove cron.hourly check (unusefull).
|
||||
|
||||
* Wed Nov 10 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
|
||||
- 2.1 from debian.
|
||||
- Fix typo in initscripts.
|
||||
|
||||
* Thu Jul 22 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
|
||||
- Fix wrong entries in anacrontab.
|
||||
- Add a /etc/rc.sysinit/ script
|
||||
|
||||
* Tue Apr 27 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
|
||||
- Fix bug with /var/spool/anacron/
|
||||
|
||||
* Sat Apr 10 1999 Chmouel Boudjnah <chmouel@mandrakesoft.com>
|
||||
- First version mainly inspired from the Debian package.
|
||||
11
anacrontab
Normal file
11
anacrontab
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
# /etc/anacrontab: configuration file for anacron
|
||||
|
||||
# See anacron(8) and anacrontab(5) for details.
|
||||
|
||||
SHELL=/bin/sh
|
||||
PATH=/sbin:/bin:/usr/sbin:/usr/bin
|
||||
MAILTO=root
|
||||
|
||||
1 65 cron.daily run-parts /etc/cron.daily
|
||||
7 70 cron.weekly run-parts /etc/cron.weekly
|
||||
30 75 cron.monthly run-parts /etc/cron.monthly
|
||||
|
|
@ -1 +0,0 @@
|
|||
Obsoleted by cronie-anacron as of F-12.
|
||||
2
sources
Normal file
2
sources
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
9fdfc50f5741643332722a9145146278 anacron_2.3.orig.tar.gz
|
||||
094af5e05723d2c4924d60f73d738509 anacron.init
|
||||
Reference in a new issue