SummaryRefsLogTreeCommitDiffStats
Commit message (Collapse)AuthorAgeFilesLines
* utils: Add 'assq_symbol_set_x' functionMathieu Lirzin2017-09-285-16/+18
| | | | | * src/utils.c (assq_symbol_set_x): New function. * src/mcron.c (parse_opt): Use it.
* mcron: Handle command line arguments in C with argpMathieu Lirzin2017-09-282-61/+108
| | | | | | | | | | | 'argp' is a convenient and maintainable way to parse command line arguments. Guile doesn't offer an equivalent of this, so the command line handling has been moved to C. * src/mcron.c (parse_args, parse_opt): New functions. (inner_main): Call 'parse_args'. * src/mcron/scripts/mcron.scm (show-help, %options): Delete. (main): Remove command line handling.
* Replace generic C wrapper with individual programsMathieu Lirzin2017-09-285-28/+113
| | | | | | | | | | | * src/wrapper.c: Delete. * src/crontab.c: New file. * src/mcron.c: Likewise. * src/cron.c: Likewise. * configure.ac: Adapt 'AC_CONFIG_DIR' to use "src/mcron.c". * Makefile.am (bin_crontab_SOURCES, bin_cron_SOURCES) (bin_mcron_SOURCES): Use new files. (bin_cron_CPPFLAGS, bin_mcron_CPPFLAGS, bin_crontab_CPPFLAGS): Delete.
* wrapper: Move 'wrap_env_path' to a new 'utils' module.Mathieu Lirzin2017-09-286-26/+83
| | | | | | | | | * src/wrapper.c: Move 'wrap_env_path' to ... * src/utils.h: ... here. New module. * src/utils.c: New file. * configure.ac: Use AC_PROG_RANLIB and AM_PROG_AR. * Makefile.am (noinst_LIBRARIES, src_libmcron_a_SOURCES): New variables. (LDADD): Add 'src/libmcron.a'.
* build: Remove "--enable-debug" configure optionMathieu Lirzin2017-09-282-15/+8
| | | | | | | | | | | Unlike C code where debugging impose the "-g" compilation flags. This debugging option only affects Guile code, so using an environment variable works better since it doesn't impose to recompile Mcron or to edit "config.scm". * configure.ac: Remove "--enable-debug" configure option. * src/mcron/config.scm.in (config-debug): Use MCRON_DEBUG environment variable to trigger the debug mode at runtime.
* build: Remove "maintainer-mode" configure option.Mathieu Lirzin2017-09-281-4/+0
| | | | * configure.ac: Remove "maintainer-mode" configure option.
* build: Replace "--enable-no-vixie-clobber" with "--disable-multi-user".Mathieu Lirzin2017-09-282-35/+27
| | | | | | | | | | | | | | | | * configure.ac: Define "--disable-multi-user" option instead of "--enable-no-vixie-clobber". * Makefile.am (install-exec-hook) [MULTI_USER]: Only set crontab setuid bit. (bin_PROGRAMS): Keep only 'mcron' by default. (bin_PROGRAMS) [MULTI_USER]: Add 'crontab' (sbin_PROGRAMS) [MULTI_USER]: Add 'cron'. (noinst_PROGRAMS) [!MULTI_USER]: Add 'cron' and 'crontab'. (dist_man_MANS): Move 'crontab.1' and 'cron.8' ... (extra_mans): here. New variable. (dist_man_MANS) [MULTI_USER]: Add it. (all-local) [!MULTI_USER]: New target. Depend on it. (EXTRA_DIST) [!MULTI_USER]: Distribute it. (MAINTAINERCLEANFILES): Clean it.
* build: Separate "Makefile.am" into more sections.Mathieu Lirzin2017-09-281-28/+50
| | | | | * Makefile.am: Add "Installation", "Distribution", "Test suite", "Programs", and "Guile modules" sections.
* build: Add 'bootstrap' script.Mathieu Lirzin2017-09-282-0/+6
| | | | | * bootstrap: New file. * Makefile.am (EXTRA_DIST): Add it.
* Add (mcron core) module.Mathieu Lirzin2017-09-282-0/+35
| | | | | This module is an alias for (mcron base) module. This modules is added to keep backward compatibility with Mcron 1.x.
* base: Add 'run-job' procedure.Mathieu Lirzin2017-09-281-31/+20
| | | | | | * src/mcron/base.scm (run-jobs): Delete. (run-job): New procedure. (run-job-loop): Use it.
* job-specifier: Remove dependency on SRFI-26.Mathieu Lirzin2017-09-281-3/+6
| | | | | * src/mcron/job-specifier.scm (range): Use plain lambda instead of 'cut' and 'cute'.
* build: Install '.go' files under LIBDIR.Mathieu Lirzin2017-09-281-14/+15
| | | | | | | | | | | * Makefile.am (compiled_modules): New variable. (bin_mcron_DEPENDENCIES, bin_cron_DEPENDENCIES) (bin_crontab_DEPENDENCIES): Use it. (guilesitegodir, pkgmodulegodir, pkgmodulego_DATA) (pkgscriptgodir, pkgscriptgo_DATA): New variables (pkgmodule_DATA): Remove compiled modules. (pkgscript_DATA): Delete. (DISTCLEANFILES, CLEANFILES): Update.
* build: Don't generate '.version' file.Mathieu Lirzin2017-09-282-6/+0
| | | | | | | * Makefile.am (.version): Remove target which has no use. (EXTRA_DIST): Adapt. (BUILT_SOURCES): Delete. * .gitignore: Update.
* build: Rename variables for Guile install directories.Mathieu Lirzin2017-09-282-14/+13
| | | | | | | | | | * configure.ac (moduledir, mcronmoduledir): Rename to ... * Makefile.am (guilesitedir, pkgmoduledir): ... these. (dist_mcronmodule_DATA, mcronmodule_DATA, mcronscriptdir) (dist_mcronscript_DATA, mcronscript_DATA): Rename to ... (dist_pkgmodule_DATA, pkgmodule_DATA, pkgscriptdir, dist_pkgscript_DATA) (pkgscript_DATA): ... these. (modules): Adapt.
* build: Support Guile 2.2.Mathieu Lirzin2017-09-281-11/+14
| | | | | | * configure.ac: Use 'GUILE_PKG' and 'GUILE_PROGS'. Remove explicit Guile version check and check for 'guild'. Honor $GUILE_EFFECTIVE_VERSION in 'moduledir'.
* build: Define PACKAGE_LOAD_COMPILED_PATH macro.Mathieu Lirzin2017-09-272-2/+6
| | | | | * Makefile.am (AM_CPPFLAGS): Define PACKAGE_LOAD_COMPILED_PATH macro. * src/wrapper.c (main): Use it.
* wrapper: Avoid 'scm_c_eval_string' usage.Mathieu Lirzin2017-09-272-13/+41
| | | | | | | | * src/wrapper.c (wrap_env_path): New function. (main): Use it. (inner_main): Let 'wrap_env_path' set the environment variables. Don't use 'scm_c_eval_string' when calling 'main' procedure. * Makefile.am (AM_CPPFLAGS): Define _GNU_SOURCE for 'asprintf'.
* Merge branch 'devel'Mathieu Lirzin2017-09-2742-2094/+3629
|\
| * build: Use portable substitution references.Mathieu Lirzin2016-12-281-6/+6
| | | | | | | | | | | | * Makefile.am (bin_mcron_DEPENDENCIES, bin_cron_DEPENDENCIES) (bin_crontab_DEPENDENCIES, mcronmodule_DATA, mcronscript_DATA) (CLEANFILES): Use portable substitution references.
| * build: Add "build-aux/guix.scm".Mathieu Lirzin2016-12-282-0/+67
| | | | | | | | | | * build-aux/guix.scm: New file. * Makefile.am (EXTRA_DIST): Add it.
| * build: Move executable to "bin" directory.Mathieu Lirzin2016-12-283-18/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | * Makefile.am (bin_PROGRAMS, sbin_PROGRAMS): Prepend "bin/" to every program. (mcron_SOURCES, mcron_CPPFLAGS, mcron_DEPENDENCIES): Rename to ... (bin_mcron_SOURCES, bin_mcron_CPPFLAGS, bin_mcron_DEPENDENCIES): ... this. (cron_SOURCES, cron_CPPFLAGS, cron_DEPENDENCIES): Rename to ... (bin_cron_SOURCES, bin_cron_CPPFLAGS, bin_cron_DEPENDENCIES): ... this. (crontab_SOURCES, crontab_CPPFLAGS, crontab_DEPENDENCIES): Rename to ... (bin_crontab_SOURCES, bin_crontab_CPPFLAGS, bin_crontab_DEPENDENCIES): ($(srcdir)/doc/cron.8, $(srcdir)/doc/crontab.1, $(srcdir)/doc/mcron.1): Update prerequisite. * build-aux/pre-inst-env.in (PATH): Use "bin" directory. * .gitignore: Update.
| * 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.