Disabled installation of cron, crontab by default. Fixed up all information files to reflect this.
This commit is contained in:
parent
3725aedd02
commit
62b0403363
13 changed files with 118 additions and 98 deletions
6
BUGS
6
BUGS
|
|
@ -1,4 +1,4 @@
|
||||||
-*-text-*-
|
-*-text-*-
|
||||||
|
|
||||||
* If two users modify their crontabs simultaneously, there will be contention
|
* If two users modify their crontabs simultaneously, there will be contention
|
||||||
for /var/cron/update between themselves and with the main daemon.
|
for /var/cron/update between themselves and with the main daemon.
|
||||||
|
|
@ -9,5 +9,7 @@
|
||||||
Coordinated Time (UTC).
|
Coordinated Time (UTC).
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
* As often as not the cron daemon crashes (segfaults) when crontab sends it a
|
* As often as not the cron daemon crashes (segfaults) when crontab sends it a
|
||||||
SIGHUP.
|
SIGHUP. For this reason, the current release does not install cron or
|
||||||
|
crontab.
|
||||||
|
|
|
||||||
24
ChangeLog
24
ChangeLog
|
|
@ -1,23 +1,7 @@
|
||||||
2003-06-30 hydro23 <Dale Mellor <dale@dmellor.dabsol.co.uk>>
|
2003-07-05 Dale Mellor <dale_mellor@users.sourceforge.net>
|
||||||
|
|
||||||
* mcron.scm: Introduced arbiters to marshall access to updates
|
* configure.ac, makefile.am: Disabled installation of cron,
|
||||||
structure between main routing and HUP signal action procedure.
|
crontab programs by default as they are broken.
|
||||||
|
|
||||||
* crontab.scm: When an empty /tmp file is produced for editing,
|
|
||||||
make it owned by the real user (so he can edit it).
|
|
||||||
|
|
||||||
* mcron.scm, makefile.am: Check explicitly for root user when
|
|
||||||
running cron personality. Install with only root execute
|
|
||||||
permission.
|
|
||||||
|
|
||||||
* mcron.scm: Don't create /var/run/cron.pid if the -s option has
|
|
||||||
been used (this is an undocumented possibility).
|
|
||||||
|
|
||||||
* configure.ac, config.scm.in: Added configure option
|
|
||||||
--enable-debug to determine whether debugging and traceback should
|
|
||||||
be turned on.
|
|
||||||
|
|
||||||
* Version bumped to 0.99.2.
|
|
||||||
|
|
||||||
|
|
||||||
2003-06-28 Dale Mellor <dale_mellor@users.sourceforge.net>
|
2003-06-28 Dale Mellor <dale_mellor@users.sourceforge.net>
|
||||||
|
|
@ -26,5 +10,3 @@
|
||||||
testing...
|
testing...
|
||||||
|
|
||||||
* Version set at 0.99.1
|
* Version set at 0.99.1
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
16
NEWS
16
NEWS
|
|
@ -1,11 +1,23 @@
|
||||||
Historic moments in the life of mcron.
|
Historic moments in the life of mcron. -*-text-*-
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1995-2002 Free Software Foundation, Inc.
|
Copyright (C) 2003 Dale Mellor
|
||||||
See the end for copying conditions.
|
See the end for copying conditions.
|
||||||
|
|
||||||
Please send bug reports to dale_mellor@users.sourceforge.net.
|
Please send bug reports to dale_mellor@users.sourceforge.net.
|
||||||
|
|
||||||
|
|
||||||
|
Saturday, 5th July 2003
|
||||||
|
Released version 0.99.1, with installation of cron and crontab disabled by
|
||||||
|
default (suspect problems with Guile internals are preventing these from
|
||||||
|
working properly). The CVS tag is release_0-99-1 (no branch has been created
|
||||||
|
for it).
|
||||||
|
|
||||||
|
|
||||||
|
Friday, 4th July 2003
|
||||||
|
We have been accepted as a Savannah project. A CVS repository and web home
|
||||||
|
page have been created. We're still waiting for acceptance as a GNU project.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
|
||||||
51
README
51
README
|
|
@ -1,38 +1,51 @@
|
||||||
|
-*-text-*-
|
||||||
|
|
||||||
This is version 0.99.1 of the mcron program, designed and written by Dale
|
This is version 0.99.1 of the mcron program, designed and written by Dale
|
||||||
Mellor, which replaces and hugely enhances Vixie cron. It is functionally
|
Mellor, which replaces and hugely enhances Vixie cron. It is functionally
|
||||||
complete, production quality code (did you expect less?), but has not received
|
complete, production quality code (did you expect less?), but has not received
|
||||||
much testing yet and contains known bugs. It has only been built on a GNU/Linux
|
much testing yet and contains known bugs. It has only been built on a GNU/Linux
|
||||||
system, and will most likely fail on others (but you never know...).
|
system, and will most likely fail on others (but you never know...).
|
||||||
|
|
||||||
|
Mcron is supposed to be 100% Vixie compatible. However, in the current release
|
||||||
|
this is broken, and by default only 50% compatibility is installed.
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
IMPORTANT NOTICES
|
IMPORTANT NOTICES
|
||||||
|
|
||||||
Read the BUGS file.
|
Read the BUGS file.
|
||||||
|
|
||||||
Do not (yet) install this software on a machine which relies for its functioning
|
By default, the cron and crontab programs are not installed, and mcron will
|
||||||
on its current set of crontabs.
|
happiliy coexist alongside any existing cron programs you have on your
|
||||||
|
system. The Vixie-style programs can be installed by specifying --enable-vixie
|
||||||
|
to the configure command, in which case you must take heed of the following
|
||||||
|
notes.
|
||||||
|
|
||||||
The package must be installed by root.
|
|
||||||
|
|
||||||
Before installing this package for the first time, it is necessary to terminate
|
Do not (yet) install this software on a machine which relies for its
|
||||||
any running cron daemons on your system. If your old cron is not accurately
|
functioning on its current set of crontabs.
|
||||||
Vixie compatible (files in /var/cron/tabs*, /var/cron/allow, /var/cron/deny,
|
|
||||||
/etc/crontab, /var/run/cron.pid) then you will need to clear out all old
|
|
||||||
crontabs and make new ones afresh.
|
|
||||||
|
|
||||||
If your old cron is Vixie, or very similar, mcron should fall right into place
|
The package must be installed by root.
|
||||||
where your old cron was (the binaries cron and crontab will be replaced), and
|
|
||||||
you should be able to continue to use your existing crontabs without noticing
|
|
||||||
any changes. Bear in mind that if you use /etc/crontab, then changes to this
|
|
||||||
file will *not* take immediate effect (this is the 1% incompatibility between
|
|
||||||
mcron and Vixie cron); you may want to add a comment to this file with a note to
|
|
||||||
this effect. Alternatively, use the new mcron program, it's better!
|
|
||||||
|
|
||||||
If you don't want to clobber your existing cron executables, you can specify the
|
Before installing this package for the first time, it is necessary to
|
||||||
--program-prefix option to configure with a prefix ending in a non-alphabetic
|
terminate any running cron daemons on your system. If your old cron is not
|
||||||
character, for example "m.", and then run the programs as m.mcron, m.cron and
|
accurately Vixie compatible (files in /var/cron/tabs*, /var/cron/allow,
|
||||||
m.crontab.
|
/var/cron/deny, /etc/crontab, /var/run/cron.pid) then you will need to clear
|
||||||
|
out all old crontabs and make new ones afresh.
|
||||||
|
|
||||||
|
If your old cron is Vixie, or very similar, mcron should fall right into
|
||||||
|
place where your old cron was (the binaries cron and crontab will be
|
||||||
|
replaced), and you should be able to continue to use your existing crontabs
|
||||||
|
without noticing any changes. Bear in mind that if you use /etc/crontab,
|
||||||
|
then changes to this file will *not* take immediate effect (this is the 1%
|
||||||
|
incompatibility between mcron and Vixie cron); you may want to add a comment
|
||||||
|
to this file with a note to this effect. Alternatively, use the new mcron
|
||||||
|
program, it's better!
|
||||||
|
|
||||||
|
If you don't want to clobber your existing cron executables, you can specify
|
||||||
|
the --program-prefix option to configure with a prefix ending in a
|
||||||
|
non-alphabetic character, for example "m.", and then run the programs as
|
||||||
|
m.mcron, m.cron and m.crontab.
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
10
TODO
10
TODO
|
|
@ -1,3 +1,5 @@
|
||||||
|
-*-text-*-
|
||||||
|
|
||||||
Maybe in the near future...
|
Maybe in the near future...
|
||||||
|
|
||||||
* Logging.
|
* Logging.
|
||||||
|
|
@ -16,8 +18,9 @@ There are no plans to actually do the following any time soon...
|
||||||
|
|
||||||
* Full security audit for Vixie mode.
|
* Full security audit for Vixie mode.
|
||||||
|
|
||||||
* Move internal functions into a namespace such that configuration files
|
* Move internal functions into a namespace, or provide alternative
|
||||||
cannot interfere with mcron itself.
|
environments, such that configuration files cannot interfere with mcron
|
||||||
|
itself.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -28,7 +31,8 @@ Quite likely to happen if version 2.0 ever materializes...
|
||||||
|
|
||||||
* UNIX or TCP socket will allow interrogation and control of a running
|
* UNIX or TCP socket will allow interrogation and control of a running
|
||||||
daemon (should be more reliable, efficient and useful than using the
|
daemon (should be more reliable, efficient and useful than using the
|
||||||
SIGHUP-/var/cron/update method).
|
SIGHUP-/var/cron/update method). (I did already try this but, as with
|
||||||
|
processes, Guile's use of threads falls over.)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -24,4 +24,3 @@
|
||||||
(define config-package-string "@PACKAGE_STRING@")
|
(define config-package-string "@PACKAGE_STRING@")
|
||||||
(define config-package-bugreport "@PACKAGE_BUGREPORT@")
|
(define config-package-bugreport "@PACKAGE_BUGREPORT@")
|
||||||
(define config-sendmail "@SENDMAIL@")
|
(define config-sendmail "@SENDMAIL@")
|
||||||
(define config-cat "@CAT@")
|
|
||||||
|
|
|
||||||
39
configure.ac
39
configure.ac
|
|
@ -20,30 +20,41 @@ else
|
||||||
fi
|
fi
|
||||||
AC_SUBST(CONFIG_DEBUG)
|
AC_SUBST(CONFIG_DEBUG)
|
||||||
|
|
||||||
|
|
||||||
|
AC_MSG_CHECKING([whether the (broken) Vixie programs are requested])
|
||||||
|
AC_ARG_ENABLE(vixie,
|
||||||
|
AC_HELP_STRING([--enable-vixie],
|
||||||
|
[enable installation of cron and crontab programs]),
|
||||||
|
CONFIG_ENABLE_VIXIE=$enableval,
|
||||||
|
CONFIG_ENABLE_VIXIE=no)
|
||||||
|
AC_MSG_RESULT($CONFIG_ENABLE_VIXIE)
|
||||||
|
AC_SUBST(CONFIG_ENABLE_VIXIE)
|
||||||
|
|
||||||
|
|
||||||
|
# We substitute the following commands into the makefile by configure, because
|
||||||
|
# automake is confused by the ifeq command.
|
||||||
|
|
||||||
|
IFEQ_VIXIE="ifeq (\$(CONFIG_ENABLE_VIXIE), yes)"
|
||||||
|
AC_SUBST(IFEQ_VIXIE)
|
||||||
|
ENDIF="endif"
|
||||||
|
AC_SUBST(ENDIF)
|
||||||
|
|
||||||
|
|
||||||
AC_PROG_CC
|
AC_PROG_CC
|
||||||
GUILE_PROGS
|
GUILE_PROGS
|
||||||
GUILE_FLAGS
|
GUILE_FLAGS
|
||||||
|
|
||||||
# Checks for programs.
|
# Checks for programs.
|
||||||
# AC_CHECK_PROG(CHMOD, chmod, chmod)
|
|
||||||
AC_CHECK_PROGS(CHMOD, chmod)
|
|
||||||
if test "x$ac_cv_prog_CHMOD" = "x"; then
|
|
||||||
AC_MSG_ERROR(chmod not found)
|
|
||||||
fi
|
|
||||||
AC_CHECK_PROGS(ED, ed)
|
AC_CHECK_PROGS(ED, ed)
|
||||||
if test "x$ac_cv_prog_ED" = "x"; then
|
if test "x$ac_cv_prog_ED" = "x"; then
|
||||||
AC_MSG_ERROR(ed not found)
|
AC_MSG_ERROR(ed not found)
|
||||||
fi
|
fi
|
||||||
AC_CHECK_PROGS(CAT, cat)
|
|
||||||
if test "x$ac_cv_prog_CAT" = "x"; then
|
|
||||||
AC_MSG_ERROR(cat not found)
|
|
||||||
fi
|
|
||||||
AC_CHECK_PROGS(WHICH, which)
|
AC_CHECK_PROGS(WHICH, which)
|
||||||
if test "x$ac_cv_prog_WHICH" = "x"; then
|
if test "x$ac_cv_prog_WHICH" = "x"; then
|
||||||
AC_MSG_ERROR(which not found)
|
AC_MSG_ERROR(which not found)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
# Now find a sendmail or equivalent.
|
# Now find a sendmail or equivalent.
|
||||||
|
|
||||||
AC_CHECK_PROGS(SENDMAIL, sendmail)
|
AC_CHECK_PROGS(SENDMAIL, sendmail)
|
||||||
|
|
@ -66,14 +77,6 @@ fi
|
||||||
SENDMAIL=$ac_cv_prog_SENDMAIL
|
SENDMAIL=$ac_cv_prog_SENDMAIL
|
||||||
|
|
||||||
|
|
||||||
# Checks for libraries.
|
|
||||||
|
|
||||||
# Checks for header files.
|
|
||||||
|
|
||||||
# Checks for typedefs, structures, and compiler characteristics.
|
|
||||||
|
|
||||||
# Checks for library functions.
|
|
||||||
|
|
||||||
real_program_prefix=`echo $program_prefix | sed s/NONE//`
|
real_program_prefix=`echo $program_prefix | sed s/NONE//`
|
||||||
AC_SUBST(real_program_prefix)
|
AC_SUBST(real_program_prefix)
|
||||||
|
|
||||||
|
|
|
||||||
19
crontab.scm
19
crontab.scm
|
|
@ -82,8 +82,7 @@
|
||||||
;; Iff the real user is root, he can use the -u option to access files of
|
;; Iff the real user is root, he can use the -u option to access files of
|
||||||
;; another user.
|
;; another user.
|
||||||
|
|
||||||
(define crontab-user
|
(define crontab-user (option-ref options 'user crontab-real-user))
|
||||||
(option-ref options 'user crontab-real-user))
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -147,12 +146,11 @@
|
||||||
|
|
||||||
((option-ref options 'edit #f)
|
((option-ref options 'edit #f)
|
||||||
(let ((temp-file (string-append "/tmp/crontab." (number->string (getpid))))
|
(let ((temp-file (string-append "/tmp/crontab." (number->string (getpid))))
|
||||||
(editor (if (getenv "VISUAL") (getenv "VISUAL")
|
(editor (cond ((getenv "VISUAL") (getenv "VISUAL"))
|
||||||
(if (getenv "EDITOR") (getenv "EDITOR")
|
((getenv "EDITOR") (getenv "EDITOR"))
|
||||||
"vi"))))
|
(else "vi"))))
|
||||||
(catch #t
|
(catch #t (lambda () (copy-file crontab-file temp-file))
|
||||||
(lambda () (copy-file crontab-file temp-file))
|
(lambda (key . args) (with-output-to-file temp-file noop)))
|
||||||
(lambda (key . args) (with-output-to-file temp-file (lambda () #t))))
|
|
||||||
(chown temp-file (getuid) (getgid))
|
(chown temp-file (getuid) (getgid))
|
||||||
(system (string-append editor " " temp-file))
|
(system (string-append editor " " temp-file))
|
||||||
(read-vixie-file temp-file)
|
(read-vixie-file temp-file)
|
||||||
|
|
@ -167,7 +165,7 @@
|
||||||
((option-ref options 'remove #f)
|
((option-ref options 'remove #f)
|
||||||
(catch #t (lambda () (delete-file crontab-file)
|
(catch #t (lambda () (delete-file crontab-file)
|
||||||
(hit-server crontab-user))
|
(hit-server crontab-user))
|
||||||
(lambda (key . args) #t)))
|
noop))
|
||||||
|
|
||||||
|
|
||||||
;; In the case of the replace personality we loop over all the arguments on the
|
;; In the case of the replace personality we loop over all the arguments on the
|
||||||
|
|
@ -194,6 +192,5 @@
|
||||||
;; used to put out, for total compatibility.
|
;; used to put out, for total compatibility.
|
||||||
|
|
||||||
(else
|
(else
|
||||||
(display
|
(display "crontab: usage error: file name must be specified for replace.\n")
|
||||||
"crontab: usage error: file name must be specified for replace.\n")
|
|
||||||
(primitive-exit 15)))
|
(primitive-exit 15)))
|
||||||
|
|
|
||||||
|
|
@ -36,14 +36,14 @@
|
||||||
;; to control is added at the end of the list.
|
;; to control is added at the end of the list.
|
||||||
|
|
||||||
(define (impose-default-environment env-alist passwd-entry)
|
(define (impose-default-environment env-alist passwd-entry)
|
||||||
(append (list (cons "HOME" (passwd:dir passwd-entry))
|
(append `(("HOME" . ,(passwd:dir passwd-entry))
|
||||||
(cons "CWD" (passwd:dir passwd-entry))
|
("CWD" . ,(passwd:dir passwd-entry))
|
||||||
(cons "SHELL" (passwd:shell passwd-entry))
|
("SHELL" . ,(passwd:shell passwd-entry))
|
||||||
'("TERM" . #f)
|
("TERM" . #f)
|
||||||
'("TERMCAP" . #f))
|
("TERMCAP" . #f))
|
||||||
env-alist
|
env-alist
|
||||||
(list (cons "LOGNAME" (passwd:name passwd-entry))
|
`(("LOGNAME" . ,(passwd:name passwd-entry))
|
||||||
(cons "USER" (passwd:name passwd-entry)))))
|
("USER" . ,(passwd:name passwd-entry)))))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -41,21 +41,27 @@ mcron.c : config.scm mcron.scm vixie.scm environment.scm email.scm crontab.scm \
|
||||||
@rm -f mcron.escaped.scm > /dev/null 2>&1
|
@rm -f mcron.escaped.scm > /dev/null 2>&1
|
||||||
|
|
||||||
install-exec-local:
|
install-exec-local:
|
||||||
|
@IFEQ_VIXIE@
|
||||||
@if [ `id -u` -ne 0 ]; then \
|
@if [ `id -u` -ne 0 ]; then \
|
||||||
echo "*** MUST BE ROOT TO INSTALL MCRON ***"; \
|
echo "*** MUST BE ROOT TO INSTALL MCRON ***"; \
|
||||||
exit 1; \
|
exit 1; \
|
||||||
fi
|
fi
|
||||||
|
@ENDIF@
|
||||||
|
|
||||||
#full program prefix
|
#full program prefix
|
||||||
fpp = $(DESTDIR)$(bindir)/@real_program_prefix@
|
fpp = $(DESTDIR)$(bindir)/@real_program_prefix@
|
||||||
|
|
||||||
install-exec-hook:
|
install-exec-hook:
|
||||||
|
@IFEQ_VIXIE@
|
||||||
@rm -f $(fpp)cron$(EXEEXT) > /dev/null 2>&1
|
@rm -f $(fpp)cron$(EXEEXT) > /dev/null 2>&1
|
||||||
@$(INSTALL) --mode='u=rwx' mcron$(EXEEXT) $(fpp)cron$(EXEEXT)
|
@$(INSTALL) --mode='u=rwx' mcron$(EXEEXT) $(fpp)cron$(EXEEXT)
|
||||||
@rm -f $(fpp)crontab$(EXEEXT) > /dev/null 2>&1
|
@rm -f $(fpp)crontab$(EXEEXT) > /dev/null 2>&1
|
||||||
@$(INSTALL) --mode='u=rwxs,og=rx' mcron$(EXEEXT) $(fpp)crontab$(EXEEXT)
|
@$(INSTALL) --mode='u=rwxs,og=rx' mcron$(EXEEXT) $(fpp)crontab$(EXEEXT)
|
||||||
|
@ENDIF@
|
||||||
./mkinstalldirs -m 'u=rwx' /var/cron
|
./mkinstalldirs -m 'u=rwx' /var/cron
|
||||||
./mkinstalldirs -m 'u=rwx,og=rx' /var/run
|
./mkinstalldirs -m 'u=rwx,og=rx' /var/run
|
||||||
|
|
||||||
uninstall-hook:
|
uninstall-hook:
|
||||||
|
@IFEQ_VIXIE@
|
||||||
@rm -f $(fpp){cron,crontab}$(EXEEXT)
|
@rm -f $(fpp){cron,crontab}$(EXEEXT)
|
||||||
|
@ENDIF@
|
||||||
|
|
|
||||||
15
mcron.scm
15
mcron.scm
|
|
@ -239,8 +239,7 @@ Report bugs to " config-package-bugreport ".\n
|
||||||
(display " /var/run/cron.pid.)\n")
|
(display " /var/run/cron.pid.)\n")
|
||||||
(primitive-exit 1)))
|
(primitive-exit 1)))
|
||||||
(if (not (option-ref options 'schedule #f))
|
(if (not (option-ref options 'schedule #f))
|
||||||
(with-output-to-file "/var/run/cron.pid"
|
(with-output-to-file "/var/run/cron.pid" noop))
|
||||||
(lambda () #t)))
|
|
||||||
(setenv "MAILTO" #f)
|
(setenv "MAILTO" #f)
|
||||||
(c-set-cron-signals)))
|
(c-set-cron-signals)))
|
||||||
|
|
||||||
|
|
@ -604,19 +603,17 @@ Report bugs to " config-package-bugreport ".\n
|
||||||
(use-modules (srfi srfi-2))
|
(use-modules (srfi srfi-2))
|
||||||
|
|
||||||
(define (process-files-in-system-directory)
|
(define (process-files-in-system-directory)
|
||||||
;;; (catch #t (lambda ()
|
(catch #t (lambda ()
|
||||||
(let ((directory (opendir "/var/cron/tabs")))
|
(let ((directory (opendir "/var/cron/tabs")))
|
||||||
(do ((file-name (readdir directory) (readdir directory)))
|
(do ((file-name (readdir directory) (readdir directory)))
|
||||||
((eof-object? file-name) (closedir directory))
|
((eof-object? file-name) (closedir directory))
|
||||||
(and-let* ((user (valid-user file-name)))
|
(and-let* ((user (valid-user file-name)))
|
||||||
(set! configuration-user user)
|
(set! configuration-user user)
|
||||||
(read-vixie-file (string-append "/var/cron/tabs/"
|
(read-vixie-file (string-append "/var/cron/tabs/"
|
||||||
file-name)))))
|
file-name))))))
|
||||||
;;; )
|
(lambda (key . args)
|
||||||
;;; (lambda (key . args)
|
(display "You do not have permission to access the system crontabs.\n")
|
||||||
;;; (display "You do not have permission to access the system crontabs.\n")
|
(primitive-exit 4))))
|
||||||
;;; (primitive-exit 4)))
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,12 @@
|
||||||
This file documents the @code{mcron} command for running jobs at
|
This file documents the @code{mcron} command for running jobs at
|
||||||
scheduled times.
|
scheduled times.
|
||||||
|
|
||||||
|
IMPORTANT NOTICE:
|
||||||
|
IT IS VERY LIKELY THAT THE CRON AND CRONTAB PROGRAMS DESCRIBED IN THIS
|
||||||
|
MANUAL HAVE NOT BEEN INSTALLED IN YOUR SYSTEM (THEY ARE CURRENTLY
|
||||||
|
BROKEN). THUS, ONLY THE MCRON PERSONALITY IS CURRENTLY AVAILABLE FOR
|
||||||
|
USE.
|
||||||
|
|
||||||
Copyright (C) 2003 Dale Mellor
|
Copyright (C) 2003 Dale Mellor
|
||||||
This is free software. See the source files for the terms of the
|
This is free software. See the source files for the terms of the
|
||||||
copyright.
|
copyright.
|
||||||
|
|
|
||||||
|
|
@ -416,11 +416,10 @@
|
||||||
((eof-object? line))
|
((eof-object? line))
|
||||||
|
|
||||||
;; If the line ends with \, append the next line.
|
;; If the line ends with \, append the next line.
|
||||||
(do ()
|
(while ((and (>= (string-length line) 1)
|
||||||
((or (< (string-length line) 1)
|
(char=? (string-ref line
|
||||||
(not (char=? (string-ref line
|
(- (string-length line) 1))
|
||||||
(- (string-length line) 1))
|
#\\)))
|
||||||
#\\))))
|
|
||||||
(let ((next-line (read-line port)))
|
(let ((next-line (read-line port)))
|
||||||
(if (eof-object? next-line)
|
(if (eof-object? next-line)
|
||||||
(set! next-line ""))
|
(set! next-line ""))
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue