[packages/at] The rest of update (https doesn't work)
arekm
arekm at pld-linux.org
Sat Mar 14 02:45:13 CET 2026
commit 31e80fc3dea82f86bfd970e114d4d3b29fcd542a
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date: Sat Mar 14 02:45:03 2026 +0100
The rest of update (https doesn't work)
at-buflen.patch | 24 -
at-configure-no_cron.patch | 52 -
at-debian.patch | 2283 --------------------------------------------
at-dst.patch | 13 -
at-env-tng.patch | 48 -
at-heapcorruption.patch | 29 -
at-install.patch | 58 --
at-lockfile.patch | 12 -
at-man.patch | 80 --
at-no-root-install.patch | 70 ++
at-open.patch | 12 -
at-pld_noenglish_man.patch | 749 ---------------
at-sendmail.patch | 29 -
at-sigchld.patch | 12 -
at-typo.patch | 45 -
at.patch | 104 --
at.spec | 33 +-
17 files changed, 80 insertions(+), 3573 deletions(-)
---
diff --git a/at.spec b/at.spec
index 8401378..cd63cbc 100644
--- a/at.spec
+++ b/at.spec
@@ -12,12 +12,13 @@ Version: 3.2.5
Release: 1
License: GPL
Group: Daemons
-Source0: https://software.calhariz.com/at/at_%{version}.orig.tar.gz
+Source0: http://software.calhariz.com/at/at_%{version}.orig.tar.gz
# Source0-md5: ca3657a1c90d7c3d252e0bc17feddc6e
Source1: %{name}d.init
Source2: %{name}.sysconfig
Source3: http://www.mif.pg.gda.pl/homepages/ankry/man-PLD/%{name}-non-english-man-pages.tar.bz2
# Source3-md5: 3a35eff8786f0c91cd3193cee9d9a076
+Patch0: %{name}-no-root-install.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: flex
@@ -78,12 +79,10 @@ at та batch читають команди зі стандартного вво
запуску інших програм.
%prep
-%setup -q
+%setup -q -a3
+%patch -P0 -p0
%build
-cp -f /usr/share/automake/config.* .
-%{__aclocal}
-%{__autoconf}
%configure \
--with-atspool=/var/spool/at/spool \
--with-jobdir=/var/spool/at \
@@ -97,23 +96,11 @@ rm -rf $RPM_BUILD_ROOT
install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig}
%{__make} install \
- IROOT=$RPM_BUILD_ROOT
-
-install at.deny $RPM_BUILD_ROOT%{_sysconfdir}
+ DESTDIR=$RPM_BUILD_ROOT
install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/atd
install %{SOURCE2} $RPM_BUILD_ROOT/etc/sysconfig/atd
-%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/{atq,atrm,batch}.1
-%{__rm} $RPM_BUILD_ROOT%{_mandir}/man5/at_deny.5
-
-echo .so at.1 > $RPM_BUILD_ROOT%{_mandir}/man1/atq.1
-echo .so at.1 > $RPM_BUILD_ROOT%{_mandir}/man1/atrm.1
-echo .so at.1 > $RPM_BUILD_ROOT%{_mandir}/man1/batch.1
-
-echo .so at_allow.5 > $RPM_BUILD_ROOT%{_mandir}/man5/at_deny.5
-echo .so at_allow.5 > $RPM_BUILD_ROOT%{_mandir}/man5/at_access.5
-
for a in es fi fr hu id it ja ko pl; do
install -d $RPM_BUILD_ROOT%{_mandir}/{$a,$a/man{1,5,8}}
for b in $a/man[158]/*; do
@@ -121,6 +108,7 @@ for a in es fi fr hu id it ja ko pl; do
done
done
+
touch $RPM_BUILD_ROOT/var/spool/at/.SEQ
%clean
@@ -147,16 +135,15 @@ fi
%attr(755,root,root) %{_sbindir}/atd
%attr(755,root,root) %{_sbindir}/atrun
%attr(4755,root,root) %{_bindir}/at
-%attr(755,root,root) %{_bindir}/atq
-%attr(755,root,root) %{_bindir}/atrm
+%{_bindir}/atq
+%{_bindir}/atrm
%attr(755,root,root) %{_bindir}/batch
%{_mandir}/man1/at.1*
%{_mandir}/man1/atq.1*
%{_mandir}/man1/atrm.1*
%{_mandir}/man1/batch.1*
-%{_mandir}/man5/at_access.5*
-%{_mandir}/man5/at_allow.5*
-%{_mandir}/man5/at_deny.5*
+%{_mandir}/man5/at.allow.5*
+%{_mandir}/man5/at.deny.5*
%{_mandir}/man8/atd.8*
%{_mandir}/man8/atrun.8*
%lang(es) %{_mandir}/es/man*/*
diff --git a/at-buflen.patch b/at-buflen.patch
deleted file mode 100644
index eb792b7..0000000
--- a/at-buflen.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- at-3.1.8/atd.c.buflen Fri Jun 9 11:46:54 2000
-+++ at-3.1.8/atd.c Fri Jun 9 11:47:29 2000
-@@ -196,7 +196,7 @@
- */
- pid_t pid;
- int fd_out, fd_in;
-- char mailbuf[9], jobbuf[9];
-+ char mailbuf[256], jobbuf[9];
- char *mailname = NULL;
- char *newname;
- FILE *stream;
-@@ -299,10 +299,11 @@
- * NFS and works with local file systems. It's not clear where
- * the bug is located. -Joey
- */
-- if (fscanf(stream, "#!/bin/sh\n# atrun uid=%d gid=%d\n# mail %8s %d",
-+ if (fscanf(stream, "#!/bin/sh\n# atrun uid=%d gid=%d\n# mail %255s %d",
- &nuid, &ngid, mailbuf, &send_mail) != 4)
- pabort("File %.500s is in wrong format - aborting",
- filename);
-+ mailbuf[255] = '\0';
-
- if (mailbuf[0] == '-')
- pabort("illegal mail name %.300s in job %8lu (%.300s)", mailbuf,
diff --git a/at-configure-no_cron.patch b/at-configure-no_cron.patch
deleted file mode 100644
index b3fa4cc..0000000
--- a/at-configure-no_cron.patch
+++ /dev/null
@@ -1,52 +0,0 @@
---- configure.in.old Thu Oct 18 01:46:50 2001
-+++ configure.in Thu Oct 18 01:51:48 2001
-@@ -137,7 +137,8 @@
- AC_DEFINE(SPOOLDIR, "/usr/spool/cron")
- AC_MSG_RESULT(/usr/spool/cron)
- else
-- AC_ERROR(Cannot determine value for spool directory)
-+ sp=
-+ AC_MSG_RESULT(None. Assuming not needed)
- fi
-
- AC_MSG_CHECKING(jobdir)
-@@ -148,6 +149,9 @@
- AC_MSG_ERROR(Need JOBDIR.)
- ;;
- yes)
-+ if test -z "$sp" ; then
-+ AC_ERROR(Cannot determine value for spool directory)
-+ fi
- AC_DEFINE_UNQUOTED(ATJOB_DIR, "$sp/atjobs")
- AC_MSG_RESULT($ATJOB_DIR)
- ATJBD="$sp/atjobs"
-@@ -158,6 +162,9 @@
- ATJBD="$withval"
- ;;
- esac ],
-+ if test -z "$sp" ; then
-+ AC_ERROR(Cannot determine value for spool directory)
-+ fi
- AC_DEFINE_UNQUOTED(ATJOB_DIR, "$sp/atjobs")
- AC_MSG_RESULT($sp/atjobs)
- ATJBD="$sp/atjobs"
-@@ -172,6 +179,9 @@
- AC_MSG_ERROR(Need ATSPOOL.)
- ;;
- yes)
-+ if test -z "$sp" ; then
-+ AC_ERROR(Cannot determine value for spool directory)
-+ fi
- AC_DEFINE_UNQUOTED(ATSPOOL_DIR, "$sp/atspool")
- AC_MSG_RESULT($sp/atspool)
- ATSPD=$sp/atspool
-@@ -182,6 +192,9 @@
- ATSPD=$withval
- ;;
- esac ],
-+ if test -z "$sp" ; then
-+ AC_ERROR(Cannot determine value for spool directory)
-+ fi
- AC_DEFINE_UNQUOTED(ATSPOOL_DIR, "$sp/atspool")
- AC_MSG_RESULT($sp/atspool)
- ATSPD=$sp/atspool
diff --git a/at-debian.patch b/at-debian.patch
deleted file mode 100644
index a1d03b8..0000000
--- a/at-debian.patch
+++ /dev/null
@@ -1,2283 +0,0 @@
---- at-3.1.8.orig/at.c
-+++ at-3.1.8/at.c
-@@ -111,7 +111,7 @@
- static char rcsid[] = "$Id$";
- char *no_export[] =
- {
-- "TERM", "DISPLAY", "_", "SHELLOPTS"
-+ "TERM", "DISPLAY", "_", "SHELLOPTS", "BASH_VERSINFO", "EUID", "GROUPS", "PPID", "UID"
- };
- static int send_mail = 0;
-
-@@ -235,6 +235,7 @@
- /* Install the signal handler for SIGINT; terminate after removing the
- * spool file if necessary
- */
-+ memset(&act, 0, sizeof act);
- act.sa_handler = sigc;
- sigemptyset(&(act.sa_mask));
- act.sa_flags = 0;
-@@ -274,8 +275,8 @@
- if ((jobno = nextjob()) == EOF)
- perr("Cannot generate job number");
-
-- sprintf(ppos, "%c%5lx%8lx", queue,
-- jobno, (unsigned long) (runtimer / 60));
-+ (void)snprintf(ppos, sizeof(atfile) - (ppos - atfile),
-+ "%c%5lx%8lx", queue, jobno, (unsigned long) (runtimer / 60));
-
- for (ap = ppos; *ap != '\0'; ap++)
- if (*ap == ' ')
-@@ -291,7 +292,7 @@
- * bit. Yes, this is a kluge.
- */
- cmask = umask(S_IRUSR | S_IWUSR | S_IXUSR);
-- if ((fd = creat(atfile, O_WRONLY)) == -1)
-+ if ((fd = open(atfile, O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR)) == -1)
- perr("Cannot create atjob file %.500s", atfile);
-
- if ((fd2 = dup(fd)) < 0)
-@@ -461,14 +462,6 @@
-
- close(fd2);
-
-- /* POSIX.2 allows the shell specified by the user's SHELL environment
-- variable, the login shell from the user's password database entry,
-- or /bin/sh to be the command interpreter that processes the at-job.
-- It also alows a warning diagnostic to be printed. Because of the
-- possible variance, we always output the diagnostic. */
--
-- fprintf(stderr, "warning: commands will be executed using /bin/sh\n");
--
- runtime = localtime(&runtimer);
-
- /* We only use the sick POSIX time format if POSIXLY_CORRECT
-@@ -546,6 +539,7 @@
- long jobno;
- time_t runtimer;
- char timestr[TIMESIZE];
-+ struct passwd *pwd;
-
- PRIV_START
-
-@@ -581,7 +575,10 @@
- } else {
- strftime(timestr, TIMESIZE, TIMEFORMAT_ISO, runtime);
- }
-- printf("%ld\t%s %c\n", jobno, timestr, queue);
-+ if ((pwd = getpwuid(buf.st_uid)))
-+ printf("%ld\t%s %c %s\n", jobno, timestr, queue, pwd->pw_name);
-+ else
-+ printf("%ld\t%s %c\n", jobno, timestr, queue);
- }
- PRIV_END
- }
-@@ -695,7 +692,7 @@
- char *pgm;
-
- int program = AT; /* our default program */
-- char *options = "q:f:mvldVc"; /* default options for at */
-+ char *options = "q:f:MmvldhVc"; /* default options for at */
- int disp_version = 0;
- time_t timer;
- struct passwd *pwe;
-@@ -726,16 +723,20 @@
- */
- if (strcmp(pgm, "atq") == 0) {
- program = ATQ;
-- options = "q:V";
-+ options = "hq:V";
- } else if (strcmp(pgm, "atrm") == 0) {
- program = ATRM;
-- options = "V";
-+ options = "hV";
- }
- /* process whatever options we can process
- */
- opterr = 1;
- while ((c = getopt(argc, argv, options)) != EOF)
- switch (c) {
-+ case 'h':
-+ usage();
-+ exit (0);
-+
- case 'v': /* verify time settings */
- atverify = 1;
- break;
-@@ -744,6 +745,10 @@
- send_mail = 1;
- break;
-
-+ case 'M': /* don't send mail, even when job failed */
-+ send_mail = -1;
-+ break;
-+
- case 'f':
- atinput = optarg;
- break;
-@@ -753,7 +758,7 @@
- usage();
-
- atqueue = queue = *optarg;
-- if (!(islower(queue) || isupper(queue)))
-+ if (!(islower(queue) || isupper(queue)) & (queue != '='))
- usage();
-
- queue_set = 1;
-@@ -842,6 +847,15 @@
- struct tm *tm = localtime(&timer);
- fprintf(stderr, "%s\n", asctime(tm));
- }
-+
-+ /* POSIX.2 allows the shell specified by the user's SHELL environment
-+ variable, the login shell from the user's password database entry,
-+ or /bin/sh to be the command interpreter that processes the at-job.
-+ It also alows a warning diagnostic to be printed. Because of the
-+ possible variance, we always output the diagnostic. */
-+
-+ fprintf(stderr, "warning: commands will be executed using /bin/sh\n");
-+
- writefile(timer, queue);
- break;
-
---- at-3.1.8.orig/atd.c
-+++ at-3.1.8/atd.c
-@@ -22,6 +22,18 @@
- #include "config.h"
- #endif
-
-+/*
-+ * /usr/bin/mail aka /usr/bin/mailx require the subject to be
-+ * specified on the command line instead of reading it from stdin like
-+ * /usr/sbin/sendmail does. For now simply disable MAILC and MAILX,
-+ *
-+ * TODO: Remove tests for MAILC and MAILX from configure.in in the
-+ * next upstream version.
-+ */
-+#undef MAILC
-+#undef MAILX
-+
-+
- /* System Headers */
-
- #include <sys/types.h>
-@@ -101,6 +113,8 @@
- static char rcsid[] = "$Id$";
- static double load_avg = LOADAVG_MX;
- static time_t now;
-+static time_t last_chg;
-+static int nothing_to_do;
- unsigned int batch_interval;
- static int run_as_daemon = 0;
-
-@@ -121,6 +135,29 @@
- return;
- }
-
-+/* SIGCHLD handler - discards completion status of children */
-+RETSIGTYPE
-+release_zombie(int dummy)
-+{
-+ int status;
-+ pid_t pid;
-+
-+ while ((pid = waitpid(-1, &status, WNOHANG)) > 0) {
-+#ifdef DEBUG_ZOMBIE
-+ if (WIFEXITED(status))
-+ syslog(LOG_INFO, "pid %ld exited with status %d.", pid, WEXITSTATUS(status));
-+ else if (WIFSIGNALED(status))
-+ syslog(LOG_NOTICE, "pid %ld killed with signal %d.", pid, WTERMSIG(status));
-+ else if (WIFSTOPPED(status))
-+ syslog(LOG_NOTICE, "pid %ld stopped with signal %d.", pid, WSTOPSIG(status));
-+ else
-+ syslog(LOG_WARNING, "pid %ld unknown reason for SIGCHLD", pid);
-+#endif
-+ }
-+ return;
-+}
-+
-+
- /* Local functions */
-
- static int
-@@ -255,6 +292,13 @@
-
- fcntl(fd_in, F_SETFD, fflags & ~FD_CLOEXEC);
-
-+ /*
-+ * If the spool directory is mounted via NFS `atd' isn't able to
-+ * read from the job file and will bump out here. The file is
-+ * opened as "root" but it is read as "daemon" which fails over
-+ * NFS and works with local file systems. It's not clear where
-+ * the bug is located. -Joey
-+ */
- if (fscanf(stream, "#!/bin/sh\n# atrun uid=%d gid=%d\n# mail %8s %d",
- &nuid, &ngid, mailbuf, &send_mail) != 4)
- pabort("File %.500s is in wrong format - aborting",
-@@ -298,6 +342,8 @@
-
- write_string(fd_out, "Subject: Output from your job ");
- write_string(fd_out, jobbuf);
-+ write_string(fd_out, "\nTo: ");
-+ write_string(fd_out, mailname);
- write_string(fd_out, "\n\n");
- fstat(fd_out, &buf);
- size = buf.st_size;
-@@ -359,6 +405,11 @@
- */
- close(fd_in);
- close(fd_out);
-+
-+ /* We inherited the master's SIGCHLD handler, which does a
-+ non-blocking waitpid. So this blocking one will eventually
-+ return with an ECHILD error.
-+ */
- waitpid(pid, (int *) NULL, 0);
-
- /* Send mail. Unlink the output file after opening it, so it
-@@ -376,7 +427,7 @@
- unlink(newname);
- free(newname);
-
-- if ((buf.st_size != size) || send_mail) {
-+ if (((send_mail != -1) && (buf.st_size != size)) || (send_mail == 1)) {
-
- PRIV_START
-
-@@ -436,34 +487,51 @@
- * atrun.
- */
-
-- if ((spool = opendir(".")) == NULL)
-- perr("Cannot read " ATJOB_DIR);
--
- next_job = now + CHECK_INTERVAL;
- if (next_batch == 0)
- next_batch = now;
-
-+ /* To avoid spinning up the disk unnecessarily, stat the directory and
-+ * return immediately if it hasn't changed since the last time we woke
-+ * up.
-+ */
-+
-+ if (stat(".", &buf) == -1)
-+ perr("Cannot stat " ATJOB_DIR);
-+
-+ if (nothing_to_do && buf.st_mtime <= last_chg)
-+ return next_job;
-+ last_chg = buf.st_mtime;
-+
-+ if ((spool = opendir(".")) == NULL)
-+ perr("Cannot read " ATJOB_DIR);
-+
- run_batch = 0;
-+ nothing_to_do = 1;
-
- batch_uid = (uid_t) - 1;
- batch_gid = (gid_t) - 1;
-
- while ((dirent = readdir(spool)) != NULL) {
-
-- if (stat(dirent->d_name, &buf) != 0) {
-- /* Chances are a '=' file has been deleted from under us.
-- * Ignore.
-- */
-- }
-+ /* Avoid the stat if this doesn't look like a job file */
-+ if (sscanf(dirent->d_name, "%c%5lx%8lx", &queue, &jobno, &ctm) != 3)
-+ continue;
-
-- /* We don't want directories or files which at(1) hasn't yet
-- * marked executable.
-+ /* Chances are a '=' file has been deleted from under us.
-+ * Ignore.
- */
-- if ((!S_ISREG(buf.st_mode)) || !(buf.st_mode & S_IXUSR))
-+ if (stat(dirent->d_name, &buf) != 0)
- continue;
-
-- if (sscanf(dirent->d_name, "%c%5lx%8lx", &queue, &jobno, &ctm) != 3)
-+ if (!S_ISREG(buf.st_mode))
-+ continue;
-+
-+ /* We don't want files which at(1) hasn't yet marked executable. */
-+ if (!(buf.st_mode & S_IXUSR)) {
-+ nothing_to_do = 0; /* it will probably become executable soon */
- continue;
-+ }
-
- run_time = (time_t) ctm *60;
-
-@@ -493,9 +561,18 @@
- lock_name[0] = '=';
- unlink(lock_name);
- next_job = now;
-+ nothing_to_do = 0;
- }
- continue;
- }
-+
-+ /* If we got here, then there are jobs of some kind waiting.
-+ * We could try to be smarter and leave nothing_to_do set if
-+ * we end up processing all the jobs, but that's risky (run_file
-+ * might fail and expect the job to be rescheduled), and it doesn't
-+ * gain us much. */
-+ nothing_to_do = 0;
-+
- /* There's a job for later. Note its execution time if it's
- * the earlierst so far.
- */
-@@ -540,6 +617,7 @@
- }
- }
- if (run_batch && (next_batch < next_job)) {
-+ nothing_to_do = 0;
- next_job = next_batch;
- }
- return next_job;
-@@ -631,6 +709,11 @@
- if (optind < argc)
- pabort("non-option arguments - not allowed");
-
-+ sigaction(SIGCHLD, NULL, &act);
-+ act.sa_handler = release_zombie;
-+ act.sa_flags = SA_NOCLDSTOP;
-+ sigaction(SIGCHLD, &act, NULL);
-+
- if (!run_as_daemon) {
- now = time(NULL);
- run_loop();
-@@ -646,10 +729,6 @@
- sigaction(SIGHUP, NULL, &act);
- act.sa_handler = sdummy;
- sigaction(SIGHUP, &act, NULL);
--
-- sigaction(SIGCHLD, NULL, &act);
-- act.sa_handler = SIG_IGN;
-- sigaction(SIGCHLD, &act, NULL);
-
- sigaction(SIGTERM, NULL, &act);
- act.sa_handler = set_term;
---- at-3.1.8.orig/panic.c
-+++ at-3.1.8/panic.c
-@@ -41,6 +41,7 @@
- /* Local headers */
-
- #include "panic.h"
-+#include "privs.h"
- #include "at.h"
-
- /* File scope variables */
-@@ -72,12 +73,15 @@
- va_list args;
-
- va_start(args, fmt);
-- vsprintf(buf, fmt, args);
-+ vsnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
-
- perror(buf);
-- if (fcreated)
-+ if (fcreated) {
-+ PRIV_START
- unlink(atfile);
-+ PRIV_END
-+ }
-
- exit(EXIT_FAILURE);
- }
-@@ -88,7 +92,7 @@
- /* Print usage and exit.
- */
- fprintf(stderr, "Usage: at [-V] [-q x] [-f file] [-m] time\n"
-- " atq [-V] [-q x] [-v]\n"
-+ " atq [-V] [-q x]\n"
- " atrm [-V] [-q x] job ...\n"
- " batch [-V] [-f file] [-m]\n");
- exit(EXIT_FAILURE);
---- at-3.1.8.orig/perm.c
-+++ at-3.1.8/perm.c
-@@ -43,7 +43,13 @@
-
- /* Macros */
-
--#define MAXUSERID 10
-+#if defined(DEBUG_PERM_C)
-+#define ETCDIR "../test/etc"
-+#undef PRIV_START
-+#define PRIV_START while(0)
-+#undef PRIV_END
-+#define PRIV_END while(0)
-+#endif
-
- /* Structures and unions */
-
-@@ -54,66 +60,87 @@
-
- /* Function declarations */
-
--static int check_for_user(FILE * fp, const char *name);
-+static int user_in_file(const char *path, const char *name);
-
- /* Local functions */
-
-+/*
-+ */
- static int
--check_for_user(FILE * fp, const char *name)
-+user_in_file(const char *path, const char *name)
- {
-- char *buffer;
-- size_t len;
-- int found = 0;
--
-- len = strlen(name);
-- buffer = mymalloc(len + 2);
--
-- while (fgets(buffer, len + 2, fp) != NULL) {
-- if ((strncmp(name, buffer, len) == 0) &&
-- (buffer[len] == '\n')) {
-- found = 1;
-- break;
-- }
-- }
-- fclose(fp);
-- free(buffer);
-- return found;
--}
--/* Global functions */
--int
--check_permission()
--{
-- FILE *fp;
-- uid_t uid = geteuid();
-- struct passwd *pentry;
-+ FILE *fp;
-+ char buffer[256];
-+ int found = 0;
-+ int c = '\n';
-+
-+ PRIV_START;
-+ fp = fopen( path, "r");
-+ PRIV_END;
-+
-+ if ( fp == NULL )
-+ return -1;
-+
-+
-+ while ( !found && fgets(buffer, sizeof(buffer), fp) != NULL) {
-+ size_t llen = strlen(buffer);
-
-- if (uid == 0)
-- return 1;
-+ c = buffer[llen-1];
-
-- if ((pentry = getpwuid(uid)) == NULL) {
-- perror("Cannot access user database");
-- exit(EXIT_FAILURE);
-- }
-- PRIV_START
-+ if (c == '\n')
-+ buffer[llen-1] = '\0';
-+ while (c != '\n' && c != EOF)
-+ c = fgetc(fp);
-+
-+ found = (strcmp(buffer, name)==0);
-+ }
-
-- fp = fopen(ETCDIR "/at.allow", "r");
-+ fclose(fp);
-
-- PRIV_END
-+ if (c == EOF) {
-+ fprintf(stderr, "%s: incomplete last line.\n", path);
-+ }
-+
-+ return found;
-+}
-
-- if (fp != NULL) {
-- return check_for_user(fp, pentry->pw_name);
-- } else {
-
-- PRIV_START
-+/* Global functions */
-+int
-+check_permission()
-+{
-+ uid_t uid = geteuid();
-+ struct passwd *pentry;
-+ int allow = 0, deny = 1;
-+
-+ if (uid == 0)
-+ return 1;
-+
-+ if ((pentry = getpwuid(uid)) == NULL) {
-+ perror("Cannot access user database");
-+ exit(EXIT_FAILURE);
-+ }
-+
-+ allow = user_in_file(ETCDIR "/at.allow", pentry->pw_name);
-+ if (allow==0 || allow==1)
-+ return allow;
-+
-+ /* There was an error while looking for pw_name in at.allow.
-+ * Check at.deny only when at.allow doesn't exist.
-+ */
-+
-+ deny = user_in_file(ETCDIR "/at.deny", pentry->pw_name);
-+ return deny == 0;
-+}
-
-- fp = fopen(ETCDIR "/at.deny", "r");
-
-- PRIV_END
-+#if defined(DEBUG_PERM_C)
-
-- if (fp != NULL) {
-- return !check_for_user(fp, pentry->pw_name);
-- }
-- perror("at.deny");
-- }
-- return 0;
-+int
-+main(int argc, char *argv[])
-+{
-+ printf("check_permission() ==> %d\n", check_permission());
-+ return 0;
- }
-+
-+#endif
---- at-3.1.8.orig/daemon.c
-+++ at-3.1.8/daemon.c
-@@ -72,7 +72,7 @@
- va_list args;
-
- va_start(args, fmt);
-- vsprintf(buf, fmt, args);
-+ vsnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
-
- if (daemon_debug) {
-@@ -90,7 +90,7 @@
- va_list args;
-
- va_start(args, fmt);
-- vsprintf(buf, fmt, args);
-+ vsnprintf(buf, sizeof(buf), fmt, args);
- va_end(args);
-
- if (daemon_debug) {
-@@ -127,6 +127,7 @@
- }
- }
- old_umask = umask(S_IWGRP | S_IWOTH);
-+ (void) setsid();
-
- PRIV_START
-
---- at-3.1.8.orig/y.tab.c
-+++ at-3.1.8/y.tab.c
-@@ -1,45 +1,45 @@
-
--/* A Bison parser, made from parsetime.y with Bison version GNU Bison version 1.22
-- */
-+/* A Bison parser, made from parsetime.y
-+ by GNU Bison version 1.28 */
-
- #define YYBISON 1 /* Identify Bison output. */
-
--#define INT 258
--#define NOW 259
--#define AM 260
--#define PM 261
--#define NOON 262
--#define MIDNIGHT 263
--#define TEATIME 264
--#define SUN 265
--#define MON 266
--#define TUE 267
--#define WED 268
--#define THU 269
--#define FRI 270
--#define SAT 271
--#define TODAY 272
--#define TOMORROW 273
--#define NEXT 274
--#define MINUTE 275
--#define HOUR 276
--#define DAY 277
--#define WEEK 278
--#define MONTH 279
--#define YEAR 280
--#define JAN 281
--#define FEB 282
--#define MAR 283
--#define APR 284
--#define MAY 285
--#define JUN 286
--#define JUL 287
--#define AUG 288
--#define SEP 289
--#define OCT 290
--#define NOV 291
--#define DEC 292
--#define WORD 293
-+#define INT 257
-+#define NOW 258
-+#define AM 259
-+#define PM 260
-+#define NOON 261
-+#define MIDNIGHT 262
-+#define TEATIME 263
-+#define SUN 264
-+#define MON 265
-+#define TUE 266
-+#define WED 267
-+#define THU 268
-+#define FRI 269
-+#define SAT 270
-+#define TODAY 271
-+#define TOMORROW 272
-+#define NEXT 273
-+#define MINUTE 274
-+#define HOUR 275
-+#define DAY 276
-+#define WEEK 277
-+#define MONTH 278
-+#define YEAR 279
-+#define JAN 280
-+#define FEB 281
-+#define MAR 282
-+#define APR 283
-+#define MAY 284
-+#define JUN 285
-+#define JUL 286
-+#define AUG 287
-+#define SEP 288
-+#define OCT 289
-+#define NOV 290
-+#define DEC 291
-+#define WORD 292
-
- #line 1 "parsetime.y"
-
-@@ -55,30 +55,16 @@
- static int isgmt;
- static int time_only;
-
-+extern int yyerror(char *s);
-+extern int yylex();
-+
- int add_date(int number, int period);
-
--#line 17 "parsetime.y"
-+#line 20 "parsetime.y"
- typedef union {
- char * charval;
- int intval;
- } YYSTYPE;
--
--#ifndef YYLTYPE
--typedef
-- struct yyltype
-- {
-- int timestamp;
-- int first_line;
-- int first_column;
-- int last_line;
-- int last_column;
-- char *text;
-- }
-- yyltype;
--
--#define YYLTYPE yyltype
--#endif
--
- #include <stdio.h>
-
- #ifndef __cplusplus
-@@ -89,11 +75,11 @@
-
-
-
--#define YYFINAL 100
-+#define YYFINAL 104
- #define YYFLAG -32768
- #define YYNTBASE 47
-
--#define YYTRANSLATE(x) ((unsigned)(x) <= 293 ? yytranslate[x] : 67)
-+#define YYTRANSLATE(x) ((unsigned)(x) <= 292 ? yytranslate[x] : 69)
-
- static const char yytranslate[] = { 0,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-@@ -121,176 +107,203 @@
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-- 2, 2, 2, 2, 2, 1, 2, 3, 4, 5,
-- 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
-- 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
-- 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,
-- 36, 37, 38
-+ 2, 2, 2, 2, 2, 1, 3, 4, 5, 6,
-+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-+ 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
-+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
-+ 37, 38
- };
-
- #if YYDEBUG != 0
- static const short yyprhs[] = { 0,
-- 0, 2, 5, 8, 12, 15, 19, 21, 23, 26,
-- 29, 31, 33, 36, 40, 45, 48, 52, 57, 63,
-- 65, 67, 69, 72, 77, 79, 81, 83, 89, 95,
-- 99, 102, 106, 112, 116, 119, 122, 126, 128, 130,
-- 132, 134, 136, 138, 140, 142, 144, 146, 148, 150,
-- 152, 154, 156, 158, 160, 162, 164, 166, 168, 170,
-- 172, 174, 176, 178, 180, 182, 184, 186, 188, 190,
-- 192, 194, 196, 198, 200, 202, 204
-+ 0, 2, 4, 7, 10, 14, 16, 18, 21, 23,
-+ 25, 27, 28, 30, 33, 37, 42, 45, 49, 54,
-+ 60, 62, 64, 66, 69, 73, 78, 80, 82, 84,
-+ 90, 96, 100, 103, 107, 113, 115, 117, 121, 124,
-+ 127, 131, 133, 135, 137, 139, 141, 143, 145, 147,
-+ 149, 151, 153, 155, 157, 159, 161, 163, 165, 167,
-+ 169, 171, 173, 175, 177, 179, 181, 183, 185, 187,
-+ 189, 191, 193, 195, 197, 199, 201, 203, 205, 207,
-+ 209
- };
-
--static const short yyrhs[] = { 50,
-- 0, 50, 51, 0, 50, 52, 0, 50, 51, 52,
-- 0, 50, 53, 0, 50, 51, 53, 0, 48, 0,
-- 49, 0, 49, 52, 0, 49, 53, 0, 4, 0,
-- 55, 0, 55, 56, 0, 57, 66, 58, 0, 57,
-- 66, 58, 56, 0, 57, 59, 0, 57, 59, 56,
-- 0, 57, 66, 58, 59, 0, 57, 66, 58, 59,
-- 56, 0, 7, 0, 8, 0, 9, 0, 60, 62,
-- 0, 60, 62, 39, 63, 0, 64, 0, 17, 0,
-- 18, 0, 63, 40, 61, 40, 62, 0, 62, 41,
-- 61, 41, 63, 0, 62, 41, 61, 0, 62, 60,
-- 0, 62, 60, 63, 0, 61, 42, 62, 42, 63,
-- 0, 43, 65, 54, 0, 19, 54, 0, 19, 64,
-- 0, 40, 65, 54, 0, 20, 0, 21, 0, 22,
-- 0, 23, 0, 24, 0, 25, 0, 3, 0, 38,
-- 0, 55, 0, 3, 0, 5, 0, 6, 0, 26,
-- 0, 27, 0, 28, 0, 29, 0, 30, 0, 31,
-- 0, 32, 0, 33, 0, 34, 0, 35, 0, 36,
-- 0, 37, 0, 3, 0, 3, 0, 3, 0, 10,
-- 0, 11, 0, 12, 0, 13, 0, 14, 0, 15,
-- 0, 16, 0, 3, 0, 44, 0, 45, 0, 41,
-- 0, 46, 0, 39, 0
-+static const short yyrhs[] = { 52,
-+ 0, 51, 0, 51, 52, 0, 50, 53, 0, 50,
-+ 52, 53, 0, 48, 0, 49, 0, 49, 53, 0,
-+ 4, 0, 18, 0, 51, 0, 0, 57, 0, 57,
-+ 58, 0, 59, 68, 60, 0, 59, 68, 60, 58,
-+ 0, 59, 61, 0, 59, 61, 58, 0, 59, 68,
-+ 60, 61, 0, 59, 68, 60, 61, 58, 0, 7,
-+ 0, 8, 0, 9, 0, 62, 64, 0, 62, 64,
-+ 65, 0, 62, 64, 39, 65, 0, 66, 0, 17,
-+ 0, 18, 0, 65, 40, 63, 40, 64, 0, 64,
-+ 41, 63, 41, 65, 0, 64, 41, 63, 0, 64,
-+ 62, 0, 64, 62, 65, 0, 63, 42, 64, 42,
-+ 65, 0, 54, 0, 55, 0, 43, 67, 56, 0,
-+ 19, 56, 0, 19, 66, 0, 40, 67, 56, 0,
-+ 20, 0, 21, 0, 22, 0, 23, 0, 24, 0,
-+ 25, 0, 3, 0, 38, 0, 57, 0, 3, 0,
-+ 5, 0, 6, 0, 26, 0, 27, 0, 28, 0,
-+ 29, 0, 30, 0, 31, 0, 32, 0, 33, 0,
-+ 34, 0, 35, 0, 36, 0, 37, 0, 3, 0,
-+ 3, 0, 3, 0, 10, 0, 11, 0, 12, 0,
-+ 13, 0, 14, 0, 15, 0, 16, 0, 3, 0,
-+ 44, 0, 45, 0, 41, 0, 46, 0, 39, 0
- };
-
- #endif
-
- #if YYDEBUG != 0
- static const short yyrline[] = { 0,
-- 39, 43, 44, 45, 46, 47, 48, 51, 52, 53,
-- 56, 59, 60, 61, 62, 63, 64, 65, 66, 67,
-- 72, 78, 85, 86, 87, 91, 92, 96, 97, 98,
-- 99, 100, 101, 104, 108, 112, 118, 124, 125, 126,
-- 127, 128, 129, 132, 157, 170, 173, 183, 184, 197,
-- 198, 199, 200, 201, 202, 203, 204, 205, 206, 207,
-- 208, 211, 225, 238, 261, 262, 263, 264, 265, 266,
-- 267, 270, 280, 281, 282, 283, 284
-+ 42, 43, 47, 48, 49, 50, 53, 54, 57, 58,
-+ 64, 65, 67, 68, 69, 70, 71, 72, 73, 74,
-+ 75, 80, 86, 93, 94, 95, 96, 100, 101, 105,
-+ 106, 107, 108, 109, 110, 113, 114, 116, 120, 124,
-+ 130, 136, 137, 138, 139, 140, 141, 144, 215, 228,
-+ 231, 241, 251, 264, 265, 266, 267, 268, 269, 270,
-+ 271, 272, 273, 274, 275, 278, 292, 305, 328, 329,
-+ 330, 331, 332, 333, 334, 337, 347, 348, 349, 350,
-+ 351
- };
-+#endif
-+
-
--static const char * const yytname[] = { "$","error","$illegal.","INT","NOW",
-+#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-+
-+static const char * const yytname[] = { "$","error","$undefined.","INT","NOW",
- "AM","PM","NOON","MIDNIGHT","TEATIME","SUN","MON","TUE","WED","THU","FRI","SAT",
- "TODAY","TOMORROW","NEXT","MINUTE","HOUR","DAY","WEEK","MONTH","YEAR","JAN",
- "FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC","WORD","','",
--"'-'","'.'","'/'","'+'","':'","'\\''","'h'","timespec","nowspec","now","time",
--"date","increment","decrement","inc_period","hr24clock_hr_min","timezone_name",
--"hr24clock_hour","minute","am_pm","month_name","month_number","day_number","year_number",
--"day_of_week","inc_number","time_sep",""
-+"'-'","'.'","'/'","'+'","':'","'\\''","'h'","timespec","nowspec","now","time_or_not",
-+"time","date","inc_or_dec","increment","decrement","inc_period","hr24clock_hr_min",
-+"timezone_name","hr24clock_hour","minute","am_pm","month_name","month_number",
-+"day_number","year_number","day_of_week","inc_number","time_sep", NULL
- };
- #endif
-
- static const short yyr1[] = { 0,
-- 47, 47, 47, 47, 47, 47, 47, 48, 48, 48,
-- 49, 50, 50, 50, 50, 50, 50, 50, 50, 50,
-+ 47, 47, 47, 47, 47, 47, 48, 48, 49, 49,
- 50, 50, 51, 51, 51, 51, 51, 51, 51, 51,
-- 51, 51, 51, 52, 52, 52, 53, 54, 54, 54,
-- 54, 54, 54, 55, 56, 57, 58, 59, 59, 60,
-- 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
-- 60, 61, 62, 63, 64, 64, 64, 64, 64, 64,
-- 64, 65, 66, 66, 66, 66, 66
-+ 51, 51, 51, 52, 52, 52, 52, 52, 52, 52,
-+ 52, 52, 52, 52, 52, 53, 53, 54, 54, 54,
-+ 55, 56, 56, 56, 56, 56, 56, 57, 58, 59,
-+ 60, 61, 61, 62, 62, 62, 62, 62, 62, 62,
-+ 62, 62, 62, 62, 62, 63, 64, 65, 66, 66,
-+ 66, 66, 66, 66, 66, 67, 68, 68, 68, 68,
-+ 68
- };
-
- static const short yyr2[] = { 0,
-- 1, 2, 2, 3, 2, 3, 1, 1, 2, 2,
-- 1, 1, 2, 3, 4, 2, 3, 4, 5, 1,
-- 1, 1, 2, 4, 1, 1, 1, 5, 5, 3,
-- 2, 3, 5, 3, 2, 2, 3, 1, 1, 1,
-+ 1, 1, 2, 2, 3, 1, 1, 2, 1, 1,
-+ 1, 0, 1, 2, 3, 4, 2, 3, 4, 5,
-+ 1, 1, 1, 2, 3, 4, 1, 1, 1, 5,
-+ 5, 3, 2, 3, 5, 1, 1, 3, 2, 2,
-+ 3, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
-- 1, 1, 1, 1, 1, 1, 1
-+ 1
- };
-
--static const short yydefact[] = { 0,
-- 44, 11, 20, 21, 22, 7, 8, 1, 12, 0,
-- 0, 0, 0, 9, 10, 63, 65, 66, 67, 68,
-- 69, 70, 71, 26, 27, 50, 51, 52, 53, 54,
-- 55, 56, 57, 58, 59, 60, 61, 2, 3, 5,
-- 0, 0, 0, 0, 25, 45, 13, 48, 49, 77,
-- 75, 73, 74, 76, 16, 0, 38, 39, 40, 41,
-- 42, 43, 35, 36, 72, 0, 0, 4, 6, 63,
-- 23, 0, 0, 31, 0, 17, 47, 14, 37, 34,
-- 0, 0, 62, 30, 64, 32, 0, 15, 18, 24,
-- 0, 0, 0, 19, 33, 29, 28, 0, 0, 0
-+static const short yydefact[] = { 12,
-+ 48, 9, 21, 22, 23, 69, 70, 71, 72, 73,
-+ 74, 75, 28, 10, 54, 55, 56, 57, 58, 59,
-+ 60, 61, 62, 63, 64, 65, 6, 7, 0, 11,
-+ 1, 13, 0, 0, 0, 0, 0, 27, 0, 0,
-+ 0, 8, 36, 37, 67, 29, 0, 4, 3, 49,
-+ 14, 52, 53, 81, 79, 77, 78, 80, 17, 0,
-+ 67, 24, 0, 0, 33, 0, 42, 43, 44, 45,
-+ 46, 47, 39, 40, 76, 0, 0, 5, 18, 51,
-+ 15, 68, 0, 25, 0, 66, 32, 34, 0, 41,
-+ 38, 16, 19, 26, 0, 0, 0, 20, 35, 31,
-+ 30, 0, 0, 0
- };
-
--static const short yydefgoto[] = { 98,
-- 6, 7, 8, 38, 14, 15, 63, 9, 47, 10,
-- 78, 55, 41, 42, 43, 44, 45, 66, 56
-+static const short yydefgoto[] = { 102,
-+ 27, 28, 29, 30, 31, 42, 43, 44, 73, 32,
-+ 51, 33, 81, 59, 34, 35, 36, 37, 38, 76,
-+ 60
- };
-
--static const short yypact[] = { 8,
---32768,-32768,-32768,-32768,-32768,-32768, -14, 43, -4, 4,
-- 80, 5, 5,-32768,-32768, -12,-32768,-32768,-32768,-32768,
-+static const short yypact[] = { 114,
-+ -21,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
- -32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768,
---32768,-32768,-32768,-32768,-32768,-32768,-32768, -14,-32768,-32768,
-- 10, -6, 81, -8,-32768,-32768,-32768,-32768,-32768,-32768,
---32768,-32768,-32768,-32768, 9, 48,-32768,-32768,-32768,-32768,
---32768,-32768,-32768,-32768,-32768, -2, -2,-32768,-32768,-32768,
-- 25, 10, 63, 64, 63,-32768,-32768, 1,-32768,-32768,
-- 64, 26,-32768, 41,-32768,-32768, 44,-32768, 9,-32768,
-- 64, 64, 10,-32768,-32768,-32768,-32768, 85, 87,-32768
-+-32768,-32768,-32768,-32768,-32768,-32768,-32768, -13, 41, 79,
-+-32768, -4, 4, 22, -14, 142, -8,-32768, 174, 33,
-+ 33,-32768,-32768,-32768, -18,-32768, -13,-32768,-32768,-32768,
-+-32768,-32768,-32768,-32768,-32768,-32768,-32768,-32768, 9, 58,
-+-32768, 0, 22, 59, 61, 59,-32768,-32768,-32768,-32768,
-+-32768,-32768,-32768,-32768,-32768, -5, -5,-32768,-32768,-32768,
-+ 8,-32768, 61,-32768, 23,-32768, 25,-32768, 40,-32768,
-+-32768,-32768, 9,-32768, 61, 61, 22,-32768,-32768,-32768,
-+-32768, 83, 85,-32768
- };
-
- static const short yypgoto[] = {-32768,
---32768,-32768,-32768,-32768, -5, 6, -42,-32768, -51,-32768,
---32768, 11, 54, -10, -41, 7, 95, 106,-32768
-+-32768,-32768,-32768,-32768, -22, -24,-32768,-32768, -65,-32768,
-+ -55,-32768,-32768, 5, 51, -33, -34, 71, 49, 57,
-+-32768
- };
-
-
--#define YYLAST 122
-+#define YYLAST 199
-
-
--static const short yytable[] = { 71,
-- -46, -46, 39, 76, 11, 48, 49, 65, 48, 49,
-- 1, 2, 70, 40, 3, 4, 5, 57, 58, 59,
-- 60, 61, 62, 79, 80, 12, 88, -64, 13, -62,
-- 82, 75, 68, 46, -46, 72, -46, 94, 46, -46,
-- -46, -46, 50, 69, 51, 16, 46, 52, 53, 54,
-- 77, 97, 17, 18, 19, 20, 21, 22, 23, 24,
-- 25, 11, 84, 81, 87, 83, 85, 91, 26, 27,
-- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
-- 86, 92, 12, 93, 99, 13, 100, 90, 89, 17,
-- 18, 19, 20, 21, 22, 23, 74, 95, 96, 57,
-- 58, 59, 60, 61, 62, 64, 26, 27, 28, 29,
-- 30, 31, 32, 33, 34, 35, 36, 37, 67, 0,
-- 0, 73
-+static const short yytable[] = { 62,
-+ -50, -50, 82, 79, 48, 39, 47, 49, 52, 53,
-+ 90, 91, 52, 53, 67, 68, 69, 70, 71, 72,
-+ -66, -68, 78, -66, 61, 92, 40, 63, 85, 41,
-+ 87, 66, 89, 50, -50, 75, -50, 98, 83, -50,
-+ -50, -50, 54, 45, 55, 50, 50, 56, 57, 58,
-+ 6, 7, 8, 9, 10, 11, 12, 13, 46, 39,
-+ 80, 86, 101, 82, 95, 96, 15, 16, 17, 18,
-+ 19, 20, 21, 22, 23, 24, 25, 26, -2, 97,
-+ 40, 45, 103, 41, 104, 93, 65, 74, 6, 7,
-+ 8, 9, 10, 11, 12, 13, 46, 77, 0, 0,
-+ 0, 0, 0, 0, 15, 16, 17, 18, 19, 20,
-+ 21, 22, 23, 24, 25, 26, 1, 2, 0, 0,
-+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
-+ 13, 14, 84, 0, 0, 88, 0, 0, 0, 15,
-+ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
-+ 26, 0, 0, 94, 0, 0, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 0, 99, 100, 15, 16, 17,
-+ 18, 19, 20, 21, 22, 23, 24, 25, 26, 0,
-+ 0, 0, 64, 6, 7, 8, 9, 10, 11, 12,
-+ 0, 0, 0, 67, 68, 69, 70, 71, 72
- };
-
--static const short yycheck[] = { 41,
-- 5, 6, 8, 55, 19, 5, 6, 3, 5, 6,
-- 3, 4, 3, 8, 7, 8, 9, 20, 21, 22,
-- 23, 24, 25, 66, 67, 40, 78, 40, 43, 42,
-- 72, 40, 38, 38, 39, 42, 41, 89, 38, 44,
-- 45, 46, 39, 38, 41, 3, 38, 44, 45, 46,
-- 3, 93, 10, 11, 12, 13, 14, 15, 16, 17,
-- 18, 19, 73, 39, 75, 3, 3, 42, 26, 27,
-- 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
-- 74, 41, 40, 40, 0, 43, 0, 81, 78, 10,
-- 11, 12, 13, 14, 15, 16, 43, 91, 92, 20,
-- 21, 22, 23, 24, 25, 11, 26, 27, 28, 29,
-- 30, 31, 32, 33, 34, 35, 36, 37, 13, -1,
-- -1, 41
-+static const short yycheck[] = { 34,
-+ 5, 6, 3, 59, 29, 19, 29, 30, 5, 6,
-+ 76, 77, 5, 6, 20, 21, 22, 23, 24, 25,
-+ 42, 40, 47, 42, 3, 81, 40, 42, 63, 43,
-+ 64, 40, 66, 38, 39, 3, 41, 93, 39, 44,
-+ 45, 46, 39, 3, 41, 38, 38, 44, 45, 46,
-+ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
-+ 3, 3, 97, 3, 42, 41, 26, 27, 28, 29,
-+ 30, 31, 32, 33, 34, 35, 36, 37, 0, 40,
-+ 40, 3, 0, 43, 0, 81, 36, 39, 10, 11,
-+ 12, 13, 14, 15, 16, 17, 18, 41, -1, -1,
-+ -1, -1, -1, -1, 26, 27, 28, 29, 30, 31,
-+ 32, 33, 34, 35, 36, 37, 3, 4, -1, -1,
-+ 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-+ 17, 18, 62, -1, -1, 65, -1, -1, -1, 26,
-+ 27, 28, 29, 30, 31, 32, 33, 34, 35, 36,
-+ 37, -1, -1, 83, -1, -1, -1, -1, -1, -1,
-+ -1, -1, -1, -1, -1, 95, 96, 26, 27, 28,
-+ 29, 30, 31, 32, 33, 34, 35, 36, 37, -1,
-+ -1, -1, 41, 10, 11, 12, 13, 14, 15, 16,
-+ -1, -1, -1, 20, 21, 22, 23, 24, 25
- };
- /* -*-C-*- Note some compilers choke on comments on `#line' lines. */
--#line 3 "/usr/lib/bison.simple"
-+#line 3 "/usr/share/misc/bison.simple"
-+/* This file comes from bison-1.28. */
-
- /* Skeleton output parser for bison,
-- Copyright (C) 1984, 1989, 1990 Bob Corbett and Richard Stallman
-+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-
- 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 1, or (at your option)
-+ the Free Software Foundation; either version 2, or (at your option)
- any later version.
-
- This program is distributed in the hope that it will be useful,
-@@ -300,42 +313,66 @@
-
- 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
-+ Foundation, Inc., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-
--#ifndef alloca
-+/* This is the parser code that is written into each bison parser
-+ when the %semantic_parser declaration is not specified in the grammar.
-+ It was written by Richard Stallman by simplifying the hairy parser
-+ used when %semantic_parser is specified. */
-+
-+#ifndef YYSTACK_USE_ALLOCA
-+#ifdef alloca
-+#define YYSTACK_USE_ALLOCA
-+#else /* alloca not defined */
- #ifdef __GNUC__
-+#define YYSTACK_USE_ALLOCA
- #define alloca __builtin_alloca
- #else /* not GNU C. */
--#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi)
-+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-+#define YYSTACK_USE_ALLOCA
- #include <alloca.h>
- #else /* not sparc */
--#if defined (MSDOS) && !defined (__TURBOC__)
-+/* We think this test detects Watcom and Microsoft C. */
-+/* This used to test MSDOS, but that is a bad idea
-+ since that symbol is in the user namespace. */
-+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-+#if 0 /* No need for malloc.h, which pollutes the namespace;
-+ instead, just don't use alloca. */
- #include <malloc.h>
-+#endif
- #else /* not MSDOS, or __TURBOC__ */
- #if defined(_AIX)
--#include <malloc.h>
-+/* I don't know what this was needed for, but it pollutes the namespace.
-+ So I turned it off. rms, 2 May 1997. */
-+/* #include <malloc.h> */
- #pragma alloca
--#else /* not MSDOS, __TURBOC__, or _AIX */
--#ifdef __hpux
--#ifdef __cplusplus
--extern "C" {
--void *alloca (unsigned int);
--};
--#else /* not __cplusplus */
--void *alloca ();
--#endif /* not __cplusplus */
-+#define YYSTACK_USE_ALLOCA
-+#else /* not MSDOS, or __TURBOC__, or _AIX */
-+#if 0
-+#ifdef __hpux /* haible at ilog.fr says this works for HPUX 9.05 and up,
-+ and on HPUX 10. Eventually we can turn this on. */
-+#define YYSTACK_USE_ALLOCA
-+#define alloca __builtin_alloca
- #endif /* __hpux */
-+#endif
- #endif /* not _AIX */
- #endif /* not MSDOS, or __TURBOC__ */
--#endif /* not sparc. */
--#endif /* not GNU C. */
--#endif /* alloca not defined. */
-+#endif /* not sparc */
-+#endif /* not GNU C */
-+#endif /* alloca not defined */
-+#endif /* YYSTACK_USE_ALLOCA not defined */
-
--/* This is the parser code that is written into each bison parser
-- when the %semantic_parser declaration is not specified in the grammar.
-- It was written by Richard Stallman by simplifying the hairy parser
-- used when %semantic_parser is specified. */
-+#ifdef YYSTACK_USE_ALLOCA
-+#define YYSTACK_ALLOC alloca
-+#else
-+#define YYSTACK_ALLOC malloc
-+#endif
-
- /* Note: there must be only one dollar sign in this file.
- It is replaced by the list of actions, each action
-@@ -345,8 +382,8 @@
- #define yyclearin (yychar = YYEMPTY)
- #define YYEMPTY -2
- #define YYEOF 0
--#define YYACCEPT return(0)
--#define YYABORT return(1)
-+#define YYACCEPT goto yyacceptlab
-+#define YYABORT goto yyabortlab
- #define YYERROR goto yyerrlab1
- /* Like YYERROR except do call yyerror.
- This remains here temporarily to ease the
-@@ -375,10 +412,18 @@
-
- #ifdef YYPURE
- #ifdef YYLSP_NEEDED
-+#ifdef YYLEX_PARAM
-+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
-+#else
- #define YYLEX yylex(&yylval, &yylloc)
-+#endif
-+#else /* not YYLSP_NEEDED */
-+#ifdef YYLEX_PARAM
-+#define YYLEX yylex(&yylval, YYLEX_PARAM)
- #else
- #define YYLEX yylex(&yylval)
- #endif
-+#endif /* not YYLSP_NEEDED */
- #endif
-
- /* If nonreentrant, generate the variables here */
-@@ -419,24 +464,24 @@
- #ifndef YYMAXDEPTH
- #define YYMAXDEPTH 10000
- #endif
--
--/* Prevent warning if -Wstrict-prototypes. */
--#ifdef __GNUC__
--int yyparse (void);
--#endif
-
-+/* Define __yy_memcpy. Note that the size argument
-+ should be passed with type unsigned int, because that is what the non-GCC
-+ definitions require. With GCC, __builtin_memcpy takes an arg
-+ of type size_t, but it can handle unsigned int. */
-+
- #if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
--#define __yy_bcopy(FROM,TO,COUNT) __builtin_memcpy(TO,FROM,COUNT)
-+#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
- #else /* not GNU C or C++ */
- #ifndef __cplusplus
-
- /* This is the most reliable way to avoid incompatibilities
- in available built-in functions on various systems. */
- static void
--__yy_bcopy (from, to, count)
-- char *from;
-+__yy_memcpy (to, from, count)
- char *to;
-- int count;
-+ char *from;
-+ unsigned int count;
- {
- register char *f = from;
- register char *t = to;
-@@ -451,10 +496,10 @@
- /* This is the most reliable way to avoid incompatibilities
- in available built-in functions on various systems. */
- static void
--__yy_bcopy (char *from, char *to, int count)
-+__yy_memcpy (char *to, char *from, unsigned int count)
- {
-- register char *f = from;
- register char *t = to;
-+ register char *f = from;
- register int i = count;
-
- while (i-- > 0)
-@@ -464,9 +509,39 @@
- #endif
- #endif
-
--#line 184 "/usr/lib/bison.simple"
-+#line 217 "/usr/share/misc/bison.simple"
-+
-+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-+ into yyparse. The argument should have type void *.
-+ It should actually point to an object.
-+ Grammar actions can access the variable by casting it
-+ to the proper pointer type. */
-+
-+#ifdef YYPARSE_PARAM
-+#ifdef __cplusplus
-+#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-+#define YYPARSE_PARAM_DECL
-+#else /* not __cplusplus */
-+#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-+#endif /* not __cplusplus */
-+#else /* not YYPARSE_PARAM */
-+#define YYPARSE_PARAM_ARG
-+#define YYPARSE_PARAM_DECL
-+#endif /* not YYPARSE_PARAM */
-+
-+/* Prevent warning if -Wstrict-prototypes. */
-+#ifdef __GNUC__
-+#ifdef YYPARSE_PARAM
-+int yyparse (void *);
-+#else
-+int yyparse (void);
-+#endif
-+#endif
-+
- int
--yyparse()
-+yyparse(YYPARSE_PARAM_ARG)
-+ YYPARSE_PARAM_DECL
- {
- register int yystate;
- register int yyn;
-@@ -492,6 +567,7 @@
- #endif
-
- int yystacksize = YYINITDEPTH;
-+ int yyfree_stacks = 0;
-
- #ifdef YYPURE
- int yychar;
-@@ -576,18 +652,32 @@
- if (yystacksize >= YYMAXDEPTH)
- {
- yyerror("parser stack overflow");
-+ if (yyfree_stacks)
-+ {
-+ free (yyss);
-+ free (yyvs);
-+#ifdef YYLSP_NEEDED
-+ free (yyls);
-+#endif
-+ }
- return 2;
- }
- yystacksize *= 2;
- if (yystacksize > YYMAXDEPTH)
- yystacksize = YYMAXDEPTH;
-- yyss = (short *) alloca (yystacksize * sizeof (*yyssp));
-- __yy_bcopy ((char *)yyss1, (char *)yyss, size * sizeof (*yyssp));
-- yyvs = (YYSTYPE *) alloca (yystacksize * sizeof (*yyvsp));
-- __yy_bcopy ((char *)yyvs1, (char *)yyvs, size * sizeof (*yyvsp));
-+#ifndef YYSTACK_USE_ALLOCA
-+ yyfree_stacks = 1;
-+#endif
-+ yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-+ __yy_memcpy ((char *)yyss, (char *)yyss1,
-+ size * (unsigned int) sizeof (*yyssp));
-+ yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-+ __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-+ size * (unsigned int) sizeof (*yyvsp));
- #ifdef YYLSP_NEEDED
-- yyls = (YYLTYPE *) alloca (yystacksize * sizeof (*yylsp));
-- __yy_bcopy ((char *)yyls1, (char *)yyls, size * sizeof (*yylsp));
-+ yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-+ __yy_memcpy ((char *)yyls, (char *)yyls1,
-+ size * (unsigned int) sizeof (*yylsp));
- #endif
- #endif /* no yyoverflow */
-
-@@ -747,102 +837,154 @@
-
- switch (yyn) {
-
--case 1:
--#line 40 "parsetime.y"
-+case 2:
-+#line 44 "parsetime.y"
- {
- time_only = 1;
- ;
- break;}
--case 20:
--#line 68 "parsetime.y"
-+case 10:
-+#line 59 "parsetime.y"
-+{
-+ add_date(1, DAY);
-+ ;
-+ break;}
-+case 21:
-+#line 76 "parsetime.y"
- {
- exectm.tm_hour = 12;
- exectm.tm_min = 0;
- ;
- break;}
--case 21:
--#line 73 "parsetime.y"
-+case 22:
-+#line 81 "parsetime.y"
- {
- exectm.tm_hour = 0;
- exectm.tm_min = 0;
- add_date(1, DAY);
- ;
- break;}
--case 22:
--#line 79 "parsetime.y"
-+case 23:
-+#line 87 "parsetime.y"
- {
- exectm.tm_hour = 16;
- exectm.tm_min = 0;
- ;
- break;}
--case 25:
--#line 88 "parsetime.y"
-+case 27:
-+#line 97 "parsetime.y"
- {
-- add_date ((7 + yyvsp[0].intval - exectm.tm_wday) %7 + 1, DAY);
-+ add_date ((6 + yyvsp[0].intval - exectm.tm_wday) %7 + 1, DAY);
- ;
- break;}
--case 27:
--#line 93 "parsetime.y"
-+case 29:
-+#line 102 "parsetime.y"
- {
- add_date(1, DAY);
- ;
- break;}
--case 34:
--#line 105 "parsetime.y"
-+case 38:
-+#line 117 "parsetime.y"
- {
- add_date(yyvsp[-1].intval, yyvsp[0].intval);
- ;
- break;}
--case 35:
--#line 109 "parsetime.y"
-+case 39:
-+#line 121 "parsetime.y"
- {
- add_date(1, yyvsp[0].intval);
- ;
- break;}
--case 36:
--#line 113 "parsetime.y"
-+case 40:
-+#line 125 "parsetime.y"
- {
- add_date ((6 + yyvsp[0].intval - exectm.tm_wday) %7 +1, DAY);
- ;
- break;}
--case 37:
--#line 119 "parsetime.y"
-+case 41:
-+#line 131 "parsetime.y"
- {
- add_date(-yyvsp[-1].intval, yyvsp[0].intval);
- ;
- break;}
--case 38:
--#line 124 "parsetime.y"
-+case 42:
-+#line 136 "parsetime.y"
- { yyval.intval = MINUTE ; ;
- break;}
--case 39:
--#line 125 "parsetime.y"
-+case 43:
-+#line 137 "parsetime.y"
- { yyval.intval = HOUR ; ;
- break;}
--case 40:
--#line 126 "parsetime.y"
-+case 44:
-+#line 138 "parsetime.y"
- { yyval.intval = DAY ; ;
- break;}
--case 41:
--#line 127 "parsetime.y"
-+case 45:
-+#line 139 "parsetime.y"
- { yyval.intval = WEEK ; ;
- break;}
--case 42:
--#line 128 "parsetime.y"
-+case 46:
-+#line 140 "parsetime.y"
- { yyval.intval = MONTH ; ;
- break;}
--case 43:
--#line 129 "parsetime.y"
-+case 47:
-+#line 141 "parsetime.y"
- { yyval.intval = YEAR ; ;
- break;}
--case 44:
--#line 133 "parsetime.y"
-+case 48:
-+#line 145 "parsetime.y"
- {
-- exectm.tm_min = -1;
-- exectm.tm_hour = -1;
- if (strlen(yyvsp[0].charval) == 4) {
-+ exectm.tm_min = -1;
-+ exectm.tm_hour = -1;
- sscanf(yyvsp[0].charval, "%2d %2d", &exectm.tm_hour,
- &exectm.tm_min);
-+ } else if (strlen(yyvsp[0].charval) >= 5 && strlen(yyvsp[0].charval) <= 8) {
-+ /* Ok, this is a kluge. I hate design errors... -Joey */
-+ char shallot[5];
-+ char *onion;
-+
-+ onion=yyvsp[0].charval;
-+ memset (shallot, 0, sizeof (shallot));
-+ if (strlen(yyvsp[0].charval) == 5 || strlen(yyvsp[0].charval) == 7) {
-+ strncpy (shallot,onion,1);
-+ onion++;
-+ } else {
-+ strncpy (shallot,onion,2);
-+ onion+=2;
-+ }
-+ sscanf(shallot, "%d", &exectm.tm_mon);
-+
-+ if (exectm.tm_mon < 1 || exectm.tm_mon > 12) {
-+ yyerror("Error in month number");
-+ YYERROR;
-+ }
-+ exectm.tm_mon--;
-+
-+ memset (shallot, 0, sizeof (shallot));
-+ strncpy (shallot,onion,2);
-+ sscanf(shallot, "%d", &exectm.tm_mday);
-+ if (exectm.tm_mday < 0 || exectm.tm_mday > 31)
-+ {
-+ yyerror("Error in day of month");
-+ YYERROR;
-+ }
-+
-+ onion+=2;
-+ memset (shallot, 0, sizeof (shallot));
-+ strncpy (shallot,onion,4);
-+ if ( sscanf(shallot, "%d", &exectm.tm_year) != 1) {
-+ yyerror("Error in year");
-+ YYERROR;
-+ }
-+ if (exectm.tm_year < 70) {
-+ exectm.tm_year += 100;
-+ }
-+ else if (exectm.tm_year > 1900) {
-+ exectm.tm_year -= 1900;
-+ }
-+
-+ free (yyvsp[0].charval);
- }
- else {
- sscanf(yyvsp[0].charval, "%d", &exectm.tm_hour);
-@@ -855,13 +997,13 @@
- YYERROR;
- }
- if (exectm.tm_hour > 24 || exectm.tm_hour < 0) {
-- yyerror("Problem in minutes specification");
-+ yyerror("Problem in hours specification");
- YYERROR;
- }
- ;
- break;}
--case 45:
--#line 158 "parsetime.y"
-+case 49:
-+#line 216 "parsetime.y"
- {
- if (strcasecmp(yyvsp[0].charval,"utc") == 0) {
- isgmt = 1;
-@@ -873,8 +1015,8 @@
- free(yyvsp[0].charval);
- ;
- break;}
--case 47:
--#line 174 "parsetime.y"
-+case 51:
-+#line 232 "parsetime.y"
- {
- if (sscanf(yyvsp[0].charval, "%d", &exectm.tm_min) != 1) {
- yyerror("Error in minute");
-@@ -883,8 +1025,20 @@
- free(yyvsp[0].charval);
- ;
- break;}
--case 49:
--#line 185 "parsetime.y"
-+case 52:
-+#line 242 "parsetime.y"
-+{
-+ if (exectm.tm_hour > 12) {
-+ yyerror("Hour too large for AM");
-+ YYERROR;
-+ }
-+ else if (exectm.tm_hour == 12) {
-+ exectm.tm_hour = 0;
-+ }
-+ ;
-+ break;}
-+case 53:
-+#line 252 "parsetime.y"
- {
- if (exectm.tm_hour > 12) {
- yyerror("Hour too large for PM");
-@@ -895,56 +1049,56 @@
- }
- ;
- break;}
--case 50:
--#line 197 "parsetime.y"
-+case 54:
-+#line 264 "parsetime.y"
- { exectm.tm_mon = 0; ;
- break;}
--case 51:
--#line 198 "parsetime.y"
-+case 55:
-+#line 265 "parsetime.y"
- { exectm.tm_mon = 1; ;
- break;}
--case 52:
--#line 199 "parsetime.y"
-+case 56:
-+#line 266 "parsetime.y"
- { exectm.tm_mon = 2; ;
- break;}
--case 53:
--#line 200 "parsetime.y"
-+case 57:
-+#line 267 "parsetime.y"
- { exectm.tm_mon = 3; ;
- break;}
--case 54:
--#line 201 "parsetime.y"
-+case 58:
-+#line 268 "parsetime.y"
- { exectm.tm_mon = 4; ;
- break;}
--case 55:
--#line 202 "parsetime.y"
-+case 59:
-+#line 269 "parsetime.y"
- { exectm.tm_mon = 5; ;
- break;}
--case 56:
--#line 203 "parsetime.y"
-+case 60:
-+#line 270 "parsetime.y"
- { exectm.tm_mon = 6; ;
- break;}
--case 57:
--#line 204 "parsetime.y"
-+case 61:
-+#line 271 "parsetime.y"
- { exectm.tm_mon = 7; ;
- break;}
--case 58:
--#line 205 "parsetime.y"
-+case 62:
-+#line 272 "parsetime.y"
- { exectm.tm_mon = 8; ;
- break;}
--case 59:
--#line 206 "parsetime.y"
-+case 63:
-+#line 273 "parsetime.y"
- { exectm.tm_mon = 9; ;
- break;}
--case 60:
--#line 207 "parsetime.y"
-+case 64:
-+#line 274 "parsetime.y"
- { exectm.tm_mon =10; ;
- break;}
--case 61:
--#line 208 "parsetime.y"
-+case 65:
-+#line 275 "parsetime.y"
- { exectm.tm_mon =11; ;
- break;}
--case 62:
--#line 212 "parsetime.y"
-+case 66:
-+#line 279 "parsetime.y"
- {
- {
- int mnum = -1;
-@@ -959,8 +1113,8 @@
- }
- ;
- break;}
--case 63:
--#line 226 "parsetime.y"
-+case 67:
-+#line 293 "parsetime.y"
- {
- exectm.tm_mday = -1;
- sscanf(yyvsp[0].charval, "%d", &exectm.tm_mday);
-@@ -972,8 +1126,8 @@
- free(yyvsp[0].charval);
- ;
- break;}
--case 64:
--#line 239 "parsetime.y"
-+case 68:
-+#line 306 "parsetime.y"
- {
- {
- int ynum;
-@@ -994,36 +1148,36 @@
- }
- ;
- break;}
--case 65:
--#line 261 "parsetime.y"
-+case 69:
-+#line 328 "parsetime.y"
- { yyval.intval = 0; ;
- break;}
--case 66:
--#line 262 "parsetime.y"
-+case 70:
-+#line 329 "parsetime.y"
- { yyval.intval = 1; ;
- break;}
--case 67:
--#line 263 "parsetime.y"
-+case 71:
-+#line 330 "parsetime.y"
- { yyval.intval = 2; ;
- break;}
--case 68:
--#line 264 "parsetime.y"
-+case 72:
-+#line 331 "parsetime.y"
- { yyval.intval = 3; ;
- break;}
--case 69:
--#line 265 "parsetime.y"
-+case 73:
-+#line 332 "parsetime.y"
- { yyval.intval = 4; ;
- break;}
--case 70:
--#line 266 "parsetime.y"
-+case 74:
-+#line 333 "parsetime.y"
- { yyval.intval = 5; ;
- break;}
--case 71:
--#line 267 "parsetime.y"
-+case 75:
-+#line 334 "parsetime.y"
- { yyval.intval = 6; ;
- break;}
--case 72:
--#line 271 "parsetime.y"
-+case 76:
-+#line 338 "parsetime.y"
- {
- if (sscanf(yyvsp[0].charval, "%d", &yyval.intval) != 1) {
- yyerror("Unknown increment");
-@@ -1034,7 +1188,7 @@
- break;}
- }
- /* the action file gets copied in in place of this dollarsign */
--#line 465 "/usr/lib/bison.simple"
-+#line 543 "/usr/share/misc/bison.simple"
-
- yyvsp -= yylen;
- yyssp -= yylen;
-@@ -1229,8 +1383,32 @@
-
- yystate = yyn;
- goto yynewstate;
-+
-+ yyacceptlab:
-+ /* YYACCEPT comes here. */
-+ if (yyfree_stacks)
-+ {
-+ free (yyss);
-+ free (yyvs);
-+#ifdef YYLSP_NEEDED
-+ free (yyls);
-+#endif
-+ }
-+ return 0;
-+
-+ yyabortlab:
-+ /* YYABORT comes here. */
-+ if (yyfree_stacks)
-+ {
-+ free (yyss);
-+ free (yyvs);
-+#ifdef YYLSP_NEEDED
-+ free (yyls);
-+#endif
-+ }
-+ return 1;
- }
--#line 287 "parsetime.y"
-+#line 354 "parsetime.y"
-
-
-
-@@ -1266,6 +1444,24 @@
- }
-
- #ifdef TEST_PARSER
-+/*
-+
-+Here are some lines to test:
-+
-+./parsetest 7AM Mar 24 2000
-+./parsetest 7AM Mar 24 00
-+./parsetest 7AM 032400
-+./parsetest 7AM 03/24/00
-+./parsetest 7AM 24.03.00
-+./parsetest 7AM Mar 24
-+
-+./parsetest 03242000
-+./parsetest noon 03242000
-+./parsetest 5:30
-+./parsetest 4pm + 3 days
-+./parsetest 10am Jul 31
-+
-+ */
- int
- main(int argc, char **argv)
- {
---- at-3.1.8.orig/y.tab.h
-+++ at-3.1.8/y.tab.h
-@@ -2,42 +2,42 @@
- char * charval;
- int intval;
- } YYSTYPE;
--#define INT 258
--#define NOW 259
--#define AM 260
--#define PM 261
--#define NOON 262
--#define MIDNIGHT 263
--#define TEATIME 264
--#define SUN 265
--#define MON 266
--#define TUE 267
--#define WED 268
--#define THU 269
--#define FRI 270
--#define SAT 271
--#define TODAY 272
--#define TOMORROW 273
--#define NEXT 274
--#define MINUTE 275
--#define HOUR 276
--#define DAY 277
--#define WEEK 278
--#define MONTH 279
--#define YEAR 280
--#define JAN 281
--#define FEB 282
--#define MAR 283
--#define APR 284
--#define MAY 285
--#define JUN 286
--#define JUL 287
--#define AUG 288
--#define SEP 289
--#define OCT 290
--#define NOV 291
--#define DEC 292
--#define WORD 293
-+#define INT 257
-+#define NOW 258
-+#define AM 259
-+#define PM 260
-+#define NOON 261
-+#define MIDNIGHT 262
-+#define TEATIME 263
-+#define SUN 264
-+#define MON 265
-+#define TUE 266
-+#define WED 267
-+#define THU 268
-+#define FRI 269
-+#define SAT 270
-+#define TODAY 271
-+#define TOMORROW 272
-+#define NEXT 273
-+#define MINUTE 274
-+#define HOUR 275
-+#define DAY 276
-+#define WEEK 277
-+#define MONTH 278
-+#define YEAR 279
-+#define JAN 280
-+#define FEB 281
-+#define MAR 282
-+#define APR 283
-+#define MAY 284
-+#define JUN 285
-+#define JUL 286
-+#define AUG 287
-+#define SEP 288
-+#define OCT 289
-+#define NOV 290
-+#define DEC 291
-+#define WORD 292
-
-
- extern YYSTYPE yylval;
---- at-3.1.8.orig/lex.yy.c
-+++ at-3.1.8/lex.yy.c
-@@ -1,7 +1,7 @@
- /* A lexical scanner generated by flex */
-
- /* Scanner skeleton version:
-- * $Header$
-+ * $Header$
- */
-
- #define FLEX_SCANNER
-@@ -126,6 +126,7 @@
- { \
- /* Undo effects of setting up yytext. */ \
- *yy_cp = yy_hold_char; \
-+ YY_RESTORE_YY_MORE_OFFSET \
- yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \
- YY_DO_BEFORE_ACTION; /* set up yytext again */ \
- } \
-@@ -235,7 +236,7 @@
- #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer )
-
- YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size ));
--YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str ));
-+YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str ));
- YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len ));
-
- static void *yy_flex_alloc YY_PROTO(( yy_size_t ));
-@@ -456,6 +457,7 @@
- #define REJECT reject_used_but_not_detected
- #define yymore() yymore_used_but_not_detected
- #define YY_MORE_ADJ 0
-+#define YY_RESTORE_YY_MORE_OFFSET
- char *yytext;
- #line 1 "parsetime.l"
- #define INITIAL 0
-@@ -491,7 +493,7 @@
- result = 1; \
- } \
- } while(0)
--#line 495 "lex.yy.c"
-+#line 497 "lex.yy.c"
-
- /* Macros after this point can all be overridden by user definitions in
- * section 1.
-@@ -513,6 +515,10 @@
- static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int ));
- #endif
-
-+#ifdef YY_NEED_STRLEN
-+static int yy_flex_strlen YY_PROTO(( yyconst char * ));
-+#endif
-+
- #ifndef YY_NO_INPUT
- #ifdef __cplusplus
- static int yyinput YY_PROTO(( void ));
-@@ -641,7 +647,7 @@
- #line 36 "parsetime.l"
-
-
--#line 645 "lex.yy.c"
-+#line 651 "lex.yy.c"
-
- if ( yy_init )
- {
-@@ -919,7 +925,7 @@
- #line 77 "parsetime.l"
- ECHO;
- YY_BREAK
--#line 923 "lex.yy.c"
-+#line 929 "lex.yy.c"
- case YY_STATE_EOF(INITIAL):
- yyterminate();
-
-@@ -930,6 +936,7 @@
-
- /* Undo the effects of YY_DO_BEFORE_ACTION. */
- *yy_cp = yy_hold_char;
-+ YY_RESTORE_YY_MORE_OFFSET
-
- if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW )
- {
-@@ -1075,7 +1082,7 @@
- { /* Don't try to fill the buffer, so this is an EOF. */
- if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 )
- {
-- /* We matched a singled characater, the EOB, so
-+ /* We matched a single character, the EOB, so
- * treat this as a final EOF.
- */
- return EOB_ACT_END_OF_FILE;
-@@ -1102,7 +1109,7 @@
- /* don't do the read, it's not guaranteed to return an EOF,
- * just force an EOF
- */
-- yy_n_chars = 0;
-+ yy_current_buffer->yy_n_chars = yy_n_chars = 0;
-
- else
- {
-@@ -1157,6 +1164,8 @@
- /* Read in more data. */
- YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]),
- yy_n_chars, num_to_read );
-+
-+ yy_current_buffer->yy_n_chars = yy_n_chars;
- }
-
- if ( yy_n_chars == 0 )
-@@ -1281,7 +1290,8 @@
-
- yy_cp += (int) (dest - source);
- yy_bp += (int) (dest - source);
-- yy_n_chars = yy_current_buffer->yy_buf_size;
-+ yy_current_buffer->yy_n_chars =
-+ yy_n_chars = yy_current_buffer->yy_buf_size;
-
- if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 )
- YY_FATAL_ERROR( "flex scanner push-back overflow" );
-@@ -1319,19 +1329,31 @@
-
- else
- { /* need more input */
-- yytext_ptr = yy_c_buf_p;
-+ int offset = yy_c_buf_p - yytext_ptr;
- ++yy_c_buf_p;
-
- switch ( yy_get_next_buffer() )
- {
-+ case EOB_ACT_LAST_MATCH:
-+ /* This happens because yy_g_n_b()
-+ * sees that we've accumulated a
-+ * token and flags that we need to
-+ * try matching the token before
-+ * proceeding. But for input(),
-+ * there's no matching to consider.
-+ * So convert the EOB_ACT_LAST_MATCH
-+ * to EOB_ACT_END_OF_FILE.
-+ */
-+
-+ /* Reset buffer status. */
-+ yyrestart( yyin );
-+
-+ /* fall through */
-+
- case EOB_ACT_END_OF_FILE:
- {
- if ( yywrap() )
-- {
-- yy_c_buf_p =
-- yytext_ptr + YY_MORE_ADJ;
- return EOF;
-- }
-
- if ( ! yy_did_buffer_switch_on_eof )
- YY_NEW_FILE;
-@@ -1343,17 +1365,8 @@
- }
-
- case EOB_ACT_CONTINUE_SCAN:
-- yy_c_buf_p = yytext_ptr + YY_MORE_ADJ;
-+ yy_c_buf_p = yytext_ptr + offset;
- break;
--
-- case EOB_ACT_LAST_MATCH:
--#ifdef __cplusplus
-- YY_FATAL_ERROR(
-- "unexpected last match in yyinput()" );
--#else
-- YY_FATAL_ERROR(
-- "unexpected last match in input()" );
--#endif
- }
- }
- }
-@@ -1517,6 +1530,9 @@
- #endif
-
- {
-+ if ( ! b )
-+ return;
-+
- b->yy_n_chars = 0;
-
- /* We always need two end-of-buffer characters. The first causes
-@@ -1576,17 +1592,17 @@
-
- #ifndef YY_NO_SCAN_STRING
- #ifdef YY_USE_PROTOS
--YY_BUFFER_STATE yy_scan_string( yyconst char *str )
-+YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str )
- #else
--YY_BUFFER_STATE yy_scan_string( str )
--yyconst char *str;
-+YY_BUFFER_STATE yy_scan_string( yy_str )
-+yyconst char *yy_str;
- #endif
- {
- int len;
-- for ( len = 0; str[len]; ++len )
-+ for ( len = 0; yy_str[len]; ++len )
- ;
-
-- return yy_scan_bytes( str, len );
-+ return yy_scan_bytes( yy_str, len );
- }
- #endif
-
-@@ -1707,7 +1723,7 @@
- { \
- /* Undo effects of setting up yytext. */ \
- yytext[yyleng] = yy_hold_char; \
-- yy_c_buf_p = yytext + n - YY_MORE_ADJ; \
-+ yy_c_buf_p = yytext + n; \
- yy_hold_char = *yy_c_buf_p; \
- *yy_c_buf_p = '\0'; \
- yyleng = n; \
-@@ -1730,6 +1746,22 @@
- register int i;
- for ( i = 0; i < n; ++i )
- s1[i] = s2[i];
-+ }
-+#endif
-+
-+#ifdef YY_NEED_STRLEN
-+#ifdef YY_USE_PROTOS
-+static int yy_flex_strlen( yyconst char *s )
-+#else
-+static int yy_flex_strlen( s )
-+yyconst char *s;
-+#endif
-+ {
-+ register int n;
-+ for ( n = 0; s[n]; ++n )
-+ ;
-+
-+ return n;
- }
- #endif
-
---- at-3.1.8.orig/Makefile.in
-+++ at-3.1.8/Makefile.in
-@@ -131,6 +133,7 @@
-
- clean:
- rm -f subs.sed *.o *.s at atd core a.out *~ $(CLONES) *.bak stamp-built
-+ rm -f parsetest
-
- distclean: clean
- rm -rf at.1 atd.8 atrun.8 config.cache atrun config.h \
-@@ -144,6 +147,9 @@
-
- Filelist.asc: Filelist
- pgp -sba Filelist
-+
-+parsetest: lex.yy.c y.tab.c
-+ $(CC) -o parsetest $(CFLAGS) $(DEFS) -DTEST_PARSER -DNEED_YYWRAP lex.yy.c y.tab.c
-
- .depend: $(CSRCS)
- gcc $(CFLAGS) $(DEFS) -MM $(CSRCS) > .depend
---- at-3.1.8.orig/parsetime.y
-+++ at-3.1.8/parsetime.y
-@@ -11,6 +11,9 @@
- static int isgmt;
- static int time_only;
-
-+extern int yyerror(char *s);
-+extern int yylex();
-+
- int add_date(int number, int period);
- %}
-
-@@ -36,26 +39,31 @@
-
- %start timespec
- %%
--timespec : time
-+timespec : date
-+ | time
- {
- time_only = 1;
- }
- | time date
-- | time increment
-- | time date increment
-- | time decrement
-- | time date decrement
-+ | time_or_not inc_or_dec
-+ | time_or_not date inc_or_dec
- | nowspec
- ;
-
- nowspec : now
-- | now increment
-- | now decrement
-+ | now inc_or_dec
- ;
-
- now : NOW
-+ | TOMORROW
-+ {
-+ add_date(1, DAY);
-+ }
- ;
-
-+time_or_not : time
-+ |
-+
- time : hr24clock_hr_min
- | hr24clock_hr_min timezone_name
- | hr24clock_hour time_sep minute
-@@ -83,10 +91,11 @@
- ;
-
- date : month_name day_number
-+ | month_name day_number year_number
- | month_name day_number ',' year_number
- | day_of_week
- {
-- add_date ((7 + $1 - exectm.tm_wday) %7 + 1, DAY);
-+ add_date ((6 + $1 - exectm.tm_wday) %7 + 1, DAY);
- }
- | TODAY
- | TOMORROW
-@@ -101,6 +110,9 @@
- | month_number '/' day_number '/' year_number
- ;
-
-+inc_or_dec : increment
-+ | decrement
-+
- increment : '+' inc_number inc_period
- {
- add_date($2, $3);
-@@ -131,11 +143,57 @@
-
- hr24clock_hr_min: INT
- {
-- exectm.tm_min = -1;
-- exectm.tm_hour = -1;
- if (strlen($1) == 4) {
-+ exectm.tm_min = -1;
-+ exectm.tm_hour = -1;
- sscanf($1, "%2d %2d", &exectm.tm_hour,
- &exectm.tm_min);
-+ } else if (strlen($1) >= 5 && strlen($1) <= 8) {
-+ /* Ok, this is a kluge. I hate design errors... -Joey */
-+ char shallot[5];
-+ char *onion;
-+
-+ onion=$1;
-+ memset (shallot, 0, sizeof (shallot));
-+ if (strlen($1) == 5 || strlen($1) == 7) {
-+ strncpy (shallot,onion,1);
-+ onion++;
-+ } else {
-+ strncpy (shallot,onion,2);
-+ onion+=2;
-+ }
-+ sscanf(shallot, "%d", &exectm.tm_mon);
-+
-+ if (exectm.tm_mon < 1 || exectm.tm_mon > 12) {
-+ yyerror("Error in month number");
-+ YYERROR;
-+ }
-+ exectm.tm_mon--;
-+
-+ memset (shallot, 0, sizeof (shallot));
-+ strncpy (shallot,onion,2);
-+ sscanf(shallot, "%d", &exectm.tm_mday);
-+ if (exectm.tm_mday < 0 || exectm.tm_mday > 31)
-+ {
-+ yyerror("Error in day of month");
-+ YYERROR;
-+ }
-+
-+ onion+=2;
-+ memset (shallot, 0, sizeof (shallot));
-+ strncpy (shallot,onion,4);
-+ if ( sscanf(shallot, "%d", &exectm.tm_year) != 1) {
-+ yyerror("Error in year");
-+ YYERROR;
-+ }
-+ if (exectm.tm_year < 70) {
-+ exectm.tm_year += 100;
-+ }
-+ else if (exectm.tm_year > 1900) {
-+ exectm.tm_year -= 1900;
-+ }
-+
-+ free ($1);
- }
- else {
- sscanf($1, "%d", &exectm.tm_hour);
-@@ -148,7 +206,7 @@
- YYERROR;
- }
- if (exectm.tm_hour > 24 || exectm.tm_hour < 0) {
-- yyerror("Problem in minutes specification");
-+ yyerror("Problem in hours specification");
- YYERROR;
- }
- }
-@@ -181,6 +239,15 @@
- ;
-
- am_pm : AM
-+ {
-+ if (exectm.tm_hour > 12) {
-+ yyerror("Hour too large for AM");
-+ YYERROR;
-+ }
-+ else if (exectm.tm_hour == 12) {
-+ exectm.tm_hour = 0;
-+ }
-+ }
- | PM
- {
- if (exectm.tm_hour > 12) {
-@@ -319,6 +386,24 @@
- }
-
- #ifdef TEST_PARSER
-+/*
-+
-+Here are some lines to test:
-+
-+./parsetest 7AM Mar 24 2000
-+./parsetest 7AM Mar 24 00
-+./parsetest 7AM 032400
-+./parsetest 7AM 03/24/00
-+./parsetest 7AM 24.03.00
-+./parsetest 7AM Mar 24
-+
-+./parsetest 03242000
-+./parsetest noon 03242000
-+./parsetest 5:30
-+./parsetest 4pm + 3 days
-+./parsetest 10am Jul 31
-+
-+ */
- int
- main(int argc, char **argv)
- {
diff --git a/at-dst.patch b/at-dst.patch
deleted file mode 100644
index 3cf51cc..0000000
--- a/at-dst.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -u at-3.1.8/parsetime.y.orig at-3.1.8/parsetime.y
---- at-3.1.8/parsetime.y.orig Sun Mar 4 18:13:06 2001
-+++ at-3.1.8/parsetime.y Sun Mar 4 18:26:04 2001
-@@ -593,6 +593,9 @@
-
- case YEAR:
- exectm.tm_year += number;
-+ /* Recalculate tm_isdst so we don't get a +-1 hour creep */
-+ exectm.tm_isdst = -1;
-+ (void) mktime(&exectm);
- break;
-
- default:
diff --git a/at-env-tng.patch b/at-env-tng.patch
deleted file mode 100644
index 66fd6d9..0000000
--- a/at-env-tng.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- at-3.1.8/at.c.env Fri Jul 20 01:37:01 2001
-+++ at-3.1.8/at.c Fri Jul 20 01:43:58 2001
-@@ -357,24 +357,27 @@
- */
- for (atenv = environ; *atenv != NULL; atenv++) {
- int export = 1;
-- char *eqp;
-+ char *pch;
-+ char * eqp = *atenv;
-+ char * valp = *atenv;
-
-- eqp = strchr(*atenv, '=');
-- if (ap == NULL)
-- eqp = *atenv;
-- else {
-+ if ((pch = strchr(*atenv, '=')) != 0) {
- unsigned int i;
-+
-+ eqp = pch;
-+ valp = pch + 1;
- for (i = 0; i < sizeof(no_export) / sizeof(no_export[0]); i++) {
- export = export
- && (strncmp(*atenv, no_export[i],
- (size_t) (eqp - *atenv)) != 0);
- }
-- eqp++;
-- }
-+ } else {
-+ continue; /* no '=', so bail on this one */
-+ }
-
- if (export) {
-- fwrite(*atenv, sizeof(char), eqp - *atenv, fp);
-- for (ap = eqp; *ap != '\0'; ap++) {
-+ fwrite(*atenv, sizeof(char), valp - *atenv, fp);
-+ for (ap = valp; *ap != '\0'; ap++) {
- if (*ap == '\n')
- fprintf(fp, "\"\n\"");
- else {
-@@ -405,7 +408,7 @@
- }
- }
- fputs("; export ", fp);
-- fwrite(*atenv, sizeof(char), eqp - *atenv - 1, fp);
-+ fwrite(*atenv, sizeof(char), eqp - *atenv, fp);
- fputc('\n', fp);
-
- }
diff --git a/at-heapcorruption.patch b/at-heapcorruption.patch
deleted file mode 100644
index 0b6fa21..0000000
--- a/at-heapcorruption.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff -ruN ../at-3.1.8.orig/parsetime.y ./parsetime.y
---- ../at-3.1.8.orig/parsetime.y Mon Jan 14 17:59:09 2002
-+++ ./parsetime.y Mon Jan 14 18:01:22 2002
-@@ -193,7 +193,6 @@
- exectm.tm_year -= 1900;
- }
-
-- free ($1);
- }
- else {
- sscanf($1, "%d", &exectm.tm_hour);
-@@ -369,6 +368,8 @@
- time_only = 0;
- if (yyparse() == 0) {
- exectime = mktime(&exectm);
-+ if (exectime == (time_t)-1)
-+ return 0;
- if (isgmt) {
- exectime += timezone;
- if (daylight) {
-@@ -432,6 +433,8 @@
- {
- time_t timeval;
- timeval = mktime(tm);
-+ if (timeval == (time_t)-1)
-+ timeval = (time_t)0;
- timeval += numsec;
- *tm = *localtime(&timeval);
- }
diff --git a/at-install.patch b/at-install.patch
deleted file mode 100644
index a032d88..0000000
--- a/at-install.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-diff -Nur at-3.1.8/Makefile.in at-3.1.8.pld/Makefile.in
---- at-3.1.8/Makefile.in Sun Sep 28 22:00:38 1997
-+++ at-3.1.8.pld/Makefile.in Thu Dec 31 12:29:41 1998
-@@ -87,35 +87,33 @@
- $(CC) -c $(CFLAGS) $(DEFS) $*.c
-
- install: all
-- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(etcdir)
-- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(bindir)
-- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(sbindir)
-- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(docdir)
-- $(INSTALL) -g root -o root -m 755 -d $(IROOT)$(atdocdir)
-+ $(INSTALL) -m 755 -d $(IROOT)$(etcdir)
-+ $(INSTALL) -m 755 -d $(IROOT)$(bindir)
-+ $(INSTALL) -m 755 -d $(IROOT)$(sbindir)
-+ $(INSTALL) -m 755 -d $(IROOT)$(docdir)
-+ $(INSTALL) -m 755 -d $(IROOT)$(atdocdir)
- $(INSTALL) -m 755 -d $(IROOT)$(ATJOB_DIR)
-- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR)
-+ $(INSTALL) -m 755 -d $(IROOT)$(ATSPOOL_DIR)
- chmod 700 $(IROOT)$(ATJOB_DIR) $(IROOT)$(ATSPOOL_DIR)
-- chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(ATJOB_DIR) $(IROOT)$(ATSPOOL_DIR)
- touch $(IROOT)$(LFILE)
- chmod 600 $(IROOT)$(LFILE)
-- chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(IROOT)$(LFILE)
-- test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -o root -m 600 at.deny $(IROOT)$(etcdir)/
-- $(INSTALL) -g root -o root -m 4755 -s at $(IROOT)$(bindir)
-+ test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -m 600 at.deny $(IROOT)$(etcdir)/
-+ $(INSTALL) -m 4755 -s at $(IROOT)$(bindir)
- $(LN_S) -f at $(IROOT)$(bindir)/atq
- $(LN_S) -f at $(IROOT)$(bindir)/atrm
-- $(INSTALL) -g root -o root -m 755 batch $(IROOT)$(bindir)
-- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man1dir)
-- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man5dir)
-- $(INSTALL) -d -o root -g root -m 755 $(IROOT)$(man8dir)
-- $(INSTALL) -g root -o root -m 755 -s atd $(IROOT)$(sbindir)
-- $(INSTALL) -g root -o root -m 755 atrun $(IROOT)$(sbindir)
-- $(INSTALL) -g root -o root -m 644 at.1 $(IROOT)$(man1dir)/
-+ $(INSTALL) -m 755 batch $(IROOT)$(bindir)
-+ $(INSTALL) -m 755 -d $(IROOT)$(man1dir)
-+ $(INSTALL) -m 755 -d $(IROOT)$(man5dir)
-+ $(INSTALL) -m 755 -d $(IROOT)$(man8dir)
-+ $(INSTALL) -m 755 -s atd $(IROOT)$(sbindir)
-+ $(INSTALL) -m 755 atrun $(IROOT)$(sbindir)
-+ $(INSTALL) -m 644 at.1 $(IROOT)$(man1dir)/
- cd $(IROOT)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1
-- $(INSTALL) -g root -o root -m 644 atd.8 $(IROOT)$(man8dir)/
-- $(INSTALL) -g root -o root -m 644 atrun.8 $(IROOT)$(man8dir)/
-- $(INSTALL) -g root -o root -m 644 at_allow.5 $(IROOT)$(man5dir)/
-+ $(INSTALL) -m 644 atd.8 $(IROOT)$(man8dir)/
-+ $(INSTALL) -m 644 atrun.8 $(IROOT)$(man8dir)/
-+ $(INSTALL) -m 644 at_allow.5 $(IROOT)$(man5dir)/
- cd $(IROOT)$(man5dir) && $(LN_S) -f at_allow.5 at_deny.5
-- $(INSTALL) -g root -o root -m 644 $(DOCS) $(IROOT)$(atdocdir)
-+ $(INSTALL) -m 644 $(DOCS) $(IROOT)$(atdocdir)
- rm -f $(IROOT)$(mandir)/cat1/at.1* $(IROOT)$(mandir)/cat1/batch.1* \
- $(IROOT)$(mandir)/cat1/atq.1*
- rm -f $(IROOT)$(mandir)/cat1/atd.8*
diff --git a/at-lockfile.patch b/at-lockfile.patch
deleted file mode 100644
index 9ded2a7..0000000
--- a/at-lockfile.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nur at-3.1.8/at.c at-3.1.8.pld/at.c
---- at-3.1.8/at.c Sun Sep 28 22:00:37 1997
-+++ at-3.1.8.pld/at.c Thu Dec 31 11:31:39 1998
-@@ -199,7 +199,7 @@
- fscanf(fid, "%5lx", &jobno);
- rewind(fid);
- } else {
-- fid = fopen(ATJOB_DIR "/.SEQ", "w");
-+ fid = fopen(LFILE, "w");
- if (fid == NULL)
- return EOF;
- }
diff --git a/at-man.patch b/at-man.patch
deleted file mode 100644
index a0c27ce..0000000
--- a/at-man.patch
+++ /dev/null
@@ -1,80 +0,0 @@
-diff -Nur at-3.1.8/at.1.in at-3.1.8.pld/at.1.in
---- at-3.1.8/at.1.in Sun Sep 28 22:00:38 1997
-+++ at-3.1.8.pld/at.1.in Thu Dec 31 11:49:43 1998
-@@ -117,7 +117,7 @@
- .B at 1am tomorrow.
- .PP
- The exact definition of the time specification can be found in
--.IR @prefix@/doc/at/timespec .
-+.IR /usr/share/doc/at-3.1.8/timespec .
- .PP
- For both
- .BR at " and " batch ,
-diff -Nur at-3.1.8/at_allow.5 at-3.1.8.pld/at_allow.5
---- at-3.1.8/at_allow.5 Sun Sep 28 22:00:38 1997
-+++ at-3.1.8.pld/at_allow.5 Thu Dec 31 11:52:46 1998
-@@ -4,9 +4,9 @@
- at.acess, at.deny \- determine who can submit jobs via at or batch
- .SH DESCRIPTION
- The
--.I /etc/at.access
-+.I /etc/at/at.access
- and
--.I /etc/at.deny
-+.I /etc/at/at.deny
- files determine which user can submit commands for later execution via
- .B at(1)
- or
-@@ -19,14 +19,14 @@
- .BR at .
- .PP
- If the file
--.I /etc/at.allow
-+.I /etc/at/at.allow
- exists, only usernames mentioned in it are allowed to use
- .BR at .
- .PP
- If
--.I /etc/at.allow
-+.I /etc/at/at.allow
- does not exist,
--.I /etc/at.deny
-+.I /etc/at/at.deny
- is checked.
- .SH "SEE ALSO"
- at(1), atrun(1), cron(1), crontab(1), atd(8)
-diff -Nur at-3.1.8/atd.8.in at-3.1.8.pld/atd.8.in
---- at-3.1.8/atd.8.in Sun Sep 28 22:00:38 1997
-+++ at-3.1.8.pld/atd.8.in Thu Dec 31 11:53:59 1998
-@@ -44,7 +44,7 @@
- A script invoking
- .B "atd -s"
- is installed as
--.B @prefix@/sbin/atrun
-+.B /usr/sbin/atrun
- for backward compatibility.
- .SH FILES
- .I @ATJBD@
-@@ -55,8 +55,8 @@
- The direcotry for storing output; this should be mode 700, owner
- @DAEMON_USERNAME at .
- .PP
--.IR /etc/at.allow ,
--.IR /etc/at.deny
-+.IR /etc/at/at.allow ,
-+.IR /etc/at/at.deny
- determine who can use the
- .B at
- system.
-diff -Nur at-3.1.8/atrun.8.in at-3.1.8.pld/atrun.8.in
---- at-3.1.8/atrun.8.in Sun Sep 28 22:00:38 1997
-+++ at-3.1.8.pld/atrun.8.in Thu Dec 31 11:54:28 1998
-@@ -12,7 +12,7 @@
- runs jobs queued by
- .BR at(1) .
- It is a shell script containing invoking
--.B @sbindir@/atd
-+.B /usr/sbin/atd
- with the
- .I -s
- option, and is provided for backward compatibility with older
diff --git a/at-no-root-install.patch b/at-no-root-install.patch
new file mode 100644
index 0000000..4968950
--- /dev/null
+++ b/at-no-root-install.patch
@@ -0,0 +1,70 @@
+--- Makefile.in.orig 2026-03-14 02:40:11.679920830 +0100
++++ Makefile.in 2026-03-14 02:40:11.683254164 +0100
+@@ -102,43 +102,43 @@
+ $(CC) -c $(CFLAGS) $(DEFS) $*.c
+
+ install: all
+- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(etcdir)
+- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(bindir)
+- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(sbindir)
+- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdatadir)
+- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(docdir)
+- $(INSTALL) -g root -o root -m 755 -d $(DESTDIR)$(atdocdir)
+- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)
++ $(INSTALL) -m 755 -d $(DESTDIR)$(etcdir)
++ $(INSTALL) -m 755 -d $(DESTDIR)$(bindir)
++ $(INSTALL) -m 755 -d $(DESTDIR)$(sbindir)
++ $(INSTALL) -m 755 -d $(DESTDIR)$(atdatadir)
++ $(INSTALL) -m 755 -d $(DESTDIR)$(docdir)
++ $(INSTALL) -m 755 -d $(DESTDIR)$(atdocdir)
++ $(INSTALL) -m 755 -d $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)
+ chmod 1770 $(DESTDIR)$(ATSPOOL_DIR) $(DESTDIR)$(ATJOB_DIR)
+ touch $(DESTDIR)$(LFILE)
+ chmod 600 $(DESTDIR)$(LFILE)
+- chown $(DAEMON_USERNAME):$(DAEMON_GROUPNAME) $(DESTDIR)$(LFILE)
+- test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -o root -g $(DAEMON_GROUPNAME) -m 640 at.deny $(DESTDIR)$(etcdir)/
+- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(DESTDIR)$(bindir)
++ # chown $(DESTDIR)$(LFILE)
++ test -f $(DESTDIR)$(etcdir)/at.allow || test -f $(DESTDIR)$(etcdir)/at.deny || $(INSTALL) -m 640 at.deny $(DESTDIR)$(etcdir)/
++ $(INSTALL) -m 6755 at $(DESTDIR)$(bindir)
+ $(LN_S) -f at $(DESTDIR)$(bindir)/atq
+ $(LN_S) -f at $(DESTDIR)$(bindir)/atrm
+- $(INSTALL) -g root -o root -m 755 batch $(DESTDIR)$(bindir)
+- $(INSTALL) -g root -o root -m 755 batch-job $(DESTDIR)$(atdatadir)
+- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man1dir)
+- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man5dir)
+- $(INSTALL) -d -o root -g root -m 755 $(DESTDIR)$(man8dir)
+- $(INSTALL) -g root -o root -m 755 atd $(DESTDIR)$(sbindir)
+- $(INSTALL) -g root -o root -m 755 atrun $(DESTDIR)$(sbindir)
+- $(INSTALL) -g root -o root -m 644 at.1 $(DESTDIR)$(man1dir)/
++ $(INSTALL) -m 755 batch $(DESTDIR)$(bindir)
++ $(INSTALL) -m 755 batch-job $(DESTDIR)$(atdatadir)
++ $(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)
++ $(INSTALL) -d -m 755 $(DESTDIR)$(man5dir)
++ $(INSTALL) -d -m 755 $(DESTDIR)$(man8dir)
++ $(INSTALL) -m 755 atd $(DESTDIR)$(sbindir)
++ $(INSTALL) -m 755 atrun $(DESTDIR)$(sbindir)
++ $(INSTALL) -m 644 at.1 $(DESTDIR)$(man1dir)/
+ cd $(DESTDIR)$(man1dir) && $(LN_S) -f at.1 atq.1 && $(LN_S) -f at.1 batch.1 && $(LN_S) -f at.1 atrm.1
+- $(INSTALL) -g root -o root -m 644 atd.8 $(DESTDIR)$(man8dir)/
++ $(INSTALL) -m 644 atd.8 $(DESTDIR)$(man8dir)/
+ sed "s,\$${exec_prefix},$(exec_prefix),g" <atrun.8>tmpman
+- $(INSTALL) -g root -o root -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8
++ $(INSTALL) -m 644 tmpman $(DESTDIR)$(man8dir)/atrun.8
+ rm -f tmpman
+- $(INSTALL) -g root -o root -m 644 at.allow.5 $(DESTDIR)$(man5dir)/
++ $(INSTALL) -m 644 at.allow.5 $(DESTDIR)$(man5dir)/
+ cd $(DESTDIR)$(man5dir) && $(LN_S) -f at.allow.5 at.deny.5
+- $(INSTALL) -g root -o root -m 644 $(DOCS) $(DESTDIR)$(atdocdir)
++ $(INSTALL) -m 644 $(DOCS) $(DESTDIR)$(atdocdir)
+ rm -f $(DESTDIR)$(mandir)/cat1/at.1* $(DESTDIR)$(mandir)/cat1/batch.1* \
+ $(DESTDIR)$(mandir)/cat1/atq.1*
+ rm -f $(DESTDIR)$(mandir)/cat1/atd.8*
+ if test x"$(systemdsystemunitdir)" != xno; then \
+- $(INSTALL) -o root -g root -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \
+- $(INSTALL) -o root -g root -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \
++ $(INSTALL) -m 755 -d $(DESTDIR)$(systemdsystemunitdir); \
++ $(INSTALL) -m 644 atd.service $(DESTDIR)$(systemdsystemunitdir); \
+ fi
+
+ dist: checkin $(DIST) $(LIST) Filelist.asc
diff --git a/at-open.patch b/at-open.patch
deleted file mode 100644
index b3dddac..0000000
--- a/at-open.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ruN ../at-3.1.8.orig/at.c ./at.c
---- ../at-3.1.8.orig/at.c Mon Jan 14 17:59:08 2002
-+++ ./at.c Mon Jan 14 17:59:48 2002
-@@ -292,7 +292,7 @@
- * bit. Yes, this is a kluge.
- */
- cmask = umask(S_IRUSR | S_IWUSR | S_IXUSR);
-- if ((fd = open(atfile, O_CREAT | O_TRUNC | O_WRONLY, S_IRUSR)) == -1)
-+ if ((fd = open(atfile, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY, S_IRUSR)) == -1)
- perr("Cannot create atjob file %.500s", atfile);
-
- if ((fd2 = dup(fd)) < 0)
diff --git a/at-pld_noenglish_man.patch b/at-pld_noenglish_man.patch
deleted file mode 100644
index 0975683..0000000
--- a/at-pld_noenglish_man.patch
+++ /dev/null
@@ -1,749 +0,0 @@
-diff -ur at.man/es/man1/at.1 at.man.pld/es/man1/at.1
---- at.man/es/man1/at.1 Mon Apr 12 17:57:05 1999
-+++ at.man.pld/es/man1/at.1 Thu Oct 18 02:16:32 2001
-@@ -122,7 +122,7 @@
- .B at 1am tomorrow.
- .PP
- La definici�n exacta de la especificaci�n de hora se puede encontrar en
--.IR /usr/doc/at/timespec .
-+.IR /usr/share/doc/at-3.1.8/timespec .
- .PP
- Para ambos
- .BR at " y " batch ,
-@@ -155,19 +155,19 @@
- .PP
- El superusuario siempre puede utilizar estos comandos.
- Para otros usuarios, los permisos para utilizarlos est�n determinados en los ficheros
--.I /etc/at.allow
-+.I /etc/at/at.allow
- y
--.IR /etc/at.deny .
-+.IR /etc/at/at.deny .
- .PP
- Si el fichero
--.I /etc/at.allow
-+.I /etc/at/at.allow
- existe, s�lo los usuarios cuyos nombres est�n mencionados aqu� tienen permiso para utilizar
- .BR at .
- .PP
- Si
--.I /etc/at.allow
-+.I /etc/at/at.allow
- no existe, se chequea
--.I /etc/at.deny
-+.I /etc/at/at.deny
- y entonces todos los usuarios cuyos nombres no est�n mencionados all� tienen permiso
- para utilizar
- .BR at .
-@@ -175,7 +175,7 @@
- Si ninguno de los ficheros existe, s�lo el superusuario puede utilizar at.
- .PP
- Un
--.I /etc/at.deny
-+.I /etc/at/at.deny
- vac�o significa que todo usuario puede utilizar estos comandos, esta es la
- configuraci�n por defecto.
- .SH OPCIONES
-@@ -241,17 +241,17 @@
- \-c
- manda los comandos listados en la l�nea de comandos a la salida est�ndar.
- .SH FICHEROS
--.I /var/spool/cron/atjobs
-+.I /var/spool/at
- .br
--.I /var/spool/cron/atspool
-+.I /var/spool/at/spool
- .br
- .I /proc/loadavg
- .br
- .I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH "V�ASE TAMBI�N"
- cron(1), nice(1), sh(1), umask(2), atd(8)
- .SH FALLOS
-diff -ur at.man/es/man5/at_allow.5 at.man.pld/es/man5/at_allow.5
---- at.man/es/man5/at_allow.5 Mon Apr 12 14:29:32 1999
-+++ at.man.pld/es/man5/at_allow.5 Thu Oct 18 02:07:28 2001
-@@ -6,9 +6,9 @@
- at.acess, at.deny \- determinan qui�n puede enviar trabajos mediante at o batch
- .SH DESCRIPCI�N
- Los ficheros
--.I /etc/at.access
-+.I /etc/at/at.access
- y
--.I /etc/at.deny
-+.I /etc/at/at.deny
- determinan qu� usuarios pueden enviar comandos para su ejecuci�n posterior mediante
- .B at(1)
- o
-@@ -21,13 +21,13 @@
- .BR at .
- .PP
- Si el fichero
--.I /etc/at.allow
-+.I /etc/at/at.allow
- existe, s�lo los usuarios cuyos nombres se mencionan tienen permitido el uso de
- .BR at .
- .PP
- Si
--.I /etc/at.allow
-+.I /etc/at/at.allow
- no existe, se chequea
--.IR /etc/at.deny .
-+.IR /etc/at/at.deny .
- .SH "V�ASE TAMBI�N"
- at(1), atrun(1), cron(1), crontab(1), atd(8)
-diff -ur at.man/es/man8/atd.8 at.man.pld/es/man8/atd.8
---- at.man/es/man8/atd.8 Mon Apr 12 14:30:18 1999
-+++ at.man.pld/es/man8/atd.8 Thu Oct 18 02:10:57 2001
-@@ -48,16 +48,16 @@
- que es un gui�n shell que ejecuta
- .BR "atd -s" .
- .SH FICHEROS
--.I /var/spool/cron/atjobs
-+.I /var/spool/at
- El directorio para almacenar trabajos; deber�a tener modo 700 y propietario
- daemon.
- .PP
--.I /var/spool/cron/atspool
-+.I /var/spool/at/spool
- El directorio para almacenar la salida; deber�a tener modo 700 y propietario
- daemon.
- .PP
--.IR /etc/at.allow ,
--.IR /etc/at.deny
-+.IR /etc/at/at.allow ,
-+.IR /etc/at/at.deny
- determina qui�n puede usar el sistema
- .B at.
-
-diff -ur at.man/es/man8/atrun.8 at.man.pld/es/man8/atrun.8
---- at.man/es/man8/atrun.8 Mon Apr 12 14:30:18 1999
-+++ at.man.pld/es/man8/atrun.8 Thu Oct 18 02:18:48 2001
-@@ -13,7 +13,7 @@
- ejecuta trabajos encolados por
- .BR at (1).
- Es un gui�n shell que contiene una llamada
--.B ${exec_prefix}/sbin/atd
-+.B /usr/sbin/atd
- con la opci�n
- .IR -s ,
- y se proporciona por compatibilidad con instalaciones antiguas.
-diff -ur at.man/fi/man1/at.1 at.man.pld/fi/man1/at.1
---- at.man/fi/man1/at.1 Sun Nov 14 02:34:31 1999
-+++ at.man.pld/fi/man1/at.1 Thu Oct 18 02:14:30 2001
-@@ -124,7 +124,7 @@
- .B at 1am tomorrow.
- .PP
- Tarkka formaatti aja m��rittelyyn on tiedostossa
--.IR /usr/doc/at-3.1.7/timespec .
-+.IR /usr/share/doc/at-3.1.8/timespec .
- .PP
- Sek�
- .BR at " ett� " batch
-@@ -160,23 +160,23 @@
- .PP
- P��k�ytt�j� saa aina k�ytt�� n�it� komentoja.
- Muille k�ytt�jille oikeudet m��ritell��n tiedostoilla
--.I /etc/at.allow
-+.I /etc/at/at.allow
- ja
--.IR /etc/at.deny .
-+.IR /etc/at/at.deny .
- .PP
- Jos tiedosto
--.I /etc/at.allow
-+.I /etc/at/at.allow
- on olemassa, vain t�ss� tiedostossa listatut k�ytt�j�t saavat k�ytt��
- .BR at
- -komentoa.
- .PP
- Jos t�t� tiedostoa ei ole,
--.I /etc/at.deny
-+.I /etc/at/at.deny
- listaa ne k�ytt�j�t, jotka eiv�t saa k�ytt�� komentoja.
- Jos kumpaakaan tiedostoa ei ole, vain p��k�ytt�j�ll� on suoritusoikeus.
- .PP
- Tyhj�
--.I /etc/at.deny
-+.I /etc/at/at.deny
- ilmaisee, ett� kaikilla on suoritusoikeus, mik� on oletusarvo.
- .SH OPTIOT
- .TP 8
-@@ -246,9 +246,9 @@
- .br
- .I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH "KATSO MY�S"
- cron(1), nice(1), sh(1), umask(2), atd(8)
- .SH BUGIT
-diff -ur at.man/fr/man1/at.1 at.man.pld/fr/man1/at.1
---- at.man/fr/man1/at.1 Mon Sep 25 14:08:39 2000
-+++ at.man.pld/fr/man1/at.1 Thu Oct 18 02:30:48 2001
-@@ -154,20 +154,20 @@
- Le Super-Utilisateur peut toujours employer ces commandes. Pour les
- autres utilisateurs, les permissions sont d�termin�es
- par les fichiers
--.I /etc/at.allow
-+.I /etc/at/at.allow
- et
--.IR /etc/at.deny .
-+.IR /etc/at/at.deny .
- .PP
- Si le fichier
--.I /etc/at.allow
-+.I /etc/at/at.allow
- existe, seuls les utilisateurs dont les noms sont mentionn�s dans
- ce fichier peuvent utiliser
- .BR at .
- .PP
- Si
--.I /etc/at.allow
-+.I /etc/at/at.allow
- n'existe pas, \fBat\fP v�rifie si
--.I /etc/at.deny
-+.I /etc/at/at.deny
- existe, et tous les utilisateurs non-mentionn�s dans ce fichier ont
- le droit d'invoquer
- .BR at .
-@@ -177,7 +177,7 @@
- .BR at .
- .PP
- Un fichier
--.I /etc/at.deny
-+.I /etc/at/at.deny
- vide signifie que tous les utilisateurs ont le droit d'appeler ces
- commandes, c'est la configuration par d�faut.
- .SH OPTIONS
-@@ -251,11 +251,11 @@
- .br
- .I /proc/loadavg
- .br
--.I /etc/utmp
-+.I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH "VOIR AUSSI"
- cron(1), nice(1), sh(1), umask(2), atrun(8)
- .SH BOGUES
-@@ -267,7 +267,7 @@
- .IR /proc .
- .PP
- Si le fichier
--.I /etc/utmp
-+.I /var/run/utmp
- n'est pas disponible, ou est endommag�, ou si l'utilisateur n'est pas
- connect� lorsque
- .B at
-diff -ur at.man/hu/man1/at.1 at.man.pld/hu/man1/at.1
---- at.man/hu/man1/at.1 Tue Jul 11 17:27:40 2000
-+++ at.man.pld/hu/man1/at.1 Thu Oct 18 02:14:11 2001
-@@ -123,7 +123,7 @@
- .B at 1am tomorrow.
- .PP
- Az id� specifik�ci�k pontosabb le�r�s�t megtal�lod a
--.I /usr/doc/at-3.1.7/timespec
-+.I /usr/share/doc/at-3.1.8/timespec
- f�jl-ban.
- .PP
- Mind az
-@@ -161,21 +161,21 @@
- .BR at
- parancsot.
- M�s felhaszn�l�knak a hozz�f�r�si jogok a
--.I /etc/at.allow
-+.I /etc/at/at.allow
- �s a
--.IR /etc/at.deny
-+.IR /etc/at/at.deny
- f�jl-ban vannak meghat�rozva.
- .PP
- Ha a
--.I /etc/at.allow
-+.I /etc/at/at.allow
- f�jl l�tezik, csak az abban felsorolt felhaszn�l�k haszn�lhatj�k az
- .BR at
- parancsot.
- .PP
- Ha a
--.I /etc/at.allow
-+.I /etc/at/at.allow
- f�jl nem l�tezik, a
--.I /etc/at.deny
-+.I /etc/at/at.deny
- f�jl-t vizsg�lja meg az
- .BR at.
- Minden felhaszn�l�, aki itt fel van sorolva nem jogosult haszn�lni az
-@@ -187,7 +187,7 @@
- parancs futtat�s�ra
- .PP
- Egy �res
--.I /etc/at.deny
-+.I /etc/at/at.deny
- azt jelenti, hogy minden felhaszn�l� jogosult haszn�lni ezeket az utas�t�sokat.
- Ez az alap�rtelmezett konfigur�ci�.
- .SH OPCI�K
-@@ -272,9 +272,9 @@
- .br
- .I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH L�SD M�G
- cron(1), nice(1), sh(1), umask(2), atd(8)
- .SH HIB�K
-diff -ur at.man/id/man1/at.1 at.man.pld/id/man1/at.1
---- at.man/id/man1/at.1 Mon Feb 22 21:22:09 1999
-+++ at.man.pld/id/man1/at.1 Thu Oct 18 02:15:38 2001
-@@ -123,7 +123,7 @@
- .B at 1am tomorrow.
- .PP
- Definisi lengkap mengenai spesifikasi waktu dapat ditemukan pada
--.IR /usr/doc/at-3.1.7/timespec .
-+.IR /usr/share/doc/at-3.1.8/timespec .
- .PP
- Untuk perintah
- .BR at " dan " batch ,
-@@ -153,19 +153,19 @@
- .PP
- Superuser dapat menggunakan perintah-perintah ini dalam kondisi apapun.
- Untuk pengguna lain, ijin untuk menggunakannya ditentukan oleh file-file
--.I /etc/at.allow
-+.I /etc/at/at.allow
- dan
--.IR /etc/at.deny .
-+.IR /etc/at/at.deny .
- .PP
- Jika file
--.I /etc/at.allow
-+.I /etc/at/at.allow
- ditemukan, hanya pengguna yang terdapat di dalamnya diijinkan untuk menggunakan
- .BR at .
- .PP
- Jika
--.I /etc/at.allow
-+.I /etc/at/at.allow
- tidak ditemukan,
--.I /etc/at.deny
-+.I /etc/at/at.deny
- akan dicek, setiap pengguna yang tidak terdapat di dalamnya akan diijinkan
- untuk menggunakan
- .BR at .
-@@ -173,7 +173,7 @@
- Jika keduanya tidak ditemukan, hanya superuser yang diijinkan untuk menggunakan
- .BR at .
- .PP
--.I /etc/at.deny
-+.I /etc/at/at.deny
- yang kosong berarti setiap pengguna diijinkan untuk menggunakan perintah
- tersebut, ini adalah konfigurasi default.
- .SH PARAMETER
-@@ -254,9 +254,9 @@
- .br
- .I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH LIHAT JUGA
- cron(1), nice(1), sh(1), umask(2), atd(8)
- .SH BUS
-diff -ur at.man/it/man1/at.1 at.man.pld/it/man1/at.1
---- at.man/it/man1/at.1 Wed Mar 31 14:50:52 1999
-+++ at.man.pld/it/man1/at.1 Thu Oct 18 02:30:19 2001
-@@ -124,7 +124,7 @@
- .PP
- La definizione esatta delle specifiche di orario possono essere
- trovate in
--.IR /usr/doc/at-3.1.7/timespec .
-+.IR /usr/share/doc/at-3.1.8/timespec .
- .PP
- Per entrambi
- .BR at " e " batch ", "
-@@ -156,19 +156,19 @@
- .PP
- Il superutente pu� sempre usare questi comandi.
- Per gli altri utenti, l'autorizzazione all'uso � determinata dai file
--.I /etc/at.allow
-+.I /etc/at/at.allow
- e
--.IR /etc/at.deny .
-+.IR /etc/at/at.deny .
- .PP
- Se il file
--.I /etc/at.allow
-+.I /etc/at/at.allow
- esiste, solo gli utenti il cui nome vi � menzionato sono abilitati a usare
- .BR at .
- .PP
- Se
--.I /etc/at.allow
-+.I /etc/at/at.allow
- non esiste,
--.I /etc/at.deny
-+.I /etc/at/at.deny
- viene controllato, ed ogni utente il cui nome non vi � menzionato �
- abilitato a usare
- .BR at .
-@@ -176,7 +176,7 @@
- Se n� l'uno n� l'altro esistono, solo il superutente � abilitato a usare at.
- .PP
- Un file
--.I /etc/at.deny
-+.I /etc/at/at.deny
- vuoto significa che ogni utente � autorizzato a usare questi comandi,
- questa � la configurazione predefinita.
- .SH OPZIONI
-@@ -244,17 +244,17 @@
- \-c
- mostra i lavori elencati nella linea di comando sullo standart output.
- .SH FILE
--.I /var/spool/atjobs
-+.I /var/spool/at
- .br
--.I /var/spool/atspool
-+.I /var/spool/at/spool
- .br
- .I /proc/loadavg
- .br
- .I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH VEDERE ANCHE
- cron(1), nice(1), sh(1), umask(2), atd(8)
- .SH BACHI
-@@ -267,7 +267,7 @@
- .IR /proc .
- .PP
- Se il file
--.I /etc/utmp
-+.I /var/run/utmp
- non � disponibile o corrotto, o se l'utente non � collegato nel momento in cui
- .B at
- viene chiamato, la posta viene spedita allo userid trovato nella variabile d'ambiente
-diff -ur at.man/ja/man1/at.1 at.man.pld/ja/man1/at.1
---- at.man/ja/man1/at.1 Sun Oct 14 17:15:23 2001
-+++ at.man.pld/ja/man1/at.1 Thu Oct 18 02:30:32 2001
-@@ -140,7 +140,7 @@
- �Ȥ��롣
- .PP
- ���ֻ�����ˡ�θ�̩�������
--.I /usr/doc/at/timespec
-+.I /usr/share/doc/at-3.1.8/timespec
- �˽Ƥ��롣
- .PP
- .BR at " �� " batch
-@@ -171,19 +171,19 @@
- .PP
- �����ѡ��桼�����ϡ��ɤ�ʾ��Ǥ�ɬ�����Υ��ޥ�ɤ�Ȥ����Ȥ��Ǥ��롣
- ¾�Υ桼�����Υѡ��ߥå�����
--.I /etc/at.allow
-+.I /etc/at/at.allow
- ��
--.I /etc/at.deny
-+.I /etc/at/at.deny
- �ǻ��ꤹ�롣
- .PP
--.I /etc/at.allow
-+.I /etc/at/at.allow
- ������С������˽줿�桼�����Τߤ�
- .BR at
- ��Ȥ��롣
- .PP
--.I /etc/at.allow
-+.I /etc/at/at.allow
- ���ʤ����
--.I /etc/at.deny
-+.I /etc/at/at.deny
- ������å����������˽�ơ֤��ʤ��ץ桼�������٤Ƥ�
- .B at
- ��Ȥ��롣
-@@ -192,7 +192,7 @@
- at ��Ȥ����Ȥ��Ǥ��롣
- .PP
- ����
--.I /etc/at.deny
-+.I /etc/at/at.deny
- ������Ȥ��ϡ����ƤΥ桼�����������Υ��ޥ�ɤ�Ȥ����Ȥ��Ǥ��롣
- �������꤬�ǥե���ȤǤ��롣
- .SH ���ץ����
-@@ -258,17 +258,17 @@
- \-c
- ���ޥ�ɥ饤��ǻ��ꤷ������֤�ɸ����Ϥ�ɽ�����롣
- .SH �ե�����
--.I /var/spool/atjobs
-+.I /var/spool/at
- .br
--.I /var/spool/atspool
-+.I /var/spool/at/spool
- .br
- .I /proc/loadavg
- .br
- .I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH ��Ϣ����
- cron(1), nice(1), sh(1), umask(2), atd(8)
- .SH �Х�
-@@ -281,7 +281,7 @@
- �����Υǥ��쥯�ȥ꤬ɬ�פǤ��롣
- .PP
- �⤷
--.I /etc/utmp
-+.I /var/run/utmp
- ������ƻȤ��ʤ��ä��ꡢ
- .B at
- ������֤�¹Ԥ���Ȥ��˥桼�������������Ƥʤ��ä��ꤹ��ȡ�
-diff -ur at.man/ja/man8/atd.8 at.man.pld/ja/man8/atd.8
---- at.man/ja/man8/atd.8 Sun Oct 14 17:15:23 2001
-+++ at.man.pld/ja/man8/atd.8 Thu Oct 18 02:10:59 2001
-@@ -60,11 +60,11 @@
- .B /usr/sbin/atrun
- �Ȥ��ƥ��ȡ��뤵��Ƥ��롣
- .SH �ե�����
--.I /var/spool/atjobs
-+.I /var/spool/at
- ����֤���¸����ǥ��쥯�ȥꡣ���Υǥ��쥯�ȥ�ϥ⡼�ɤ� 700�������ʡ���
- daemon �ˤ���٤��Ǥ��롣
- .PP
--.I /var/spool/atspool
-+.I /var/spool/at/spool
- ���Ϥ���¸����ǥ��쥯�ȥꡣ���Υǥ��쥯�ȥ�ϥ⡼�ɤ� 700�������ʡ���
- daemon �ˤ���٤��Ǥ��롣
- .SH ��Ϣ����
-diff -ur at.man/ko/man1/at.1 at.man.pld/ko/man1/at.1
---- at.man/ko/man1/at.1 Sun Apr 23 14:02:02 2000
-+++ at.man.pld/ko/man1/at.1 Thu Oct 18 02:13:22 2001
-@@ -113,7 +113,7 @@
- �� ���� �ϸ� �ȴ�.
- .PP
- �ð� ������ ���� ��Ȯ�� ���Ǵ�
--.IR /usr/doc/packages/at/timespec ��
-+.IR /usr/share/doc/at-3.1.8/timespec ��
- ���ִ�.
- .PP
- .BR at "�� " batch
-@@ -138,26 +138,26 @@
- ������ ����Ǿ��ٸ� �α��� ���� ����ڰ� ������ ���� ���̴�.
- .PP
- ���� ������ � ��쿡�� �� ���ɵ��� ����� �� ������ �ٸ� ����ڴ�
--.IR /etc/at.allow "�� " /etc/at.deny ��
-+.IR /etc/at/at.allow "�� " /etc/at/at.deny ��
- ���뿡 ���� ��� ������ �����ȴ�.
- .PP
- ����
--.I /etc/at.allow
-+.I /etc/at/at.allow
- ������ �����ϸ�, �� ���Ͽ� ���õ� ����ڸ���
- .B at
- ������ ����� �� �ִ�.
- .PP
- ����
--.IR /etc/at.allow ��
-+.IR /etc/at/at.allow ��
- �������� ������,
--.IR /etc/at.deny ��
-+.IR /etc/at/at.deny ��
- ���õ��� ���� ��� ����ڰ�
- .BR at ��
- ����� �� �ִ�.
- .PP
- ���� �� ������ ��� �������� ������, ���� �������� at�� ����� �� �ִ�.
- .PP
--.IR /etc/at.deny ��
-+.IR /etc/at/at.deny ��
- �� ���Ϸ� �θ� ��� ����ڰ� ������ ����� �� �ְ�, �̰��� �ʱ� �����̴�.
- .SH �ɼ�
- .TP 8
-@@ -211,17 +211,17 @@
- \-c
- ����� ������ �۾����� ǥ�� ������� �����ش�.
- .SH ����
--.I /var/spool/atjobs
-+.I /var/spool/at
- .br
--.I /var/spool/atspool
-+.I /var/spool/at/spool
- .br
- .I /proc/loadavg
- .br
- .I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH ���� ��
- cron(1), nice(1), sh(1), umask(2), atd(8)
- .SH ����
-diff -ur at.man/ko/man8/atd.8 at.man.pld/ko/man8/atd.8
---- at.man/ko/man8/atd.8 Sat Apr 29 13:57:21 2000
-+++ at.man.pld/ko/man8/atd.8 Thu Oct 18 02:10:58 2001
-@@ -45,14 +45,14 @@
- .B /usr/sbin/atrun
- ��ũ��Ʈ�� ��ġ�ȴ�.
- .SH ����
--.I /var/spool/atjobs
-+.I /var/spool/at
- �۾��� �����ϴ� ���丮; ������ at, ��� 700�̿��� �Ѵ�.
- .PP
--.I /var/spool/atspool
-+.I /var/spool/at/spool
- ����� �����ϴ� ���丮; ������ at, ��� 700�̿��� �Ѵ�.
- .PP
--.IR /etc/at.allow ,
--.IR /etc/at.deny
-+.IR /etc/at/at.allow ,
-+.IR /etc/at/at.deny
- .B at
- �ý����� ����� �� �ִ� ����ڸ� �����Ѵ�.
- .SH ���� ��
-diff -ur at.man/ko/man8/atrun.8 at.man.pld/ko/man8/atrun.8
---- at.man/ko/man8/atrun.8 Sat Apr 29 13:57:22 2000
-+++ at.man.pld/ko/man8/atrun.8 Thu Oct 18 02:18:28 2001
-@@ -13,7 +13,7 @@
- �̴�
- .I -s
- �ɼ�����
--.BR ${exec_prefix}/sbin/atd ��
-+.BR /usr/sbin/atd ��
- �����ϵ��� �ϴ� �� ��ũ��Ʈ�̴�.
- ���� �������� ȣȯ���� ���� �����Ѵ�.
- .SH ����
-diff -ur at.man/pl/man1/at.1 at.man.pld/pl/man1/at.1
---- at.man/pl/man1/at.1 Fri Dec 3 13:40:27 1999
-+++ at.man.pld/pl/man1/at.1 Thu Oct 18 02:14:53 2001
-@@ -132,7 +132,7 @@
- .B at 1am tomorrow
- .PP
- Dok�adn� definicj� specyfikacji czasu mo�na znale�� w
--.IR /usr/doc/packages/at/timespec .
-+.IR /usr/share/doc/at-3.1.8/timespec .
- .PP
- Zar�wno
- .BR at " jak i " batch ,
-@@ -166,31 +166,31 @@
- .PP
- Superu�ytkownik mo�e zawsze pos�ugiwa� si� opisywanymi poleceniami.
- Dla pozosta�ych u�ytkownik�w, zezwolenia na u�ycie at okre�lane s� przez pliki
--.I /etc/at.allow
-+.I /etc/at/at.allow
- i
--.IR /etc/at.deny .
-+.IR /etc/at/at.deny .
- .PP
- Je�eli istnieje plik
--.IR /etc/at.allow ,
-+.IR /etc/at/at.allow ,
- to wy��cznie u�ytkownicy, kt�rych nazwy do� wpisano, maj� prawo uruchamiania
- .BR at .
- .PP
- Je�li nie istnieje
--.IR /etc/at.allow ,
-+.IR /etc/at/at.allow ,
- to sprawdzany jest plik
--.IR /etc/at.deny ,
-+.IR /etc/at/at.deny ,
- a ka�demu u�ytkownikowi, kt�rego w nim nie wymieniono, zezwala si�
- na u�ywanie
- .BR at .
- [t�um: tzn. u�ytkownicy uj�ci w
--.IR /etc/at.deny
-+.IR /etc/at/at.deny
- maj� zakaz uruchamiania opisywanych polece�.]
- .PP
- Je�li nie istnieje �aden z plik�w kontroluj�cych dost�p do polecenia at,
- to pos�ugiwa� si� nim mo�e wy��cznie superu�ytkownik.
- .PP
- Pusty plik
--.I /etc/at.deny
-+.I /etc/at/at.deny
- oznacza, �e pozwala si� na u�ywanie opisywanych polece� wszystkim
- u�ytkownikom. Jest to konfiguracja domy�lna.
- .SH OPCJE
-@@ -259,17 +259,17 @@
- .BR cat (1)]
- podane w wierszu polece� zadania na standardowe wyj�cie.
- .SH PLIKI
--.I /var/spool/atjobs
-+.I /var/spool/at
- .br
--.I /var/spool/atspool
-+.I /var/spool/at/spool
- .br
- .I /proc/loadavg
- .br
- .I /var/run/utmp
- .br
--.I /etc/at.allow
-+.I /etc/at/at.allow
- .br
--.I /etc/at.deny
-+.I /etc/at/at.deny
- .SH ZOBACZ TAK�E
- .BR cron (1),
- .BR nice (1),
-diff -ur at.man/pl/man8/atd.8 at.man.pld/pl/man8/atd.8
---- at.man/pl/man8/atd.8 Tue Feb 6 18:16:05 2001
-+++ at.man.pld/pl/man8/atd.8 Thu Oct 18 02:10:58 2001
-@@ -51,16 +51,16 @@
- \fBatd\fP nie b�dzie dzia��� je�li katalog do przechowywania wynik�w
- jest zamontowany poprzez NFS, nawet je�eli ustawiono \fBno_root_squash\fP.
- .SH PLIKI
--.I /var/spool/atjobs
-+.I /var/spool/at
- Katalog przechowuj�cy zadania; powinien posiada� prawa dost�pu 700
- i w�a�ciciela at.
- .PP
--.I /var/spool/atspool
-+.I /var/spool/at/spool
- Katalog przechowuj�cy wyniki (wyj�cie); powinien posiada� prawa dost�pu 700
- i w�a�ciciela at.
- .PP
--.IR /etc/at.allow ,
--.IR /etc/at.deny
-+.IR /etc/at/at.allow ,
-+.IR /etc/at/at.deny
- okre�laj�, kto mo�e pos�ugiwa� si� systemem
- .BR at .
- .SH ZOBACZ TAK�E
-diff -ur at.man/pl/man8/atrun.8 at.man.pld/pl/man8/atrun.8
---- at.man/pl/man8/atrun.8 Fri Dec 3 13:40:34 1999
-+++ at.man.pld/pl/man8/atrun.8 Thu Oct 18 02:18:57 2001
-@@ -13,7 +13,7 @@
- uruchamia zadania ustawiane w kolejce przez
- .BR at(1) .
- Jest to skrypt pow�oki zawieraj�cy wywo�anie
--.B ${exec_prefix}/sbin/atd
-+.B /usr/sbin/atd
- z opcj�
- .IR -s ,
- dostarczony z uwagi na zapewnienie wstecznej zgodno�ci
diff --git a/at-sendmail.patch b/at-sendmail.patch
deleted file mode 100644
index 8368487..0000000
--- a/at-sendmail.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff -Naur at-3.1.8/configure.in at-3.1.8-p/configure.in
---- at-3.1.8/configure.in Sun Sep 28 19:30:18 1997
-+++ at-3.1.8-p/configure.in Thu Jun 29 16:28:15 2000
-@@ -85,23 +85,8 @@
-
- dnl Checking for programs
-
--AC_PATH_PROG(MAILX, mailx)
--if test "$ac_cv_path_MAILX" != "" ; then
--AC_DEFINE_UNQUOTED(MAILX,"$ac_cv_path_MAILX")
--MAIL_CMD="$ac_cv_path_MAILX"
--fi
--
--AC_PATH_PROG(MAILC, mail)
--if test "$ac_cv_path_MAILC" != "" ; then
--AC_DEFINE_UNQUOTED(MAILC,"$ac_cv_path_MAILC")
--MAIL_CMD="$ac_cv_path_MAILC"
--fi
--
--AC_PATH_PROG(SENDMAIL, sendmail, , $PATH:/usr/lib:/usr/sbin )
--if test "$ac_cv_path_SENDMAIL" != "" ; then
--AC_DEFINE_UNQUOTED(SENDMAIL,"$ac_cv_path_SENDMAIL")
--MAIL_CMD="$ac_cv_path_SENDMAIL"
--fi
-+AC_DEFINE_UNQUOTED(SENDMAIL,"/usr/lib/sendmail")
-+MAIL_CMD="/usr/lib/sendmail"
-
- AC_SUBST(MAIL_CMD)
-
diff --git a/at-sigchld.patch b/at-sigchld.patch
deleted file mode 100644
index 5a5c0b5..0000000
--- a/at-sigchld.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- at-3.1.7/atd.c.sigchld Mon May 24 16:56:41 1999
-+++ at-3.1.7/atd.c Mon May 24 16:58:57 1999
-@@ -348,6 +348,9 @@
- if (setuid(uid) < 0)
- perr("Cannot set user id");
-
-+ if (SIG_ERR == signal(SIGCHLD, SIG_DFL))
-+ perr("Cannot reset signal handler to default");
-+
- chdir("/");
-
- if (execle("/bin/sh", "sh", (char *) NULL, nenvp) != 0)
diff --git a/at-typo.patch b/at-typo.patch
deleted file mode 100644
index 4a862ad..0000000
--- a/at-typo.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- at-3.1.7/atd.c.tyop Wed Mar 1 14:32:47 2000
-+++ at-3.1.7/atd.c Wed Mar 1 14:34:52 2000
-@@ -247,7 +247,7 @@
- "aborting", jobno, filename);
-
- if (buf.st_nlink > 2) {
-- perr("Someboy is trying to run a linked script for job %8lu (%.500s)",
-+ perr("Somebody is trying to run a linked script for job %8lu (%.500s)",
- filename);
- }
- if ((fflags = fcntl(fd_in, F_GETFD)) < 0)
-@@ -493,6 +493,7 @@
- * Let's remove the lockfile and reschedule.
- */
- strncpy(lock_name, dirent->d_name, sizeof(lock_name));
-+ lock_name[sizeof(lock_name)-1] = '\0';
- lock_name[0] = '=';
- unlink(lock_name);
- next_job = now;
-@@ -500,7 +501,7 @@
- continue;
- }
- /* There's a job for later. Note its execution time if it's
-- * the earlierst so far.
-+ * the earliest so far.
- */
- if (run_time > now) {
- if (next_job > run_time) {
-@@ -518,6 +519,7 @@
- run_batch++;
- if (strcmp(batch_name, dirent->d_name) > 0) {
- strncpy(batch_name, dirent->d_name, sizeof(batch_name));
-+ batch_name[sizeof(batch_name)-1] = '\0';
- batch_uid = buf.st_uid;
- batch_gid = buf.st_gid;
- batch_queue = queue;
-@@ -553,7 +555,7 @@
- int
- main(int argc, char *argv[])
- {
--/* Browse through ATJOB_DIR, checking all the jobfiles wether they should
-+/* Browse through ATJOB_DIR, checking all the jobfiles whether they should
- * be executed and or deleted. The queue is coded into the first byte of
- * the job filename, the date (in minutes since Eon) as a hex number in the
- * following eight bytes, followed by a dot and a serial number. A file
diff --git a/at.patch b/at.patch
deleted file mode 100644
index 9763f64..0000000
--- a/at.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-diff -Nru at-3.1.8/at.1.in at-3.1.8.new/at.1.in
---- at-3.1.8/at.1.in Sun Mar 28 19:48:00 1999
-+++ at-3.1.8.new/at.1.in Sun Mar 28 19:46:41 1999
-@@ -248,7 +248,11 @@
- .br
- .I @ETCDIR@/at.deny
- .SH SEE ALSO
--cron(1), nice(1), sh(1), umask(2), atd(8)
-+.BR cron (1),
-+.BR nice (1),
-+.BR sh (1),
-+.BR umask (2),
-+.BR atd (8).
- .SH BUGS
- The correct operation of
- .B batch
-diff -Nru at-3.1.8/at.deny at-3.1.8.new/at.deny
---- at-3.1.8/at.deny Sun Feb 23 21:24:34 1997
-+++ at-3.1.8.new/at.deny Sun Mar 28 19:46:41 1999
-@@ -1,13 +1,23 @@
--nobody
-+alias
- bin
- daemon
--sys
-+ftp
-+games
-+gnats
-+guest
-+irc
- lp
--sync
- mail
--news
--uucp
--games
- man
--guest
--ftp
-+nobody
-+operator
-+proxy
-+qmaild
-+qmaill
-+qmailp
-+qmailq
-+qmailr
-+qmails
-+sync
-+sys
-+www-data
-diff -Nru at-3.1.8/at_allow.5 at-3.1.8.new/at_allow.5
---- at-3.1.8/at_allow.5 Sun Mar 28 19:48:00 1999
-+++ at-3.1.8.new/at_allow.5 Sun Mar 28 19:46:41 1999
-@@ -29,4 +29,8 @@
- .I /etc/at/at.deny
- is checked.
- .SH "SEE ALSO"
--at(1), atrun(1), cron(1), crontab(1), atd(8)
-+.BR at (1),
-+.BR atrun (1),
-+.BR cron (8),
-+.BR crontab (1),
-+.BR atd (8).
-diff -Nru at-3.1.8/atd.8.in at-3.1.8.new/atd.8.in
---- at-3.1.8/atd.8.in Sun Mar 28 19:48:00 1999
-+++ at-3.1.8.new/atd.8.in Sun Mar 28 19:46:41 1999
-@@ -46,6 +46,11 @@
- is installed as
- .B /usr/sbin/atrun
- for backward compatibility.
-+.SH WARNING
-+.B atd
-+won't work if its spool directory is mounted via NFS even if
-+.I no_root_squash
-+is set.
- .SH FILES
- .I @ATJBD@
- The directory for storing jobs; this should be mode 700, owner
-@@ -61,9 +66,15 @@
- .B at
- system.
- .SH "SEE ALSO"
--at(1), atrun(1), cron(1), crontab(1), syslog(3), at_deny(5), at_allow(5)
-+.BR at (1),
-+.BR atrun (1),
-+.BR cron (8),
-+.BR crontab (1),
-+.BR syslog (3),
-+.BR at.deny (5),
-+.BR at.allow(5).
- .SH BUGS
- The functionality of
- .B atd
- should be merged into
--.BR cron(1) .
-+.BR cron (8) .
---- at-3.1.8/batch Thu Jan 1 01:00:00 1970
-+++ at-3.1.8.new/batch Sun Mar 28 19:46:41 1999
-@@ -0,0 +1,4 @@
-+#! /bin/sh
-+prefix=/usr
-+exec_prefix=${prefix}
-+exec ${exec_prefix}/bin/at -qb now "$@"
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/at.git/commitdiff/31e80fc3dea82f86bfd970e114d4d3b29fcd542a
More information about the pld-cvs-commit
mailing list