summaryrefslogtreecommitdiff
path: root/time
diff options
context:
space:
mode:
Diffstat (limited to 'time')
-rw-r--r--time/anacron/DESCR7
-rw-r--r--time/anacron/Makefile63
-rw-r--r--time/anacron/PLIST8
-rw-r--r--time/anacron/distinfo5
-rw-r--r--time/anacron/files/anacron.sh24
-rw-r--r--time/anacron/files/anacrontab.FreeBSD15
-rw-r--r--time/anacron/files/anacrontab.NetBSD15
-rw-r--r--time/anacron/patches/patch-aa163
8 files changed, 300 insertions, 0 deletions
diff --git a/time/anacron/DESCR b/time/anacron/DESCR
new file mode 100644
index 00000000000..d75666aa17d
--- /dev/null
+++ b/time/anacron/DESCR
@@ -0,0 +1,7 @@
+Anacron 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
+do not 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.
diff --git a/time/anacron/Makefile b/time/anacron/Makefile
new file mode 100644
index 00000000000..e3e6ac25944
--- /dev/null
+++ b/time/anacron/Makefile
@@ -0,0 +1,63 @@
+# $NetBSD: Makefile,v 1.1.1.1 2004/04/11 11:33:46 jmmv Exp $
+#
+
+DISTNAME= anacron-2.3
+CATEGORIES= time
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=anacron/}
+
+MAINTAINER= jmmv@NetBSD.org
+HOMEPAGE= http://anacron.sourceforge.net/}
+COMMENT= Periodic command scheduler
+
+USE_BUILDLINK3= yes
+USE_GNU_TOOLS+= make
+USE_PKGINSTALL= yes
+
+.include "../../mk/bsd.prefs.mk"
+
+SUBST_CLASSES+= hdr
+SUBST_MESSAGE.hdr= "Setting up global.h."
+SUBST_STAGE.hdr= pre-configure
+SUBST_FILES.hdr= global.h
+.if ${OPSYS} == "NetBSD"
+SUBST_SED.hdr= -e 's|SENDMAIL ".*"|SENDMAIL "/usr/sbin/sendmail"|'
+.else
+SUBST_SED.hdr= -e 's|SENDMAIL ".*"|SENDMAIL "/usr/lib/sendmail"|'
+.endif
+
+SUBST_CLASSES+= man
+SUBST_MESSAGE.man= "Setting up manpages."
+SUBST_STAGE.man= pre-configure
+SUBST_FILES.man= anacrontab.5 anacron.8
+SUBST_SED.man= -e 's|/etc/anacrontab|${PKG_SYSCONFDIR}/anacrontab|g'
+
+MAKE_FLAGS+= ANACRONTAB='${PKG_SYSCONFDIR}/anacrontab'
+MAKE_FLAGS+= BINDIR='${PREFIX}/sbin'
+MAKE_FLAGS+= CFLAGS='${CFLAGS}'
+MAKE_FLAGS+= INSTALL_DATA='${INSTALL_DATA}'
+MAKE_FLAGS+= INSTALL_DIR='${TRUE}'
+MAKE_FLAGS+= INSTALL_PROGRAM='${INSTALL_PROGRAM}'
+MAKE_FLAGS+= MANDIR='${PREFIX}/man'
+MAKE_FLAGS+= PREFIX='${PREFIX}'
+MAKE_FLAGS+= SHELL='${SH}'
+MAKE_FLAGS+= SPOOLDIR='/var/spool/anacron'
+
+EGDIR= ${PREFIX}/share/examples/anacron
+.if exists(${FILESDIR}/anacrontab.${OPSYS})
+CONF_FILES= ${EGDIR}/anacrontab.${OPSYS} \
+ ${PKG_SYSCONFDIR}/anacrontab
+CONF_FILES_MODE= 0600
+.endif
+
+OWN_DIRS= /var/spool/anacron
+
+RCD_SCRIPTS= anacron
+
+INSTALLATION_DIRS= man/man5 man/man8 sbin
+
+post-install:
+ ${INSTALL_DATA_DIR} ${EGDIR}
+ ${INSTALL_DATA} ${FILESDIR}/anacrontab.FreeBSD ${EGDIR}
+ ${INSTALL_DATA} ${FILESDIR}/anacrontab.NetBSD ${EGDIR}
+
+.include "../../mk/bsd.pkg.mk"
diff --git a/time/anacron/PLIST b/time/anacron/PLIST
new file mode 100644
index 00000000000..27fcde1beef
--- /dev/null
+++ b/time/anacron/PLIST
@@ -0,0 +1,8 @@
+@comment $NetBSD: PLIST,v 1.1.1.1 2004/04/11 11:33:46 jmmv Exp $
+etc/rc.d/anacron
+man/man5/anacrontab.5
+man/man8/anacron.8
+sbin/anacron
+share/examples/anacron/anacrontab.FreeBSD
+share/examples/anacron/anacrontab.NetBSD
+@dirrm share/examples/anacron
diff --git a/time/anacron/distinfo b/time/anacron/distinfo
new file mode 100644
index 00000000000..cab13ab99c1
--- /dev/null
+++ b/time/anacron/distinfo
@@ -0,0 +1,5 @@
+$NetBSD: distinfo,v 1.1.1.1 2004/04/11 11:33:46 jmmv Exp $
+
+SHA1 (anacron-2.3.tar.gz) = d0e154123585e9faf615d67230d82d7d1b4c099a
+Size (anacron-2.3.tar.gz) = 24140 bytes
+SHA1 (patch-aa) = d11218f289d48b6a12ce2a5a59f645a04695214d
diff --git a/time/anacron/files/anacron.sh b/time/anacron/files/anacron.sh
new file mode 100644
index 00000000000..98161305e2b
--- /dev/null
+++ b/time/anacron/files/anacron.sh
@@ -0,0 +1,24 @@
+#! @RCD_SCRIPTS_SHELL@
+#
+# $NetBSD: anacron.sh,v 1.1.1.1 2004/04/11 11:33:46 jmmv Exp $
+#
+# PROVIDE: anacron
+# REQUIRE: LOGIN
+
+if [ -f /etc/rc.subr ]; then
+ . /etc/rc.subr
+fi
+
+name="anacron"
+rcvar=$name
+command="@PREFIX@/sbin/${name}"
+required_files="@PKG_SYSCONFDIR@/anacrontab"
+command_args="-t @PKG_SYSCONFDIR@/anacrontab"
+
+if [ -f /etc/rc.subr ]; then
+ load_rc_config $name
+ run_rc_command "$1"
+else
+ @ECHO@ -n ' ${name}'
+ ${command} ${anacron_flags} ${command_args}
+fi
diff --git a/time/anacron/files/anacrontab.FreeBSD b/time/anacron/files/anacrontab.FreeBSD
new file mode 100644
index 00000000000..68c839e1dc6
--- /dev/null
+++ b/time/anacron/files/anacrontab.FreeBSD
@@ -0,0 +1,15 @@
+# $NetBSD
+#
+# anacrontab - Configuration file for FreeBSD.
+#
+# See anacrontab(5) and anacron(8) for more information.
+#
+
+SHELL=/bin/sh
+PATH=/bin:/sbin:/usr/bin:/usr/sbin
+HOME=/var/log
+
+#days delay id command
+1 5 daily /bin/sh /usr/sbin/periodic daily
+7 15 weekly /bin/sh /usr/sbin/periodic weekly
+30 30 monthly /bin/sh /usr/sbin/periodic monthly
diff --git a/time/anacron/files/anacrontab.NetBSD b/time/anacron/files/anacrontab.NetBSD
new file mode 100644
index 00000000000..c828391f48f
--- /dev/null
+++ b/time/anacron/files/anacrontab.NetBSD
@@ -0,0 +1,15 @@
+# $NetBSD
+#
+# anacrontab - Configuration file for NetBSD.
+#
+# See anacrontab(5) and anacron(8) for more information.
+#
+
+SHELL=/bin/sh
+PATH=/bin:/sbin:/usr/bin:/usr/sbin
+HOME=/var/log
+
+#days delay id command
+1 5 daily /bin/sh /etc/daily 2>&1 | tee /var/log/daily.out | sendmail -t
+7 15 weekly /bin/sh /etc/weekly 2>&1 | tee /var/log/weekly.out | sendmail -t
+30 30 monthly /bin/sh /etc/monthly 2>&1 | tee /var/log/monthly.out | sendmail -t
diff --git a/time/anacron/patches/patch-aa b/time/anacron/patches/patch-aa
new file mode 100644
index 00000000000..b7b771f3847
--- /dev/null
+++ b/time/anacron/patches/patch-aa
@@ -0,0 +1,163 @@
+$NetBSD: patch-aa,v 1.1.1.1 2004/04/11 11:33:46 jmmv Exp $
+
+--- readtab.c.orig 2000-06-23 00:13:12.000000000 +0200
++++ readtab.c
+@@ -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),