From 67bddc3423aaedd317beb3aaa883d5d2ed62a3d0 Mon Sep 17 00:00:00 2001 From: overweight <5324761+overweight@user.noreply.gitee.com> Date: Mon, 30 Sep 2019 10:31:42 -0400 Subject: [PATCH] Package init --- at-3.1.14-fix_no_export.patch | 15 + at-3.1.14-mailwithhostname.patch | 62 ++++ at-3.1.14-opt_V.patch | 17 ++ at-3.1.14-usePOSIXtimers.patch | 111 +++++++ at-3.1.16-clear-nonjobs.patch | 42 +++ at-3.1.16-fclose-error.patch | 26 ++ at-3.1.18-make.patch | 82 ++++++ at-3.1.18-nitpicks.patch | 80 +++++ at-3.1.18-noabort.patch | 43 +++ at-3.1.18-utc-dst.patch | 24 ++ at-3.1.20-aborted-jobs.patch | 22 ++ at-3.1.20-lock-locks.patch | 108 +++++++ at-3.1.20-log-jobs.patch | 14 + at-3.1.20-pam.patch | 436 +++++++++++++++++++++++++++ at-3.1.20-shell.patch | 47 +++ at-3.1.23-document-n.patch | 22 ++ at-aarch64.patch | 486 +++++++++++++++++++++++++++++++ at.spec | 120 ++++++++ at_3.1.23.orig.tar.gz | Bin 0 -> 126284 bytes atd.sysconf | 9 + atd.systemd | 13 + pam_atd | 9 + 22 files changed, 1788 insertions(+) create mode 100644 at-3.1.14-fix_no_export.patch create mode 100644 at-3.1.14-mailwithhostname.patch create mode 100644 at-3.1.14-opt_V.patch create mode 100644 at-3.1.14-usePOSIXtimers.patch create mode 100644 at-3.1.16-clear-nonjobs.patch create mode 100644 at-3.1.16-fclose-error.patch create mode 100644 at-3.1.18-make.patch create mode 100644 at-3.1.18-nitpicks.patch create mode 100644 at-3.1.18-noabort.patch create mode 100644 at-3.1.18-utc-dst.patch create mode 100644 at-3.1.20-aborted-jobs.patch create mode 100644 at-3.1.20-lock-locks.patch create mode 100644 at-3.1.20-log-jobs.patch create mode 100644 at-3.1.20-pam.patch create mode 100644 at-3.1.20-shell.patch create mode 100644 at-3.1.23-document-n.patch create mode 100644 at-aarch64.patch create mode 100644 at.spec create mode 100644 at_3.1.23.orig.tar.gz create mode 100644 atd.sysconf create mode 100644 atd.systemd create mode 100644 pam_atd diff --git a/at-3.1.14-fix_no_export.patch b/at-3.1.14-fix_no_export.patch new file mode 100644 index 0000000..096eed7 --- /dev/null +++ b/at-3.1.14-fix_no_export.patch @@ -0,0 +1,15 @@ +diff -up at-3.1.14/at.c.export at-3.1.14/at.c +--- at-3.1.14/at.c.export 2013-10-07 14:53:59.980521240 +0200 ++++ at-3.1.14/at.c 2013-10-07 14:54:35.722560527 +0200 +@@ -388,8 +388,9 @@ writefile(time_t runtimer, char queue) + unsigned int i; + for (i = 0; i < sizeof(no_export) / sizeof(no_export[0]); i++) { + export = export +- && (strncmp(*atenv, no_export[i], +- (size_t) (eqp - *atenv)) != 0); ++ && ((((size_t) (eqp - *atenv)) != strlen(no_export[i])) ++ ||(strncmp(*atenv, no_export[i],(size_t) (eqp - *atenv)) != 0) ++ ); + } + eqp++; + } diff --git a/at-3.1.14-mailwithhostname.patch b/at-3.1.14-mailwithhostname.patch new file mode 100644 index 0000000..a2b3f79 --- /dev/null +++ b/at-3.1.14-mailwithhostname.patch @@ -0,0 +1,62 @@ +diff -up at-3.1.14/atd.c.mail at-3.1.14/atd.c +--- at-3.1.14/atd.c.mail 2013-12-04 11:39:44.556239282 +0100 ++++ at-3.1.14/atd.c 2013-12-04 11:40:50.544234246 +0100 +@@ -100,6 +100,10 @@ int selinux_enabled=0; + #define BATCH_INTERVAL_DEFAULT 60 + #define CHECK_INTERVAL 3600 + ++#ifndef MAXHOSTNAMELEN ++#define MAXHOSTNAMELEN 64 ++#endif ++ + /* Global variables */ + + uid_t real_uid, effective_uid; +@@ -117,6 +121,7 @@ static time_t last_chg; + static int nothing_to_do; + unsigned int batch_interval; + static int run_as_daemon = 0; ++static int mail_with_hostname = 0; + + static volatile sig_atomic_t term_signal = 0; + +@@ -298,6 +303,7 @@ run_file(const char *filename, uid_t uid + char fmt[64]; + unsigned long jobno; + int rc; ++ char hostbuf[MAXHOSTNAMELEN]; + #ifdef WITH_PAM + int retcode; + #endif +@@ -452,6 +458,11 @@ run_file(const char *filename, uid_t uid + + write_string(fd_out, "Subject: Output from your job "); + write_string(fd_out, jobbuf); ++ if (mail_with_hostname > 0) { ++ gethostname(hostbuf, MAXHOSTNAMELEN-1); ++ write_string(fd_out, " "); ++ write_string(fd_out, hostbuf); ++ } + write_string(fd_out, "\nTo: "); + write_string(fd_out, mailname); + write_string(fd_out, "\n\n"); +@@ -843,7 +854,7 @@ main(int argc, char *argv[]) + run_as_daemon = 1; + batch_interval = BATCH_INTERVAL_DEFAULT; + +- while ((c = getopt(argc, argv, "sdl:b:f")) != EOF) { ++ while ((c = getopt(argc, argv, "sdnl:b:f")) != EOF) { + switch (c) { + case 'l': + if (sscanf(optarg, "%lf", &load_avg) != 1) +@@ -865,6 +876,10 @@ main(int argc, char *argv[]) + daemon_foreground++; + break; + ++ case 'n': ++ mail_with_hostname=1; ++ break; ++ + case 's': + run_as_daemon = 0; + break; diff --git a/at-3.1.14-opt_V.patch b/at-3.1.14-opt_V.patch new file mode 100644 index 0000000..c9c2106 --- /dev/null +++ b/at-3.1.14-opt_V.patch @@ -0,0 +1,17 @@ +diff -up at-3.1.14/at.c.opt at-3.1.14/at.c +--- at-3.1.14/at.c.opt 2013-09-26 16:54:29.920476315 +0200 ++++ at-3.1.14/at.c 2013-09-26 16:55:06.301562646 +0200 +@@ -842,10 +842,9 @@ main(int argc, char **argv) + */ + + if (disp_version) { +- fprintf(stderr, "at version " VERSION "\n" +- "Please report bugs to the Debian bug tracking system (http://bugs.debian.org/)\n" +- "or contact the maintainers (at@packages.debian.org).\n"); +- exit(EXIT_SUCCESS); ++ fprintf(stderr, "at version " VERSION "\n"); ++ if (argc == 2) ++ exit(EXIT_SUCCESS); + } + + /* select our program diff --git a/at-3.1.14-usePOSIXtimers.patch b/at-3.1.14-usePOSIXtimers.patch new file mode 100644 index 0000000..89c5614 --- /dev/null +++ b/at-3.1.14-usePOSIXtimers.patch @@ -0,0 +1,111 @@ +diff -up at-3.1.14/atd.c.timers at-3.1.14/atd.c +--- at-3.1.14/atd.c.timers 2013-12-02 11:03:01.250080057 +0100 ++++ at-3.1.14/atd.c 2013-12-02 11:06:15.560243498 +0100 +@@ -831,6 +831,54 @@ run_loop() + return next_job; + } + ++#ifdef HAVE_TIMER_CREATE ++timer_t timer; ++struct itimerspec timeout; ++ ++void timer_setup() ++{ ++ struct sigevent sev; ++ ++ sev.sigev_notify = SIGEV_SIGNAL; ++ sev.sigev_signo = SIGHUP; ++ sev.sigev_value.sival_ptr = &timer; ++ ++ memset(&timeout, 0, sizeof(timeout)); ++ ++ if (timer_create(CLOCK_REALTIME, &sev, &timer) < 0) ++ pabort("unable to create timer"); ++} ++ ++time_t atd_gettime() ++{ ++ struct timespec curtime; ++ ++ clock_gettime(CLOCK_REALTIME, &curtime); ++ ++ return curtime.tv_sec; ++} ++ ++void atd_setalarm(time_t next) ++{ ++ timeout.it_value.tv_sec = next; ++ timer_settime(timer, TIMER_ABSTIME, &timeout, NULL); ++ pause(); ++} ++#else ++void timer_setup() ++{ ++} ++ ++time_t atd_gettime() ++{ ++ return time(NULL); ++} ++ ++void atd_setalarm(time_t next) ++{ ++ sleep(next - atd_gettime()); ++} ++#endif + /* Global functions */ + + int +@@ -936,7 +984,7 @@ main(int argc, char *argv[]) + sigaction(SIGCHLD, &act, NULL); + + if (!run_as_daemon) { +- now = time(NULL); ++ now = atd_gettime(); + run_loop(); + exit(EXIT_SUCCESS); + } +@@ -959,13 +1007,14 @@ main(int argc, char *argv[]) + act.sa_handler = set_term; + sigaction(SIGINT, &act, NULL); + ++ timer_setup(); + daemon_setup(); + + do { +- now = time(NULL); ++ now = atd_gettime(); + next_invocation = run_loop(); + if (next_invocation > now) { +- sleep(next_invocation - now); ++ atd_setalarm(next_invocation); + } + } while (!term_signal); + daemon_cleanup(); +diff -up at-3.1.14/config.h.in.timers at-3.1.14/config.h.in +--- at-3.1.14/config.h.in.timers 2013-12-02 11:00:27.000000000 +0100 ++++ at-3.1.14/config.h.in 2013-12-02 11:02:06.521033976 +0100 +@@ -38,6 +38,9 @@ + /* Define to 1 if you have the `getloadavg' function. */ + #undef HAVE_GETLOADAVG + ++/* Define to 1 if you have the `timer_create' function. */ ++#undef HAVE_TIMER_CREATE ++ + /* Define to 1 if you have the header file. */ + #undef HAVE_GETOPT_H + +diff -up at-3.1.14/configure.ac.timers at-3.1.14/configure.ac +--- at-3.1.14/configure.ac.timers 2013-12-02 11:00:27.000000000 +0100 ++++ at-3.1.14/configure.ac 2013-12-02 11:02:45.217066560 +0100 +@@ -254,6 +254,10 @@ AC_CHECK_LIB(selinux, is_selinux_enabled + AC_SUBST(SELINUXLIB) + AC_SUBST(WITH_SELINUX) + ++dnl check for POSIX timer functions ++AC_SEARCH_LIBS([timer_create],[rt]) ++AC_CHECK_FUNCS([timer_create]) ++ + AC_MSG_CHECKING(groupname to run under) + AC_ARG_WITH(daemon_groupname, + [ --with-daemon_groupname=DAEMON_GROUPNAME Groupname to run under (default daemon) ], diff --git a/at-3.1.16-clear-nonjobs.patch b/at-3.1.16-clear-nonjobs.patch new file mode 100644 index 0000000..05fc2c2 --- /dev/null +++ b/at-3.1.16-clear-nonjobs.patch @@ -0,0 +1,42 @@ +diff -up at-3.1.16/atd.c.clear-nonjobs at-3.1.16/atd.c +--- at-3.1.16/atd.c.clear-nonjobs 2014-12-11 10:32:24.000000000 +0100 ++++ at-3.1.16/atd.c 2015-09-09 11:40:22.544679351 +0200 +@@ -414,10 +414,22 @@ run_file(const char *filename, uid_t uid + sprintf(fmt, "#!/bin/sh\n# atrun uid=%%d gid=%%d\n# mail %%%ds %%d", + mailsize ); + ++ /* Unlink the file unless there was an error reading it (perhaps ++ * temporary). ++ * If the file has a bogus format there is no reason in trying ++ * to run it again and again. ++ */ + if (fscanf(stream, fmt, +- &nuid, &ngid, mailname, &send_mail) != 4) +- pabort("File %.500s is in wrong format - aborting", +- filename); ++ &nuid, &ngid, mailname, &send_mail) != 4) { ++ if (ferror(stream)) ++ perr("Error reading the job file"); ++ ++ unlink(filename); ++ pabort("File %.500s is in wrong format - aborting", ++ filename); ++ } ++ ++ unlink(filename); + + if (mailname[0] == '-') + pabort("illegal mail name %.300s in job %8lu (%.300s)", mailname, +@@ -427,12 +439,6 @@ run_file(const char *filename, uid_t uid + pabort("Job %8lu (%.500s) - userid %d does not match file uid %d", + jobno, filename, nuid, uid); + +- /* We are now committed to executing this script. Unlink the +- * original. +- */ +- +- unlink(filename); +- + fclose(stream); + if (chdir(ATSPOOL_DIR) < 0) + perr("Cannot chdir to " ATSPOOL_DIR); diff --git a/at-3.1.16-fclose-error.patch b/at-3.1.16-fclose-error.patch new file mode 100644 index 0000000..5006d68 --- /dev/null +++ b/at-3.1.16-fclose-error.patch @@ -0,0 +1,26 @@ +diff -up at-3.1.16/at.c.fclose at-3.1.16/at.c +--- at-3.1.16/at.c.fclose 2014-11-06 16:11:28.000000000 +0100 ++++ at-3.1.16/at.c 2014-11-24 15:30:12.704502966 +0100 +@@ -209,7 +209,11 @@ nextjob() + jobno = (1 + jobno) % 0xfffff; /* 2^20 jobs enough? */ + fprintf(fid, "%05lx\n", jobno); + +- fclose(fid); ++ if (ferror(fid)) ++ jobno = EOF; ++ ++ if (fclose(fid) != 0) ++ jobno = EOF; + return jobno; + } + +@@ -494,7 +498,8 @@ writefile(time_t runtimer, char queue) + if (ferror(stdin)) + panic("Input error"); + +- fclose(fp); ++ if (fclose(fp) != 0) ++ panic("Output error"); + + /* Set the x bit so that we're ready to start executing + */ diff --git a/at-3.1.18-make.patch b/at-3.1.18-make.patch new file mode 100644 index 0000000..171b63c --- /dev/null +++ b/at-3.1.18-make.patch @@ -0,0 +1,82 @@ +diff -up at-3.1.18/Makefile.in.make at-3.1.18/Makefile.in +--- at-3.1.18/Makefile.in.make 2015-12-06 16:45:10.000000000 +0100 ++++ at-3.1.18/Makefile.in 2016-03-23 12:38:15.652898579 +0100 +@@ -68,13 +68,13 @@ LIST = Filelist Filelist.asc + all: at atd atd.service atrun + + at: $(ATOBJECTS) +- $(CC) $(LDFLAGS) -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) ++ $(CC) $(LDFLAGS) -pie -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) + rm -f $(CLONES) + $(LN_S) -f at atq + $(LN_S) -f at atrm + + atd: $(RUNOBJECTS) +- $(CC) $(LDFLAGS) -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) $(SELINUXLIB) ++ $(CC) $(LDFLAGS) -pie -o atd $(RUNOBJECTS) $(LIBS) $(PAMLIB) $(SELINUXLIB) + + y.tab.c y.tab.h: parsetime.y + $(YACC) -d parsetime.y +@@ -89,38 +89,41 @@ atrun: atrun.in + configure + + .c.o: +- $(CC) -c $(CFLAGS) $(DEFS) $*.c ++ $(CC) -c $(CFLAGS) -fPIE $(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) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 755 -d $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) +- chmod 1770 $(IROOT)$(ATSPOOL_DIR) $(IROOT)$(ATJOB_DIR) ++ $(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)$(etcdir)/pam.d/ ++ $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -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 -g $(DAEMON_GROUPNAME) -m 640 at.deny $(IROOT)$(etcdir)/ +- $(INSTALL) -g $(DAEMON_GROUPNAME) -o $(DAEMON_USERNAME) -m 6755 at $(IROOT)$(bindir) ++ test -f $(IROOT)$(etcdir)/at.allow || test -f $(IROOT)$(etcdir)/at.deny || $(INSTALL) -m 600 at.deny $(IROOT)$(etcdir)/ ++ $(INSTALL) -o $(INSTALL_ROOT_USER) -g $(DAEMON_GROUPNAME) pam_atd $(IROOT)$(etcdir)/pam.d/atd ++ $(INSTALL) -m 4755 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 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) -d -m 755 $(IROOT)$(man1dir) ++ $(INSTALL) -d -m 755 $(IROOT)$(man5dir) ++ $(INSTALL) -d -m 755 $(IROOT)$(man8dir) ++ $(INSTALL) -m 755 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) -m 644 atd.8 $(IROOT)$(man8dir)/ + sed "s,\$${exec_prefix},$(exec_prefix),g" tmpman +- $(INSTALL) -g root -o root -m 644 tmpman $(IROOT)$(man8dir)/atrun.8 ++ $(INSTALL) -m 644 tmpman $(IROOT)$(man8dir)/atrun.8 + rm -f tmpman +- $(INSTALL) -g root -o root -m 644 at.allow.5 $(IROOT)$(man5dir)/ ++ $(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-3.1.18-nitpicks.patch b/at-3.1.18-nitpicks.patch new file mode 100644 index 0000000..2bcaebb --- /dev/null +++ b/at-3.1.18-nitpicks.patch @@ -0,0 +1,80 @@ +diff -up at-3.1.18/atd.c.nit at-3.1.18/atd.c +--- at-3.1.18/atd.c.nit 2016-03-23 12:46:49.222277787 +0100 ++++ at-3.1.18/atd.c 2016-03-23 12:47:50.521639804 +0100 +@@ -196,6 +196,18 @@ myfork() + + #define fork myfork + #endif ++#undef ATD_MAIL_PROGRAM ++#undef ATD_MAIL_NAME ++#if defined(SENDMAIL) ++#define ATD_MAIL_PROGRAM SENDMAIL ++#define ATD_MAIL_NAME "sendmail" ++#elif defined(MAILC) ++#define ATD_MAIL_PROGRAM MAILC ++#define ATD_MAIL_NAME "mail" ++#elif defined(MAILX) ++#define ATD_MAIL_PROGRAM MAILX ++#define ATD_MAIL_NAME "mailx" ++#endif + + #ifdef WITH_SELINUX + static int +@@ -339,6 +351,9 @@ run_file(const char *filename, uid_t uid + free(newname); + return; + } ++ ++ (void) setsid(); /* own session for process */ ++ + /* Let's see who we mail to. Hopefully, we can read it from + * the command file; if not, send it to the owner, or, failing that, + * to root. +@@ -507,6 +522,9 @@ run_file(const char *filename, uid_t uid + if (setuid(uid) < 0) + perr("Cannot set user id"); + ++ if (SIG_ERR == signal(SIGCHLD, SIG_DFL)) ++ perr("Cannot reset signal handler to default"); ++ + chdir("/"); + + execle("/bin/sh", "sh", (char *) NULL, nenvp); +@@ -572,6 +590,9 @@ run_file(const char *filename, uid_t uid + 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 defined(SENDMAIL) +@@ -699,6 +720,7 @@ run_loop() + * 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; +@@ -733,6 +755,7 @@ run_loop() + 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; +diff -up at-3.1.18/at.1.in.nit at-3.1.18/at.1.in +--- at-3.1.18/at.1.in.nit 2015-12-06 16:45:10.000000000 +0100 ++++ at-3.1.18/at.1.in 2016-03-23 12:46:49.226277876 +0100 +@@ -210,7 +210,7 @@ queue for + .BR batch . + Queues with higher letters run with increased niceness. The special + queue "=" is reserved for jobs which are currently running. +-.P ++ + If a job is submitted to a queue designated with an uppercase letter, the + job is treated as if it were submitted to batch at the time of the job. + Once the time is reached, the batch processing rules with respect to load diff --git a/at-3.1.18-noabort.patch b/at-3.1.18-noabort.patch new file mode 100644 index 0000000..1154fb9 --- /dev/null +++ b/at-3.1.18-noabort.patch @@ -0,0 +1,43 @@ +diff -up at-3.1.18/atd.c.noabort at-3.1.18/atd.c +--- at-3.1.18/atd.c.noabort 2016-03-23 12:49:15.147520116 +0100 ++++ at-3.1.18/atd.c 2016-03-23 12:49:15.148520138 +0100 +@@ -349,9 +349,12 @@ run_file(const char *filename, uid_t uid + */ + + pid = fork(); +- if (pid == -1) +- perr("Cannot fork"); +- ++ if (pid == -1) { ++ lerr("Cannot fork for job execution"); ++ free(mailname); ++ free(newname); ++ return; ++ } + else if (pid != 0) { + free(mailname); + free(newname); +@@ -669,15 +672,19 @@ run_loop() + * up. + */ + +- if (stat(".", &buf) == -1) +- perr("Cannot stat " ATJOB_DIR); ++ if (stat(".", &buf) == -1) { ++ lerr("Cannot stat " ATJOB_DIR); ++ return next_job; ++ } + + 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); ++ if ((spool = opendir(".")) == NULL) { ++ lerr("Cannot read " ATJOB_DIR); ++ return next_job; ++ } + + run_batch = 0; + nothing_to_do = 1; diff --git a/at-3.1.18-utc-dst.patch b/at-3.1.18-utc-dst.patch new file mode 100644 index 0000000..3a2a40b --- /dev/null +++ b/at-3.1.18-utc-dst.patch @@ -0,0 +1,24 @@ +diff -up at-3.1.18/parsetime.y.dst at-3.1.18/parsetime.y +--- at-3.1.18/parsetime.y.dst 2015-12-06 16:45:10.000000000 +0100 ++++ at-3.1.18/parsetime.y 2015-07-01 13:53:14.088881926 +0200 +@@ -476,8 +476,8 @@ parsetime(time_t currtime, int argc, cha + exectm = *localtime(&currtime); + currtime -= exectm.tm_sec; + exectm.tm_sec = 0; +- exectm.tm_isdst = -1; + memcpy(&currtm,&exectm,sizeof(currtm)); ++ exectm.tm_isdst = -1; + time_only = 0; + yearspec = 0; + +@@ -503,8 +503,8 @@ parsetime(time_t currtime, int argc, cha + return 0; + if (isgmt) { + exectime -= timezone; +- if (currtm.tm_isdst && !exectm.tm_isdst) +- exectime -= 3600; ++ if (exectm.tm_isdst) ++ exectime += 3600; + } + if (exectime < currtime) + panic("refusing to create job destined in the past"); diff --git a/at-3.1.20-aborted-jobs.patch b/at-3.1.20-aborted-jobs.patch new file mode 100644 index 0000000..78a196f --- /dev/null +++ b/at-3.1.20-aborted-jobs.patch @@ -0,0 +1,22 @@ +diff -up at-3.1.20/atd.c.aborted at-3.1.20/atd.c +--- at-3.1.20/atd.c.aborted 2017-09-14 15:31:47.971486148 +0200 ++++ at-3.1.20/atd.c 2017-09-14 15:43:53.506567281 +0200 +@@ -731,12 +731,17 @@ run_loop() + /* Is the file already locked? + */ + if (buf.st_nlink > 1) { ++ if (run_time < buf.st_mtime) ++ run_time = buf.st_mtime; + if (run_time + CHECK_INTERVAL <= now) { +- + /* Something went wrong the last time this was executed. + * Let's remove the lockfile and reschedule. ++ * We also change the timestamp to avoid rerunning the job more ++ * than once every CHECK_INTERVAL. + */ + strncpy(lock_name, dirent->d_name, sizeof(lock_name)); ++ if (utime(lock_name, 0) < 0) ++ syslog(LOG_ERR, "utime couldn't be set for lock file %s\n", lock_name); + lock_name[sizeof(lock_name)-1] = '\0'; + lock_name[0] = '='; + unlink(lock_name); diff --git a/at-3.1.20-lock-locks.patch b/at-3.1.20-lock-locks.patch new file mode 100644 index 0000000..17d6ad4 --- /dev/null +++ b/at-3.1.20-lock-locks.patch @@ -0,0 +1,108 @@ +diff -up at-3.1.20/atd.c.lock-locks at-3.1.20/atd.c +--- at-3.1.20/atd.c.lock-locks 2016-07-01 10:41:50.640867692 +0200 ++++ at-3.1.20/atd.c 2016-07-01 10:42:32.345844967 +0200 +@@ -74,6 +74,9 @@ + #include + #endif + ++#include ++#include ++ + /* Local headers */ + + #include "privs.h" +@@ -288,7 +291,7 @@ run_file(const char *filename, uid_t uid + * mail to the user. + */ + pid_t pid; +- int fd_out, fd_in; ++ int fd_out, fd_in, fd_std; + char jobbuf[9]; + char *mailname = NULL; + int mailsize = 128; +@@ -410,6 +413,10 @@ run_file(const char *filename, uid_t uid + + fcntl(fd_in, F_SETFD, fflags & ~FD_CLOEXEC); + ++ if (flock(fd_in, LOCK_EX | LOCK_NB) != 0) ++ perr("Somebody already locked the job %8lu (%.500s) - " ++ "aborting", jobno, filename); ++ + /* + * 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 +@@ -553,10 +560,7 @@ run_file(const char *filename, uid_t uid + PRIV_END + } + /* We're the parent. Let's wait. +- */ +- close(fd_in); +- +- /* We inherited the master's SIGCHLD handler, which does a ++ We inherited the master's SIGCHLD handler, which does a + non-blocking waitpid. So this blocking one will eventually + return with an ECHILD error. + */ +@@ -573,14 +577,14 @@ run_file(const char *filename, uid_t uid + /* some sendmail implementations are confused if stdout, stderr are + * not available, so let them point to /dev/null + */ +- if ((fd_in = open("/dev/null", O_WRONLY)) < 0) ++ if ((fd_std = open("/dev/null", O_WRONLY)) < 0) + perr("Could not open /dev/null."); +- if (dup2(fd_in, STDOUT_FILENO) < 0) ++ if (dup2(fd_std, STDOUT_FILENO) < 0) + perr("Could not use /dev/null as standard output."); +- if (dup2(fd_in, STDERR_FILENO) < 0) ++ if (dup2(fd_std, STDERR_FILENO) < 0) + perr("Could not use /dev/null as standard error."); +- if (fd_in != STDOUT_FILENO && fd_in != STDERR_FILENO) +- close(fd_in); ++ if (fd_std != STDOUT_FILENO && fd_std != STDERR_FILENO) ++ close(fd_std); + + if (unlink(filename) == -1) + syslog(LOG_WARNING, "Warning: removing output file for job %li failed: %s", +@@ -588,7 +592,12 @@ run_file(const char *filename, uid_t uid + + /* The job is now finished. We can delete its input file. + */ +- chdir(ATJOB_DIR); ++ if (chdir(ATJOB_DIR) != 0) ++ perr("Somebody removed %s directory from under us.", ATJOB_DIR); ++ ++ /* This also removes the flock */ ++ (void)close(fd_in); ++ + unlink(newname); + free(newname); + +@@ -723,16 +732,18 @@ run_loop() + + /* Skip lock files */ + if (queue == '=') { +- /* FIXME: calhariz */ +- /* I think the following code is broken, but commenting +- may haven unknow side effects. Make a release and see +- in the wild how it works. For more information see: +- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=818508/* +- +- /* if ((buf.st_nlink == 1) && (run_time + CHECK_INTERVAL <= now)) { */ +- /* /\* Remove stale lockfile FIXME: lock the lockfile, if you fail, it's still in use. *\/ */ +- /* unlink(dirent->d_name); */ +- /* } */ ++ if ((buf.st_nlink == 1) && (run_time + CHECK_INTERVAL <= now)) { ++ int fd; ++ ++ fd = open(dirent->d_name, O_RDONLY); ++ if (fd != -1) { ++ if (flock(fd, LOCK_EX | LOCK_NB) == 0) { ++ unlink(dirent->d_name); ++ syslog(LOG_NOTICE, "removing stale lock file %s\n", dirent->d_name); ++ } ++ (void)close(fd); ++ } ++ } + continue; + } + /* Skip any other file types which may have been invented in diff --git a/at-3.1.20-log-jobs.patch b/at-3.1.20-log-jobs.patch new file mode 100644 index 0000000..44cc7d3 --- /dev/null +++ b/at-3.1.20-log-jobs.patch @@ -0,0 +1,14 @@ +diff -up at-3.1.20/atd.c.log-jobs at-3.1.20/atd.c +--- at-3.1.20/atd.c.log-jobs 2018-05-23 15:09:35.158362293 +0200 ++++ at-3.1.20/atd.c 2018-05-23 15:18:39.153965582 +0200 +@@ -376,6 +376,10 @@ run_file(const char *filename, uid_t uid + pabort("Userid %lu not found - aborting job %8lu (%.500s)", + (unsigned long) uid, jobno, filename); + } ++ ++ syslog(LOG_INFO, "Starting job %lu (%.500s) for user '%s' (%lu)", ++ jobno, filename, pentry->pw_name, (unsigned long) uid); ++ + PRIV_START + + stream = fopen(filename, "r"); diff --git a/at-3.1.20-pam.patch b/at-3.1.20-pam.patch new file mode 100644 index 0000000..418fa84 --- /dev/null +++ b/at-3.1.20-pam.patch @@ -0,0 +1,436 @@ +diff -up at-3.1.20/at.c.pam at-3.1.20/at.c +--- at-3.1.20/at.c.pam 2016-06-28 22:18:00.000000000 +0200 ++++ at-3.1.20/at.c 2016-07-01 09:44:22.251683924 +0200 +@@ -144,18 +144,13 @@ sigc(int signo) + /* If the user presses ^C, remove the spool file and exit + */ + if (fcreated) { +- /* + PRIV_START +- ++ /* + We need the unprivileged uid here since the file is owned by the real + (not effective) uid. + */ +- setregid(real_gid, effective_gid); +- unlink(atfile); +- setregid(effective_gid, real_gid); +- /* ++ unlink(atfile); + PRIV_END +- */ + } + exit(EXIT_FAILURE); + } +@@ -315,26 +310,19 @@ writefile(time_t runtimer, char queue) + * bit. Yes, this is a kluge. + */ + cmask = umask(S_IRUSR | S_IWUSR | S_IXUSR); +- seteuid(real_uid); ++ if ((seteuid(effective_uid)) < 0) ++ perr("Error in seteuid: %s", errno); + if ((fd = open(atfile, O_CREAT | O_EXCL | O_TRUNC | O_WRONLY, S_IRUSR)) == -1) + perr("Cannot create atjob file %.500s", atfile); +- seteuid(effective_uid); + + if ((fd2 = dup(fd)) < 0) + perr("Error in dup() of job file"); + +- /* + if (fchown(fd2, real_uid, real_gid) != 0) +- perr("Cannot give away file"); +- */ ++ perr("Cannot give real_uid and real_gid the file"); + + PRIV_END + +- /* We no longer need suid root; now we just need to be able to write +- * to the directory, if necessary. +- */ +- +- REDUCE_PRIV(daemon_uid, daemon_gid) + /* We've successfully created the file; let's set the flag so it + * gets removed in case of an interrupt or error. + */ +@@ -673,7 +661,7 @@ process_jobs(int argc, char **argv, int + We need the unprivileged uid here since the file is owned by the real + (not effective) uid. + */ +- setregid(real_gid, effective_gid); ++ PRIV_START + + if (queue == '=') { + fprintf(stderr, "Warning: deleting running job\n"); +@@ -682,8 +670,8 @@ process_jobs(int argc, char **argv, int + perr("Cannot unlink %.500s", dirent->d_name); + rc = EXIT_FAILURE; + } ++ PRIV_END + +- setregid(effective_gid, real_gid); + done = 1; + + break; +@@ -693,7 +681,7 @@ process_jobs(int argc, char **argv, int + FILE *fp; + int ch; + +- setregid(real_gid, effective_gid); ++ PRIV_START + fp = fopen(dirent->d_name, "r"); + + if (fp) { +@@ -706,7 +694,7 @@ process_jobs(int argc, char **argv, int + perr("Cannot open %.500s", dirent->d_name); + rc = EXIT_FAILURE; + } +- setregid(effective_gid, real_gid); ++ PRIV_END + } + break; + +diff -up at-3.1.20/atd.c.pam at-3.1.20/atd.c +--- at-3.1.20/atd.c.pam 2016-06-28 22:14:39.000000000 +0200 ++++ at-3.1.20/atd.c 2016-07-01 09:44:22.251683924 +0200 +@@ -91,6 +91,10 @@ int selinux_enabled = 0; + + /* Macros */ + ++#ifndef LOG_ATD ++#define LOG_ATD LOG_DAEMON ++#endif ++ + #define BATCH_INTERVAL_DEFAULT 60 + #define CHECK_INTERVAL 3600 + +@@ -114,7 +118,7 @@ static int run_as_daemon = 0; + + static volatile sig_atomic_t term_signal = 0; + +-#ifdef HAVE_PAM ++#ifdef WITH_PAM + #include + + static pam_handle_t *pamh = NULL; +@@ -123,15 +127,7 @@ static const struct pam_conv conv = { + NULL + }; + +-#define PAM_FAIL_CHECK if (retcode != PAM_SUCCESS) { \ +- fprintf(stderr,"\n%s\n",pam_strerror(pamh, retcode)); \ +- syslog(LOG_ERR,"%s",pam_strerror(pamh, retcode)); \ +- pam_end(pamh, retcode); exit(1); \ +- } +-#define PAM_END { retcode = pam_close_session(pamh,0); \ +- pam_end(pamh,retcode); } +- +-#endif /* HAVE_PAM */ ++#endif /* WITH_PAM */ + + /* Signal handlers */ + RETSIGTYPE +@@ -292,7 +288,7 @@ run_file(const char *filename, uid_t uid + char fmt[64]; + unsigned long jobno; + int rc; +-#ifdef HAVE_PAM ++#ifdef WITH_PAM + int retcode; + #endif + +@@ -449,17 +445,11 @@ run_file(const char *filename, uid_t uid + fstat(fd_out, &buf); + size = buf.st_size; + +-#ifdef HAVE_PAM +- PRIV_START +- retcode = pam_start("atd", pentry->pw_name, &conv, &pamh); +- PAM_FAIL_CHECK; +- retcode = pam_acct_mgmt(pamh, PAM_SILENT); +- PAM_FAIL_CHECK; +- retcode = pam_open_session(pamh, PAM_SILENT); +- PAM_FAIL_CHECK; +- retcode = pam_setcred(pamh, PAM_ESTABLISH_CRED | PAM_SILENT); +- PAM_FAIL_CHECK; +- PRIV_END ++#ifdef WITH_PAM ++ AT_START_PAM; ++ AT_OPEN_PAM_SESSION; ++ closelog(); ++ openlog("atd", LOG_PID, LOG_ATD); + #endif + + close(STDIN_FILENO); +@@ -473,7 +463,14 @@ run_file(const char *filename, uid_t uid + else if (pid == 0) { + char *nul = NULL; + char **nenvp = &nul; ++ char **pam_envp=0L; + ++ PRIV_START ++#ifdef WITH_PAM ++ pam_envp = pam_getenvlist(pamh); ++ if ( ( pam_envp != 0L ) && (pam_envp[0] != 0L) ) ++ nenvp = pam_envp; ++#endif + /* Set up things for the child; we want standard input from the + * input file, and standard output and error sent to our output file. + */ +@@ -492,8 +489,6 @@ run_file(const char *filename, uid_t uid + close(fd_in); + close(fd_out); + +- PRIV_START +- + nice((tolower((int) queue) - 'a' + 1) * 2); + + #ifdef WITH_SELINUX +@@ -514,9 +509,9 @@ run_file(const char *filename, uid_t uid + + chdir("/"); + +- if (execle("/bin/sh", "sh", (char *) NULL, nenvp) != 0) +- perr("Exec failed for /bin/sh"); +- ++ execle("/bin/sh", "sh", (char *) NULL, nenvp); ++ perr("Exec failed for /bin/sh"); ++ /* perr exits, the PRIV_END is just for nice form */ + PRIV_END + } + /* We're the parent. Let's wait. +@@ -529,14 +524,6 @@ run_file(const char *filename, uid_t uid + */ + waitpid(pid, (int *) NULL, 0); + +-#ifdef HAVE_PAM +- PRIV_START +- pam_setcred(pamh, PAM_DELETE_CRED | PAM_SILENT); +- retcode = pam_close_session(pamh, PAM_SILENT); +- pam_end(pamh, retcode); +- PRIV_END +-#endif +- + /* Send mail. Unlink the output file after opening it, so it + * doesn't hang around after the run. + */ +@@ -567,8 +554,13 @@ run_file(const char *filename, uid_t uid + unlink(newname); + free(newname); + ++#ifdef ATD_MAIL_PROGRAM + if (((send_mail != -1) && (buf.st_size != size)) || (send_mail == 1)) { ++ int mail_pid = -1; + ++ mail_pid = fork(); ++ ++ if ( mail_pid == 0 ) { + PRIV_START + + if (initgroups(pentry->pw_name, pentry->pw_gid)) +@@ -590,7 +582,20 @@ run_file(const char *filename, uid_t uid + perr("Exec failed for mail command"); + + PRIV_END ++ } ++ else if ( mail_pid == -1 ) { ++ syslog(LOG_ERR, "fork of mailer failed: %m"); ++ } ++ /* Parent */ ++ waitpid(mail_pid, (int *) NULL, 0); + } ++ ++#ifdef WITH_PAM ++ AT_CLOSE_PAM; ++ closelog(); ++ openlog("atd", LOG_PID, LOG_ATD); ++#endif ++#endif + exit(EXIT_SUCCESS); + } + +diff -up at-3.1.20/config.h.in.pam at-3.1.20/config.h.in +--- at-3.1.20/config.h.in.pam 2015-12-18 21:29:24.000000000 +0100 ++++ at-3.1.20/config.h.in 2016-07-01 09:44:22.251683924 +0200 +@@ -68,8 +68,8 @@ + /* Define to 1 if you have the header file. */ + #undef HAVE_NLIST_H + +-/* Define to 1 for PAM support */ +-#undef HAVE_PAM ++/* Define if you are building with_pam */ ++#undef WITH_PAM + + /* Define to 1 if you have the `pstat_getdynamic' function. */ + #undef HAVE_PSTAT_GETDYNAMIC +diff -up at-3.1.20/configure.ac.pam at-3.1.20/configure.ac +--- at-3.1.20/configure.ac.pam 2016-06-28 22:55:52.000000000 +0200 ++++ at-3.1.20/configure.ac 2016-07-01 09:45:23.268092527 +0200 +@@ -78,7 +78,7 @@ AC_FUNC_GETLOADAVG + AC_CHECK_FUNCS(getcwd mktime strftime setreuid setresuid sigaction waitpid) + AC_CHECK_HEADERS(security/pam_appl.h, [ + PAMLIB="-lpam" +- AC_DEFINE(HAVE_PAM, 1, [Define to 1 for PAM support]) ++ AC_DEFINE(WITH_PAM, 1, [Define to 1 for PAM support]) + ]) + + dnl Checking for programs +@@ -239,6 +239,13 @@ AC_ARG_WITH(daemon_username, + ) + AC_SUBST(DAEMON_USERNAME) + ++AC_ARG_WITH(pam, ++[ --with-pam Define to enable pam support ], ++AC_DEFINE(WITH_PAM), ++) ++AC_CHECK_LIB(pam, pam_start, PAMLIB='-lpam -lpam_misc') ++AC_SUBST(PAMLIB) ++ + AC_ARG_WITH(selinux, + [ --with-selinux Define to run with selinux (default=check)], + [], +diff -up at-3.1.20/Makefile.in.pam at-3.1.20/Makefile.in +--- at-3.1.20/Makefile.in.pam 2016-07-01 09:44:22.250683901 +0200 ++++ at-3.1.20/Makefile.in 2016-07-01 09:44:22.252683947 +0200 +@@ -68,7 +68,7 @@ LIST = Filelist Filelist.asc + all: at atd atd.service atrun + + at: $(ATOBJECTS) +- $(CC) $(LDFLAGS) -pie -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) ++ $(CC) $(LDFLAGS) -pie -o at $(ATOBJECTS) $(LIBS) $(LEXLIB) $(PAMLIB) + rm -f $(CLONES) + $(LN_S) -f at atq + $(LN_S) -f at atrm +diff -up at-3.1.20/perm.c.pam at-3.1.20/perm.c +--- at-3.1.20/perm.c.pam 2015-08-22 00:09:22.000000000 +0200 ++++ at-3.1.20/perm.c 2016-07-01 09:44:22.252683947 +0200 +@@ -51,6 +51,14 @@ + #define PRIV_END while(0) + #endif + ++#ifdef WITH_PAM ++#include ++static pam_handle_t *pamh = NULL; ++static const struct pam_conv conv = { ++ NULL ++}; ++#endif ++ + /* Structures and unions */ + + +@@ -108,18 +116,45 @@ user_in_file(const char *path, const cha + int + check_permission() + { +- uid_t uid = geteuid(); ++ uid_t euid = geteuid(), uid=getuid(), egid=getegid(), gid=getgid(); + struct passwd *pentry; + int allow = 0, deny = 1; + +- if (uid == 0) ++ int retcode = 0; ++ if (euid == 0) + return 1; + +- if ((pentry = getpwuid(uid)) == NULL) { ++ if ((pentry = getpwuid(euid)) == NULL) { + perror("Cannot access user database"); + exit(EXIT_FAILURE); + } + ++#ifdef WITH_PAM ++/* ++ * We must check if the atd daemon userid will be allowed to gain the job owner user's ++ * credentials with PAM . If not, the user has been denied at(1) usage, eg. with pam_access. ++ */ ++ if (setreuid(daemon_uid, daemon_uid) != 0) { ++ fprintf(stderr, "cannot set egid: %s", strerror(errno)); ++ exit(1); ++ } ++ if (setregid(daemon_gid, daemon_gid) != 0) { ++ fprintf(stderr, "cannot set euid: %s", strerror(errno)); ++ exit(1); ++ } ++ ++ AT_START_PAM; ++ AT_CLOSE_PAM; ++ if (setregid(gid,egid) != 0) { ++ fprintf(stderr, "cannot set egid: %s", strerror(errno)); ++ exit(1); ++ } ++ if (setreuid(uid,euid) != 0) { ++ fprintf(stderr, "cannot set euid: %s", strerror(errno)); ++ exit(1); ++ } ++#endif ++ + allow = user_in_file(ETCDIR "/at.allow", pentry->pw_name); + if (allow==0 || allow==1) + return allow; +diff -up at-3.1.20/privs.h.pam at-3.1.20/privs.h +--- at-3.1.20/privs.h.pam 2015-08-22 00:09:22.000000000 +0200 ++++ at-3.1.20/privs.h 2016-07-01 09:44:22.252683947 +0200 +@@ -144,3 +144,63 @@ extern gid_t real_gid, effective_gid, da + #error "Cannot implement user ID swapping without setreuid or setresuid" + #endif + #endif ++ ++#ifdef WITH_PAM ++/* PAM failed after session was open. */ ++#define PAM_SESSION_FAIL if (retcode != PAM_SUCCESS) \ ++ pam_close_session(pamh,PAM_SILENT); ++ ++/* syslog will be logging error messages */ ++#ifdef HAVE_UNISTD_H ++#include ++#endif ++ ++/* PAM fail even before opening the session */ ++#define PAM_FAIL_CHECK \ ++ do { if (retcode != PAM_SUCCESS) { \ ++ fprintf(stderr,"PAM failure: %s\n",pam_strerror(pamh, retcode)); \ ++ syslog(LOG_ERR,"%s",pam_strerror(pamh, retcode)); \ ++ if (pamh) \ ++ pam_end(pamh, retcode); \ ++ if (setregid(getgid(),getegid()) != 0) { \ ++ fprintf(stderr, "cannot set egid: %s", strerror(errno)); \ ++ exit(1); \ ++ } \ ++ if (setreuid(getuid(),geteuid()) != 0) { \ ++ fprintf(stderr, "cannot set euid: %s", strerror(errno)); \ ++ exit(1); \ ++ } \ ++ exit(1); \ ++ } \ ++ } while (0) \ ++ ++static int pam_session_opened = 0; //global for open session ++ ++#define AT_START_PAM { \ ++ retcode = pam_start("atd", pentry->pw_name, &conv, &pamh); \ ++ PAM_FAIL_CHECK; \ ++ retcode = pam_set_item(pamh, PAM_TTY, "atd"); \ ++ PAM_FAIL_CHECK; \ ++ retcode = pam_acct_mgmt(pamh, PAM_SILENT); \ ++ PAM_FAIL_CHECK; \ ++} ++ ++#define AT_OPEN_PAM_SESSION { \ ++ retcode = pam_open_session(pamh, PAM_SILENT); \ ++ PAM_FAIL_CHECK; \ ++ retcode = pam_setcred(pamh, PAM_ESTABLISH_CRED | PAM_SILENT); \ ++ PAM_FAIL_CHECK; \ ++ if (retcode == PAM_SUCCESS) \ ++ pam_session_opened = 1; \ ++} ++ ++#define AT_CLOSE_PAM { \ ++ if (pam_session_opened != 0) { \ ++ pam_setcred(pamh, PAM_DELETE_CRED | PAM_SILENT); \ ++ pam_close_session(pamh, PAM_SILENT); \ ++ } \ ++ pam_end(pamh, PAM_SUCCESS); \ ++} ++ ++#endif ++ diff --git a/at-3.1.20-shell.patch b/at-3.1.20-shell.patch new file mode 100644 index 0000000..ac9586c --- /dev/null +++ b/at-3.1.20-shell.patch @@ -0,0 +1,47 @@ +diff -up at-3.1.20/at.c.shell at-3.1.20/at.c +--- at-3.1.20/at.c.shell 2016-07-01 09:47:13.392684445 +0200 ++++ at-3.1.20/at.c 2016-07-01 09:48:47.679931959 +0200 +@@ -62,11 +62,8 @@ + #include + #include + +-#ifdef TM_IN_SYS_TIME + #include +-#else + #include +-#endif + + #ifdef HAVE_UNISTD_H + #include +@@ -239,6 +236,12 @@ writefile(time_t runtimer, char queue) + int kill_errno; + int rc; + int mailsize = 128; ++ struct timeval tv; ++ struct timezone tz; ++ long int i; ++ ++ gettimeofday(&tv, &tz); ++ srandom(getpid()+tv.tv_usec); + + /* Install the signal handler for SIGINT; terminate after removing the + * spool file if necessary +@@ -465,6 +468,9 @@ writefile(time_t runtimer, char queue) + fprintf(fp, " || {\n\t echo 'Execution directory " + "inaccessible' >&2\n\t exit 1\n}\n"); + ++ i = random(); ++ fprintf(fp, "${SHELL:-/bin/sh} << \'marcinDELIMITER%08lx\'\n", i); ++ + istty = isatty(fileno(stdin)); + if (istty) { + fprintf(stderr, "at> "); +@@ -480,7 +486,7 @@ writefile(time_t runtimer, char queue) + if (istty) { + fprintf(stderr, "\n"); + } +- fprintf(fp, "\n"); ++ fprintf(fp, "marcinDELIMITER%08lx\n", i); + if (ferror(fp)) + panic("Output error"); + fflush(fp); diff --git a/at-3.1.23-document-n.patch b/at-3.1.23-document-n.patch new file mode 100644 index 0000000..7028300 --- /dev/null +++ b/at-3.1.23-document-n.patch @@ -0,0 +1,22 @@ +diff -up at-3.1.23/atd.8.in.document-n at-3.1.23/atd.8.in +--- at-3.1.23/atd.8.in.document-n 2018-08-27 14:49:09.824182482 +0200 ++++ at-3.1.23/atd.8.in 2018-08-27 14:50:34.625518639 +0200 +@@ -9,6 +9,7 @@ atd \- run jobs queued for later executi + .IR batch_interval ] + .RB [ \-d ] + .RB [ \-f ] ++.RB [ \-n ] + .RB [ \-s ] + .SH DESCRIPTION + .B atd +@@ -44,6 +45,10 @@ in the foreground. + Process the at/batch queue only once. + This is primarily of use for compatibility with old versions of + .BR at ; ++.B \-n ++Append the hostname of the system to the subject of the e-mails sent by ++.BR atd . ++.TP 8 + .B "atd \-s" + is equivalent to the old + .B atrun diff --git a/at-aarch64.patch b/at-aarch64.patch new file mode 100644 index 0000000..7f8a449 --- /dev/null +++ b/at-aarch64.patch @@ -0,0 +1,486 @@ +diff -urN at-3.1.13/config.guess at-3.1.13-aarch64/config.guess +--- at-3.1.13/config.guess 2011-06-25 07:43:14.000000000 -0500 ++++ at-3.1.13-aarch64/config.guess 2013-03-07 19:22:31.804824167 -0600 +@@ -2,9 +2,9 @@ + # Attempt to guess a canonical system name. + # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, + # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, +-# 2011 Free Software Foundation, Inc. ++# 2011, 2012 Free Software Foundation, Inc. + +-timestamp='2011-05-11' ++timestamp='2012-09-25' + + # This file is free software; you can redistribute it and/or modify it + # under the terms of the GNU General Public License as published by +@@ -17,9 +17,7 @@ + # General Public License for more details. + # + # You should have received a copy of the GNU General Public License +-# along with this program; if not, write to the Free Software +-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +-# 02110-1301, USA. ++# along with this program; if not, see . + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a +@@ -57,8 +55,8 @@ + + Originally written by Per Bothner. + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +-Software Foundation, Inc. ++2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 ++Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +@@ -145,7 +143,7 @@ + case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or +- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, ++ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward +@@ -202,6 +200,10 @@ + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; ++ *:Bitrig:*:*) ++ UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` ++ echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} ++ exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} +@@ -304,7 +306,7 @@ + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; +- arm:riscos:*:*|arm:RISCOS:*:*) ++ arm*:riscos:*:*|arm*:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) +@@ -792,21 +794,26 @@ + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) +- case ${UNAME_MACHINE} in +- pc98) +- echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ UNAME_PROCESSOR=`/usr/bin/uname -p` ++ case ${UNAME_PROCESSOR} in + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) +- echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; ++ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; ++ *:MINGW64*:*) ++ echo ${UNAME_MACHINE}-pc-mingw64 ++ exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; ++ i*:MSYS*:*) ++ echo ${UNAME_MACHINE}-pc-msys ++ exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 +@@ -861,6 +868,13 @@ + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; ++ aarch64:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; ++ aarch64_be:Linux:*:*) ++ UNAME_MACHINE=aarch64_be ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; +@@ -895,13 +909,16 @@ + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) +- echo cris-axis-linux-gnu ++ echo ${UNAME_MACHINE}-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) +- echo crisv32-axis-linux-gnu ++ echo ${UNAME_MACHINE}-axis-linux-gnu + exit ;; + frv:Linux:*:*) +- echo frv-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-gnu ++ exit ;; ++ hexagon:Linux:*:*) ++ echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu +@@ -943,7 +960,7 @@ + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) +- echo or32-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu +@@ -978,13 +995,13 @@ + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + tile*:Linux:*:*) +- echo ${UNAME_MACHINE}-tilera-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) +- echo x86_64-unknown-linux-gnu ++ echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu +@@ -1191,6 +1208,9 @@ + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; ++ x86_64:Haiku:*:*) ++ echo x86_64-unknown-haiku ++ exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; +@@ -1246,7 +1266,7 @@ + NEO-?:NONSTOP_KERNEL:*:*) + echo neo-tandem-nsk${UNAME_RELEASE} + exit ;; +- NSE-?:NONSTOP_KERNEL:*:*) ++ NSE-*:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) +@@ -1315,11 +1335,11 @@ + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; ++ x86_64:VMkernel:*:*) ++ echo ${UNAME_MACHINE}-unknown-esx ++ exit ;; + esac + +-#echo '(No uname command or uname output not recognized.)' 1>&2 +-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 +- + eval $set_cc_for_build + cat >$dummy.c <. + # + # As a special exception to the GNU General Public License, if you + # distribute this file as part of a program that contains a +@@ -76,8 +74,8 @@ + GNU config.sub ($timestamp) + + Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, +-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free +-Software Foundation, Inc. ++2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 ++Free Software Foundation, Inc. + + This is free software; see the source for copying conditions. There is NO + warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." +@@ -125,13 +123,17 @@ + maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` + case $maybe_os in + nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ +- linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ ++ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; ++ android-linux) ++ os=-linux-android ++ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ++ ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] +@@ -154,7 +156,7 @@ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ +- -apple | -axis | -knuth | -cray | -microblaze) ++ -apple | -axis | -knuth | -cray | -microblaze*) + os= + basic_machine=$1 + ;; +@@ -223,6 +225,12 @@ + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; ++ -lynx*178) ++ os=-lynxos178 ++ ;; ++ -lynx*5) ++ os=-lynxos5 ++ ;; + -lynx*) + os=-lynxos + ;; +@@ -247,20 +255,25 @@ + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ ++ | aarch64 | aarch64_be \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ ++ | be32 | be64 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ ++ | epiphany \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ ++ | hexagon \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ ++ | le32 | le64 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ +- | maxq | mb | microblaze | mcore | mep | metag \ ++ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ +@@ -291,7 +304,7 @@ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ + | pyramid \ +- | rx \ ++ | rl78 | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ +@@ -300,7 +313,7 @@ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | ubicom32 \ +- | v850 | v850e \ ++ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ + | we32k \ + | x86 | xc16x | xstormy16 | xtensa \ + | z8k | z80) +@@ -315,8 +328,7 @@ + c6x) + basic_machine=tic6x-unknown + ;; +- m6811 | m68hc11 | m6812 | m68hc12 | picochip) +- # Motorola 68HC11/12. ++ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) + basic_machine=$basic_machine-unknown + os=-none + ;; +@@ -329,7 +341,10 @@ + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; +- ++ xgate) ++ basic_machine=$basic_machine-unknown ++ os=-none ++ ;; + xscaleeb) + basic_machine=armeb-unknown + ;; +@@ -352,11 +367,13 @@ + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ ++ | aarch64-* | aarch64_be-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ ++ | be32-* | be64-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* \ + | clipper-* | craynv-* | cydra-* \ +@@ -365,12 +382,15 @@ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ ++ | hexagon-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ ++ | le32-* | le64-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ +- | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ ++ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ ++ | microblaze-* | microblazeel-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ +@@ -400,7 +420,7 @@ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ + | pyramid-* \ +- | romp-* | rs6000-* | rx-* \ ++ | rl78-* | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ +@@ -408,10 +428,11 @@ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ +- | tile-* | tilegx-* \ ++ | tile*-* \ + | tron-* \ + | ubicom32-* \ +- | v850-* | v850e-* | vax-* \ ++ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ ++ | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ + | xstormy16-* | xtensa*-* \ +@@ -711,7 +732,6 @@ + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +-# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 +@@ -769,9 +789,13 @@ + basic_machine=ns32k-utek + os=-sysv + ;; +- microblaze) ++ microblaze*) + basic_machine=microblaze-xilinx + ;; ++ mingw64) ++ basic_machine=x86_64-pc ++ os=-mingw64 ++ ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 +@@ -808,10 +832,18 @@ + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; ++ msys) ++ basic_machine=i386-pc ++ os=-msys ++ ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; ++ nacl) ++ basic_machine=le32-unknown ++ os=-nacl ++ ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 +@@ -1120,13 +1152,8 @@ + basic_machine=t90-cray + os=-unicos + ;; +- # This must be matched before tile*. +- tilegx*) +- basic_machine=tilegx-unknown +- os=-linux-gnu +- ;; + tile*) +- basic_machine=tile-unknown ++ basic_machine=$basic_machine-unknown + os=-linux-gnu + ;; + tx39) +@@ -1330,15 +1357,15 @@ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ +- | -openbsd* | -solidbsd* \ ++ | -bitrig* | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ +- | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ +- | -mingw32* | -linux-gnu* | -linux-android* \ +- | -linux-newlib* | -linux-uclibc* \ ++ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ ++ | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ ++ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ +@@ -1521,6 +1548,9 @@ + c4x-* | tic4x-*) + os=-coff + ;; ++ hexagon-*) ++ os=-elf ++ ;; + tic54x-*) + os=-coff + ;; +@@ -1548,9 +1578,6 @@ + ;; + m68000-sun) + os=-sunos3 +- # This also exists in the configure program, but was not the +- # default. +- # os=-sunos4 + ;; + m68*-cisco) + os=-aout diff --git a/at.spec b/at.spec new file mode 100644 index 0000000..c8b787b --- /dev/null +++ b/at.spec @@ -0,0 +1,120 @@ +Name: at +Version: 3.1.23 +Release: 3 +Summary: A job manager +License: GPLv3+, GPLv2+, ISC, MIT, Public Domain +URL: http://ftp.debian.org/debian/pool/main/a/at +Source0: http://ftp.debian.org/debian/pool/main/a/at/at_%{version}.orig.tar.gz +Source1: pam_atd +Source2: atd.sysconf +Source3: atd.systemd + +Patch0: at-aarch64.patch +Patch1: at-3.1.18-make.patch +Patch2: at-3.1.20-pam.patch +Patch4: at-3.1.14-opt_V.patch +Patch5: at-3.1.20-shell.patch +Patch6: at-3.1.18-nitpicks.patch +Patch8: at-3.1.14-fix_no_export.patch +Patch9: at-3.1.14-mailwithhostname.patch +Patch10: at-3.1.14-usePOSIXtimers.patch +Patch12: at-3.1.20-aborted-jobs.patch +Patch13: at-3.1.18-noabort.patch +Patch14: at-3.1.16-fclose-error.patch +Patch15: at-3.1.16-clear-nonjobs.patch +Patch16: at-3.1.18-utc-dst.patch +Patch17: at-3.1.20-lock-locks.patch +Patch18: at-3.1.23-document-n.patch +Patch19: at-3.1.20-log-jobs.patch + +BuildRequires: gcc flex flex-static bison pam-devel smtpdaemon +BuildRequires: autoconf libselinux-devel >= 1.27.9 perl(Test::Harness) perl(Test::More) +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd + +%description +AT and batch delay command scheduling utility and daemon. + +%package_help + +%prep +%autosetup -n %{name}-%{version} -p1 + +%build +autoconf +%configure --with-atspool=%{_localstatedir}/spool/at/spool \ + --with-jobdir=%{_localstatedir}/spool/at \ + --with-pam --with-selinux \ + --with-daemon_username=root \ + --with-daemon_groupname=root \ +make + +%install +cp %{SOURCE1} . +%make_install \ + DAEMON_USERNAME=`id -nu` \ + DAEMON_GROUPNAME=`id -ng` \ + IROOT=%{buildroot} \ + INSTALL_ROOT_USER=`id -nu` + +mkdir -p %{buildroot}/etc/sysconfig +install -m 644 %{SOURCE2} %{buildroot}/etc/sysconfig/atd + +mkdir -p %{buildroot}/%{_unitdir}/ +install -m 644 %{SOURCE3} %{buildroot}/%{_unitdir}/atd.service + +rm -rf %{buildroot}%{_prefix}/doc + +%check +make test + +%pre + +%preun +%systemd_preun atd.service + +%post +touch %{_localstatedir}/spool/at/.SEQ +chmod 600 %{_localstatedir}/spool/at/.SEQ +chown root:root %{_localstatedir}/spool/at/.SEQ +%systemd_post atd.service + +%postun +%systemd_postun_with_restart atd.service + +%files +%doc ChangeLog README timespec +%license COPYING Copyright +%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/at.deny +%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/sysconfig/atd +%attr(0644,root,root) %config(noreplace) %{_sysconfdir}/pam.d/atd +%attr(0700,root,root) %dir %{_localstatedir}/spool/at +%attr(0700,root,root) %dir %{_localstatedir}/spool/at/spool +%attr(0600,root,root) %ghost %verify(not md5 size mtime) %{_localstatedir}/spool/at/.SEQ +%attr(0644,root,root) %{_unitdir}/atd.service +%attr(4755,root,root) %{_bindir}/at +%{_bindir}/atq +%{_bindir}/atrm +%{_bindir}/batch +%attr(0755,root,root) %{_sbindir}/atd +%{_sbindir}/atrun + +%files help +%{_mandir}/man*/* + +%changelog +* Sun Sep 29 2019 chengquan - 3.1.23-3 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:fix bug in %post marco + +* Tue Sep 24 2019 chengquan - 3.1.23-2 +- Type:bugfix +- ID:NA +- SUG:NA +- DESC:revise requires of systemd + +* Wed Sep 18 2019 openEuler Buildteam - 3.1.23-1 +- Package init diff --git a/at_3.1.23.orig.tar.gz b/at_3.1.23.orig.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..1129fb047f4caa14e77b329aa87d9d34a75d2df1 GIT binary patch literal 126284 zcmV(pK=8jGiwFoEAXi%g17UPuGcGYMGBYl3a%pESbYXG;>|0xN+s2a4Yo_)`O!+0! z7R^ZVEskp+D2cMUM|e0G20;mhyNU%a?@_4@qH`Rf<> z{`}>ui}UZ6-~9=n%9c@qBa1vQzqRi7p6@dEzvT1kLeKN{+GORwEndEP_4@7E+1s=E zn>UepwTOOtJG=Pl<;zzu%!@ZK&&=%2EIxaEp}za;^MB?OmCs*v&$|~de*ELkAb)uC z=GAfk$G>;{|Kj5O#doj%^8Y_k|J`L$Cd(`@%pVi~Umn;0#l>FyKPP+nOaFho{;M)y zzbs969?e%q{p)}H72W@z#{a9){pZ2({U3(^j`{z~7w2cMcKsi}od4zjf5PYc?=?Q} zhY$LFf7l=QZuR}c`X;ZkI4ZG0M-Q@jSAGAAmPFZ?G|BX&?C6_hQLgk& zn&(AFU*@)?rFT88&o0i-&z_&ZI6K$+VbW8&|7ePB4iXZpH>Ox8Wocqv=0LKWt&Xx- z$B8YAWLA|%W94{zOdJxYffVr}(_2m|HXJrvt&{yIt)|AOi5vBURn&D`5>lgvKNmiOHmZO$c z1o4(o0v)Blbrd~Qp62Jzv1Cnj+6v3)(3%|_L2H>&hy^rSU0E1Lmn4x`)h11Q(xS~K zh4ATcmJjQ|v`s`cCh~&~B$zQbQMT1N-YN8^$d^U5)=#UPcCN}*URW+-pt3Sol@;}Y zq?1X$Htw}!=GbCxp2J)qzS&lJVc#aRA}Y4}2xm!VOVrKXQ>{Pem7Yf#GrQG742#}T zY@xwC?~>JgTA55gL9iPWeIaSER6QjfdPEczW?_ng*ntF`0y|`rYE$5Ra5%#Dhbgmr zwioI&D#C8L{y z#;)!Tk)4QeGHLro9_6H!f*iMC24z)OP34`|DR60 zjv0Dkuo0hw#H*Kyvp-lzf~_(LhvG^j1(qwhktSR1ikI=bJLZg6w(MY?+SCH`!c!Gk z9`@Gd-;m2$f`H`C)37aC6RhmQ%4yd7V(h*z-qDL#)Q|Jf^yr zT1bd=VItBPhfl;?#|rIA&H{$S;Mp6!!8?OfEO6tqa7Bg-6qUucR)vJqEXVr=WuYw} z$=tP)4HPk0?By6HKH)fw@7IP-F{zbgu!*e2BSHsHM!9HVLkj}APGunG$r}e7kk9FK zVh)ugS(J8ghOk6Q27*9pUvn-k^0=A{8Jt8&yRc5$0HHZ0)sq&2y_CyGKVZS8DmlZ5 zx!lm>blc%W!tg{Sl`B9Bq;8yrbWgG@kwTbzmmD|rxTHJ_yQA335#%vXVm?2n=vWBH zNMPO^C^N!2BN2L?If;oRi<8GBu81g|&p43CAvKGaC;}d>zFEX7oHYk)seIa14q2&1wu4i)lL3`oX~sit_lHtLXS(!!R&3v-oO|1>`oHhxw96X^tXkU<; zJVIlzFWyCnZx~Lar=P{A6Q%{6<5*ei#OBPowX@#j1)BkbiH>pv)HMWgK=C~^8S6uC zottBd9mGFtOr`M6Dq51rPCg(qA`mPf;!gbn9mwE)o>m0j>4>}{TL+|dk2B>pqo0MR zKO^MXr%>)ZgF{>t#{dQFCRRT~?sx`A=^?y73P8x6TnShm^NSXf3?>P9HV9d)!>+DpfeJtj&WA8>8vLtB zG@E2z<&{n4bi^Ev<*;3Rvmr-Ef&mkZ5gd`>D%E(Ji#(2rc^V~aNCiau%>Pb*F=j(9 zK^EZ9os!qA&scvoA8PRuth!Vu3jJPPm^ zCEc&SGWVdFE$5=K9Eb0CN8zeCY%o4zy2z#^vSCHVd2ub|9u37EmrKP?L!il_y&VW$ zfY%37$;2^tuA&+I_JCc&Gyu5Q#)y#!7uE!M{AZGZ*3oHG1k9t#N(E74#zm4!`kX_y zELiYJ?(IyD_plUK*{6Mt$?}$%BRlvA6jQb33{O^dg^t-C9c-H9M6+taTg%}aJQzDXrw`WRG?2Sng z*SnAb9YX>>^$Yv+QxDy1(fdT7!LArr0@cRSo8jt!+EYbDX$Wz~F^@ot02|bVB1*DR zen{?zCg3ekm{ zfG!EMQ?w$UJ{a*L-oSlvy!JUEOpE%Z;}KYGAI=Mej{1eureVR|HTL)b){Dh^X|uX` zhh2wpY1E{t&tJ5i=3+P3kBNEOiHW>RgYZuJU+0Fy)z6e*TPeG=CSCZRqt^jw<1HxH zaZ0Z(L4+?|f~+O-js&q*1oGVMBZPlcNg*v5*>PvH?kSMF@0;-2wKNsDC+D(BZLfT0 z;~rd$s)Voro<}GHwKcBs!UCdll3x)pbksFFoR_HgFe5r5n`hXKTe$>{3Py+x?x4li z!28I~=m6{R-WoD~q&lo5PY8WbG)stwU9>}eEbdh|eC9}PHTmpHI{}IN9g*ERnwrj4 zS-+rmjLt^uKq`2fLl4)O5@Mt@No*^rsNJN(fi(o2E@{agz9@8W`6#5?5|9RP(+-h3 zPe6bN!>A#?QcK*aUXf}GcZ>&_6=w@+hu{k?K83BqETbYuGGP7VCH+KcTAE{1yx0k@ z35Zhezn68ubaLWkM8GKM|1nUtr3za|SSHn7K{pye0Zgnk0DRnb^Ib{z*0q{J?sI*Ar8fQ(BE?O>0N`6~c^9Ua# zl|vh;U980clE3^05;>*cBmJ1C6*cu2sCsRg7bvV;OmFxT?At`4S>fYfK%In5wrQ$T z4raL*--hbDEbLNGC8Q)%4}UIBDM#hA->9eJd*IOCyec`~5F$H}f7Qf$+&R;5p&3OT z15pSD)G~8EB`pm|putbQIdbxb;0o-w)&_l-8qRfv^prUfuHhL#P|qou6OjU-nj)m* zeBOI)&{X&a5|muiW``B*lsCt2`8p~R*nj04Lrs&Al8&IUcMxHxMr8Y(MYTUM1JA4~~k{-QZ(-&f` z-*;Z-w+5(DZFN+ZLoS81cl4y1`Rp(g=>xhDa%o+VEt;Sr9WkMWuLVUN>pFANBD#!o zo!WL~26^(0=nWSQA<@#2t6g7CSA4o0>F;Cq=)(6nq@r3WX{r`fc4=j~GKs9s=ZSBK z!382Re6vWhM0%}MXSwwfhl^w*H_DW-mCs*9T;lp<411_Uo~BU<92$yGj&Ae#a8#w)v+@2~w>x#w|>9 zeUx&rJ#rq(jpnxWkmMJ8Xd&30AXeZ3bX(*4WNhf5PhodH+6`ndI*!~`G+P6=sU52I zZ)t+-2+c(0&IWtd=ixSkQQiy>D#rO%9fFmuC`p$TgpaG`Dv0fgyD^t0=X!&pDHtjV zHrZ(x1;U_P1Fc^+n1QTF8bQ*oLH)-~biuD7YH48!C6-FoYrbx%k;?^?OZ7gS2T+A> zGpWG@tJsu^G0qdC!Tjj)$4{sDN%u-(gM3%SLxQk9NoJHq5>jOA-tz!is`f)KV1m$m zDO3kn=~=Nb{53nPmokJ$XhBb~zJK$R3rW$8-_(S$>#&-ryrEd^2|zta7hU+@qDm#Q zq)CM0k>TDeQJpXE!fKODa#QZqU^bzqq`#bI({bY#9Bga$2^6!5(;eoLN_=VCwy$zs zOAjIZh+?Q8RNCFU51GB8iZ}9AS;3cdt7Mjx(yC9Rr~3BZ6^i@($UaCeIo(aqwsJAX z{fZXA-f7;SxCZ0VCi|&0cj&@#UR#ZvAGxM(OUESxSh}XBj-wwl`mbE<3B@(}YDb7W zC5{_)c-@tIlrmWx2T;BR^?!%s)=l!Js@A}XtHGM4`VYD;HeGOa0f6lqqFC`2S68(? z$xWyTN4KV{bZ(s*kH0G;7jFKEUJrZv zxkKZYrgmUnHd$9G+|9Jp)~G`#pHgrT#r767=?ldBpeJ zwg3KPQslK;PtW94DnL$VM0JsGQ6_Ak^GHG9+yPGTry%$V?9F)$C$BHq+!afVv@oX; z4Q|`lzoCp|Q~^GOMUFgNSh$f-G6qoP#XEzL2s}$8D$H}dY(~M5Zqy4(T6H^!mHZ9z z1;YiGK6?!*{BvbeLef$U(MONa1(AH zOrk1jO8Wa0zbLqt*qK~)1C*JVkP45b8`MFo<+iB`j$j9RZqQ8S@-zP?ULQ=K*k-JP z8vQWUt?Qm~yUq{lxn7+#4w7=~Zi5tevt{MG_Tj6@RW!t1K%u|obCWd0^s;a}`Z3I= zz;3BnK!2z1ud0MhpCXB*_>GKbcbPU-Qv8Xo z@C&|!r0Kprl1!|;wR7llH3?56x_F*v((tw%IC-vR9@K0Rz!Jao&NWf1O?}ok$qyGEag!vZC7kF1O_?1x0(ett)9Ln7&#(k{G^_jaADA8LJ7pHJYh^Y-SL{x zOnD@Z2&Ge~yUznoPp(LuK@8?m9AIYlvz263TkiKAsfhTg>o3=K`xHOAsn?x|mDpf> zg02tza3~i>1qCfvosz9I)<4@eH(OzyE-|`+BYU$%6cxGjvMoCH%K(n(Q5;L(fs6p^ zUK(1yS@8{ei^X8*1$j;G;*W=3WE)z+T_NINHE5U@rmpc+9)=%}naz{Hdi zGr63aN0MEGSPYP#!-MIH#Bx9nNQ9rmDt&{|T|dt9czdv&{I<)JFh@txNm73LqA-sM z-`4E_W#gaSWC)k@1Z{Z&7JY<;2@CgNX&~7(L!DH*b&1A`O z-5c`f5kw(yCyg%Ph1kHvQV#JlaKuN{6O?kz0Yl^wNCww#Gg1}xSE=7fDuj+JFimmM zugI$P%oNRhsIQH=o3r3*eP``nAt9kM7^riZ_8A3l8q_NM4$nGG6~`&t&uBEw^Pqv+ z2Go8?%-;}tqVmE|4YZE(3U0>q$Q;xGbJ*j(xzG?HY!8WG=aOt&&#>ek=lfTvHa$$u zp})zH(WSGl2akRRHSi9`3VZV>JPRlBH=IJX?*6Xj!8@Q@ERFAo$;C`NKPWdtPw>5| zq#ZP@vp{_x8HTyvk^Iha$Ncpj{|QIFHsoYhaXzSm^2sxFE^Wy!c3BX_Zzwl}O-Hhy%uk*TQr@#D>*@hSa#-)+^ zm8Ha!bld!?({Q9e^~U4gaQd0`f8N!X{j1)?q_3wR`ucu6dOz;n>A}QL#a`>1alfxe zH~Q*BZ~VUBp>^XvtqAv`8QEY1tQzs}{a>g3;Z)!E$9IG26uVu1*1h|CY~H)P?d#j# zCrGpZ>s9}Lsy}_`57mga|1jBc;{W1iOi z5vTKu`o1@w4*C-XIzA4r+e|&{O+fZD{b?}$FnXBQ#1nJ9;b;A~!SK4H`vcyn|Lgs@ zKLP&=dk^kFaUTx{!>ikeYaRr?#16yJ6mkM*pmRE6(fGA~cMya9)m?uK`3zQIe>EL^gnF?O$4nmX`cB@HDGTWKRuB7E zptm>vtS9~P$H5iJL5=(Oy#d5eGt%QR?J^olY`N%?@?a(Xk7NT6!&~BZ-2deP{2Z_Z z+N1X#)<(h%^sYV)a5!mbSNR=&1rHkKe});2^j+_>3}%0J<^eM6$?djPz$hB)>|KsX z2A7~`z+{0C5(ug2x_8%m-=B0;Z3KL@8z%4Q$$kH7K>xsVm>zU}D^h_M{qjIs#20Q8 z-Ge%bHL^peGV(#PwV}5WoW1LpC(YSA_D6PcJDQNO;gD%hGsXCM*{9Xx{t)tFcj{eT zJ&fU6w1VCMHIoN8+hE8_QN%BM^I&}K{fXtQZ+e5G85dktN0f|V$Ho0^6Z{PFkRtxaNnVCv$-HJaL(du`f zK7Ag))5ts$W20zR7$4yOKW2HuFsV9eqikWlqVpdT-y_4l0AWW?xdbU#PR1b| ztdnR4hqFjS8IID3ZxfWB9F`-B|432`bPzU^%@ck8uxck7H>wP1Ody-|7*z}wdKl+U zXHbw@`Llq}Kpn7yz@(gU(+CCC&SGUgR1tB?B%7w5xSTT4NP~GJ(^-o03#mehcY{O2 z9_!Lmm6`B;I2oF|8btGdlq>x~z zy!|A@Z)kB~1LXNo%vSa+A`OV3IE3V*fzH|KK+%nOuEQh=2=W=uCzV%-0b>HTKv+W$ z6<6H{-Q&iFBi~~%kw;WOsPGq5S3Z*Z86pv0Knqj_p86#8yx?|8FEs*)a_jw6M>pnH znWf(>IE)dL>3X>5x=7;;nVsb1Mvc~cSWwCWDL95)HPXtQVN}a@9wl8|m7m@96JWYx zMGYGxswb6sRzeqSD_G7F!$m-$QHMJ+A$7n%)e#utDkSsngb;%Y(g}h#R{6lt?B56C;9VH0HnrE#NRql$L#js>M+V1LAl<5dMMj1rxS==HMDR zcxp+pM-^4#;XK9~(K`t~F*CIY{RsJpIVBuYkpsHI4)O&~^*RIz`<6v}Mc;=frKRnR zyV3wBDO?^HZV;AqP8M0D*s?*wwo&H`^A={2)7f=rHgn z*bYwY5__N;B$7&7kCa08)NF3BWp>16;L3P0Lp6`QTp8wD^^f|XOAGy~xZ7N8NluG= zF#4>0Lyi^kg=FoK<2XSZ=K{?e=y4-|FlcFHUob+S)^<%Inb=NG`@ip7(+H|`2GD~~ zWY(Da;T$H+pC*ojoSanYWFD|zS4aFy42cYupm`XKOj&&3DA59nZL7F<4MvvIQ$H@+ z9LXJ92`cat_H=}dXGd2vhS6oFxhw!@Ba2f}@<(uEg%~KGaJ=Rl!Kr(QqL@wK&>##I zl|eG)Xp8sJA{s72U+r-`6Z;F@5Tk>#4$u}s2}M}2G!7MgFz9>>-D89pgzcDcKyP9T zP6c5wNl}~Bps`=DH})HE@X3#f1wLaS35I?Hm0T@gt3~09l3f8=EeS zbtHj`@OldrBzD~g*siv+h~Fr)a3KAd>r1u`%ZP*3R}N?=TWszW=GRUp}m?-2ZfRc=Y4`r|+`<_MTg=S_KLXyCct~ z2YS-|&cYiEY&nNYMp#G4Ar(sV0+IIYox6)pfI@c468}nkhI}Ys(H52V(xIvjRg@$} z$((Qoc=$s<;(3_C>zqVX0pR@9*9!FYDh}8McN5&x(Qe1&h>}wWT410c2JiZCn4t@) zpaRG~Mt#y$H=b|U+b9Qo;%N1cHIO^T^Vpr;c#|(Kqg<^5X@n#=%-P}GpO1>VGu$2Y z2_cLeyE6=i;TFdU!MM>xFo_1lwc!Z&r+$?%X%YF3V6@mB5i?6V_|W#s<-YGzc-0sq zP=N3AfS>aV7fNPX=AmTBYDO&B9F8{7&?XasZ({Ukft!M!;qV<5>PR{U;(v2>FuV>r zXcaK3xx^8NAeAG2>qdlyMP3(~XA9--!rY)!G@Ro_C=~J(rY4k2BP3W>c0n36|a>LOurZ7YQjWJqLG3=(n2En;H0K^c+wX@t$L8Lg-fZp_Q(W5otHxe3DA{r`|p6D>Ai|-D9h8DnYISpoZNYvD1AEx!abm?Eq>! z_hZcZ@?#W-AS_Nso|k~&Hs+@q;@QUD-6uCrLU%lKL3AskUm0i|B*#MGiG7_Q2S`Eo zng>I?NUafJdhuKAn#+h(tRC06F%MZ43y zy6#+*4 z<@#PSF6#9?#Pvng_Erd6eXC?|L3`-LVpV8s3Oo#_WQ*CDRp@{?7!rz+F9}DQ&!$&l z^BIk*TRBp#fI^31r|4RD%(zFq--aET$R3@5I653Xx`t!DcaoU|u}*;tkP?sH@^I#j zfNoC7c#2oT^eE_K`+x&z;XB^Hg5RNlAufn0X*b=pm@EXYiw%cOL zic|z|SNejLaL_gmZyOzu0vmtj_v1N8(nXv)<}+~WL=<7M<=leyJn=?~;e5^xlL{$a z^)MNEvHfz6(KYc9I8x=HShe^XM&U5()^4WNp*xV*@t~?8zOdPB$Cq>j`wv`rnE(UD zJ6Vjd$v#1T+x>_gOITVfkgI5Nm^$WWiNYW+I?>UiSP@HqVBecIu7D zsc^bLmG)&kpZNU9h9U!^*%h~|$$fA(1P$RCV9(`j zd_iD31evmgpD;CshzW*O4$&F{Xp28V!*CV>prC0()QI0(RC# zcQ&bJt>JO5^Qcpa$#05Q#*xothzmoKSz_OywKyxok`st;jGi)Nf1O9R7ty7u8<-o5 zNhV3-;e4iNk(hmjj-C2&$Ttij^pbVG)K!84dNf^;5_HjS6sKkpbZ9i2cD)7jFJMqt zX9m&2M%h9lic$R_w}Xa_9Uy!{m237 zB;4GQZmOIdMsf6i%s5b!E>8-Tc7!|Q96dtk0myVQUgVkW38blHJ|p29*WJ zkZ##Ff)#cAc^^7>H3qc_&hTBMs)p|X;Z8U9_lN7O?d*LvOyYv=K96Q2@fMJKdOtD*Q{w8 zFW8eu27bn$&Cz?2B5`>W`!w^Jm_5<^152}fpogW&5O#m7@v2pS-DNT`%;ap0&t~8N z=Du9ncgn{O=$H>o$6k*4vD8yl3yUeB_m6@Q^jJ5Ea>OnZrrAy-w}dx=KN-3Y7C`;| zjDCQld-nSB?6Ud%#+v|-)tx_7oj-B*9_+kHrCwTP9CYlHH&2Tdg1scZAsBr@7S4bv zLzm-Vz()>W?h5Q3WD(twBkITj&f;E$JMs(GcW$406NDIkA%o&Fv+MhKy&hfmgUd7* zaW3J*k#5C8W8B|;l*upghHHEKbOIG8Rr@~<_fAgAWsnF9Ih~>%lIx$$OiF&v7+;BW zRslAqayghm4#zT(%C1vBEUq8N@>cIQTd?-`B^x87f*H;xS<$juPpH;Ir@ZIvmWyjE zMS(Wctzg_k(kKydjGCe22m%4v{RCTsK5x6Oo2l@-6>8+zDIYnzOt34hAPF4r?d}~O zJJ&eZz38R~LU|A4`r#|`|K80YOefMGxps|`*mjBlf9%&bZsVd|Ve8wgM(?!MZoX@t zvIqS5WcRpo;=lpa6W&FaF7?u=XVAD+I1|QZB!Xb(lSvgD!x`qfq~7C$>gH_F_LWmrRgBePt1&oVQ)z2gcbwC&^=at-8=2ay0fbi`p8!ps|d@=)^EVJ#At zCU?+S+P6ghExZmUR-hX%RS|Sj3$W8fOhO<%l8B6u8Ad}X;rQ>79|j}qSuol?sKsC0 zc^EjKym*qt^RW-A+KUqXiVE}uK{p)9;OK7N1aU%^<#UW%4Xy5AJfDE1`s`!mFKXPj z8^xm+Djt;}Cf#5(TG%g9QIF>{`&mEf*Y1Ka^hb~zo3wOpqirbIS-^yygNpAh>}TsS4!(x?4>s>9BB4e#h)+QqaQKar~e1^|B(KJ8=gf;aG!#*$)HyGHqK%aGr0X)qh2*n#ra?3D)Vo0(f?zjzcT%= zlroCkqyPIfk4T{O^^pD_Jsh%1zvcB+(yjhKC*8dtr2EaJn==cOrz%H#c-WO5by#89 z%iK*!b6kP^%~e7txm!U3<7dKd^ljMcx&=~IS68r{6a*=Oh7BEEh_OeQseTP>-@)GtIc?R? zFes_jGJ^t%PHijDBSyZm%SU zPRFk`&M=G*iTLb7o*xcmlfvrjKi<@@x@~B)10(BRwu$58W7J^& zpu^n~Mt@Q)*ctw;ie0BTLJB)=UtD$S*oTYe>(<%pCPg`RpgxWryK2KGXkT}wNJ)j( z*%DeuA$3^G1;-|Gj9M0Ohs3%ZKWQukEP6X!m899Cnw0YQtfmM(SmkcZxLXtPgCzE0 zXP(46^ecWl;*nE#pzXZAY;ApulAh^*hFR_V;y?HH4p#NQ-J>7+-}m@~o!3PwSAWm# znk3b%BpwWd*e(X(;|n%sOdYDVLWi{%}^Y%p#I8f)Je%{22mXc~J&+AV6`Vv#JJUXdnwc7PY{q5`C`8%v5`&P3w z48!Op@aD^QyOpJOFCn#c(d*Lq@S$eCub-aMSA2lC&3F8=`HsG{&R(kT@Cai$J!Oi* z%%|+N!SBwQCMbAE=}?~CI$S|RB_eEu7esfuxZ}cMV>OzuxV9QT)oiCB#Qgl%jm>R& zF8;b<|7sNqPJ`PHfEzLX?UrNiGSXmV#w@%Em)7U5vJyC!D zfzC*nJDCP}sNvW4%U^T~KG&?Xi|!R1+mtBJHS4l|4jF87gL6{N>LL*G`kj6aud*au zsa6{#1FX(VKchQ#3KRiN!NJ(2L^l#N4o9fqhv+Sly>L^n51$kN-d!x*$m(2Qm}Q6X zPSA`ItfUO0Xq|RDr_v_sLg+zO;5BY!V5mw`!2rXmCXqMvZb$G1r?SB952PPs)sKPo zrdg+ZAh?OK#uH`oETiM_Lu+9Qcgb}dt&Pb&p15O+ucDx?XH`v%=S2=l0h_vg+J!mC z5OTgRCljDM(8u$ptwS*mGoYVG~g1S1@=`{ZjqldI?OFd-KLaf-aOQu^OS?B6jzbIwCBoXgi3u$Yo-Z=1<~$2ppdxhzknSzM^`N zg%&ZDn*Y3-1bYsT8tg%~fgbF_FrUrn1n+r#%CXOqNC<^E8nf;rMekaGbx00X!yY@eF;=|KVa4PVZ;!mTk<$UU7 z<&5eZ<$Pgp*060@!m6frgMxuTfNxdROgaNx7@12TM>sy<^9k?^CEXAuVRm7yP-bMK zRESg0pHutj-~eX}GIiSRtD-(vzPX%?`J2lnf3%>8FyCBG$w4b6*Bobwpv5< zDCUyYfe%YLo<>8va&%PwwsL8Nm!W0v_@q_!9hS>$-(i%&YTv8tM!8y?0CTkWm*`?g zu~_@J-|XMbMa&a2nUk!R<$=kb+K2mP&3IR9{ZlJ;h)YIHZw<+sJZvSy&KgFyE)%f6 zM-U@Nx_o8h49&SROK0UoYxqM25B_MuDgYu7e<{teH~iA)~-cziw{+)6g~lRRZ$Qz7|WP z4f~mhJ}=Vg3@Ug`yPR`f!%~+z>>pocCTp#stu-@#uzto>9kT1)gU7Tj;@5hvuA~;D zZR!%7+!bU@l_w9qlqG&bLi2+a0DV09YAdkJkO_Z-4teA~=tt``<>H3@({uYijGnTu zR@z;|FCRWX*H!!U5j81tRKnw9s=Ns-x_!H955_(QiQ-CtP|JcFe&$5l!Zr|r>%!ph zGUglGu|Mz+#H<#4ittt+PA%w@lWD#?o0}fK3jGiEZ#bsWmtbZ)Cm=25@_{rMyQ424 zAkNTv^FZ$&)1kkrBZcWLw6wGC4{^-X(8#O4*}uCPAB z^~9R_8G9JHn{X7RR1LhrSX2`gq^cA>oJXa4ad?E%4OJeDm8F0TlT=}1czvsC(Uib4 zv_T0&9alTbCY?dW>+Sk%ysG5sHV zf8Nl>ku8kF_h0lWIx>lnA_ePPfoKt6k0*(ww7jpXjm%iWZ`yVBS`s3?(ME|d`)>zK^|M*M) z?@#%6qWn#A*b}r2pit#13^o%)9%?Vt?E*&|bG1SDa3`&e5N)m=e zdHkHXh$zWmqz{}c6p zE%jbp4|iluFyVNo%5#qPv4@nhcEsOPF$T^ewO6aMq33N3!M^Z@bibh-kckPXC=`>` zt@2rdhc;Hko`Q(dEwEh&IwN4GK@u81! zn@HD=X43U_9bclVV?E+if$43uGE@p&stLCopqrf>aqGw^8r{2GMr7JEsuv{sX6x`o zhjU?9`jA}>30ac+3F|kphTsUt6Gs#AV*yo>DF7C($ZDbROuSkuG^y=hVm5gc|MJM% zFm|+@Iq682svl68OloLK3x${3FbC~sfpxl?OvW3Fi=F9ZQa37Gi{650yr3n|B=*JO z5%m$sVsyyjPkt07ZM&o{=ufngI7aA0b2an>$dQaF=98yfBUiosQja`F1{7VC1NeqK}3);5Z3Mhz=Co zN)xEnAHjjz9oq8&MHVrpx8JGJXri13(`YzxxG2b}jvbrmT z(RZl`Hi<(gmKZ^S!h`u_Ka4o6fUbn#W!mpcggx5T8kodx_bvw0D_ z0v>>L=AoB_PgN4kdlxnKj8UcVd*MhT*^>J>K6wyJvXZoMJclq_KOY^RwDwzt`bz*+ zsGq*{-UGO|-Ut2ssZifPW%yQVpHfMXWfF&ngByH>FG@SYD|&F&Uwl(6)I0GXRm=5_ z^*Yh@VIo(8e%&r=U8r=QoaMczHheH``1F)UWEvdzsCW4wtr#vw7eOClhT0>HiQ)HpevIrGI^iIBprHV1&?MYa97xDBo_r=Md|41| z=uMX2P~EAw*a=6A$(2_x)Xz@5b!m*0Ok9f7OHrJ5kxzvI*|3uV6R?CORMO^f@wg}YMin#5 zl;!En4kwYTa;g!bJ;1YHg-_emu@}*$8#;be4_z1-grF9bG~~2$=iE zAHd=^(SUXJIFa5@;)?(hXUs0uwe6WG6lnk?Ap~tp=k+u)BM?%$|U|h`;5jK zFq_T!0Kh7mBVL9~53yq+0k6iEd{5PILE{_x&|~+VBQdD)2bhiyj!2}>NsbUMj3ulCz zn$`{C5q^TI6SabFgWx)GRt|DWf@5XDt7#<837%<_N$w?!y#MBeY`>nSuT~9-5HZ~d!jQc(E{x$_< zvfRuC(!@NF0lwQkG+@XH9=AUqfR%weD4dXq)yG5S`REA}rVjnGFe92qHrN2!P86)h z;1<0Dsibk$t9av_z{nI_wXi-O>L?H-oZ(il;W*>80>d>ikjc~w7wUk7!Rs51)$x#f zCDIb~>Xlyk?w&|lt(u>fa(V`~b%)-FH$Z|3OQAa@=<+c+eZ!4l8Cb4yI z7KNhSDeDucpdI8x_mScg=Ry=TNXQjN1?bBZ7qNC+$m4H2>097fe>&2FaoUFsf4SXy z)218gqgTg>lU|Z>*U7>5&+@i+zP~Gvq;S=e7vs#8-!Vp&JaP%9)lR*(S5|iE-gJne z5P3vMc+xYmz!h3D=We}F*iHlygxW_P228br3X`)sV4;zL)=?ywEXeg$2m?~TtaC#T zcH0O0FHg5me{Pe(ND=3wh{-3Xdq^r^(^1%g$Pr}#?8sJ#D=`lj>7Y7OrW2OeZByWA zm>-`UA65(KQj;TAnYO4%vm6ALxOmt**zXZFut*E*qQF%XSf>niX^ zy>N)$Vzl^?>r>cPa#K@(Jlx(tXzv{E{s`M@zi%d6ljSq|C5H0KD<4yRm*~&V?lp%) zCsKkU?q8OfTxvX9{Nih(y|tLCi`51 zBU72#XjMwyABb(NFQfulFSLR{(2A&CqT4?wlnt^+$0r;JPSerAWfjJ8I1&yc6?B#T zai-@q<7U>-<@?C~!SW-*zgUJXxIW|qWn!Ka=wz64hJ;% zUj(=c|H=VgFC2>t3(Z8t$S9&UG6fi*vT~`2TN^!i$QZ_SP|`&KvSI~c#V88Qz1ioV z3RZw+O+BRL23Vd02lDCJe)Zk#@BoIW{IKZUbD(G~OB-e>=zB5kEGPcC8L0>eW9 zC!tud=~>?r^Hd8wjuvMFgY*9V&d!IQfBt|x$<@_x_`aSbAM6ed3i}-GVi5X?*)yN0 zdd?E(XNiYap57DkbP8c6kJ*7b+fAW$g-o?xcWI7J9}MEp5lJg`ve2@Hy>vz_OfO8v z1OJ}(3zv0Ar+9WXMIY$iQp0PmY^)*)PTo_Bsy&5^TDJhSh@QSggeyp=TSu9Wt(ZC? z8Be2jeT&WjF<2y7*S@w?l-EVvON(+Ls1t!!ScFMmoT3MERWNgw*gEG+&dYZ3M2XJ;E(@`Bb2z(q* z$K-7RBVF_zDIDeo`r?wOo-rm}KN^Zf2(hXrHwcrvycuiK$-zX zn!zm$An2Yjk!Bh%U34mmN)8~*aH68TyEp49n3z8z0!!|$)wOeiCNMs8Dx*({$BT=7 zJruSlgsCz3DmuqEk=Pu+M}N5j{C`XT&oTD=GxdL(tIgGn|A&?3=3n=Jf7<BT~_%-x2%yGVmJm#bRCiLlg zJyus#sVgaBK=!r2Yn!XniF69H>nyu6WCf-iZARB=ZnCl$lh_s|XhIg)p`K80!LYXO zg%4LvK^@8X7?RcH4Mxfup|3f<|3MN4IGUfX097YrzZM%*2t65q^g}`Db zcB(SvFP-mK(4`j1RiFT~B9KvaP}P$UUh88}J=I*Y2ZcpwEP$smU6JW_P|0*t_{bWm z<`nXpvpwPiH@7}?Rh;lCZK_kEg><*Pk+}782FkhS;~N`$Y{*L`F2JH9=Ze;PuxT}$ za)T4xd=|Ry|Kx$_;Q#LbOdSv7|J9{tR{wM9`PyIlpMS=`#Y(}eaAYKJ!#mNj_eLBi zkEH;VCGA@90Uwzu|Cp5=-*CzcrtJaK_`1)ND3t&E-bZ^Uhn_0B*5RcoqOVK*YcHfmP+$fjh@Xul8TJ-$0_oiYzL- zr()q5%Jce#!eYg1v8Klxirtq87%A}`u!M`q{3rFR?^DTWMTn_RrLCV^?Vq;y&+KX` z_pKjNZdI}Q+C}&oK=X#%cofab z{%Ysw?7+!RF%wKXM3}Ik+ao2)sU}&)(qlHh?YR?j8IMylghJ~p^ri$k6nozzAHTA zS=I^O((0<|w)zM-?Qq9yHs<-Xp*| z1?Pg?PoA|&+i9-&weNl1@xBhcug|=%e=a&XvHaX>!xZ1$d$oOjaMu3E`QG`SSMp2x z%ggPvoi~#1d8JONPzXlTq4x{vd~cuqqsm#T@O*lRf2-ck_F3Wc=G+|hj&z08adR7J zSri`U*eA&HdJuJBYRx?@rcc9O8&%x>K^q={vFP^$iYSM#n}tjB`O^J-iJzr7+csbc zZ_8Vtw6a(8mQ{KAe#zf2t?$^bSEMG;#lz5T8;1@YMQy&Ie*eMSD)4|5@m{`I^@?(< zkB@EqqwnwW#Zd#m1ibafU%v9kr;`&-!4EK)1qodUBp6+Xv`ON*B%x z(7o;9pe|tMR8gW1aEuqQsckZ-#3wlFsVt2^stn2#+BgadAf4fa?SW*SbSc8R3Uump z<#g|?wg39;=aW6Jkm?bvT7a@|3ExpnjW^H#+^MR_Nqh+%MFR;#uCB3(^uR?AXWN2W zPi4RibI3o)KeT{ox6Xi+E9kVJ0x>ngN=Fh&jsnR+KWWWqfBwRFB&2$vulaG?YiJ83 zolx7qj6h5{Eoq^|Sd9bN;tMm71`H|rgIQgas#ui=8Th`D~eVD(bkE&7URla*b4Qt)HG0i!^u>jI2|Ss^DI0j%-S zgk!1Kb-SI)#}o8^dUSqpuxWox!hhqI!5{dHN7-gUFGDKBh029FhM=+1@E+~jqV58g zElVlDIRm<7!-bm#VU6bTlmvQ1*cI_T4kG6Vng_tXav;RPWD1BF@~Bco zN@A`(;G16WshS{pp}6CZa7`oDR0EvRJmdP2eZ`t_?NZ&}su6jt@4OVvl0$~3phN7+ zX+~TQh4bSAc(v+P`gFjuxfe$Iqf>}OBjYjJ$GDvA_8r9@3RmFsG_ptZ7bFvz0did&jRftzD?vztHr) z<(IPewb!`o<3BpWmj1ca;Ik(fMbpcxAJj_ilje_ZdIQ>iF@n~s#&f1F2CB0ifhGHLONkaj81}It+a-ga!?EFQ`7am>Q8#AAWfdUp0YipZsfR-Ges9THTv%g& z9FAN#;iUxig&(_tKzsmMV?cMW_<0!ha0I(}PwqhKW5ravlRN>cM26b}PdccR_`RZ; zKk&CP(T-!>2C7~-oG16@^%`(ro3^+~i@W9-$5Iejb7`H=@_n%iq~n&)bqWCpIG!R5 z?!VqYI@|R4R)fNV68_i5hawfRPHGfJ1gJ0M$M<@o0e!(qw(t!MWYudh%ED{^?nKro zJk=Awt?J$)Do6$^yd2GH8^9!$zmp~Hm6Fffcte5i!tXX3?S16aO_572~=fSF!P-8?Tu}mfd~AAs5{bw z2qji>1%2-T?x5K2Y(a%l6LI%zqKOo&HieGD5Lh&OUNS&sjERKC$b&`N4+$yW9^ih_ zlo;V!0XB&wnl{?;3!K}aL>EobNK_em5wFcqMF2(`BTX0*(q0gh0OM$*_2c$Wr^iPJ zKbOnicQiqnbCTjfV_|Axk=sbeBPP}dZPH@d@?HU?gPp%`>U3;imxzeHy}!3xduQeo znZENnQc18HWl7Ivwg{7IbO=ANL*{a}2OcslwqzzC=w!gxOn=k`0zgHr6sdvGdR3&s zDBSiO?s~mQNDGGCstoSEP7HW|RL3lf)Ht&Zw-1nAclO~NwP1nk!FQ5GEofBz3diW+ z?>|8?Ofw}KniyJ8N2(?z%6JmPxtmYna0ph*PL1grrZL?}sS`-|tmuZKP`1a1nL4kQ$2meKA*zxi#Sg zt>ps>j1tOq`t@Ln;hlLQ)3FZ2Oloiot@i%udF#~s)q|&>^wT?da@jX>BcLQoidJ0c z_Y}ravvl0vIo;bn12D(!y>~kY^l)~1ezZeRjE}0G)XOWp*34Vr%oKa%gPIZO*Y(v# zBPmwBJpPgz=m@&Z#sWGC+KJKZ`@I}oxJN4H7#AJm-6KJ$sw}D#R&l1xuA}c_1X{IZ zY?_s|m#4d9QNiE8_3t%ki@h~?9r<2$+99{ELw*zApOE*3D4J}d`4$QVDJZ*gKY;=J z@H|8*D3ZkLY?0d(%lO77a8k$1>E7=7&R!c^vtXovRZHSmHVrIcoM1~SU*@f+chx3p ze4`T=HY(wG%z&v$3c{^}b!~#o3u-2PO4JgD{f5epq(_JoWg5$Df>gIf6pl3Oh=+!+ zBM0LBh1q#>MZ+c%;~*LjIG5lE70q4~_U;*Yene-W^(p5Vw7yy=p_Qr+LvH^g#{?17 z#0p8Kvcj{kS|}^mH>ldIi7Q8ewaN-BB)k+&Q3N<5FFBM7(8jm8d&}y`lKW}zrm79S{xPQX>#`^E=4kl?VwWNI3u>oR6+k&`x@8`sF)NMlJWmn+$@ znrrgZz8~MV4X^mwn(R!Ev55;gO$Ye+Mc4q-_U|>pUG}5{_VOUdJzD)pEda5gnncC2 z&HrPIl=S*5OITv$6Tpb#;^alA@}gJ+FgRYJjkL&ta=K!p43R1_@YFd#sby!Vv~&TM zUh&yi;t=6t^h|ub!pv-a-2-flKbTCt{5tXQtyonuk2GGd>glSQTLf$S{6x3bNO)S- zgOeHNf-VZP8_Wg29z-M&Nz+?&c+afV($KDZ+oO9XYDpIX6}-^J580rS%RJhtVh}_e zJ5aN1dPPh$nWh2t@M#(mwPBfNURVyV6rdh4EoAEhYdNGFxni+|hDW>6Xi`%4h%Dk% zmp`oNw}86S3Xq?$c_!2&*Fa@B)Ve+@mH|eGdP+(s8_nQShXIkExbb1(sVf_g^E2gn>Rq^gmX&9%9kOscS*=4HzYJZA+^~Hff5zQOmB%Ya8l_s!0ctnElYMzcbgxCbAtgx zgg@#I$GYJLLihnWyt%mrz5xKv4I5sQhL?qCl{S9XUHkT1NcybA?$SW%UY`g|U6(W( zmlaS2Hgq`d$7Q?w#OC1^%i#^Fhc;_?F(TeDgD5YG7o&?JiLLdh&t;dA4~v&R%_Xq2 zPz4#2IEBc}($}R8^Rj5a{9?bnw_iTkFI)D@XZz(x`{i5v<(d6bwO{J?%ZB|@vtQc$ zVl8uc6N^&)r4NT=ccFA~QBre|F7a6g?Q_8{L9%Np@Yz`t_&r%DZmPXkbSC$yD*~^1 zoPyHMk!mL{Izi71kT(be?TQJAk^1a2x!dy; z?PJ!jy4@?!TE*E#{LmV<5r-;?Fc%4fy6YKcB{Q>y{OL;#;~Dx(?Dk5D7*mr|`wbY= zKv|JRG2ncZpPO+;15}i9sNobwt%~O|o=MXYQvb>}4RuyfvwZe&BGvi}bbP{L3`%?2 zbimYESx_gAWkq_7rs#fjs7~G_%=~C%_DD zWY&)?AG1`v1t;3$+Ax6u^*Fjz!`cgw`1W@ z-%qj^6LU>7XYnSVE%kQt*a}_O8x*m^fAEY%eZhP5nqPJf63i@MTqKjbPy`>O`>rwiC$zU2%Dqw_(0E_jM zh&ChY%7FwEZe4w|<(}9TrKnRW3UUMf%2#bJxD_wOQQtP5Rc& zX)?`lILfc?MLapo@GtKYg{Ow06rm zW%Nzzmbcb`O(}{@W!?>QkCGB|zm<-VJ2Kb{wh-G4beUT#$g&93#l-}rrQLiALthyK zKrPEw98Nx<*-#wPRUbkIMFOOP`1N5ViJ}%izU)@Dj#GSjQzZ!uGA0)O+-3jDyp?n$ z1H6L=?sR{*%-(*S-6V3Hnb_?Mu;Xt;c&rNr^F->et@E9oy;jS7LMf~wIh33UjoL;% z7B=C?7(o)rY_;(0e>(=u+>L%IKAig!WGFhw7UA@VVa7R&m{LRZ$D<%~MH7V!xC!2e zA85=)Ra1%Cz6hgg8C!;Q`a0PFVtvA1?r1-&Iya?Ap4K+YpAks4-xKubE$O9Lc98sBM3u8?RniAxr)I441`{l#sw3G$ zz@nb-E;CubT#vJUIlH-TOO+!5qQOQot)||GM`E@m0GAi+)YK!R2ya;)JKJX)@`YNi zRA8x9N}ZMDzE7}Szya1e(V1N+idA!RSt&!6D-R+Gh%FAnF`crUsC#83u%Fd~>840y zjWB!0Md*Xmp%pjNQ^K&HJo=wAgKo)|b1;CaySP6RYbxS+s-As1L$mmfmCxdbF@qzg zHbQ9lkHjnnZ;OnL29ns~nUXd8nj6{!NI@tV!Bw7;y5)`F=M1k#IZ@Q}2EZ2lxX_B9Hu@Wf!_Lhh?p?j@PBx00JWX6$WuyRd6Pv(8SA1>dGeEab zI88;NH)gPtu7W>@(5qZ3n(TD%VE^bJ=liWUq+8XpNF*q#sBcs^NymquNiCs9;520G zgrb)&roTqQ2?O~Z6KG5-TLp|w)4K5e`$Iz~D< zz~bR7Xs3rMa2lBEl;B`}HKSL*sL088r$3MdrkPJB=cMCh0-qNcA25R@5Y5?V1chB{ zG2dEV;jJa{KNu2nLE&4v&k;>%&UjPW$XKNU!azcYg#~0WVT@Rt0!g1&3}z@`j2Bc= ztQWVlN^4gGw5@|@Ks*$Ptbw87R@rBVhTdn-)OmnwGa&cX*ch8&7*!bF{Oq4p*Tfq> zBVARYtRPhXVj!seg;L%*J@TqDg{{?Z#i^BqG7DjX9-d;ROi4~2CgjmqQp%n!g(igxV^6rq{OQ;cIWLk?ymheY3br(Wn~RB1(w*dJHk>Oy2#YJx#OjqqXm%qDLMN zj*sZhmMSiuuwFAqlf+1jiBgf69Xirmm=SNXtih6dSrfz1iXDlpU zm`QkeKrVKtv08VTL-Z?hhu1dOISb|d;rW>ZZ|Km)Sx@(0*PFm8)oG#7Y5zF&s}3z` zoz@W)v7ZPg{;>gz;wf74yhO|$PVRk_2s)kwkVVUI@B%t#$(~_%W=Z@!68U*$k@&!| zkc>x4CR8mpv~P+co!)Y6DEZAyp-&OF;dFF8if%{DPHm+4smEnMHp5|yac$B9hle#E zvC|3A+6yqeRk^*<*xX7#}L(P+E{Pi@Vl=nY_tu*bVAN$HZ0L z%-@AZ7t_Mcs2(p4h^SFODOP#HYSL~V1n*nb4NGfLKq$&Nx9P9_xHFI_c!JAj&c|nU zy(4!@3aE9pIT^awH0q9KmgtoCOw#2J4$G?ffG}0~HHqJ5RI^QF3z1#QMH>0au{FV| zR;3O?kKjdYjm`+>2gDZus5?C!BHjauf$hJndV|lXF8OOnd!vsvMDDE6C zxkg6w2nQp`p(eCXo$}GW-H1Ij_?M$7!J8e1Ph&-W# z$xI@frrxx7vdUt)l-itynM{}?o;&;d4SIxfI*QDE}D z(4UM8muQ?*z{p7OcN!#W97)7XrRp1yTQH;tBclU))_`SzJ1O6HF z&nNzg`6nqP_oFWSNeZ{Ow>3P%|H2>t$^C!zpYZ?PXs#`-Wc`0X|I7dPpX2}AQx3qd zfIktZt8&qV0TE{T+)n%W{>$g~AL4WSFPGc@`&@2|Z&lZqs^f4~T&mh>%Cl-Zm1+J> zb+w+oS>G)Dr|^HTzWzst{&@=iUwXcpL;tO<{)PYlwD>=}-a3Y3cu{LMYt0oqwoebE z`Jf*HQWYWgv6mM|hXdmMd~|%$+HY~_wqBur`qFz(!4NTq90uTP`!|=~2mPT#AIN)Q zn*=g9fDz2+p7q?fo)dgd#SD@vp{a?}RyYStI2Q>OGb6_9pwJRA6-V_Mvin4Ax7YVk zKeNgToa|13oi0*cjPnX8hyYX$ZK&E#iAC%*27FK>5k>bZ3ONMdj~EMi`|a!Y;kzF> z94;J>t-}*_0m7lv_q|bJ=j1$*z~gvg08Z@q9dzI%PPW-!4PZ+Nvx=cFX>>;ywWbqm zvm@PPLEJDLg~RF4)5DLlHo0@^1e4o94jQ&l!`|FR1*_`|YYinpC_B~k3cEpPdb!C` zF)=9_q6eSLAjyfDYYiAluQ(FoeKLqHy@lm6#id0JNQu~u0y#eXIEo#v5G&eczi>Jo zspvcf6P_}-q@dAGOOwKhs2s55Z;`vlLM(Et6^*)q)KBM8IP~Lia4$ihXg}Zt!#*?rXdWy710oiN~BNdg^2k$OcBrmNBc*w z)q1~W4-?`IG@K;j71C%FV=!$A=7@2(j$XA?R90G8Q5!K^JNY#AldA%`l$#Y@^UTpy z#!kb*8H*BUvdPO&j(-eyjTUFm8;vTf*%p3G>HGXBo6*GUoLvFSM}K=2r*1GYubK%Z zmW@~@!K)<>C2z<_Lq+8T{Y=LNeI%NcS@NlfpGq^&rxh0U)e^9VBZx2AfkWif?_)XbhOkW;_$u97E?+myl zrvU5JenFfkrfR+*&XW$qWRm!5fQ3R1xnCUn!?r&j)7DquF^!#!1Jnw%j*ixDdp zU|moxyTQSxp#>JfDVH~~AaCx4gX7nTBdbMJ7kji2W`Nz1`nJi61x?Ds+6H!a_KtR; zt*RGWJPc@H)lLFdza(%CuEMRuRPnhW8xxg0)l4ZnsFo9ufmW{*RtdI0&N|r`^`^t& zy|OEE*FtkM?I**5LM5{>(6)pf_q$;sMB~(1)>iBTQwerp|MkwBgI!&=hV)|Bk9*pL z0O?Y8riIi~_bMFp;DmI0S`bgf?SDtZP8g({N*IqoU=yq`83ki}F(w>=PQ$F2AbPTFXvYErc5; zgy|RDh&mP=*C>QMb{JdcPKg0Nn~u!F1UBdI?oy=`g~M?d6o&UOM%Oy9(pXO2L~YfC zEO#-76_Nx~S!awq9-(C&dYC4+M>v0OP$7c$*&uoZ=W)FcQaaY)AR1E?i%>HQ_L#FR zv7JIL>c{|_JEo2^O$<#)DO0_=@w~Em5nOIwI){VFjXF_{xnvTMH$*!#e;5GkIxy#@ z8ddbuPDMKRB^DP6VbMAIBv2w6A8s0Ih62Bgl3_G>RHN^y;l@o&LrHqwVvcQBqKBZ? zbU$217_2dlE!{`gWYLV*#CEUcxPRK_SUXiefcW|%ORjbR|#$n^{7iTXOkfO4)$LQ>TAB}HGr2WYc{j*?lG zcpTw&QL%H3(FWOl2z-<$Ok=dQtY-{F`Y;37<}Su!IosVoYNK5J2o9@n>@84E&o$4p zRoX*RZf}?8OmD``!h>_>&X>%R&Z!Xq*|4zd$_0A?SDkGNrvf<;gkLi>MIBQ{Eokhi z(={8<P?HdOg=mm&d_v>~9$nZGIR`usUqKvxV~;yF>CQ z@|yA|wG$pUa>fxIpJ?n#Q3RmoZm^(y?q%v|nAvdp>ENWyD5Q>`2{BIYajO;+kP>Z- z^@uu!9-ZeX*GZivLl}j6y{_E|_{2)X))n*(33TDOK)zvzssT6ZazwEj9zpVzZ%-(O zS$l#|i+SBDHA=||_CbXAX8Vq&J5`@J-=F{dLHeyekj|0QGpmdpY$$c=AV zF>}BPMtX_2zj$2b;BAl{@0l?~CfYVgqHLM>(bVq!=u*9<-Br;$ETH#mD(xOWEGUQE`QE2jfDQK(V}r>2*jxm(09Ncgrcys@8%uZgX=P z$*w*sX$08i?{vfadT0$Shqu+CUsQsrJmp1KMjXb_gu}bU7^$~0?p&p~LSD46^Xy}b zx>lx0#8sOP#5PG#CpvZTaw!4GsAs}TA;qmClY``lVGsZ*+fxw4q76-t$+s)IFinN1 z8cPgYm+KpcJ?+lc@lt{rwVP%w9T;oJzrXy}@j8&uR;=W38>n*xmgAdf98g58stHBq z(+WeIJA1U01szArQuk-%TOu?HEU1rxcb!#Q;wrLB)r#VUd51oGVp zYQ($voZ~>j((-r+fp5ovf%sKLgr{A;z#gf}Ds~R~OH0MAp#xvs)}<)z&)JBUeAa1y zTo%eSj=^1bfMTvor558aiD)IQsj-!1lVT!L;s& zod~ag3GoJ_E-637d{v%V1=bSL3nDx7X6#j+y?{dWm^YRmsm~#Ycrj%Y&zJn!DozKv$v`2p%mAnZgk4?sg!?AbSyq6UGJ%;l7!t|AE1FSxXgs6=?0N5d zZ;7|0+YEG_%YoQ%(-YZ@*)cjGt(E+?JTMzB26~Wc#dt@C3EHk8nDa-~-BKB0~^8xtfAH`a

jj28rThq?J;FQ_$ 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 z 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 {B@NG)<O_rJ`0aE-*Ew$xZt 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 OKK~11ZkWvgfCm5tvLTTG literal 0 HcmV?d00001 diff --git a/atd.sysconf b/atd.sysconf new file mode 100644 index 0000000..056ce81 --- /dev/null +++ b/atd.sysconf @@ -0,0 +1,9 @@ +# specify additional command line arguments for atd +# +# -l Specifies a limiting load factor, over which batch jobs should not be run, instead of the compile-time +# choice of 0.8. For an SMP system with n CPUs, you will probably want to set this higher than n-1. +# +# -b Specifiy the minimum interval in seconds between the start of two batch jobs (60 default). + +#example: +#OPTS="-l 4 -b 120" diff --git a/atd.systemd b/atd.systemd new file mode 100644 index 0000000..962b0d0 --- /dev/null +++ b/atd.systemd @@ -0,0 +1,13 @@ +[Unit] +Description=Deferred execution scheduler +Documentation=man:atd(8) +After=syslog.target systemd-user-sessions.service + +[Service] +EnvironmentFile=/etc/sysconfig/atd +ExecStart=/usr/sbin/atd -f $OPTS +IgnoreSIGPIPE=no +KillMode=process + +[Install] +WantedBy=multi-user.target diff --git a/pam_atd b/pam_atd new file mode 100644 index 0000000..1fd529e --- /dev/null +++ b/pam_atd @@ -0,0 +1,9 @@ +# The PAM configuration file for the at daemon +# +# +auth required pam_env.so +auth include password-auth +account required pam_access.so +account include password-auth +session required pam_loginuid.so +session include password-auth