- from PLD
authorMarcin Krol <hawk@tld-linux.org>
Tue, 3 Feb 2015 12:58:26 +0000 (12:58 +0000)
committerMarcin Krol <hawk@tld-linux.org>
Tue, 3 Feb 2015 12:58:26 +0000 (12:58 +0000)
cron.logrotate [new file with mode: 0644]
cron.sysconfig [new file with mode: 0644]
crond.service [new file with mode: 0644]
cronie.crontab [new file with mode: 0644]
cronie.init [new file with mode: 0644]
cronie.pam [new file with mode: 0644]
cronie.spec [new file with mode: 0644]
cronie.upstart [new file with mode: 0644]
inotify-nosys.patch [new file with mode: 0644]
sendmail-path.patch [new file with mode: 0644]

diff --git a/cron.logrotate b/cron.logrotate
new file mode 100644 (file)
index 0000000..add58c2
--- /dev/null
@@ -0,0 +1,6 @@
+/var/log/cron {
+       create 660 root crontab
+       postrotate
+               /sbin/service crond reload >/dev/null
+       endscript
+}
diff --git a/cron.sysconfig b/cron.sysconfig
new file mode 100644 (file)
index 0000000..406b5a5
--- /dev/null
@@ -0,0 +1,19 @@
+# Customized settings for cronie crond
+
+# Define nice level for crond
+SERVICE_RUN_NICE_LEVEL="+0"
+
+# This option will direct cron to send job output to the system log using syslog(3).
+# This is useful if your system has no sendmail(8), or if mail is disabled using "off".
+#CROND_ARGS="-s"
+
+# This option allows you to specify a shell command string to use
+# for sending cron mail output instead of sendmail(8).
+# This command must accept a fully formatted mail message (with headers) on
+# stdin and send it as a mail message to the recipients specified in the mail
+# headers.
+# As a special case, the string "off" will disable sending mail.
+#CROND_ARGS="-m /usr/lib/sendmail"
+
+# Extra arguments to crond(8)
+#CROND_ARGS=""
diff --git a/crond.service b/crond.service
new file mode 100644 (file)
index 0000000..127de30
--- /dev/null
@@ -0,0 +1,12 @@
+[Unit]
+Description=Command Scheduler
+After=syslog.target auditd.service sssd.service ypbind.service
+
+[Service]
+EnvironmentFile=/etc/sysconfig/cron
+ExecStart=/usr/sbin/crond -n $CROND_ARGS
+ExecReload=/bin/kill -HUP $MAINPID
+
+[Install]
+WantedBy=multi-user.target
+
diff --git a/cronie.crontab b/cronie.crontab
new file mode 100644 (file)
index 0000000..61d9293
--- /dev/null
@@ -0,0 +1,10 @@
+SHELL=/bin/sh
+PATH=/sbin:/bin:/usr/sbin:/usr/bin
+MAILTO=root
+NICE=15
+
+# run-parts
+01 * * * *     root    /bin/run-parts /etc/cron.hourly
+02 5 * * *     root    /bin/run-parts /etc/cron.daily
+02 2 * * 0     root    /bin/run-parts /etc/cron.weekly
+02 4 1 * *     root    /bin/run-parts /etc/cron.monthly
diff --git a/cronie.init b/cronie.init
new file mode 100644 (file)
index 0000000..10d1927
--- /dev/null
@@ -0,0 +1,110 @@
+#!/bin/sh
+#
+# crond                Start/Stop the cron clock daemon.
+#
+# chkconfig:   2345 40 60
+# description: cron is a standard UNIX program that runs user-specified \
+#              programs at periodic scheduled times. cronie adds a \
+#              number of features to the basic UNIX cron, including better \
+#              security and more powerful configuration options.
+#
+# processname: crond
+# config:      /etc/cron.d
+# pidfile:     /var/run/crond.pid
+
+
+# Source function library.
+. /etc/rc.d/init.d/functions
+
+CROND_ARGS=""
+
+# Get service config
+[ -f /etc/sysconfig/cron ] && . /etc/sysconfig/cron
+
+start() {
+       # Check if the service is already running?
+       if [ -f /var/lock/subsys/crond ]; then
+               msg_already_running "cronie crond"
+               return
+       fi
+
+       if is_yes "$CROND_SYSLOG_RESULT"; then
+               CROND_ARGS="$CROND_ARGS -s"
+       fi
+
+       if [ -n "$CROND_MAIL_PROG" ]; then
+               # XXX: should we handle spaces in $CROND_MAIL_PROG?
+               CROND_ARGS="$CROND_ARGS -m $CROND_MAIL_PROG"
+       fi
+
+       msg_starting "cronie crond"
+       daemon /usr/sbin/crond $CROND_ARGS
+       RETVAL=$?
+       [ $RETVAL -eq 0 ] && touch /var/lock/subsys/crond
+}
+
+stop() {
+       if [ ! -f /var/lock/subsys/crond ]; then
+               msg_not_running "cronie crond"
+               return
+       fi
+
+       msg_stopping "cronie crond"
+       killproc crond
+       rm -f /var/lock/subsys/crond
+}
+
+reload() {
+       if [ ! -f /var/lock/subsys/crond ]; then
+               msg_not_running "cronie crond"
+               RETVAL=7
+               return
+       fi
+
+       msg_reloading "cronie crond"
+       killproc crond -HUP
+       RETVAL=$?
+}
+
+condrestart() {
+       if [ ! -f /var/lock/subsys/crond ]; then
+               msg_not_running "cronie crond"
+               RETVAL=$1
+               return
+       fi
+
+       stop
+       start
+}
+
+upstart_controlled
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+  start)
+       start
+       ;;
+  stop)
+       stop
+       ;;
+  restart)
+       stop
+       start
+       ;;
+  try-restart)
+       condrestart 0
+       ;;
+  reload|force-reload|flush-logs)
+       reload
+       ;;
+  status)
+       status --pidfile /var/run/crond.pid crond
+       exit $?
+       ;;
+  *)
+       msg_usage "$0 {start|stop|restart|try-restart|reload|force-reload|flush-logs|status}"
+       exit 3
+esac
+
+exit $RETVAL
diff --git a/cronie.pam b/cronie.pam
new file mode 100644 (file)
index 0000000..9f8d098
--- /dev/null
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth           include         system-auth
+account                include         system-auth
+session                include         system-auth
+session                required        pam_loginuid.so
diff --git a/cronie.spec b/cronie.spec
new file mode 100644 (file)
index 0000000..2a3ac2e
--- /dev/null
@@ -0,0 +1,267 @@
+# TODO
+# - update paths in manuals (create .in files and send upstream)
+# - make /etc/pam.d independant of sysconfdir (configure-able option and send upstream)
+# - syslog output (-s) writes two bytes of garbage to syslog instead of actual data:
+#   Mar  3 09:30:01 ravenous CROND[2528]: 4ΓΏ
+#
+# Conditional build:
+%bcond_without inotify         # without inotify support
+%if "%{pld_release}" == "ac"
+%bcond_with            selinux         # with SELinux support
+%bcond_with            audit           # with audit support
+%else
+%bcond_without selinux         # without SELinux support
+%bcond_without audit           # without audit support
+%endif
+
+Summary:       Cron daemon for executing programs at set times
+Name:          cronie
+Version:       1.4.12
+Release:       3
+License:       MIT and BSD and GPL v2
+Group:         Daemons
+Source0:       https://fedorahosted.org/releases/c/r/cronie/%{name}-%{version}.tar.gz
+# Source0-md5: 199db91e514a4d75e3222d69874b132f
+Source1:       %{name}.init
+Source2:       cron.logrotate
+Source3:       cron.sysconfig
+Source4:       %{name}.crontab
+Source5:       %{name}.pam
+Source6:       %{name}.upstart
+Source7:       crond.service
+Patch0:                inotify-nosys.patch
+Patch1:                sendmail-path.patch
+URL:           https://fedorahosted.org/cronie/
+%{?with_audit:BuildRequires:   audit-libs-devel}
+BuildRequires: autoconf
+BuildRequires: automake
+%{?with_selinux:BuildRequires: libselinux-devel}
+BuildRequires: pam-devel
+BuildRequires: rpm >= 4.4.9-56
+BuildRequires: rpmbuild(macros) >= 1.647
+Requires(post):        fileutils
+Requires(post,preun):  /sbin/chkconfig
+Requires(postun):      /usr/sbin/groupdel
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires:      /bin/run-parts
+Requires:      psmisc >= 20.1
+Requires:      rc-scripts >= 0.4.3.0
+%if "%{pld_release}" != "ac"
+Requires(post,preun,postun):   systemd-units >= 38
+Requires:      systemd-units >= 38}
+%endif
+%{?with_inotify:Requires:      uname(release) >= 2.6.13}
+Provides:      crondaemon
+Provides:      crontabs = 1.7
+Provides:      group(crontab)
+%if "%{pld_release}" == "th"
+Provides:      vixie-cron = 4.3-1
+%endif
+Obsoletes:     crondaemon
+Obsoletes:     cronie-systemd
+Obsoletes:     crontabs
+%if "%{pld_release}" == "th"
+Obsoletes:     vixie-cron < 4.3-1
+%endif
+BuildRoot:     %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+Cronie contains the standard UNIX daemon crond that runs specified
+programs at scheduled times and related tools. It is based on the
+original cron and has security and configuration enhancements like the
+ability to use pam and SELinux.
+
+%package anacron
+Summary:       Utility for running regular jobs
+Group:         Base
+Provides:      anacron = 2.4
+Obsoletes:     anacron <= 2.3
+
+%description anacron
+Anacron becames part of cronie. Anacron is used only for running
+regular jobs. The default settings execute regular jobs by anacron,
+however this could be overloaded in settings.
+
+%package upstart
+Summary:       Upstart job description for Cronie
+Summary(pl.UTF-8):     Opis zadania Upstart dla Cronie
+Group:         Daemons
+Requires:      %{name} = %{version}-%{release}
+Requires:      upstart >= 0.6
+
+%description upstart
+Upstart job description for Cronie.
+
+%description upstart -l pl.UTF-8
+Opis zadania Upstart dla Cronie.
+
+%prep
+%setup -q
+%patch0 -p1
+%patch1 -p1
+
+%build
+%{__aclocal}
+%{__autoconf}
+%{__autoheader}
+%{__automake}
+%configure \
+       SYSCRONTAB=/etc/crontab \
+       SYS_CROND_DIR=/etc/cron.d \
+       --sysconfdir=/etc/cron \
+       --with-editor=/bin/vi \
+       --with-pam \
+       --with%{!?with_selinux:out}-selinux \
+       --with%{!?with_audit:out}-audit \
+       --with%{!?with_inotify:out}-inotify \
+       --disable-syscrontab \
+%if "%{cc_version}" >= "3.4"
+       --enable-pie \
+%endif
+       --enable-relro \
+       --enable-anacron
+
+%{__make}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT{/var/{log,spool/{ana,}cron},%{_mandir},%{systemdunitdir}}\
+       $RPM_BUILD_ROOT/etc/{rc.d/init.d,logrotate.d,sysconfig,init} \
+       $RPM_BUILD_ROOT%{_sysconfdir}/{cron,cron.{d,hourly,daily,weekly,monthly},pam.d}
+
+%{__make} install \
+       pamdir=/etc/pam.d \
+       DESTDIR=$RPM_BUILD_ROOT
+
+cp -p %{SOURCE5} crond.pam
+
+%if %{without audit}
+# remove recording user's login uid to the process attribute
+%{__sed} -i -e '/pam_loginuid.so/d' crond.pam
+%endif
+
+install -p %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/crond
+cp -a contrib/0anacron $RPM_BUILD_ROOT/etc/cron.hourly/0anacron
+cp -a contrib/anacrontab $RPM_BUILD_ROOT/etc/cron/anacrontab
+cp -a %{SOURCE2} $RPM_BUILD_ROOT/etc/logrotate.d/cron
+cp -a %{SOURCE3} $RPM_BUILD_ROOT/etc/sysconfig/cron
+cp -a %{SOURCE4} $RPM_BUILD_ROOT/etc/cron.d/crontab
+cp -a crond.pam  $RPM_BUILD_ROOT/etc/pam.d/crond
+cp -a %{SOURCE6} $RPM_BUILD_ROOT/etc/init/crond.conf
+cp -a %{SOURCE7} $RPM_BUILD_ROOT%{systemdunitdir}/crond.service
+
+touch $RPM_BUILD_ROOT/var/log/cron
+
+cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.allow << 'EOF'
+# cron.allow   This file describes the names of the users which are
+#              allowed to use the local cron daemon
+root
+EOF
+
+cat > $RPM_BUILD_ROOT%{_sysconfdir}/cron/cron.deny << 'EOF'
+# cron.deny    This file describes the names of the users which are
+#              NOT allowed to use the local cron daemon
+EOF
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%pre
+%groupadd -g 117 -r -f crontab
+
+%post
+if [ ! -f /var/log/cron ]; then
+       install -m 660 -g crontab /dev/null /var/log/cron
+fi
+/sbin/chkconfig --add crond
+%service crond restart "Cron Daemon"
+%systemd_post crond.service
+
+%preun
+if [ "$1" = "0" ]; then
+       %service crond stop
+       /sbin/chkconfig --del crond
+fi
+%systemd_preun crond.service
+
+%postun
+if [ "$1" = "0" ]; then
+       %groupremove crontab
+fi
+%systemd_reload
+
+%triggerpostun -- cronie < 1.4.8-13
+if [ -f /etc/sysconfig/cron ]; then
+       . /etc/sysconfig/cron
+       __CROND_ARGS=
+       [ "$CROND_SYSLOG_RESULT" = "yes" ] && __CROND_ARGS="-s"
+       [ -n "$CROND_MAIL_PROG" ] && __CROND_ARGS="$__CROND_ARGS -m $CROND_MAIL_PROG"
+       if [ -n "$__CROND_ARGS" ]; then
+               %{__cp} -f /etc/sysconfig/cron{,.rpmsave}
+               echo >>/etc/sysconfig/cron
+               echo "# Added by rpm trigger" >>/etc/sysconfig/cron
+               echo "CROND_ARGS=\"$CROND_ARGS $__CROND_ARGS\"" >>/etc/sysconfig/cron
+       fi
+fi
+%systemd_trigger crond.service
+
+%triggerun -- hc-cron,fcron,vixie-cron < 4.3-1
+# Prevent preun from crond from working
+chmod a-x /etc/rc.d/init.d/crond
+
+%triggerpostun -- hc-cron,fcron,vixie-cron < 4.3-1
+# Restore what triggerun removed
+chmod 754 /etc/rc.d/init.d/crond
+# reinstall crond init.d links, which could be different
+/sbin/chkconfig --del crond
+/sbin/chkconfig --add crond
+
+%post upstart
+%upstart_post crond
+
+%postun upstart
+%upstart_postun crond
+
+%files
+%defattr(644,root,root,755)
+%doc AUTHORS ChangeLog README
+%attr(750,root,crontab) %dir /etc/cron
+%attr(750,root,crontab) %dir /etc/cron.daily
+%attr(750,root,crontab) %dir /etc/cron.hourly
+%attr(750,root,crontab) %dir /etc/cron.monthly
+%attr(750,root,crontab) %dir /etc/cron.weekly
+%attr(640,root,crontab) %config(noreplace,missingok) /etc/cron.d/crontab
+%attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.allow
+%attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) %{_sysconfdir}/cron/cron.deny
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/cron
+%config(noreplace) %verify(not md5 mtime size) /etc/pam.d/crond
+%attr(754,root,root) /etc/rc.d/init.d/crond
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/cron
+%{systemdunitdir}/crond.service
+%attr(755,root,root) %{_sbindir}/crond
+%attr(2755,root,crontab) %{_bindir}/crontab
+
+%{_mandir}/man8/crond.8*
+%{_mandir}/man8/cron.8*
+%{_mandir}/man5/crontab.5*
+%{_mandir}/man1/crontab.1*
+
+%attr(1730,root,crontab) /var/spool/cron
+%attr(660,root,crontab) %ghost /var/log/cron
+
+%files anacron
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_sbindir}/anacron
+%attr(755,root,root) %{_sysconfdir}/cron.hourly/0anacron
+%attr(640,root,crontab) %config(noreplace,missingok) %verify(not md5 mtime size) /etc/cron/anacrontab
+%{_mandir}/man5/anacrontab.5*
+%{_mandir}/man8/anacron.8*
+
+%attr(1730,root,crontab) /var/spool/anacron
+
+%if "%{pld_release}" == "th"
+%files upstart
+%defattr(644,root,root,755)
+%config(noreplace) %verify(not md5 mtime size) /etc/init/crond.conf
+%endif
diff --git a/cronie.upstart b/cronie.upstart
new file mode 100644 (file)
index 0000000..75c3c8d
--- /dev/null
@@ -0,0 +1,37 @@
+description "Cronie - the cron daemon"
+
+start on pld.sysinit-done
+stop on pld.shutdown-started
+
+# This option will direct cron to send job output to the system log using syslog(3).
+# This is useful if your system has no sendmail(8), or if mail is disabled using "off".
+env CROND_SYSLOG_RESULT="no"
+
+# This option allows you to specify a shell command string to use
+# for sending cron mail output instead of sendmail(8).
+# This command must accept a fully formatted mail message (with headers) on
+# stdin and send it as a mail message to the recipients specified in the mail
+# headers.
+# As a special case, the string "off" will disable sending mail.
+#env CROND_MAIL_PROG="/usr/lib/sendmail"
+env CROND_MAIL_PROG
+
+respawn
+
+script
+       CROND_ARGS=""
+       # Read the old-style service config
+       [ -f /etc/sysconfig/cron ] && . /etc/sysconfig/cron
+
+       # no 'is_yes' as we don't want the havy init.d/functions here
+       if [ "$CROND_SYSLOG_RESULT" = "yes" ] ; then
+               CROND_ARGS="$CROND_ARGS -s"
+       fi
+
+       if [ -n "$CROND_MAIL_PROG" ]; then
+               # XXX: should we handle spaces in $CROND_MAIL_PROG?
+               CROND_ARGS="$CROND_ARGS -m $CROND_MAIL_PROG"
+       fi
+
+       exec /usr/sbin/crond -n $CROND_ARGS
+end script
diff --git a/inotify-nosys.patch b/inotify-nosys.patch
new file mode 100644 (file)
index 0000000..556176d
--- /dev/null
@@ -0,0 +1,213 @@
+--- cronie-1.4.1/src/cron.c~   2009-06-01 10:46:08.000000000 +0300
++++ cronie-1.4.1/src/cron.c    2009-08-13 13:32:40.909067818 +0300
+@@ -41,7 +41,11 @@
+ #include <unistd.h>
+ #ifdef WITH_INOTIFY
++#ifdef SYS_INOTIFY_H_EXISTS_AND_WORKS
+ # include <sys/inotify.h>
++#else
++#include "inotify-nosys.h"
++#endif
+ #endif
+ #ifdef HAVE_SYS_FCNTL_H
+--- cronie-1.4.1/configure.ac~ 2009-08-13 13:56:08.000000000 +0300
++++ cronie-1.4.1/configure.ac  2009-08-13 13:56:11.295316050 +0300
+@@ -27,7 +27,6 @@
+         stddef.h \
+         stdint.h \
+         sys/audit.h \
+-        sys/inotify.h \
+         sys/stat.h \
+         sys/stream.h \
+         sys/stropts.h \
+@@ -106,9 +105,16 @@
+ AC_ARG_WITH(inotify,
+    [AS_HELP_STRING([--with-inotify], [ Enable inotify support])],
+    [ if test "x$withval" != "xno" ; then
++       AC_MSG_CHECKING([whether sys/inotify.h actually works])
++       AC_RUN_IFELSE(
++         AC_LANG_PROGRAM([[#include <sys/inotify.h>]],
++                         [[return (-1 == inotify_init());]]
++         ),
++         [AC_MSG_RESULT([yup]); AC_DEFINE([SYS_INOTIFY_H_EXISTS_AND_WORKS],[1],[sys/inotify.h exists and works correctly])],
++         [AC_MSG_RESULT([nope, using own inotify headers])]
++       )
++
+        AC_DEFINE(WITH_INOTIFY,1,[Define if you want inotify support.])
+-       AC_CHECK_HEADER([sys/inotify.h], , AC_MSG_ERROR(Inotify support requires sys/inotify.h header))
+-       AC_CHECK_FUNCS(inotify_init inotify_add_watch)
+      fi
+    ]
+ )
+--- /dev/null  2008-11-04 20:33:38.146691408 +0200
++++ cronie-1.4.1/src/inotify-nosys.h   2007-12-30 10:50:22.000000000 +0200
+@@ -0,0 +1,167 @@
++/*
++ * This header is used if <sys/inotify.h> cannot be found.
++ *
++ * Inode based directory notification for Linux
++ *
++ * Copyright (C) 2005 John McCutchan
++ */
++
++#ifndef _LINUX_INOTIFY_H
++#define _LINUX_INOTIFY_H
++
++#include <stdint.h>
++#include <sys/syscall.h>
++#include <unistd.h>
++
++/*
++ * struct inotify_event - structure read from the inotify device for each event
++ *
++ * When you are watching a directory, you will receive the filename for events
++ * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd.
++ */
++struct inotify_event {
++      int             wd;             /* watch descriptor */
++      uint32_t                mask;           /* watch mask */
++      uint32_t                cookie;         /* cookie to synchronize two events */
++      uint32_t                len;            /* length (including nulls) of name */
++      char            name __flexarr; /* stub for possible name */
++};
++
++/* the following are legal, implemented events that user-space can watch for */
++#define IN_ACCESS             0x00000001      /* File was accessed */
++#define IN_MODIFY             0x00000002      /* File was modified */
++#define IN_ATTRIB             0x00000004      /* Metadata changed */
++#define IN_CLOSE_WRITE                0x00000008      /* Writtable file was closed */
++#define IN_CLOSE_NOWRITE      0x00000010      /* Unwrittable file closed */
++#define IN_OPEN                       0x00000020      /* File was opened */
++#define IN_MOVED_FROM         0x00000040      /* File was moved from X */
++#define IN_MOVED_TO           0x00000080      /* File was moved to Y */
++#define IN_CREATE             0x00000100      /* Subfile was created */
++#define IN_DELETE             0x00000200      /* Subfile was deleted */
++#define IN_DELETE_SELF                0x00000400      /* Self was deleted */
++#define IN_MOVE_SELF          0x00000800      /* Self was moved */
++
++/* the following are legal events.  they are sent as needed to any watch */
++#define IN_UNMOUNT            0x00002000      /* Backing fs was unmounted */
++#define IN_Q_OVERFLOW         0x00004000      /* Event queued overflowed */
++#define IN_IGNORED            0x00008000      /* File was ignored */
++
++/* helper events */
++#define IN_CLOSE              (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */
++#define IN_MOVE                       (IN_MOVED_FROM | IN_MOVED_TO) /* moves */
++
++/* special flags */
++#define IN_ONLYDIR            0x01000000      /* only watch the path if it is a directory */
++#define IN_DONT_FOLLOW                0x02000000      /* don't follow a sym link */
++#define IN_MASK_ADD           0x20000000      /* add to the mask of an already existing watch */
++#define IN_ISDIR              0x40000000      /* event occurred against dir */
++#define IN_ONESHOT            0x80000000      /* only send event once */
++
++/*
++ * All of the events - we build the list by hand so that we can add flags in
++ * the future and not break backward compatibility.  Apps will get only the
++ * events that they originally wanted.  Be sure to add new events here!
++ */
++#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \
++                       IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \
++                       IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF | \
++                       IN_MOVE_SELF)
++
++#if defined (__alpha__)
++# define __NR_inotify_init 444
++# define __NR_inotify_add_watch 445
++# define __NR_inotify_rm_watch 446
++
++#elif defined (__arm__)
++# define __NR_inotify_init (__NR_SYSCALL_BASE+316)
++# define __NR_inotify_add_watch (__NR_SYSCALL_BASE+317)
++# define __NR_inotify_rm_watch (__NR_SYSCALL_BASE+318)
++
++#elif defined (__frv__)
++# define __NR_inotify_init 291
++# define __NR_inotify_add_watch 292
++# define __NR_inotify_rm_watch 293
++
++#elif defined(__i386__)
++# define __NR_inotify_init 291
++# define __NR_inotify_add_watch 292
++# define __NR_inotify_rm_watch 293
++
++#elif defined (__ia64__)
++# define __NR_inotify_init 1277
++# define __NR_inotify_add_watch 1278
++# define __NR_inotify_rm_watch 1279
++
++#elif defined (__mips__)
++# if _MIPS_SIM == _MIPS_SIM_ABI32
++#  define __NR_inotify_init (__NR_Linux + 284)
++#  define __NR_inotify_add_watch (__NR_Linux + 285)
++#  define __NR_inotify_rm_watch (__NR_Linux + 286)
++# endif
++# if _MIPS_SIM == _MIPS_SIM_ABI64
++#  define __NR_inotify_init (__NR_Linux + 243)
++#  define __NR_inotify_add_watch (__NR_Linux + 243)
++#  define __NR_inotify_rm_watch (__NR_Linux + 243)
++# endif
++# if _MIPS_SIM == _MIPS_SIM_NABI32
++#  define __NR_inotify_init (__NR_Linux + 247)
++#  define __NR_inotify_add_watch (__NR_Linux + 248)
++#  define __NR_inotify_rm_watch (__NR_Linux + 249)
++# endif
++
++#elif defined(__parisc__)
++# define __NR_inotify_init (__NR_Linux + 269)
++# define __NR_inotify_add_watch (__NR_Linux + 270)
++# define __NR_inotify_rm_watch (__NR_Linux + 271)
++
++#elif defined(__powerpc__) || defined(__powerpc64__)
++# define __NR_inotify_init 275
++# define __NR_inotify_add_watch 276
++# define __NR_inotify_rm_watch 277
++
++#elif defined (__s390__)
++# define __NR_inotify_init 284
++# define __NR_inotify_add_watch 285
++# define __NR_inotify_rm_watch 286
++
++#elif defined (__sh__)
++# define __NR_inotify_init 290
++# define __NR_inotify_add_watch 291
++# define __NR_inotify_rm_watch 292
++
++#elif defined (__sh64__)
++# define __NR_inotify_init 318
++# define __NR_inotify_add_watch 319
++# define __NR_inotify_rm_watch 320
++
++#elif defined (__sparc__) || defined (__sparc64__)
++# define __NR_inotify_init 151
++# define __NR_inotify_add_watch 152
++# define __NR_inotify_rm_watch 156
++
++#elif defined(__x86_64__)
++# define __NR_inotify_init 253
++# define __NR_inotify_add_watch 254
++# define __NR_inotify_rm_watch 255
++
++#else
++# error "Unsupported architecture!"
++#endif
++
++static inline int inotify_init (void)
++{
++      return syscall (__NR_inotify_init);
++}
++
++static inline int inotify_add_watch (int fd, const char *name, uint32_t mask)
++{
++      return syscall (__NR_inotify_add_watch, fd, name, mask);
++}
++
++static inline int inotify_rm_watch (int fd, uint32_t wd)
++{
++      return syscall (__NR_inotify_rm_watch, fd, wd);
++}
++
++
++#endif        /* _LINUX_INOTIFY_H */
diff --git a/sendmail-path.patch b/sendmail-path.patch
new file mode 100644 (file)
index 0000000..3d1c72a
--- /dev/null
@@ -0,0 +1,33 @@
+--- cronie-1.4.2/anacron/global.h~     2009-09-25 09:23:18.000000000 +0300
++++ cronie-1.4.2/anacron/global.h      2009-11-17 08:08:34.079251474 +0200
+@@ -33,7 +33,7 @@
+ #define DEBUG_LEVEL LOG_DEBUG     /* only used when DEBUG is defined */
+ /* Mail interface.  (All MTAs should supply this command) */
+-#define SENDMAIL "/usr/sbin/sendmail"
++#define SENDMAIL "/usr/lib/sendmail"
+ /* End of user-configurable section */
+--- cronie-1.4.2/anacron/runjob.c~     2009-09-25 09:23:18.000000000 +0300
++++ cronie-1.4.2/anacron/runjob.c      2009-11-17 08:10:16.259239987 +0200
+@@ -195,7 +195,7 @@
+       /* fdflags = fcntl(0, F_GETFL); fdflags &= ~O_APPEND; */
+       /* fcntl(0, F_SETFL, fdflags ); */
+-      /* Here, I basically mirrored the way /usr/sbin/sendmail is called
++      /* Here, I basically mirrored the way /usr/lib/sendmail is called
+        * by cron on a Debian system, except for the "-oem" and "-or0s"
+        * options, which don't seem to be appropriate here.
+        * Hopefully, this will keep all the MTAs happy. */
+--- cronie-1.4.2/configure.ac~ 2009-11-17 08:07:30.000000000 +0200
++++ cronie-1.4.2/configure.ac  2009-11-17 08:11:22.722566791 +0200
+@@ -189,7 +189,7 @@
+ AC_DEFINE(DEBUGGING,1,[Code will be built with debug info.])
+-AC_DEFINE(MAILARG,"/usr/sbin/sendmail",[There will be path to sendmail.])
++AC_DEFINE(MAILARG,"/usr/lib/sendmail",[There will be path to sendmail.])
+ AC_DEFINE(MAILFMT,"%s -FCronDaemon -i -odi -oem -oi -t -f %s",
+ [-i    = don't terminate on "." by itself