summaryrefslogtreecommitdiff
path: root/sysutils/anacron/files/patch-aa
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/anacron/files/patch-aa')
-rw-r--r--sysutils/anacron/files/patch-aa275
1 files changed, 275 insertions, 0 deletions
diff --git a/sysutils/anacron/files/patch-aa b/sysutils/anacron/files/patch-aa
new file mode 100644
index 000000000000..09e53b398317
--- /dev/null
+++ b/sysutils/anacron/files/patch-aa
@@ -0,0 +1,275 @@
+diff -uN ../anacron-2.3/Makefile ./Makefile
+--- ../anacron-2.3/Makefile Fri Jun 23 00:26:11 2000
++++ ./Makefile Fri May 2 22:16:51 2003
+@@ -19,16 +19,16 @@
+ # `COPYING' that comes with the Anacron source distribution.
+
+
+-PREFIX =
+-BINDIR = $(PREFIX)/usr/sbin
+-MANDIR = $(PREFIX)/usr/man
++PREFIX ?= /usr/local
++BINDIR = $(PREFIX)/sbin
++MANDIR = $(PREFIX)/man
+ CFLAGS = -Wall -pedantic -O2
+ #CFLAGS = -Wall -O2 -g -DDEBUG
+
+ # If you change these, please update the man-pages too
+ # Only absolute paths here, please
+ SPOOLDIR = /var/spool/anacron
+-ANACRONTAB = /etc/anacrontab
++ANACRONTAB = $(PREFIX)/etc/anacrontab
+
+ RELEASE = 2.3
+ package_name = anacron-$(RELEASE)
+@@ -64,7 +64,7 @@
+
+ .PHONY: installdirs
+ installdirs:
+- $(INSTALL_DIR) $(BINDIR) $(PREFIX)$(SPOOLDIR) \
++ $(INSTALL_DIR) $(BINDIR) $(SPOOLDIR) \
+ $(MANDIR)/man5 $(MANDIR)/man8
+
+ .PHONY: install
+@@ -72,6 +72,7 @@
+ $(INSTALL_PROGRAM) anacron $(BINDIR)/anacron
+ $(INSTALL_DATA) anacrontab.5 $(MANDIR)/man5/anacrontab.5
+ $(INSTALL_DATA) anacron.8 $(MANDIR)/man8/anacron.8
++ $(INSTALL_DATA) anacrontab.sample $(PREFIX)/etc/anacrontab.sample
+
+ .PHONY: clean
+ clean:
+diff -uN ../anacron-2.3/anacron.8 ./anacron.8
+--- ../anacron-2.3/anacron.8 Fri Jun 23 00:42:05 2000
++++ ./anacron.8 Fri May 2 21:57:56 2003
+@@ -18,7 +18,7 @@
+ usually controlled by \fBcron\fR.
+ .PP
+ When executed, Anacron reads a list of jobs from a configuration file, normally
+-.I /etc/anacrontab
++.I /usr/local/etc/anacrontab
+ (see \fBanacrontab(5)\fR). This file
+ contains the list of jobs that Anacron controls. Each
+ job entry specifies a period in days,
+@@ -84,7 +84,7 @@
+ .TP
+ .B -n
+ Run jobs now. Ignore the delay specifications in the
+-.I /etc/anacrontab
++.I /usr/local/etc/anacrontab
+ file. This options implies \fB-s\fR.
+ .TP
+ .B -d
+@@ -117,7 +117,7 @@
+ for more information.
+ .SH FILES
+ .TP
+-.I /etc/anacrontab
++.I /usr/local/etc/anacrontab
+ Contains specifications of jobs. See \fBanacrontab(5)\fR for a complete
+ description.
+ .TP
+diff -uN ../anacron-2.3/anacrontab.5 ./anacrontab.5
+--- ../anacron-2.3/anacrontab.5 Wed Jun 21 01:12:18 2000
++++ ./anacrontab.5 Fri May 2 21:58:31 2003
+@@ -1,9 +1,9 @@
+ .TH ANACRONTAB 5 1998-02-02 "Itai Tzur" "Anacron Users' Manual"
+ .SH NAME
+-/etc/anacrontab \- configuration file for anacron
++/usr/local/etc/anacrontab \- configuration file for anacron
+ .SH DESCRIPTION
+ The file
+-.I /etc/anacrontab
++.I /usr/local/etc/anacrontab
+ describes the jobs controlled by \fBanacron(8)\fR. Its lines can be of
+ three kinds: job-description lines, environment
+ assignments, or empty lines.
+diff -uN ../anacron-2.3/anacrontab.sample ./anacrontab.sample
+--- ../anacron-2.3/anacrontab.sample Thu Jan 1 01:00:00 1970
++++ ./anacrontab.sample Sat May 3 20:14:43 2003
+@@ -0,0 +1,12 @@
++
++PATH=/bin:/sbin:/usr/bin:/usr/sbin
++
++# days make sure the command is executed at least every 'days' days
++# delay delay in minutes, before a command starts
++# id unique id of a command
++
++# days delay id command
++1 5 daily periodic daily
++7 15 weekly periodic weekly
++30 60 monthly periodic monthly
++
+diff -uN ../anacron-2.3/matchrx.c ./matchrx.c
+--- ../anacron-2.3/matchrx.c Wed Jun 21 01:12:18 2000
++++ ./matchrx.c Thu May 1 14:46:35 2003
+@@ -23,6 +23,7 @@
+
+
+ #include <stdio.h>
++#include <unistd.h>
+ #include <regex.h>
+ #include <stdarg.h>
+ #include <stdlib.h>
+diff -uN ../anacron-2.3/readtab.c ./readtab.c
+--- ../anacron-2.3/readtab.c Fri Jun 23 00:13:12 2000
++++ ./readtab.c Mon Aug 25 16:46:18 2003
+@@ -19,6 +19,11 @@
+
+ The GNU General Public License can also be found in the file
+ `COPYING' that comes with the Anacron source distribution.
++
++ Changes:
++
++ May 2003 (Derik van Zuetphen)
++ replaced obstack with malloc/realloc calls
+ */
+
+
+@@ -29,7 +34,6 @@
+ #include <errno.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <obstack.h>
+ #include <limits.h>
+ #include <fnmatch.h>
+ #include <unistd.h>
+@@ -37,8 +41,6 @@
+ #include "global.h"
+ #include "matchrx.h"
+
+-static struct obstack input_o; /* holds input line */
+-static struct obstack tab_o; /* holds processed data read from anacrontab */
+ static FILE *tab;
+ job_rec **job_array;
+ int njobs; /* number of jobs to run */
+@@ -47,9 +49,7 @@
+ static job_rec *last_job_rec; /* last job stored in memory, at the moment */
+ static env_rec *last_env_rec; /* last environment assignment stored */
+
+-/* some definitions for the obstack macros */
+-#define obstack_chunk_alloc xmalloc
+-#define obstack_chunk_free free
++#define MAXTABLINE 1000
+
+ static void *
+ xmalloc (size_t size)
+@@ -63,6 +63,18 @@
+ return ptr;
+ }
+
++static void *
++xrealloc (void *mem, size_t size)
++/* Just like standard realloc(), only never returns NULL. */
++{
++ void * ptr;
++
++ ptr = realloc(mem,size);
++ if (ptr == NULL)
++ die("Memory exhausted");
++ return ptr;
++}
++
+ static int
+ conv2int(const char *s)
+ /* Return the int or -1 on over/under-flow
+@@ -78,19 +90,20 @@
+ }
+
+ static char *
+-read_tab_line ()
++read_tab_line (char *line)
+ /* Read one line and return a pointer to it.
+ Return NULL if no more lines.
+ */
+ {
+ int c;
++ int i = 0;
+
+ if (feof(tab)) return NULL;
+- while ((c = getc(tab)) != EOF && c != '\n')
+- obstack_1grow(&input_o, c);
++ while (i < MAXTABLINE-1 && (c = getc(tab)) != EOF && c != '\n')
++ line[i++] = c;
+ if (ferror(tab)) die_e("Error reading %s", anacrontab);
+- obstack_1grow(&input_o, '\0');
+- return obstack_finish(&input_o);
++ line[i] = 0;
++ return line;
+ }
+
+ static int
+@@ -119,8 +132,8 @@
+
+ var_len = strlen(env_var);
+ val_len = strlen(value);
+- er = obstack_alloc(&tab_o, sizeof(env_rec));
+- er->assign = obstack_alloc(&tab_o, var_len + 1 + val_len + 1);
++ er = (env_rec*)xmalloc(sizeof(env_rec));
++ er->assign = (char*)xmalloc(var_len + 1 + val_len + 1);
+ strcpy(er->assign, env_var);
+ er->assign[var_len] = '=';
+ strcpy(er->assign + var_len + 1, value);
+@@ -151,14 +164,14 @@
+ anacrontab, line_num);
+ return;
+ }
+- jr = obstack_alloc(&tab_o, sizeof(job_rec));
++ jr = (job_rec*)xmalloc(sizeof(job_rec));
+ jr->period = period;
+ jr->delay = delay;
+ jr->tab_line = line_num;
+- jr->ident = obstack_alloc(&tab_o, ident_len + 1);
++ jr->ident = (char*)xmalloc(ident_len + 1);
+ strcpy(jr->ident, ident);
+ jr->arg_num = job_arg_num(ident);
+- jr->command = obstack_alloc(&tab_o, command_len + 1);
++ jr->command = (char*)xmalloc(command_len + 1);
+ strcpy(jr->command, command);
+ jr->job_pid = jr->mailer_pid = 0;
+ if (last_job_rec != NULL) last_job_rec->next = jr;
+@@ -222,7 +235,7 @@
+ read_tab()
+ /* Read the anacrontab file into memory */
+ {
+- char *tab_line;
++ char tab_line[MAXTABLINE];
+
+ first_job_rec = last_job_rec = NULL;
+ first_env_rec = last_env_rec = NULL;
+@@ -231,14 +244,10 @@
+ /* Open the anacrontab file */
+ tab = fopen(anacrontab, "r");
+ if (tab == NULL) die_e("Error opening %s", anacrontab);
+- /* Initialize the obstacks */
+- obstack_init(&input_o);
+- obstack_init(&tab_o);
+- while ((tab_line = read_tab_line()) != NULL)
++ while ((read_tab_line(tab_line)) != NULL)
+ {
+ line_num++;
+ parse_tab_line(tab_line);
+- obstack_free(&input_o, tab_line);
+ }
+ if (fclose(tab)) die_e("Error closing %s", anacrontab);
+ }
+@@ -269,16 +278,17 @@
+
+ j = first_job_rec;
+ njobs = 0;
++ job_array = NULL;
+ while (j != NULL)
+ {
+ if (j->arg_num != -1 && (update_only || consider_job(j)))
+ {
++ job_array = (job_rec**)xrealloc(job_array, (njobs+1)*sizeof(j));
++ job_array[njobs] = j;
+ njobs++;
+- obstack_grow(&tab_o, &j, sizeof(j));
+ }
+ j = j->next;
+ }
+- job_array = obstack_finish(&tab_o);
+
+ /* sort the jobs */
+ qsort(job_array, njobs, sizeof(*job_array),