rpms/anacron/devel anacron_2.3-13.patch,NONE,1.1
Marcela Mašláňová (mmaslano)
fedora-extras-commits at redhat.com
Thu Aug 9 13:27:24 UTC 2007
Author: mmaslano
Update of /cvs/pkgs/rpms/anacron/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20544
Added Files:
anacron_2.3-13.patch
Log Message:
Add patch
anacron_2.3-13.patch:
--- NEW FILE anacron_2.3-13.patch ---
--- anacron-2.3.orig/ChangeLog
+++ anacron-2.3/ChangeLog
@@ -1,3 +1,8 @@
+ Changes in Anacron 2.3.1
+ ------------------------
+* documentation no longer suggests adding local directories to the PATH
+
+
Changes in Anacron 2.3
----------------------
* anacron can now read an arbitrary anacrontab file, use the -t option
--- anacron-2.3.orig/README
+++ anacron-2.3/README
@@ -40,7 +40,7 @@
off for the night or for the weekend, these scripts rarely get run.
Anacron solves this problem. These jobs can simply be scheduled as
-Anacron-jobs with periods of 1, 7 and 30 days.
+Anacron-jobs with periods of 1, 7 and a special target called @monthly.
What Anacron is not ?
@@ -109,11 +109,11 @@
-----Cut
# /etc/anacrontab example
SHELL=/bin/sh
-PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
# format: period delay job-identifier command
1 5 cron.daily run-parts /etc/cron.daily
7 10 cron.weekly run-parts /etc/cron.weekly
-30 15 cron.monthly run-parts /etc/cron.monthly
+ at monthly 15 cron.monthly run-parts /etc/cron.monthly
-----Cut
5. Put the command "anacron -s" somewhere in your boot-scripts.
--- anacron-2.3.orig/TODO
+++ anacron-2.3/TODO
@@ -1,6 +1,3 @@
-anacron runs jobs twice in a 31 day month
-add hostname to emails sent to admin
-allow user anacrontabs
make manpages match #defines automagically --> sed fu
full ANSI / POSIX compliance
code cleaning
--- anacron-2.3.orig/anacron.8
+++ anacron-2.3/anacron.8
@@ -1,13 +1,15 @@
-.TH ANACRON 8 2000-06-22 "Sean 'Shaleh' Perry" "Anacron Users' Manual"
+.TH ANACRON 8 2004-07-11 "Pascal Hakim" "Anacron Users' Manual"
.SH NAME
anacron \- runs commands periodically
.SH SYNOPSIS
.B anacron \fR[\fB-s\fR] [\fB-f\fR] [\fB-n\fR] [\fB-d\fR] [\fB-q\fR]
-[\fB-t anacrontab\fR] [\fIjob\fR] ...
+[\fB-t anacrontab\fR] [\fB-S spooldir\fR] [\fIjob\fR] ...
.br
-.B anacron -u [\fB-t anacrontab\fR] \fR[\fIjob\fR] ...
+.B anacron [\fB-S spooldir\fR] -u [\fB-t anacrontab\fR] \fR[\fIjob\fR] ...
.br
.B anacron \fR[\fB-V\fR|\fB-h\fR]
+.br
+.B anacron -T [\fB-t anacrontab\fR]
.SH DESCRIPTION
Anacron
can be used to execute commands periodically, with a
@@ -58,7 +60,10 @@
completely independent.
.PP
If a job generates any output on its standard output or standard error,
-the output is mailed to the user running Anacron (usually root).
+the output is mailed to the user running Anacron (usually root), or to
+the address contained by the MAILTO environment variable in the crontab, if such
+exists. If the LOGNAME environment variable is set, it will be used as From:
+field.
.PP
Informative messages about what Anacron is doing are sent to \fBsyslogd(8)\fR
under facility \fBcron\fR, priority \fBnotice\fR. Error messages are sent at
@@ -98,6 +103,15 @@
.B -t anacrontab
Use specified anacrontab, rather than the default
.TP
+.B -T
+Anacrontab testing. The configuration file will be tested for validity. If
+there is an error in the file, an error will be shown and anacron will
+return 1. Valid anacrontabs will return 0.
+.TP
+.B -S spooldir
+Use the specified spooldir to store timestamps in. This option is required for
+users who wish to run anacron themselves.
+.TP
.B -V
Print version information, and exit.
.TP
@@ -115,6 +129,8 @@
file. See
.B tzset(3)
for more information.
+
+Timestamp files are created in the spool directory for each job in anacrontab. These are never removed automatically by anacron, and should be removed by hand if a job is no longer being scheduled.
.SH FILES
.TP
.I /etc/anacrontab
@@ -144,4 +160,7 @@
The current implementation is a complete rewrite by Itai Tzur
<itzur at actcom.co.il>.
.PP
-The code base is currently maintained by Sean 'Shaleh' Perry <shaleh@(debian.org|valinux.com)>.
+The code base was maintained by Sean 'Shaleh' Perry <shaleh@(debian.org|valinux.com)>.
+.PP
+Since 2004, it is maintained by Pascal Hakim <pasc@(debian.org|redellipse.net)>.
+
--- anacron-2.3.orig/anacron.apm
+++ anacron-2.3/anacron.apm
@@ -0,0 +1,19 @@
+#! /bin/sh
+
+# This script makes anacron jobs start to run when the machine is
+# plugged into AC power, or woken up. For a laptop, these are the
+# closest parallels to turning on a desktop.
+
+# The /etc/init.d/anacron script now normally tries to avoid running
+# anacron unless on AC power, so as to avoid running down the battery.
+# (Things like the slocate updatedb cause a lot of IO.) Rather than
+# trying to second-guess which events reflect having or not having
+# power, we just try to run anacron every time and let it abort if
+# there's no AC. You'll see a message on the cron syslog facility
+# (typically /var/log/cron) if it does run.
+
+case "$1,$2" in
+change,power|resume,*)
+ /etc/init.d/anacron start >/dev/null
+ ;;
+esac
--- anacron-2.3.orig/anacrontab.5
+++ anacron-2.3/anacrontab.5
@@ -1,4 +1,4 @@
-.TH ANACRONTAB 5 1998-02-02 "Itai Tzur" "Anacron Users' Manual"
+.TH ANACRONTAB 5 2004-07-11 "Pascal Hakim" "Anacron Users' Manual"
.SH NAME
/etc/anacrontab \- configuration file for anacron
.SH DESCRIPTION
@@ -8,10 +8,13 @@
three kinds: job-description lines, environment
assignments, or empty lines.
.PP
-Job-description lines are of the form:
+Job-description lines are of one of these two forms:
.PP
period delay job-identifier command
.PP
+.PP
+ @period_name delay job-identify command
+.PP
The
.I period
is specified in days, the
@@ -22,7 +25,12 @@
the job in Anacron messages,
and as the name for the job's timestamp file. The
.I command
-can be any shell command.
+can be any shell command. The fields can be seperated by blank spaces or tabs.
+The
+.I period_name
+can only be set to monthly at the present time. This will ensure jobs
+are only run once a month, no matter the number of days in this month,
+or the previous month.
.PP
Environment assignment lines are of the form:
.PP
@@ -38,6 +46,8 @@
.PP
Empty lines are either blank lines, line containing white-space only, or
lines with white-space followed by a '#' followed by an arbitrary comment.
+.PP
+You can continue a line onto the next line by ending it with a '\'.
.SH "SEE ALSO"
.B anacron(8)
.PP
@@ -46,3 +56,5 @@
file.
.SH AUTHOR
Itai Tzur <itzur at actcom.co.il>
+.PP
+Currently maintained by Pascal Hakim <pasc@(debian.org|redellipse.net)>.
--- anacron-2.3.orig/debian/0anacron.daily
+++ anacron-2.3/debian/0anacron.daily
@@ -0,0 +1,12 @@
+#!/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.
+
+test -x /usr/sbin/anacron || exit 0
+anacron -u cron.daily
--- anacron-2.3.orig/debian/0anacron.monthly
+++ anacron-2.3/debian/0anacron.monthly
@@ -0,0 +1,12 @@
+#!/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.
+
+test -x /usr/sbin/anacron || exit 0
+anacron -u cron.monthly
--- anacron-2.3.orig/debian/0anacron.weekly
+++ anacron-2.3/debian/0anacron.weekly
@@ -0,0 +1,12 @@
+#!/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.
+
+test -x /usr/sbin/anacron || exit 0
+anacron -u cron.weekly
--- anacron-2.3.orig/debian/compat
+++ anacron-2.3/debian/compat
@@ -0,0 +1 @@
+4
--- anacron-2.3.orig/debian/anacrontab
+++ anacron-2.3/debian/anacrontab
@@ -0,0 +1,12 @@
+# /etc/anacrontab: configuration file for anacron
+
+# See anacron(8) and anacrontab(5) for details.
+
+SHELL=/bin/sh
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+# These replace cron's entries
+1 5 cron.daily nice run-parts --report /etc/cron.daily
+7 10 cron.weekly nice run-parts --report /etc/cron.weekly
+ at monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly
+
--- anacron-2.3.orig/debian/apm.d
+++ anacron-2.3/debian/apm.d
@@ -0,0 +1,19 @@
+#! /bin/sh
+
+# This script makes anacron jobs start to run when the machine is
+# plugged into AC power, or woken up. For a laptop, these are the
+# closest parallels to turning on a desktop.
+
+# The /etc/init.d/anacron script now normally tries to avoid running
+# anacron unless on AC power, so as to avoid running down the battery.
+# (Things like the slocate updatedb cause a lot of IO.) Rather than
+# trying to second-guess which events reflect having or not having
+# power, we just try to run anacron every time and let it abort if
+# there's no AC. You'll see a message on the cron syslog facility
+# (typically /var/log/cron) if it does run.
+
+case "$1,$2" in
+change,power|resume,*)
+ /usr/sbin/invoke-rc.d anacron start >/dev/null
+ ;;
+esac
--- anacron-2.3.orig/debian/init.d
+++ anacron-2.3/debian/init.d
@@ -0,0 +1,48 @@
+#! /bin/sh
+# /etc/init.d/anacron: start anacron
+#
+
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
+
+test -x /usr/sbin/anacron || exit 0
+
+. /lib/lsb/init-functions
+
+case "$1" in
+ start)
+ log_daemon_msg "Starting anac(h)ronistic cron" "anacron"
+ if test -x /usr/bin/on_ac_power
+ then
+ /usr/bin/on_ac_power >/dev/null
+ if test $? -eq 1
+ then
+ log_progress_msg "deferred while on battery power."
+ log_end_msg 0
+ exit 0
+ fi
+ fi
+
+ # on_ac_power doesn't exist, on_ac_power returns 0 (ac power being used)
+ # or on_ac_power returns 255 (undefined, desktop machine without APM)
+ start-stop-daemon --start --exec /usr/sbin/anacron -- -s
+ log_end_msg 0
+ ;;
+ restart|force-reload)
+ # nothing to do
+ :
+ ;;
+ stop)
+ log_daemon_msg "Stopping anac(h)ronistic cron" "anacron"
+ start-stop-daemon --stop --exec /usr/sbin/anacron --oknodo --quiet
+ log_end_msg 0
+ ;;
+ status)
+ exit 4
+ ;;
+ *)
+ echo "Usage: /etc/init.d/anacron {start|stop}"
+ exit 2
+ ;;
+esac
+
+exit 0
--- anacron-2.3.orig/debian/control
+++ anacron-2.3/debian/control
@@ -0,0 +1,27 @@
+Source: anacron
+Section: admin
+Priority: optional
+Build-Depends: debhelper (>= 4.0)
+Maintainer: Pascal Hakim <pasc at debian.org>
+Standards-Version: 3.7.2
+
+Package: anacron
+Architecture: any
+Depends: ${shlibs:Depends}, debianutils (>= 1.7), ${misc:Depends}, lsb-base (>= 3.0-10)
+Replaces: pe
+Recommends: cron (>= 3.0pl1-43), exim4 | mail-transport-agent, sysklogd | system-log-daemon
+Suggests: powermgmt-base
+Description: cron-like program that doesn't go by time
+ 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 Debian
+ 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 Debian packages
+ are executed each day.
--- anacron-2.3.orig/debian/copyright
+++ anacron-2.3/debian/copyright
@@ -0,0 +1,26 @@
+
+This is the Debian Linux prepackaged version of the anacron utility.
+
+ Anacron - run commands periodically
+ Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>
+ Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License along
+ with this program; if not, write to the Free Software Foundation, Inc., 51
+ Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
+
+
+anacron can be found on http://www.sourceforge.net.
+
+On Debian Linux systems, the complete text of the GNU General
+Public License can be found in `/usr/share/common-licenses/GPL'.
--- anacron-2.3.orig/debian/cron.d
+++ anacron-2.3/debian/cron.d
@@ -0,0 +1,6 @@
+# /etc/cron.d/anacron: crontab entries for the anacron package
+
+SHELL=/bin/sh
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+30 7 * * * root test -x /etc/init.d/anacron && /usr/sbin/invoke-rc.d anacron start >/dev/null
--- anacron-2.3.orig/debian/dirs
+++ anacron-2.3/debian/dirs
@@ -0,0 +1,11 @@
+etc/cron.d
+etc/init.d
+etc/cron.daily
+etc/cron.weekly
+etc/cron.monthly
+etc/apm/event.d
+usr/sbin
+usr/share/doc/anacron
+usr/share/man/man5
+usr/share/man/man8
+var/spool/anacron
--- anacron-2.3.orig/debian/docs
+++ anacron-2.3/debian/docs
@@ -0,0 +1 @@
+README TODO
--- anacron-2.3.orig/debian/rules
+++ anacron-2.3/debian/rules
@@ -0,0 +1,69 @@
+#!/usr/bin/make -f
+# Made with the aid of dh_make, by Craig Small
+# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess.
+# Some lines taken from debmake, by Cristoph Lameter.
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+build: build-stamp
+build-stamp:
+ dh_testdir
+
+ $(MAKE)
+
+ touch build-stamp
+
+clean:
+ dh_testdir
+ dh_testroot
+ rm -f build-stamp install-stamp
+
+ -$(MAKE) clean
+
+ dh_clean
+
+install: install-stamp
+install-stamp: build-stamp
+ dh_testdir
+ dh_testroot
+ dh_clean -k
+ dh_installdirs
+
+ $(MAKE) install PREFIX=debian/anacron MANDIR=debian/anacron/usr/share/man
+ install -m 644 debian/anacrontab debian/anacron/etc/
+ install debian/0anacron.daily debian/anacron/etc/cron.daily/0anacron
+ install debian/0anacron.weekly debian/anacron/etc/cron.weekly/0anacron
+ install debian/0anacron.monthly debian/anacron/etc/cron.monthly/0anacron
+ install -m 755 debian/apm.d debian/anacron/etc/apm/event.d/anacron
+
+ touch install-stamp
+
+# Build architecture-independent files here.
+binary-indep: build install
+# We have nothing to do
+
+# Build architecture-dependent files here.
+binary-arch: build install
+ dh_testdir
+ dh_testroot
+ dh_installdocs
+ dh_installinit -u"start 89 2 3 4 5 . stop 11 0 1 6 ."
+ dh_installcron
+ dh_installman
+ dh_installchangelogs ChangeLog
+ #dh_installdebconf
+ dh_strip
+ dh_compress
+ dh_fixperms
+ dh_installdeb
+ dh_shlibdeps
+ dh_gencontrol
+ dh_md5sums
+ dh_builddeb
+
+source diff:
+ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false
+
+binary: binary-indep binary-arch
+.PHONY: build clean binary-indep binary-arch binary
--- anacron-2.3.orig/debian/anacron.postinst
+++ anacron-2.3/debian/anacron.postinst
@@ -0,0 +1,18 @@
+#!/bin/sh
+
+case "$1" in
+ configure)
+ # continue below
+ ;;
+
+ abort-upgrade|abort-remove|abort-deconfigure)
+ exit 0
+ ;;
+
+ *)
+ echo "postinst called with unknown argument \`$1'" >&2
+ exit 0
+ ;;
+esac
+
+#DEBHELPER#
--- anacron-2.3.orig/debian/changelog
+++ anacron-2.3/debian/changelog
@@ -0,0 +1,471 @@
+anacron (2.3-13) unstable; urgency=medium
+
+ * Remove debconf remnant
+ (Closes: #392253)
+
+ -- Pascal Hakim <pasc at debian.org> Sat, 14 Oct 2006 18:47:00 +1000
+
+anacron (2.3-12) unstable; urgency=medium
+
+ * Removed debconf note as it's really not needed anymore. Thanks to all the
+ people who did translations.
+ - Removed un-needed debconf note
+ (Closes: #388703)
+ - Arabic (Ossama M. Khayat <okhayat at yahoo.com>)
+ (Closes: #320761)
+ - Danish (Claus Hindsgaul <claus.hindsgaul at gmail.com>)
+ - Dutch (Frans Pop <aragorn at tiscali.nl>)
+ (Closes: #374267)
+ - German (Erik Schanze <schanzi_ at gmx.de>)
+ - Italian (Luca Monducci <luca.mo at tiscali.it>)
+ (Closes: #375411)
+ - Portuguese (Miguel Figueiredo <elmig at debianpt.org>)
+ (Closes: #336839)
+ - Russian (Yuriy Talakan <yt at amur.elektra.ru>)
+ (Closes: #310069)
+ - Spanish (Lucas Wall <lwall at debian.org>)
+ (Closes: #374312)
+ - Swedish (Daniel Nylander <yeager at lidkoping.net>)
+ (Closes: #331300)
+ - Vietnamese (Clytie Siddall <clytie at riverland.net.au>)
+ (Closes: #307740)
+ * Fixed description to not have a leading particle
+ (Closes: #320303)
+ * Start anacron properly on bootup using start-stop-daemon to ensure
+ automated installers work properly
+ (Closes: #310797)
+ * Clarified README.Debian to make more sense and match what's going on
+ (Closes: #307114)
+ * Added alternate dependency on debconf-2.0
+ (as per <20050802224620.GB12557 at kitenet.net>)
+ (Closes: #331739)
+ * Changed default path to the default cron one to reduce confusion
+ (Closes: #304327)
+ * Bumped up the debhelper compability version to 4
+ * Bumped standards version to 3.7.2
+ * Cleaned up debian/
+ * Added { and } to the Usage line to make bash competition work
+ (Closes: #350603)
+ * Added a note about timestamp files in the spool directory in the man
+ page.
+ (Closes: #305424)
+ * Fixed substition in debconf template, and make escape it properly
+ (Closes: #366850)
+ * Test whether anacron is executable, not just present
+ (Closes: #378380)
+ * Make anacron have an lsb-compliant init.d script
+ (Closes: #384689)
+
+ -- Pascal Hakim <pasc at debian.org> Mon, 09 Oct 2006 18:47:00 +1000
+
+anacron (2.3-11) unstable; urgency=low
+
+ * Added @yearly target in anacrontab.
+ (Closes: #258617)
+ * Let an anacrontabs be multiline
+ (Closes: #215684)
+ * Remove dependency on an MTA (it's a recommend instead)
+ (Closes: #252633)
+ * Remove dependency on syslog (recommend as well)
+ (Closes: #252633)
+ * Fix the kill sysvinit invocations
+ (Closes: #289547)
+
+ -- Pascal Hakim <pasc at debian.org> Wed, 9 Feb 2005 08:08:00 +1100
+
+anacron (2.3-10) unstable; urgency=low
+
+ * Changed current maintainer in documentation
+ (Closes: #256590)
+ * Added precisions to @monthly usage in anacrontab (5).
+ (Closes: #256590)
+ * Fixed a printf segfault when DEBUG mode is enabled
+ (Thanks to Martin Quinson <mquinson at ens-lyon.fr>)
+ (Closes: #257669)
+ * Added two variables to change the ability to change the
+ destination and source emails for anacron emails
+ (Thanks to Martin Quinson <mquinson at ens-lyon.fr>)
+ (Closes: #223337)
+ * Translations:
+ + Updated German (Erik Schanze <schanzi_usenet at gmx.de>)
+ (Closes: #250293)
+ + Added Brazilian Portuguese (Andre Luis Lopes <andrelop at debian.org>)
+ (Closes: #254107)
+ + Added Spanish (Lucas Wall <kthulhu at kadath.com.ar>)
+ (Closes: #254559)
+ + Addedd Czech (Jan Outrata <outrataj at upcase.inf.upol.cz>)
+
+ -- Pascal Hakim <pasc at debian.org> Sun, 11 Jul 2004 04:52:00 +1000
+
+anacron (2.3-9) unstable; urgency=low
+
+ * Fixed priority
+ * Added translations
+ + Danish from Claus Hindsgaul <claus_h at image.dk>
+ (Closes: #242814)
+ + Japanese from Hideki Yamane <henrich at samba.gr.jp>
+ (Closes: #243268)
+ + Italian from Luca Monducci <luca.mo at tiscali.it>
+ (Closes: #249072)
+ + German from Erik Schanze <schanzi_usenet at gmx.de>
+ (Closes: #250293)
+ + Dutch from Luk Claes <luk.claes at ugent.be>
+ (Closes: #250657)
+ * Added an option to check the validity of the config file.
+ (Closes: #248692)
+ * Make the -t option work with non-absolute path names.
+ * Added an extra anacrontab entry (@monthly) which can be used to
+ schedule a job to run once a month.
+ (Closes: #35754, #43947)
+ * Add the ability for normal users to run anacron by specifying a
+ spool directory.
+ (Closes: #65853)
+
+ -- Pascal Hakim <pasc at debian.org> Mon, 31 May 2004 23:30:00 +1000
+
+anacron (2.3-8) unstable; urgency=low
+
+ * New maintainer. A side effect of this will be to fix the email alias.
+ (Closes: #215685)
+ * Updated to standard versions 3.6.1.0
+ + Rebuild fixes /usr/share/doc symlink
+ (Closes: #224559)
+ * Fixed FTBFS bug.
+ (Closes: #240043)
+ * Added powermgmt-base to Suggests.
+ (Closes: #137435, #140912)
+ * Fixed up README.Debian to remove a missing example. That example is now
+ included by default, as anacron will check the power status.
+ (Closes: #181034)
+ * Added debconf-isation.
+ (Patch from Martin Quinson <Martin.Quinson at ens-lyon.fr>)
+ (closes: #134017)
+ * Fixed grammar mistake.
+ (Patch from Julian Gilbey <jdg at debian.org>)
+ (Closes: #184649)
+ * Use invoke-rc.d instead of calling the init.d script directly
+ (Closes: #187544)
+ * Clarified documentation in respect to tabs and spaces in anacrontab(5).
+ (Closes: #214314)
+ * Include hostname in mail subject
+ (Patch from Martin Quinson <Martin.Quinson at ens-lyon.fr>)
+ (Closes: #63543, #45149)
+ * Make the From field in mails RFC2822-compliant
+ (Patch from Santiago Villa <sanvila at unex.es>)
+ (Closes: #163083)
+ * Update depency on exim to exim4, which is the new standard mailer
+ (Closes: #228571)
+ * Make "/etc/init.d/anacron stop" try to stop anacron
+ (Closes: #97969)
+
+ -- Pascal Hakim <pasc at debian.org> Thu, 01 Apr 2004 21:30:00 +1000
+
+anacron (2.3-7) unstable; urgency=high
+
+ * forgive the delay all, life has been hectic
+ * urgency is high because anacron no longer works if on_ac_power is missing.
+ This was caused by the reshuffled of on_ac_power into powermgmt-base which
+ I did not believe was going into Woody.
+ * fixed the init.d script so it works if on_ac_power is not installed,
+ Closes: #140911 (and a few more via merge)
+ * postrm deletes /var/spool/anacron, Closes: #102638
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Tue, 11 Jun 2002 08:20:46 -0700
+
+anacron (2.3-6) unstable; urgency=low
+
+ * update Standards version
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Thu, 29 Mar 2001 17:33:32 -0800
+
+anacron (2.3-5) unstable; urgency=low
+
+ * Duh, left off half the patch, Closes: #83334
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Sun, 4 Feb 2001 10:35:01 -0800
+
+anacron (2.3-4) unstable; urgency=low
+
+ * Added apm event
+ * init.d script now checks whether machine is on battery power (via APM)
+ before starting. This saves jobs like slocate from running when you start
+ your laptop on a place. Code used submitted by Martin Pool.
+ Closes: #83334
+ * now that I ship an apm event, I removed the example
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Thu, 25 Jan 2001 10:05:23 -0800
+
+anacron (2.3-3) unstable; urgency=low
+
+ * Removed local dirs from default anacrontab
+ * Changed to depeds from syslog to syslog | system-log-daemon
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Wed, 18 Oct 2000 07:41:27 -0700
+
+anacron (2.3-2) unstable; urgency=low
+
+ * Oops, forgot a '.'
+ * Closes: #66161
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Sat, 24 Jun 2000 11:45:15 -0700
+
+anacron (2.3-1) unstable; urgency=low
+
+ * New release
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Thu, 22 Jun 2000 16:02:42 -0700
+
+anacron (2.2-2) unstable; urgency=low
+
+ * Fixed clock skew check
+ * anacron is now on sourceforge.net
+ * anacron installs init at S89, not S20 as before. This is to match cron.
+ * Closes: #63146, #65785, #65923
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Thu, 22 Jun 2000 14:18:41 -0700
+
+anacron (2.2-1) unstable; urgency=low
+
+ * maintainer upload
+ * Closes: #57286, #65436, #61417, #64599
+ * Torsten, thanks, you caught me the one time I was away from my desk (-:
+
+ -- Sean 'Shaleh' Perry <shaleh at debian.org> Tue, 13 Jun 2000 13:19:12 -0700
+
+anacron (2.1-5.1) frozen unstable; urgency=low
+
+ * Non maintainer upload. Shaleh, please forgive me, but this is a
+ really small change and I would really hate to see reports that
+ the installation does not work because of broken task packages...
+ * [RC] Name exim as solution for mail-transport-agent in Depends line.
+ Otherwise tasksel will break on the task-dialup package (closes: #64599).
+ * I'm dumb - uploaded to unstable only *sigh*
+
+ -- Torsten Landschoff <torsten at debian.org> Thu, 25 May 2000 20:08:37 +0200
+
+anacron (2.1-5) unstable; urgency=low
+
+ * updates for recent policy
+ * Closes: #50255
+
+ -- Sean E. Perry <shaleh at debian.org> Thu, 21 Nov 1999 22:17:33 -0800
+
+anacron (2.1-4) unstable; urgency=low
+
+ * Closes: #45954
+
+ -- Sean E. Perry <shaleh at debian.org> Wed, 29 Sep 1999 11:20:12 -0700
+
+anacron (2.1-3) unstable; urgency=low
+
+ * Real FHS compliance
+ * Closes: #33828, #34851, #39841, #43047, #44083, #44889
+
+ -- Sean E. Perry <shaleh at debian.org> Mon, 20 Sep 1999 15:28:37 -0700
+
+anacron (2.1-2) unstable; urgency=low
+
+ * Upload for fhs compliance
+
+ -- Sean E. Perry <shaleh at debian.org> Tue, 7 Sep 1999 14:26:00 -0700
+
+anacron (2.1-1) unstable; urgency=low
+
+ * New release
+
+ -- Sean E. Perry <shaleh at debian.org> Thu, 12 Aug 1999 12:23:37 -0700
+
+anacron (2.0.1-5) unstable; urgency=low
+
+ * D'uh, closes #37344, learn to type Sean (-:
+
+ -- Sean E. Perry <shaleh at debian.org> Sun, 9 May 1999 00:21:22 -0400
+
+anacron (2.0.1-4) unstable; urgency=low
+
+ * check for anacron's existence in conffiles
+ * clean up in rules file
+
+ -- Sean E. Perry <shaleh at debian.org> Thu, 6 May 1999 23:19:45 -0400
+
+anacron (2.0.1-3) unstable; urgency=low
+
+ * New maintainer (finally)
+ * begin clean mode
+ * removed rc?.d/K20anacron scripts, they were useless
+ * switched to debhelper
+ * closes: 23258
+ * closes: 24555
+ * closes: 26612
+ * closes: 32852
+
+ -- Sean E. Perry <shaleh at debian.org> Thu, 25 Mar 1999 12:56:02 -0500
+
+anacron (2.0.1-2) frozen unstable; urgency=low
+
+ * Orphaned package
+ * Incorporated changes from last NMR (fixes:bug#21598)
+
+ -- Christian Schwarz <schwarz at debian.org> Thu, 14 May 1998 22:49:30 +0200
+
+anacron (2.0.1-1.1) frozen unstable; urgency=low
+
+ * NMR to correct problems with build not using gcc and trying to install
+ files somewhere other than debian/tmp and not using dpkg-shlibdeps to
+ make sure debian/substvars (which wasn't being deleted during clean) was
+ correct (fixes:bug#21598)
+
+ -- Michael Alan Dorman <mdorman at debian.org> Sun, 10 May 1998 11:03:33 +0500
+
+anacron (2.0.1-1) frozen unstable; urgency=low
+
+ * New upstream release (contains only bug fixes; fixes:bug#19557)
+
+ * Recommend "cron (>= 3.0pl1-43)" which does not include the obsolete
+ cronanacron script anymore
+
+ * Install manual pages with correct file permissions
+ (detected by Lintian)
+
+ -- Christian Schwarz <schwarz at debian.org> Sat, 21 Mar 1998 11:03:33 +0100
+
+anacron (2.0-3) unstable; urgency=low
+
+ * Fixed typo in Description (fixes:bug#18875)
+
+ -- Christian Schwarz <schwarz at debian.org> Fri, 6 Mar 1998 21:15:48 +0100
+
+anacron (2.0-2) unstable; urgency=low
+
+ * Added "Depends: smail | sendmail | mail-transport-agent"
+ * Don't tag /etc/cron.d/anacron executable (fixes bug #18307)
+
+ -- Christian Schwarz <schwarz at debian.org> Tue, 17 Feb 1998 22:49:35 +0100
+
+anacron (2.0-1) unstable; urgency=low
+
+ * New upstream maintainer
+ (Thanks to Itai Tzur <itzur at actcom.co.il> for taking over
+ upstream maintenance!)
+
+ * New upstream version:
+ - anacron has been completely rewritten in C (no perl anymore)
+ - uses flock to lock its lock files (this fixes bug #17550)
+ - uses syslog for logging messages
+
+ * Register cron job via /etc/cron.d
+ * Updated /etc/cron.*/0anacron* scripts to use `anacron -u'
+ * Modified postinst script to check for existing anacron jobs in
+ /etc/crontab
+ * Changed "Suggests: cron" into "Recommends: cron (>= 3.0pl1-42)"
+
+ * Added dependency on sysklogd
+ * Removed cron.weekly script to rotate log files
+
+ * Added new (dummy) options to etc/init.d/anacron: restart, force-reload
+ (reported by Lintian)
+
+ * Removed buggy prerm script
+
+ * Updated FSF's address (reported by Lintian)
+ * Updated package description
+ * Added README.Debian to explain Debian specific setup
+
+ * Built package with fakeroot
+ * Upgraded package to Standards-Version 2.4.0.0
+
+ -- Christian Schwarz <schwarz at debian.org> Mon, 16 Feb 1998 17:19:38 +0100
+
+anacron (1.0.7) unstable; urgency=low
+
+ * debian/rules: Don't use debstd anymore
+ * debian/rules: Compress changelog file (fixes:#15442)
+ * debian/control: Upgraded to Standards Version 2.3.0.1
+ * debian/control: Removed perl dependency (perl-base is tagged
+ `Essential')
+
+ -- Christian Schwarz <schwarz at debian.org> Wed, 24 Dec 1997 13:10:52 +0100
+
+anacron (1.0.6) unstable; urgency=low
+
+ * Handle arguments for postinst (fixes #12572)
+ * Upgraded to Standards Version 2.3.0.0
+ * Document two more feature requests in the TODO file
+
+ -- Christian Schwarz <schwarz at debian.org> Fri, 12 Sep 1997 02:26:17 +0200
+
+anacron (1.0.5) unstable; urgency=low
+
+ * Use little help program to run jobs: this program removes the lockfile
+ even when the job is killed (fixes bug#12060).
+ * Package is now arch-dependent.
+ * postrm: remove log files when purged (fixes bug#12038).
+ * prerm: remove spool files when purged.
+ * Specify /etc/cron.*/*, /etc/init.d/anacron scripts as conffiles.
+ * New file TODO which documents all feature requests: currently bug#11085.
+ * Use debstd in debian/rules .
+
+ -- Christian Schwarz <schwarz at debian.org> Mon, 18 Aug 1997 19:31:40 +0200
+
+anacron (1.0.4) unstable; urgency=low
+
+ * Anacron is preconfigured to run the daily/weekly/monthly jobs now.
+ * Updated description to tell the user about this.
+ * Added "Suggests: cron".
+ * Changed behaviour of /etc/init.d/anacron script: Just run anacron if
+ it's later then 7:30am.
+ * Added scripts to /etc/cron.{daily,weekly,monthly} to update anacron's
+ time stamps (necessary if the scripts are run by cron).
+ * Added check and message to postinst script to tell the user about
+ adding a cron entry for anacron.
+ * Updated README file to describe new setup.
+ * Moved anacron script to /usr/sbin.
+ * Upgraded to Standards-Version 2.2.0.0.
+
+ -- Christian Schwarz <schwarz at debian.org> Sat, 2 Aug 1997 19:18:53 +0200
+
+anacron (1.0.3) unstable; urgency=low
+
+ * Fixed date calculation (thanks to Itai Tzur for the patch!)
+ * Upgraded to Standards-Version 2.1.3.3.
+
+ -- Christian Schwarz <schwarz at debian.org> Wed, 2 Jul 1997 17:48:43 +0200
+
+anacron (1.0.2-1) unstable; urgency=low
+
+ * New upstream source: improved README (fixes bug #5933).
+ * Changed console message in /etc/init.d to apply to new standard.
+ * Upgraded to Standards-Version 2.1.2.2.
+ * Removed buggy check for `pe' in postinst.
+ * Added `Replaces: pe' to control file.
+
+ -- Christian Schwarz <schwarz at debian.org> Thu, 9 Jan 1997 17:16:36 +0100
+
+anacron (1.0.1-3) unstable; urgency=low
+
+ * Changed priority from standard to extra.
+
+ -- Christian Schwarz <schwarz at debian.org> Tue, 5 Nov 1996 22:30:37 +0100
+
+anacron (1.0.1-2) unstable; urgency=low
+
+ * Upgraded to Standards-Version 2.1.1.0.
+
+ -- Christian Schwarz <schwarz at debian.org> Sat, 2 Nov 1996 20:31:12 +0100
+
+anacron (1.0.1-1) unstable; urgency=low
+
+ * Upgraded to Standards-Version 2.1.0.0.
+ * Fixed problem when anacron was called multiple times.
+ * Changed distribution from experimental to unstable.
+
+ -- Christian Schwarz <schwarz at debian.org> Wed, 18 Sep 1996 20:00:40 +0200
+
+anacron (1.0-1) experimental; urgency=low
+
+ * First Debian release.
+ * Changed program name from `pe' to `anacron'.
+ * Rewrote program and docs.
+
+ -- Christian Schwarz <schwarz at monet.m.isar.de> Fri, 23 Aug 1996 22:32:33 +0200
+
--- anacron-2.3.orig/debian/anacron.postrm
+++ anacron-2.3/debian/anacron.postrm
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+set -e
+
+if [ "$1" = "purge" ]; then
+# here for historical reasons
+ rm -f /var/log/anacron /var/log/anacron.[0-9]*
+ rm -rf /var/spool/anacron
+fi
+
+#DEBHELPER#
--- anacron-2.3.orig/debian/README.debian
+++ anacron-2.3/debian/README.debian
@@ -0,0 +1,13 @@
+anacron for DEBIAN
+----------------------
+
+Anacron runs transparently to the system. In other words, you should never be
+aware that anacron and not cron is actually running cron.{daily,weekly,monthly}.
+
+Anacron itself however is not a daemon, so it will either be called at startup,
+on APM power status change, or by cron. Disabling those will result in some
+jobs not being executed on time.
+
+Anacron leaves messages in /var/log/syslog and /var/log/messages by default.
+
+-- Pascal hakim <pasc at debian.org>, Tue, 02 Aug 2005 20:27:00 +1100
--- anacron-2.3.orig/global.h
+++ anacron-2.3/global.h
@@ -2,6 +2,7 @@
Anacron - run commands periodically
Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>
Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>
+ Copyright (C) 2004 Pascal Hakim <pasc at redellipse.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -53,9 +54,11 @@
struct job_rec1 {
int period;
+ int named_period;
int delay;
char *ident;
char *command;
+ char *mailto;
int tab_line;
int arg_num;
@@ -75,9 +78,10 @@
extern pid_t primary_pid;
extern char *program_name;
extern char *anacrontab;
+extern char *spooldir;
extern int old_umask;
extern sigset_t old_sigmask;
-extern int serialize,force,update_only,now,no_daemon,quiet;
+extern int serialize,force,update_only,now,no_daemon,quiet,testing_only;
extern int day_now;
extern int year,month,day_of_month;
extern int in_background;
@@ -93,6 +97,7 @@
extern int running_jobs,running_mailers;
+extern int complaints;
/* Function prototypes */
@@ -121,7 +126,7 @@
#endif /* not DEBUG */
/* readtab.c */
-void read_tab();
+void read_tab(int cwd);
void arrange_jobs();
/* lock.c */
--- anacron-2.3.orig/gregor.c
+++ anacron-2.3/gregor.c
@@ -2,6 +2,7 @@
Anacron - run commands periodically
Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>
Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>
+ Copyright (C) 2004 Pascal Hakim <pasc at redellipse.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,6 +24,7 @@
#include <limits.h>
+#include <time.h>
#include "gregor.h"
const static int
@@ -65,7 +67,7 @@
{
int dn;
int i;
- const int isleap; /* save three calls to leap() */
+ int isleap; /* save three calls to leap() */
/* Some validity checks */
@@ -114,3 +116,66 @@
/* but not by 400 */
return (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
}
+
+int
+days_last_month (void)
+/* How many days did last month have? */
+{
+ struct tm time_record;
+ time_t current_time;
+ time (¤t_time);
+ localtime_r (¤t_time, &time_record);
+
+ switch (time_record.tm_mon) {
+ case 0: return days_in_month[11];
+ case 2: return days_in_month[1] + (leap (time_record.tm_year + 1900) ? 1 : 0);
+ default: return days_in_month[time_record.tm_mon - 1];
+ }
+}
+
+int
+days_this_month (void)
+/* How many days does this month have? */
+{
+ struct tm time_record;
+ time_t current_time;
+ time (¤t_time);
+ localtime_r (¤t_time, &time_record);
+
+ switch (time_record.tm_mon) {
+ case 1: return days_in_month[1] + (leap (time_record.tm_year + 1900) ? 1 : 0);
+ default: return days_in_month[time_record.tm_mon];
+ }
+}
+
+int
+days_last_year (void)
+/* How many days this last year have? */
+{
+ struct tm time_record;
+ time_t current_time;
+ time (¤t_time);
+ localtime_r (¤t_time, &time_record);
+
+ if (leap(time_record.tm_year - 1 + 1900)) {
+ return 366;
+ }
+
+ return 365;
+}
+
+int
+days_this_year (void)
+/* How many days does this year have */
+{
+ struct tm time_record;
+ time_t current_time;
+ time (¤t_time);
+ localtime_r (¤t_time, &time_record);
+
+ if (leap(time_record.tm_year + 1900)) {
+ return 366;
+ }
+
+ return 365;
+}
--- anacron-2.3.orig/gregor.h
+++ anacron-2.3/gregor.h
@@ -2,6 +2,7 @@
Anacron - run commands periodically
Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>
Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>
+ Copyright (C) 2004 Pascal Hakim <pasc at redellipse.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -23,3 +24,7 @@
int day_num(int year, int month, int day);
+int days_last_month (void);
+int days_this_month (void);
+int days_last_year (void);
+int days_this_year (void);
--- anacron-2.3.orig/lock.c
+++ anacron-2.3/lock.c
@@ -2,6 +2,7 @@
Anacron - run commands periodically
Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>
Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>
+ Copyirght (C) 2004 Pascal Hakim <pasc at redellipse.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -111,6 +112,35 @@
xclose(jr->timestamp_fd);
return 0;
}
+
+ /*
+ * Check to see if it's a named period, in which case we need
+ * to figure it out.
+ */
+ if (jr->named_period)
+ {
+ int period = 0, bypass = 0;
+ switch (jr->named_period)
+ {
+ case 1:
+ period = days_last_month ();
+ bypass = days_this_month ();
+ break;
+ case 2:
+ period = days_last_year ();
+ bypass = days_this_year ();
+ break;
+ default:
+ die ("Unknown named period for %s (%d)", jr->ident, jr->named_period);
+ }
+ printf ("Checking against %d with %d\n", day_delta, period);
+ if (day_delta < period && day_delta != bypass)
+ {
+ /* Job is still too young */
+ xclose (jr->timestamp_fd);
+ return 0;
+ }
+ }
}
/* no! try to grab the lock */
--- anacron-2.3.orig/log.c
+++ anacron-2.3/log.c
@@ -2,6 +2,7 @@
Anacron - run commands periodically
Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>
Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>
+ Copyright (C) 2004 Pascal Hakim <pasc at redellipse.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -48,6 +49,9 @@
static char msg[MAX_MSG + 1];
static int log_open = 0;
+/* Number of complaints that we've seen */
+int complaints = 0;
+
static void
xopenlog()
{
@@ -147,6 +151,8 @@
va_start(args, fmt);
log(COMPLAIN_LEVEL, fmt, args);
va_end(args);
+
+ complaints += 1;
}
void
@@ -158,6 +164,8 @@
va_start(args, fmt);
log_e(COMPLAIN_LEVEL, fmt, args);
va_end(args);
+
+ complaints += 1;
}
void
--- anacron-2.3.orig/main.c
+++ anacron-2.3/main.c
@@ -2,6 +2,7 @@
Anacron - run commands periodically
Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>
Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>
+ Copyright (C) 2004 Pascal Hakim <pasc at redellipse.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -39,8 +40,9 @@
char *program_name;
char *anacrontab;
+char *spooldir;
int serialize, force, update_only, now,
- no_daemon, quiet; /* command-line options */
+ no_daemon, quiet, testing_only; /* command-line options */
char **args; /* vector of "job" command-line arguments */
int nargs; /* number of these */
char *defarg = "*";
@@ -61,17 +63,19 @@
printf("Anacron " RELEASE "\n"
"Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>\n"
"Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>\n"
+ "Copyright (C) 2004 Pascal Hakim <pasc at redellipse.net>\n"
"\n"
- "Mail comments, suggestions and bug reports to <shaleh at debian.org>."
+ "Mail comments, suggestions and bug reports to <pasc at redellipse.net>."
"\n\n");
}
static void
print_usage()
{
- printf("Usage: anacron [-s] [-f] [-n] [-d] [-q] [-t anacrontab] [job] ...\n"
- " anacron -u [job] ...\n"
+ printf("Usage: anacron [-s] [-f] [-n] [-d] [-q] [-t anacrontab] [-S spooldir] [job] ...\n"
+ " anacron [-S spooldir] -u [job] ...\n"
" anacron [-V|-h]\n"
+ " anacron -T [-t anacrontab]\n"
"\n"
" -s Serialize execution of jobs\n"
" -f Force execution of jobs, even before their time\n"
@@ -82,6 +86,8 @@
" -t Use this anacrontab\n"
" -V Print version information\n"
" -h Print this message\n"
+ " -T Test an anacrontab\n"
+ " -S Select a different spool directory\n"
"\n"
"See the manpage for more details.\n"
"\n");
@@ -95,7 +101,7 @@
quiet = no_daemon = serialize = force = update_only = now = 0;
opterr = 0;
- while ((opt = getopt(argc, argv, "sfundqt:Vh")) != EOF)
+ while ((opt = getopt(argc, argv, "sfundqt:TS:Vh")) != EOF)
{
switch (opt)
{
@@ -120,6 +126,12 @@
case 't':
anacrontab = strdup(optarg);
break;
+ case 'T':
+ testing_only = 1;
+ break;
+ case 'S':
+ spooldir = strdup(optarg);
+ break;
case 'V':
print_version();
exit(0);
@@ -351,7 +363,7 @@
day_of_month = tm_now->tm_mday;
day_now = day_num(year, month, day_of_month);
if (day_now == -1) die("Invalid date (this is really embarrassing)");
- if (!update_only)
+ if (!update_only && !testing_only)
explain("Anacron " RELEASE " started on %04d-%02d-%02d",
year, month, day_of_month);
}
@@ -414,7 +426,10 @@
{
int j;
+ int cwd;
+
anacrontab = NULL;
+ spooldir = NULL;
if((program_name = strrchr(argv[0], '/')) == NULL)
program_name = argv[0];
@@ -426,9 +441,16 @@
if (anacrontab == NULL)
anacrontab = strdup(ANACRONTAB);
+ if (spooldir == NULL)
+ spooldir = strdup(SPOOLDIR);
+
+ if ((cwd = open ("./", O_RDONLY)) == -1) {
+ die_e ("Can't save current directory");
+ }
+
in_background = 0;
- if (chdir(SPOOLDIR)) die_e("Can't chdir to " SPOOLDIR);
+ if (chdir(spooldir)) die_e("Can't chdir to %s", spooldir );
old_umask = umask(0);
@@ -437,15 +459,22 @@
if (fclose(stdin)) die_e("Can't close stdin");
xopen(0, "/dev/null", O_RDONLY);
- if (!no_daemon)
+ if (!no_daemon && !testing_only)
go_background();
else
primary_pid = getpid();
record_start_time();
- read_tab();
+ read_tab(cwd);
arrange_jobs();
+ if (testing_only)
+ {
+ if (complaints) exit (1);
+
+ exit (0);
+ }
+
if (update_only)
{
fake_jobs();
@@ -462,6 +491,6 @@
launch_job(job_array[j]);
}
wait_children();
- explain("Normal exit (%d jobs run)", njobs);
+ explain("Normal exit (%d job%s run)", njobs, (njobs == 1 ? "" : "s"));
exit(0);
}
--- anacron-2.3.orig/readtab.c
+++ anacron-2.3/readtab.c
@@ -2,6 +2,7 @@
Anacron - run commands periodically
Copyright (C) 1998 Itai Tzur <itzur at actcom.co.il>
Copyright (C) 1999 Sean 'Shaleh' Perry <shaleh at debian.org>
+ Copyright (C) 2004 Pascal Hakim <pasc at redellipse.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -83,11 +84,23 @@
Return NULL if no more lines.
*/
{
- int c;
+ int c, prev=0;
if (feof(tab)) return NULL;
- while ((c = getc(tab)) != EOF && c != '\n')
- obstack_1grow(&input_o, c);
+ while (1)
+ {
+ c = getc(tab);
+ if ((c == '\n' && prev != '\\') || c == EOF)
+ {
+ if (0 != prev) obstack_1grow(&input_o, prev);
+ break;
+ }
+
+ if ('\\' != prev && 0 != prev && '\n' != prev) obstack_1grow(&input_o, prev);
+ else if ('\n' == prev) obstack_1grow(&input_o, ' ');
+
+ prev = c;
+ }
if (ferror(tab)) die_e("Error reading %s", anacrontab);
obstack_1grow(&input_o, '\0');
return obstack_finish(&input_o);
@@ -153,6 +166,7 @@
}
jr = obstack_alloc(&tab_o, sizeof(job_rec));
jr->period = period;
+ jr->named_period = 0;
jr->delay = delay;
jr->tab_line = line_num;
jr->ident = obstack_alloc(&tab_o, ident_len + 1);
@@ -171,6 +185,54 @@
}
static void
+register_period_job(const char *periods, const char *delays,
+ const char *ident, char *command)
+/* Store a job definition with a named period */
+{
+ int delay;
+ job_rec *jr;
+ int period_len, ident_len, command_len;
+
+ period_len = strlen(periods);
+ ident_len = strlen(ident);
+ command_len = strlen(command);
+ jobs_read++;
+ delay = conv2int(delays);
+ if (delay < 0)
+ {
+ complain("%s: number out of range on line %d, skipping",
+ anacrontab, line_num);
+ return;
+ }
+
+ jr = obstack_alloc(&tab_o, sizeof(job_rec));
+ if (!strncmp ("@monthly", periods, 7)) {
+ jr->named_period = 1;
+ } else if (!strncmp("@yearly", periods, 7)) {
+ jr->named_period = 2;
+ } else {
+ complain("%s: Unknown named period on line %d, skipping",
+ anacrontab, line_num);
+ }
+ jr->period = 0;
+ jr->delay = delay;
+ jr->tab_line = line_num;
+ jr->ident = obstack_alloc(&tab_o, ident_len + 1);
+ strcpy(jr->ident, ident);
+ jr->arg_num = job_arg_num(ident);
+ jr->command = obstack_alloc(&tab_o, command_len + 1);
+ strcpy(jr->command, command);
+ jr->job_pid = jr->mailer_pid = 0;
+ if (last_job_rec != NULL) last_job_rec->next = jr;
+ else first_job_rec = jr;
+ last_job_rec = jr;
+ jr->prev_env_rec = last_env_rec;
+ jr->next = NULL;
+ Debug(("Read job - period %d, delay=%d, ident%s, command=%s",
+ jr->named_period, jr->delay, jr->ident, jr->command));
+}
+
+static void
parse_tab_line(char *line)
{
int r;
@@ -210,6 +272,18 @@
register_job(periods, delays, ident, command);
return;
}
+
+ /* A period job? */
+ r = match_rx("^[ \t]*(@[^ \t]+)[ \t]+([[:digit:]]+)[ \t]+"
+ "([^ \t/]+)[ \t]+([^ \t].*)$",
+ line, 4, &periods, &delays, &ident, &command);
+ if (r == -1) goto reg_err;
+ if (r)
+ {
+ register_period_job(periods, delays, ident, command);
+ return;
+ }
+
complain("Invalid syntax in %s on line %d - skipping this line",
anacrontab, line_num);
return;
@@ -219,7 +293,7 @@
}
void
-read_tab()
+read_tab(int cwd)
/* Read the anacrontab file into memory */
{
char *tab_line;
@@ -229,7 +303,10 @@
jobs_read = 0;
line_num = 0;
/* Open the anacrontab file */
+ fchdir (cwd);
tab = fopen(anacrontab, "r");
+ if (chdir(spooldir)) die_e("Can't chdir to %s", SPOOLDIR);
+
if (tab == NULL) die_e("Error opening %s", anacrontab);
/* Initialize the obstacks */
obstack_init(&input_o);
@@ -271,7 +348,7 @@
njobs = 0;
while (j != NULL)
{
- if (j->arg_num != -1 && (update_only || consider_job(j)))
+ if (j->arg_num != -1 && (update_only || testing_only || consider_job(j)))
{
njobs++;
obstack_grow(&tab_o, &j, sizeof(j));
--- anacron-2.3.orig/runjob.c
+++ anacron-2.3/runjob.c
@@ -109,7 +109,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);
@@ -153,6 +152,15 @@
launch_mailer(job_rec *jr)
{
pid_t pid;
+ struct stat buf;
+ int r;
+
+ /* Check that we have a way of sending mail. */
+ if(stat(SENDMAIL, &buf))
+ {
+ complain("Can't find sendmail at %s, not mailing output", SENDMAIL);
+ return;
+ }
pid = xfork();
if (pid == 0)
@@ -173,7 +181,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);
+ jr->mailto, (char *)NULL);
die_e("Can't exec " SENDMAIL);
}
/* parent */
@@ -207,19 +215,44 @@
{
pid_t pid;
int fd;
+ char hostname[512];
+ char *mailto;
+
+ /* get hostname */
+ if (gethostname(hostname, 512)) {
+ strcpy (hostname,"unknown machine");
+ }
+
+ setup_env(jr);
+
+ /* Get the destination email address if set, or current user otherwise */
+ mailto = getenv("MAILTO");
+
+ if (mailto)
+ jr->mailto = mailto;
+ else
+ jr->mailto = username ();
/* create temporary file for stdout and stderr of the job */
fd = jr->output_fd = temp_file();
/* write mail header */
xwrite(fd, "From: ");
+ xwrite(fd, "Anacron <");
xwrite(fd, username());
- xwrite(fd, " (Anacron)\n");
+ xwrite(fd, ">\n");
xwrite(fd, "To: ");
- xwrite(fd, username());
+ if (mailto) {
+ xwrite(fd, mailto);
+ } else {
+ xwrite(fd, username());
+ }
xwrite(fd, "\n");
xwrite(fd, "Subject: Anacron job '");
xwrite(fd, jr->ident);
- xwrite(fd, "'\n\n");
+ xwrite(fd, "' on ");
+ xwrite(fd, hostname);
+ xwrite(fd, "\n\n");
+
jr->mail_header_size = file_size(fd);
pid = xfork();
More information about the scm-commits
mailing list