SummaryRefsLogTreeCommitDiffStats
Commit message (Collapse)AuthorAgeFilesLines
* maint: Generate version number.Mathieu Lirzin2016-12-284-2/+240
| | | | | | | | | | * build-aux/git-version-gen: New script. * configure.ac (AC_INIT): Use it. (AC_REQUIRE_AUX_FILE): Distribute it. * Makefile.am (.version): New target. (BUILT_SOURCES, EXTRA_DIST): Add it. (dist-hook): Generate ".tarball-version". * .gitignore: Update.
* base: find-next-jobs: Use functional style.Mathieu Lirzin2016-12-281-40/+29
| | | | | * src/mcron/base.scm (find-next-jobs): Rewrite it using functional style. Add docstring.
* vixie-specification: Do not use 'and-let*'.Mathieu Lirzin2016-12-281-6/+3
| | | | | * src/mcron/vixie-specification.scm (parse-vixie-environment): Use 'and=>' instead of 'and-let*'
* all: Gather module imports.Mathieu Lirzin2016-12-284-37/+26
| | | | | | | * src/mcron/base.scm: Gather module imports. * src/mcron/redirect.scm: Likewise. * src/mcron/vixie-specification.scm: Likewise. * src/mcron/vixie-time.scm: Likewise.
* utils: Remove unneeded 'stdin->string' procedure.Mathieu Lirzin2016-12-283-10/+4
| | | | | | | * src/mcron/utils.scm: Re-export 'read-string'. (stdin->string): Delete. * src/mcron/scripts/crontab.scm (main): Use 'read-string' instead. * src/mcron/scripts/mcron.scm (process-user-file): Likewise.
* utils: for-each-file: Use named let.Mathieu Lirzin2016-12-281-3/+6
| | | | * src/mcron/utils.scm (for-each-file): Use named 'let' instead of 'do'.
* build: Rename (mcron main) to (mcron utils).Mathieu Lirzin2016-12-285-6/+6
| | | | | | | | | * src/mcron/main.scm: Rename to ... * src/mcron/utils.scm: ... this. * src/mcron/scripts/cron.scm: Adapt. * src/mcron/scripts/crontab.scm: Likewise. * src/mcron/scripts/mcron.scm: Likewise. * Makefile.am (dist_mcronmodule_DATA): Likewise.
* maint: Delete BUGS.Mathieu Lirzin2016-12-283-25/+7
| | | | | | * BUGS: Delete. * Makefile.am (EXTRA_DIST): Adapt. * README: Likewise.
* maint: Update AUTHORS.Mathieu Lirzin2016-12-281-18/+3
| | | | * AUTHORS: Add 'Sergey Poznyakoff' and 'Mathieu Lirzin'.
* maint: Reformat copyright notices and copying permission statements.Mathieu Lirzin2016-12-2811-215/+218
|
* build: Rename 'mcron.c' to 'wrapper.c'.Mathieu Lirzin2016-12-283-7/+6
| | | | | | | * src/mcron.c: Rename to ... * src/wrapper.c: ... this. * Makefile.am (mcron_SOURCES, cron_SOURCES, crontab_SOURCES): Adapt to it. * configure.ac (AC_CONFIG_SRCDIR): Likewise.
* base: Rewrite 'run-job-loop'.Mathieu Lirzin2016-12-281-44/+33
| | | | | * src/mcron/base.scm (run-job-loop): Use #:optional keyword argument, and 'match'.
* job-specifier: Use #:optional keyword argument.Mathieu Lirzin2016-12-281-26/+28
| | | | | | | | * src/mcron/job-specifier.scm (next-year, next-year-from, next-month) (next-month-from, next-day, next-day-from, next-hour, next-hour-from) (next-minute, next-minute-from, next-second, next-second-from): Use #:optional keyword argument. (maybe-args): Remove unneeded procedure.
* job-specifier: Add %current-action-time parameter object.Mathieu Lirzin2016-12-281-26/+21
| | | | | | * src/mcron/job-specifier.scm (current-action-time): Rename to ... (%current-action-time): ... this. Make it a parameter object. (job, maybe-args): Adapt.
* job-specifier: Rewrite 'bump-time'.Mathieu Lirzin2016-12-281-28/+27
| | | | * src/mcron/job-specifier.scm (bump-time): Use 'match'.
* job-specifier: Use 'inf' thunk.Mathieu Lirzin2016-12-011-6/+6
| | | | | | * src/mcron/job-specifier.scm (%find-best-next): Call 'inf' thunk instead of defining an arbitrary high integer. (bump-time): Adapt to it.
* build: Define PACKAGE_LOAD_PATH in Makefile.Mathieu Lirzin2016-12-013-7/+5
| | | | | | | | | | | | Previously PACKAGE_LOAD_PATH was set in config header which wasn't correctly expanded due to the presence of ${prefix} in ${moduledir}. Let 'make' handle the expansion. * Makefile.am (AM_CPPFLAGS): New variable. (cron_CPPFLAGS, crontab_CPPFLAGS, mcron_CPPFLAGS): Use it. * configure.ac (PACKAGE_LOAD_PATH): Undefine it. (AC_CONFIG_HEADER): Remove macro. * src/mcron.c: Adapt to it.
* build: Silence 'guild compile' output.Mathieu Lirzin2016-12-011-1/+5
| | | | | | * Makefile.am (devnull_verbose, devnull_verbose_, devnull_verbose_0): New variables (.scm.go): Use $(devnull_verbose).
* build: Use Automake warnings.Mathieu Lirzin2016-12-012-5/+5
| | | | | | | * configure.ac (AM_INIT_AUTOMAKE): Add more warnings. * Makefile.am (AM_V_GUILEC, AM_V_GUILEC_, AM_V_GUILEC_0): Rename to ... (guilec_verbose, guilec_verbose_, guilec_verbose_0): ... these. Make them more portable. This follows an example from Automake manual.
* doc: Generate a man page for every program.Mathieu Lirzin2016-12-012-12/+27
| | | | | | | | | | * Makefile.am (dist_man_MANS): Add 'cron' and 'crontab' man page. Generate man pages in $(srcdir). (MAINTAINERCLEANFILES, gen_man): New variables. (AM_V_HELP2MAN, AM_V_HELP2MAN_, AM_V_HELP2MAN_0): Delete unneeded variables. ($(srcdir)/doc/crontab.1, $(srcdir)/doc/cron.8): New targets. (doc/mcron.1): Rename to ... ($(srcdir)/doc/mcron.1)): ... this.
* environment: modify-environment: Add tests.Mathieu Lirzin2016-12-012-1/+42
| | | | | * tests/environment.scm: New test. * Makefile.am (TESTS): Add it.
* job-specifier: range: Add tests.Mathieu Lirzin2016-12-015-1/+249
| | | | | | | | | | * build-aux/test-driver.scm: New script. * configure.ac (AC_REQUIRE_AUX_FILE): Add it. * tests/job-specifier.scm: New test. * Makefile.am (TEST_EXTENSIONS, AM_TESTS_ENVIRONMENT, SCM_LOG_DRIVER) (TESTS): New variables. (EXTRA_DIST): Update. * .gitignore: Likewise.
* build: Fix prerequisite for mcron man page.Mathieu Lirzin2016-12-011-1/+1
| | | | | * Makefile.am (doc/mcron.1): Depend on the Guile script instead of the C wrapper.
* all: Separate programs in different executables.Mathieu Lirzin2016-12-019-542/+589
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This improves readability and complies with the GNU Coding Standards by making the behavior of the programs independent of the name used to invoke them. * src/mcron/scripts/cron.scm: New file. * src/mcron/scripts/crontab.scm: Likewise. * src/mcron/scripts/mcron.scm: Likewise. * Makefile.am (dist_mcronmodule_DATA): Remove 'src/mcron/crontab.scm'. (bin_PROGRAMS): Add 'crontab'. (sbin_PROGRAMS): Add 'cron'. (mcron_CFLAGS, mcron_LDADD): Rename to ... (AM_CFLAGS, LDADD): ... these. (cron_SOURCES, cron_CPPFLAGS, cron_DEPENDENCIES) (crontab_SOURCES, crontab_CPPFLAGS, crontab_DEPENDENCIES) (mcron_CPPFLAGS, mcronscriptdir, dist_mcronscript_DATA): New variables. (modules): Redefine it in terms of other '_DATA' variables. * src/mcron/crontab.scm: Remove file. * src/mcron/main.scm (parse-args): New procedure. (command-name, command-type, options): Remove. (show-version): Adapt. (show-help, process-files-in-system-directory, cron-file-descriptors) (main, process-user-file, process-files-in-user-directory): Move procedures in the new files. * src/mcron.c (inner_main): Define the current module at compile time. * TODO: Update. * .gitignore: Likewise.
* build: Install 'config.scm' file.Mathieu Lirzin2016-11-141-1/+4
| | | | | * Makefile.am (mcronmodule_DATA): Add 'src/mcron/config.scm'. (CLEANFILES): Don't clean it.
* job-specifier: job: Add #:user keyword argument.Mathieu Lirzin2016-05-072-16/+21
| | | | | * src/mcron/job-specifier.scm (job): Add #:user keyword argument. * doc/mcron.texi (Job specification): Document it.
* base: run-jobs: Ensure that the child process always terminates.Ludovic Courtès2016-05-071-7/+11
| | | | * src/mcron/base.scm (run-jobs): Use 'dynamic-wind' instead of 'begin'.
* build: Use lowercase names for local variables.Mathieu Lirzin2016-05-071-11/+11
| | | | | | | | This helps distinguish variable names with a special Automake semantic. * Makefile.am (MODULES): Rename to ... (modules): ... this. (mcronmodule_DATA, dist_mcronmodule_DATA): Adapt to it.
* build: Remove GOBJECTS and GEN_MODULES variables.Mathieu Lirzin2016-05-071-12/+5
| | | | | | * Makefile.am (GOBJECTS, GEN_MODULES): Remove variables. (mcronmodule_DATA, DISTCLEANFILES): Inline their contents. (mcron_DEPENDENCIES, CLEANFILES): Use 'mcronmodule_DATA'.
* base: Rename (mcron core) module to (mcron base).Mathieu Lirzin2016-05-077-29/+23
| | | | | | | | | | | | | | | | | The 'configure' script deletes the 'core.*' files. Having a file named 'base.scm' instead of 'core.scm' simplifies the build process without changing the semantics. * src/mcron/mcron-core.scm: Rename to ... * src/mcron/base.scm: ... this. All module users changed. * Makefile.am (MODULES): Add 'src/mcron/base.scm'. (CP): Remove variable. (src/mcron/core.scm): Remove target. (GEN_MODULES): Remove 'src/mcron/core.scm'. (dist_mcronmodule_DATA): Remove 'src/mcron/mcron-core.scm' * doc/mcron.texi: Adapt to name change. * .gitignore: Update.
* build: Use AC_CONFIG_SRCDIR safety check.Mathieu Lirzin2016-05-071-0/+1
| | | | * configure.ac (AC_CONFIG_SCRDIR): Set it to 'src/mcron.c'.
* all: Rename 'scm' directory to 'src'.Mathieu Lirzin2016-05-0714-20/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * scm/mcron/config.scm.in: Rename to ... * src/mcron/config.scm.in: ... this. * scm/mcron/crontab.scm: Rename to ... * src/mcron/crontab.scm: ... this. * scm/mcron/environment.scm: Rename to ... * src/mcron/environment.scm: ... this. * scm/mcron/job-specifier.scm: Rename to ... * src/mcron/job-specifier.scm: ... this. * scm/mcron/main.scm: Rename to ... * src/mcron/main.scm: ... this. * scm/mcron/mcron-core.scm: Rename to ... * src/mcron/mcron-core.scm: ... this. * scm/mcron/redirect.scm: Rename to ... * src/mcron/redirect.scm: ... this. * scm/mcron/vixie-specification.scm: Rename to ... * src/mcron/vixie-specification.scm: ... this. * scm/mcron/vixie-time.scm: Rename to ... * src/mcron/vixie-time.scm: ... this. * mcron.c: Rename to ... * src/mcron.c: ... this. * Makefile.am: Adapt to them. * build-aux/pre-inst-env.in: Likewise. * configure.ac (AC_CONFIG_FILES): Likewise. (AC_CONFIG_HEADER): Set to 'src/config.h'. * .gitignore: Update.
* build: Do not auto-compile 'guild'.Mathieu Lirzin2016-05-071-2/+3
| | | | * Makefile.am (.scm.go): Set GUILE_AUTO_COMPILE to 0.
* job-specifier: Add '%find-best-next' procedure.Mathieu Lirzin2016-05-072-42/+33
| | | | | | * scm/mcron/job-specifier.scm (find-best-next): Rename to ... (%find-best-next): ... this. Rewrite it using a functional style. All callers changed.
* job-specifier: Rewrite 'range' procedure.Mathieu Lirzin2016-05-071-17/+8
| | | | * scm/mcron/job-specifier.scm (range): Use 'unfold'.
* build: Fix 'distcheck' target failures.Mathieu Lirzin2016-05-071-0/+6
| | | | | | * Makefile.am (TEXI2DVI, DISTCLEANFILES, doc_mcron_TEXINFOS) (nodist_doc_mcron_TEXINFOS): New variables. This fixes the build of the dvi/pdf documentation.
* build: Support VPATH builds.Mathieu Lirzin2016-05-075-7/+59
| | | | | | | | | | | | | | | | | | This allows using 'mcron' before it is installed without hardcoding the local build environment in the executable. * build-aux/pre-inst-env.in: New script. * configure.ac (AC_CONFIG_FILES): Create it. (AC_CONFIG_HEADER): Add 'config.h'. (moduledir): New variable. (PACKAGE_LOAD_PATH): new C preprocessor macro. * mcron.c: Include "config.h". (main): Don't overwrite Guile load paths. (inner_main): Prepend Mcron modules load paths. * Makefile.am (.scm.go, doc/mcron.1): Use 'pre-inst-env'. (mcron_CFLAGS): Remove GUILE_LOAD_PATH macro. (noinst_SCRIPTS): New variable. * .gitignore: Update.
* build: Use a non-recursive makefile.Mathieu Lirzin2016-05-075-170/+162
| | | | | | | | | | * configure.ac (AM_INIT_AUTOMAKE): Use 'subdir-objects' option. (AC_CONFIG_FILES): Remove 'scm/mcron/makefile' and 'makefile'. Add 'Makefile'. * makefile.am: Delete file. Move its content into ... * scm/mcron/makefile.am: Likewise. * Makefile.am: ... this. New file. * .gitignore: Update.
* core: Use SRFI-9 records for the job data structure.Mathieu Lirzin2016-05-071-47/+46
| | | | | * scm/mcron/mcron-core.scm <job>: New record type. This Replaces a vector data structure. All consumers changed.
* main: Remove 'valid-user' procedure.Mathieu Lirzin2016-05-071-13/+7
| | | | | | * scm/mcron/main.scm (valid-user): Delete procedure. (process-files-in-system-directory): Adjust accordingly by using a local definition.
* main: Add 'for-each-file' procedure.Mathieu Lirzin2016-05-071-28/+33
| | | | | | * scm/mcron/main.scm (for-each-file): New procedure. (process-files-in-user-directory, process-files-in-system-directory): Use it.
* all: Add a custom indentation rule for 'mcron-error'.Mathieu Lirzin2016-05-075-33/+25
| | | | | | | | * .dir-locals.el: Define a custom indentation rule for 'mcron-error'. * scm/mcron/crontab.scm: Use it. * scm/mcron/job-specifier.scm: Likewise. * scm/mcron/main.scm: Likewise. * scm/mcron/vixie-specification.scm: Likewise.
* maint: Define directory-local variables for Emacs.Mathieu Lirzin2016-05-071-0/+7
| | | | | | This configures Emacs automatically. * .dir-locals.el: New file.
* environment: Redefine 'modify-environment'.Mathieu Lirzin2016-05-071-31/+23
| | | | | | * scm/mcron/environment.scm (modify-environment): Add docstring. Compute 'passwd:dir' and 'passwd:name' only once. (impose-default-environment): Merge it into 'modify-environment'.
* main: Remove unused 'regular-file?' procedure.Mathieu Lirzin2016-05-071-9/+0
| | | | * scm/mcron/main.scm (regular-file?): Delete procedure.
* main: Improve 'process-user-file' definition.Mathieu Lirzin2016-05-071-17/+15
| | | | | | | * scm/mcron/main.scm (process-user-file): Rename parameters 'file-path' to 'file-name' and 'assume-guile' to 'guile-syntax?'. Capture 'guile-regexp' and 'vixie-regexp' bindings in the procedure scope. (guile-file-regexp, vixie-file-regexp): Delete variables.
* mcron: Mark local functions as static.Mathieu Lirzin2016-05-071-6/+6
| | | | | * mcron.c (inner_main, react_to_terminal_signal, set_cron_signals): Declare static.
* mcron: Rework comments.Mathieu Lirzin2016-05-071-37/+10
| | | | * mcron.c: Rework comments.
* mcron: Use symbolic constants.Mathieu Lirzin2016-05-071-2/+3
| | | | | * mcron.c (main, react_to_terminal_signal): Use EXIT_SUCCESS and EXIT_FAILURE macros instead of magic numbers.
* mcron: Add forward declarations.Mathieu Lirzin2016-05-071-25/+28
| | | | * mcron.c: Reorder function definitions sequentially.