From: Cristian Rodríguez Last updated by: Jan Engelhardt http://bugzilla.novell.com/780259 --- Makefile.in | 4 ++-- atd.c | 21 +++++++++++++++++++++ configure.in | 44 +++++++++++++++++++++++++++----------------- 3 files changed, 50 insertions(+), 19 deletions(-) Index: at-3.1.13/Makefile.in =================================================================== --- at-3.1.13.orig/Makefile.in +++ at-3.1.13/Makefile.in @@ -25,19 +25,19 @@ LN_S = @LN_S@ YACC = @YACC@ LEX = @LEX@ LEXLIB = @LEXLIB@ CC = @CC@ -CFLAGS = -I$(srcdir) @CFLAGS@ +CFLAGS = -I$(srcdir) @CFLAGS@ @HX_CFLAGS@ LDFLAGS = @LDFLAGS@ LFILE = $(ATJOB_DIR)/.SEQ DEFS = @DEFS@ -DVERSION=\"$(VERSION)\" \ -DETCDIR=\"$(etcdir)\" -DLOADAVG_MX=$(LOADAVG_MX) \ -DDAEMON_USERNAME=\"$(DAEMON_USERNAME)\" \ -DDAEMON_GROUPNAME=\"$(DAEMON_GROUPNAME)\" \ -DLFILE=\"$(LFILE)\" -Wall -LIBS = @LIBS@ +LIBS = @LIBS@ @HX_LIBS@ LIBOBJS = @LIBOBJS@ INSTALL = @INSTALL@ PAMLIB = @PAMLIB@ SELINUXLIB = @SELINUXLIB@ Index: at-3.1.13/atd.c =================================================================== --- at-3.1.13.orig/atd.c +++ at-3.1.13/atd.c @@ -72,10 +72,14 @@ #ifdef HAVE_UNISTD_H #include #endif +#include +#include +#include + /* Local headers */ #include "privs.h" #include "daemon.h" @@ -956,10 +960,11 @@ main(int argc, char *argv[]) * For those files which are to be executed, run_file() is called, which forks * off a child which takes care of I/O redirection, forks off another child * for execution and yet another one, optionally, for sending mail. * Files which already have run are removed during the next invocation. */ + struct HXmap *sc_map; int c; time_t next_invocation; struct sigaction act; struct passwd *pwe; struct group *ge; @@ -1024,10 +1029,26 @@ main(int argc, char *argv[]) pabort("idiotic option - aborted"); break; } } + sc_map = HX_shconfig_map("/etc/sysconfig/atd"); + if (sc_map != NULL) { + char *v; + + v = HXmap_get(sc_map, "ATD_BATCH_INTERVAL"); + if (v != NULL && strlen(v) > 0) { + batch_interval = strtol(v, NULL, 0); + syslog(LOG_INFO, "sysconfig requested batch_interval to be set to %d\n", batch_interval); + } + v = HXmap_get(sc_map, "ATD_LOADAVG"); + if (v != NULL && strlen(v) > 0) { + load_avg = strtod(v, NULL); + syslog(LOG_INFO, "sysconfig requested load_avg to be set to %f\n", load_avg); + } + } + namep = argv[0]; if (chdir(ATJOB_DIR) != 0) perr("Cannot change to " ATJOB_DIR); if (optind < argc) Index: at-3.1.13/configure.ac =================================================================== --- at-3.1.13.orig/configure.ac +++ at-3.1.13/configure.ac @@ -3,11 +3,11 @@ dnl Process this file with autoconf to p AC_INIT(at, 3.1.13) AC_CONFIG_SRCDIR(at.c) AC_PREFIX_DEFAULT(/usr) AC_CONFIG_HEADER(config.h) -AC_PREREQ([2.64]) +AC_PREREQ([2.69]) VERSION=AC_PACKAGE_VERSION if test "X$CFLAGS" = "X"; then CFLAGS="-O2 -g -Wall" fi @@ -37,41 +37,50 @@ case "$host" in *) AC_MSG_RESULT(no) ;; esac AC_MSG_CHECKING(Trying to compile a trivial ANSI C program) -AC_TRY_RUN([ main(int ac, char **av) { return 0; } ], - AC_MSG_RESULT(yes), - AC_MSG_RESULT(no) - AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.), - AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.)) +AC_RUN_IFELSE([AC_LANG_SOURCE([[ main(int ac, char **av) { return 0; } ]])],[AC_MSG_RESULT(yes)],[AC_MSG_RESULT(no) + AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.)],[AC_MSG_ERROR(Could not compile and run even a trivial ANSI C program - check CC.)]) AC_MSG_CHECKING(__attribute__((noreturn))) -AC_TRY_COMPILE([], [void __attribute__((noreturn)) panic(void);], +AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]], [[void __attribute__((noreturn)) panic(void);]])],[ AC_MSG_RESULT(yes) AC_DEFINE(HAVE_ATTRIBUTE_NORETURN, 1, [Define to 1 if compiler supports __attribute__((noreturn))]), AC_MSG_RESULT(no) -) +]) dnl Checks for libraries. AC_CHECK_LIB(fl,yywrap, - [], - AC_DEFINE(NEED_YYWRAP, 1, - [Define to 1 if we need to provide our own yywrap()]) + [], + AC_DEFINE([NEED_YYWRAP], 1, [need yywrap]) ) +PKG_CHECK_MODULES([HX], [libHX]) + dnl Checks for header files. AC_HEADER_DIRENT AC_HEADER_STDC AC_HEADER_SYS_WAIT AC_CHECK_HEADERS(fcntl.h syslog.h unistd.h errno.h sys/fcntl.h getopt.h) AC_CHECK_HEADERS(stdarg.h) dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST -AC_TYPE_SIGNAL +AC_DIAGNOSE([obsolete],[your code may safely assume C89 semantics that RETSIGTYPE is void. +Remove this warning and the `AC_CACHE_CHECK' when you adjust the code.])dnl +AC_CACHE_CHECK([return type of signal handlers],[ac_cv_type_signal],[AC_COMPILE_IFELSE( +[AC_LANG_PROGRAM([#include +#include +], + [return *(signal (0, 0)) (0) == 1;])], + [ac_cv_type_signal=int], + [ac_cv_type_signal=void])]) +AC_DEFINE_UNQUOTED([RETSIGTYPE],[$ac_cv_type_signal],[Define as the return type of signal handlers + (`int' or `void').]) + AC_TYPE_UID_T AC_TYPE_MODE_T AC_TYPE_OFF_T AC_TYPE_PID_T AC_TYPE_SIZE_T @@ -258,20 +267,20 @@ AC_ARG_WITH(daemon_groupname, AC_MSG_RESULT(daemon) ) AC_SUBST(DAEMON_GROUPNAME) AC_ARG_WITH(selinux, -[ --with-selinux Define to run with selinux], -AC_DEFINE(WITH_SELINUX), +[ --with-selinux Define to run with selinux], +AC_DEFINE([WITH_SELINUX] , [1], [enable selinux]), ) AC_CHECK_LIB(selinux, is_selinux_enabled, SELINUXLIB=-lselinux) AC_SUBST(SELINUXLIB) AC_SUBST(WITH_SELINUX) AC_ARG_WITH(pam, [ --with-pam Define to enable pam support ], -AC_DEFINE(WITH_PAM), +AC_DEFINE([WITH_PAM], [1], [use PAM]), ) AC_CHECK_LIB(pam, pam_start, PAMLIB='-lpam -lpam_misc') AC_SUBST(PAMLIB) AC_CONFIG_FILES(Makefile atrun atd.8 atrun.8 at.1 at.allow.5 batch)