From f8e56e68e1785933a5c30aed1a3e8916943447c4 Mon Sep 17 00:00:00 2001 From: Diego Lendoiro Date: Mon, 10 Apr 2017 17:20:36 +0200 Subject: [PATCH] removed old files and added new dockerfile and conf --- Dockerfile | 154 +- README.md | 174 +- bin/generate_gpg_server_key.sh | 6 - bin/passbolt_start.sh | 155 + conf/conf.sh | 17 - conf/gpg_server_key_settings.conf | 12 - conf/passbolt.conf | 110 + entry-point.sh | 137 - fcron-3.2.0/MANIFEST | 217 - fcron-3.2.0/Makefile.in | 323 - fcron-3.2.0/README | 2 - fcron-3.2.0/VERSION | 1 - fcron-3.2.0/allow.c | 127 - fcron-3.2.0/allow.h | 31 - fcron-3.2.0/bitstring.h | 124 - fcron-3.2.0/cl.c | 74 - fcron-3.2.0/cl.h | 75 - fcron-3.2.0/conf.c | 1180 -- fcron-3.2.0/conf.h | 34 - fcron-3.2.0/config.h.in | 523 - fcron-3.2.0/configure | 9631 ----------------- fcron-3.2.0/configure.in | 1124 -- fcron-3.2.0/convert-fcrontab.c | 289 - fcron-3.2.0/convert-fcrontab.h | 39 - fcron-3.2.0/database.c | 1583 --- fcron-3.2.0/database.h | 54 - fcron-3.2.0/debian/README.Debian | 21 - fcron-3.2.0/debian/TODO.Debian | 8 - fcron-3.2.0/debian/changelog | 248 - fcron-3.2.0/debian/conffiles | 1 - fcron-3.2.0/debian/config | 12 - fcron-3.2.0/debian/control | 21 - fcron-3.2.0/debian/copyright | 16 - fcron-3.2.0/debian/crontab.root | 4 - fcron-3.2.0/debian/dirs | 4 - fcron-3.2.0/debian/fcron-update-crontabs | 19 - fcron-3.2.0/debian/fcron-update-crontabs.1 | 26 - fcron-3.2.0/debian/init | 72 - fcron-3.2.0/debian/lintian | 3 - fcron-3.2.0/debian/postinst | 102 - fcron-3.2.0/debian/postrm | 51 - fcron-3.2.0/debian/preinst | 10 - fcron-3.2.0/debian/rules | 107 - fcron-3.2.0/debian/templates | 14 - fcron-3.2.0/debian/templates.de | 14 - fcron-3.2.0/debian/templates.es | 25 - fcron-3.2.0/debian/templates.fr | 28 - fcron-3.2.0/debian/templates.pt | 14 - fcron-3.2.0/debian/templates.ru | 27 - fcron-3.2.0/doc/Makefile.in | 243 - fcron-3.2.0/doc/bitstring.3 | 168 - fcron-3.2.0/doc/en/HTML/LEGALNOTICE.html | 142 - fcron-3.2.0/doc/en/HTML/changes.html | 1926 ---- fcron-3.2.0/doc/en/HTML/faq.html | 1127 -- fcron-3.2.0/doc/en/HTML/fcron.8.html | 1112 -- fcron-3.2.0/doc/en/HTML/fcron.conf.5.html | 684 -- fcron-3.2.0/doc/en/HTML/fcrondyn.1.html | 1142 -- fcron-3.2.0/doc/en/HTML/fcrontab.1.html | 858 -- fcron-3.2.0/doc/en/HTML/fcrontab.5.html | 3425 ------ fcron-3.2.0/doc/en/HTML/fdl.html | 709 -- fcron-3.2.0/doc/en/HTML/gpl.html | 592 - fcron-3.2.0/doc/en/HTML/how-and-why.html | 286 - fcron-3.2.0/doc/en/HTML/index.html | 489 - fcron-3.2.0/doc/en/HTML/install.html | 749 -- fcron-3.2.0/doc/en/HTML/manpages.html | 219 - fcron-3.2.0/doc/en/HTML/readme.html | 602 -- fcron-3.2.0/doc/en/HTML/relnotes.html | 190 - fcron-3.2.0/doc/en/HTML/thanks.html | 330 - fcron-3.2.0/doc/en/HTML/todo.html | 350 - fcron-3.2.0/doc/en/HTML/using-fcron.html | 220 - fcron-3.2.0/doc/en/changes.sgml | 1313 --- fcron-3.2.0/doc/en/faq.sgml | 397 - fcron-3.2.0/doc/en/fcron-doc.sgml | 108 - fcron-3.2.0/doc/en/fcron.8.sgml | 317 - fcron-3.2.0/doc/en/fcron.conf.5.sgml | 162 - fcron-3.2.0/doc/en/fcrondyn.1.sgml | 375 - fcron-3.2.0/doc/en/fcrontab.1.sgml | 242 - fcron-3.2.0/doc/en/fcrontab.5.sgml | 1052 -- fcron-3.2.0/doc/en/fdl.sgml | 409 - fcron-3.2.0/doc/en/gpl.sgml | 339 - fcron-3.2.0/doc/en/install.sgml | 186 - fcron-3.2.0/doc/en/man/bitstring.3 | 168 - fcron-3.2.0/doc/en/man/fcron.8 | 213 - fcron-3.2.0/doc/en/man/fcron.conf.5 | 104 - fcron-3.2.0/doc/en/man/fcrondyn.1 | 219 - fcron-3.2.0/doc/en/man/fcrontab.1 | 178 - fcron-3.2.0/doc/en/man/fcrontab.5 | 863 -- fcron-3.2.0/doc/en/manpage-foot.sgml | 37 - fcron-3.2.0/doc/en/readme.sgml | 152 - fcron-3.2.0/doc/en/relnotes.sgml | 27 - fcron-3.2.0/doc/en/thanks.sgml | 93 - fcron-3.2.0/doc/en/todo.sgml | 134 - fcron-3.2.0/doc/en/txt/changes.txt | 730 -- fcron-3.2.0/doc/en/txt/faq.txt | 344 - fcron-3.2.0/doc/en/txt/gpl.txt | 356 - fcron-3.2.0/doc/en/txt/install.txt | 115 - fcron-3.2.0/doc/en/txt/readme.txt | 110 - fcron-3.2.0/doc/en/txt/relnotes.txt | 17 - fcron-3.2.0/doc/en/txt/thanks.txt | 54 - fcron-3.2.0/doc/en/txt/todo.txt | 99 - fcron-3.2.0/doc/fcron-doc.mod.in | 115 - fcron-3.2.0/doc/fr/HTML/LEGALNOTICE.html | 142 - fcron-3.2.0/doc/fr/HTML/changes.html | 1536 --- fcron-3.2.0/doc/fr/HTML/faq.html | 971 -- fcron-3.2.0/doc/fr/HTML/fcron.8.html | 1132 -- fcron-3.2.0/doc/fr/HTML/fcron.conf.5.html | 712 -- fcron-3.2.0/doc/fr/HTML/fcrondyn.1.html | 1195 -- fcron-3.2.0/doc/fr/HTML/fcrontab.1.html | 922 -- fcron-3.2.0/doc/fr/HTML/fcrontab.5.html | 3178 ------ fcron-3.2.0/doc/fr/HTML/fdl.html | 709 -- fcron-3.2.0/doc/fr/HTML/gpl.html | 592 - fcron-3.2.0/doc/fr/HTML/how-and-why.html | 272 - fcron-3.2.0/doc/fr/HTML/index.html | 495 - fcron-3.2.0/doc/fr/HTML/install.html | 596 - fcron-3.2.0/doc/fr/HTML/manpages.html | 218 - fcron-3.2.0/doc/fr/HTML/readme.html | 602 -- fcron-3.2.0/doc/fr/HTML/relnotes.html | 193 - fcron-3.2.0/doc/fr/HTML/thanks.html | 330 - fcron-3.2.0/doc/fr/HTML/todo.html | 341 - fcron-3.2.0/doc/fr/HTML/using-fcron.html | 219 - fcron-3.2.0/doc/fr/changes.sgml | 1045 -- fcron-3.2.0/doc/fr/faq.sgml | 357 - fcron-3.2.0/doc/fr/fcron-doc.sgml | 108 - fcron-3.2.0/doc/fr/fcron.8.sgml | 354 - fcron-3.2.0/doc/fr/fcron.conf.5.sgml | 202 - fcron-3.2.0/doc/fr/fcrondyn.1.sgml | 450 - fcron-3.2.0/doc/fr/fcrontab.1.sgml | 295 - fcron-3.2.0/doc/fr/fcrontab.5.sgml | 1115 -- fcron-3.2.0/doc/fr/fdl.sgml | 409 - fcron-3.2.0/doc/fr/gpl.sgml | 339 - fcron-3.2.0/doc/fr/install.sgml | 149 - fcron-3.2.0/doc/fr/man/bitstring.3 | 168 - fcron-3.2.0/doc/fr/man/fcron.8 | 236 - fcron-3.2.0/doc/fr/man/fcron.conf.5 | 125 - fcron-3.2.0/doc/fr/man/fcrondyn.1 | 265 - fcron-3.2.0/doc/fr/man/fcrontab.1 | 198 - fcron-3.2.0/doc/fr/man/fcrontab.5 | 889 -- fcron-3.2.0/doc/fr/manpage-foot.sgml | 37 - fcron-3.2.0/doc/fr/readme.sgml | 152 - fcron-3.2.0/doc/fr/relnotes.sgml | 30 - fcron-3.2.0/doc/fr/thanks.sgml | 93 - fcron-3.2.0/doc/fr/todo.sgml | 127 - fcron-3.2.0/doc/fr/txt/changes.txt | 539 - fcron-3.2.0/doc/fr/txt/faq.txt | 303 - fcron-3.2.0/doc/fr/txt/gpl.txt | 356 - fcron-3.2.0/doc/fr/txt/install.txt | 79 - fcron-3.2.0/doc/fr/txt/readme.txt | 110 - fcron-3.2.0/doc/fr/txt/relnotes.txt | 19 - fcron-3.2.0/doc/fr/txt/thanks.txt | 54 - fcron-3.2.0/doc/fr/txt/todo.txt | 92 - fcron-3.2.0/doc/psgml-docbook-dtd.cache | 1803 --- fcron-3.2.0/doc/psgml-ecat.file | 1 - fcron-3.2.0/doc/stylesheets/fcron-doc.dsl.in | 378 - fcron-3.2.0/dyncom.h | 80 - fcron-3.2.0/env_list.c | 210 - fcron-3.2.0/env_list.h | 63 - fcron-3.2.0/exe_list.c | 85 - fcron-3.2.0/exe_list.h | 57 - fcron-3.2.0/exe_list_test.c | 157 - fcron-3.2.0/fcron.c | 865 -- fcron-3.2.0/fcron.h | 99 - fcron-3.2.0/fcronconf.c | 204 - fcron-3.2.0/fcronconf.h | 47 - fcron-3.2.0/fcrondyn.c | 854 -- fcron-3.2.0/fcrondyn.h | 50 - fcron-3.2.0/fcronsighup.c | 266 - fcron-3.2.0/fcronsighup.h | 37 - fcron-3.2.0/fcrontab.c | 1163 -- fcron-3.2.0/fcrontab.h | 44 - fcron-3.2.0/fifo_list.c | 248 - fcron-3.2.0/fifo_list.h | 65 - fcron-3.2.0/fileconf.c | 2054 ---- fcron-3.2.0/fileconf.h | 33 - fcron-3.2.0/files/fcron.allow | 10 - fcron-3.2.0/files/fcron.conf.in | 23 - fcron-3.2.0/files/fcron.deny | 7 - fcron-3.2.0/files/fcron.pam | 12 - fcron-3.2.0/files/fcrontab.pam | 18 - fcron-3.2.0/filesubs.c | 102 - fcron-3.2.0/filesubs.h | 39 - fcron-3.2.0/getloadavg.c | 114 - fcron-3.2.0/getloadavg.h | 31 - fcron-3.2.0/global.h | 254 - fcron-3.2.0/install-sh | 251 - fcron-3.2.0/job.c | 889 -- fcron-3.2.0/job.h | 38 - fcron-3.2.0/lavg_list.c | 87 - fcron-3.2.0/lavg_list.h | 56 - fcron-3.2.0/log.c | 546 - fcron-3.2.0/log.h | 54 - fcron-3.2.0/m4/ax_lib_readline.m4 | 107 - fcron-3.2.0/mem.c | 110 - fcron-3.2.0/mem.h | 64 - fcron-3.2.0/option.h | 513 - fcron-3.2.0/pam.h | 38 - fcron-3.2.0/read_string.c | 108 - fcron-3.2.0/read_string.h | 35 - fcron-3.2.0/save.c | 410 - fcron-3.2.0/save.h | 85 - fcron-3.2.0/script/boot-install | 419 - fcron-3.2.0/script/boot-uninstall | 34 - fcron-3.2.0/script/check_system_crontabs.bash | 334 - fcron-3.2.0/script/check_system_crontabs.sh | 334 - .../script/fcron-solaris10-manifest.xml | 35 - fcron-3.2.0/script/fcron.init.suse.in | 133 - fcron-3.2.0/script/fcron.init.systemd.in | 17 - fcron-3.2.0/script/fcron.sh.in | 24 - fcron-3.2.0/script/gen-doc | 23 - fcron-3.2.0/script/gen-in.pl | 60 - fcron-3.2.0/script/has_usrgrp.pl | 41 - fcron-3.2.0/script/install-pam-conf | 35 - fcron-3.2.0/script/sysVinit-launcher.in | 124 - fcron-3.2.0/script/user-group | 152 - fcron-3.2.0/socket.c | 1055 -- fcron-3.2.0/socket.h | 58 - fcron-3.2.0/subs.c | 429 - fcron-3.2.0/subs.h | 47 - fcron-3.2.0/temp_file.c | 80 - fcron-3.2.0/temp_file.h | 31 - fcron-3.2.0/tests/README.tests | 1 - fcron-3.2.0/tests/test-open.c | 13 - fcron-3.2.0/tests/test-types.c | 15 - fcron-3.2.0/tests/test-uidgid.c | 57 - fcron-3.2.0/u_list.c | 271 - fcron-3.2.0/u_list.h | 70 - launch-container.sh | 17 - server-conf/apache/000-default.conf | 31 - server-conf/apache/passbolt.conf | 31 - 228 files changed, 456 insertions(+), 81063 deletions(-) delete mode 100755 bin/generate_gpg_server_key.sh create mode 100755 bin/passbolt_start.sh delete mode 100644 conf/conf.sh delete mode 100644 conf/gpg_server_key_settings.conf create mode 100644 conf/passbolt.conf delete mode 100644 entry-point.sh delete mode 100644 fcron-3.2.0/MANIFEST delete mode 100644 fcron-3.2.0/Makefile.in delete mode 100644 fcron-3.2.0/README delete mode 100644 fcron-3.2.0/VERSION delete mode 100644 fcron-3.2.0/allow.c delete mode 100644 fcron-3.2.0/allow.h delete mode 100644 fcron-3.2.0/bitstring.h delete mode 100644 fcron-3.2.0/cl.c delete mode 100644 fcron-3.2.0/cl.h delete mode 100644 fcron-3.2.0/conf.c delete mode 100644 fcron-3.2.0/conf.h delete mode 100644 fcron-3.2.0/config.h.in delete mode 100755 fcron-3.2.0/configure delete mode 100644 fcron-3.2.0/configure.in delete mode 100644 fcron-3.2.0/convert-fcrontab.c delete mode 100644 fcron-3.2.0/convert-fcrontab.h delete mode 100644 fcron-3.2.0/database.c delete mode 100644 fcron-3.2.0/database.h delete mode 100644 fcron-3.2.0/debian/README.Debian delete mode 100644 fcron-3.2.0/debian/TODO.Debian delete mode 100644 fcron-3.2.0/debian/changelog delete mode 100644 fcron-3.2.0/debian/conffiles delete mode 100644 fcron-3.2.0/debian/config delete mode 100644 fcron-3.2.0/debian/control delete mode 100644 fcron-3.2.0/debian/copyright delete mode 100644 fcron-3.2.0/debian/crontab.root delete mode 100644 fcron-3.2.0/debian/dirs delete mode 100644 fcron-3.2.0/debian/fcron-update-crontabs delete mode 100644 fcron-3.2.0/debian/fcron-update-crontabs.1 delete mode 100644 fcron-3.2.0/debian/init delete mode 100644 fcron-3.2.0/debian/lintian delete mode 100644 fcron-3.2.0/debian/postinst delete mode 100644 fcron-3.2.0/debian/postrm delete mode 100644 fcron-3.2.0/debian/preinst delete mode 100644 fcron-3.2.0/debian/rules delete mode 100644 fcron-3.2.0/debian/templates delete mode 100644 fcron-3.2.0/debian/templates.de delete mode 100644 fcron-3.2.0/debian/templates.es delete mode 100644 fcron-3.2.0/debian/templates.fr delete mode 100644 fcron-3.2.0/debian/templates.pt delete mode 100644 fcron-3.2.0/debian/templates.ru delete mode 100644 fcron-3.2.0/doc/Makefile.in delete mode 100644 fcron-3.2.0/doc/bitstring.3 delete mode 100644 fcron-3.2.0/doc/en/HTML/LEGALNOTICE.html delete mode 100644 fcron-3.2.0/doc/en/HTML/changes.html delete mode 100644 fcron-3.2.0/doc/en/HTML/faq.html delete mode 100644 fcron-3.2.0/doc/en/HTML/fcron.8.html delete mode 100644 fcron-3.2.0/doc/en/HTML/fcron.conf.5.html delete mode 100644 fcron-3.2.0/doc/en/HTML/fcrondyn.1.html delete mode 100644 fcron-3.2.0/doc/en/HTML/fcrontab.1.html delete mode 100644 fcron-3.2.0/doc/en/HTML/fcrontab.5.html delete mode 100644 fcron-3.2.0/doc/en/HTML/fdl.html delete mode 100644 fcron-3.2.0/doc/en/HTML/gpl.html delete mode 100644 fcron-3.2.0/doc/en/HTML/how-and-why.html delete mode 100644 fcron-3.2.0/doc/en/HTML/index.html delete mode 100644 fcron-3.2.0/doc/en/HTML/install.html delete mode 100644 fcron-3.2.0/doc/en/HTML/manpages.html delete mode 100644 fcron-3.2.0/doc/en/HTML/readme.html delete mode 100644 fcron-3.2.0/doc/en/HTML/relnotes.html delete mode 100644 fcron-3.2.0/doc/en/HTML/thanks.html delete mode 100644 fcron-3.2.0/doc/en/HTML/todo.html delete mode 100644 fcron-3.2.0/doc/en/HTML/using-fcron.html delete mode 100644 fcron-3.2.0/doc/en/changes.sgml delete mode 100644 fcron-3.2.0/doc/en/faq.sgml delete mode 100644 fcron-3.2.0/doc/en/fcron-doc.sgml delete mode 100644 fcron-3.2.0/doc/en/fcron.8.sgml delete mode 100644 fcron-3.2.0/doc/en/fcron.conf.5.sgml delete mode 100644 fcron-3.2.0/doc/en/fcrondyn.1.sgml delete mode 100644 fcron-3.2.0/doc/en/fcrontab.1.sgml delete mode 100644 fcron-3.2.0/doc/en/fcrontab.5.sgml delete mode 100644 fcron-3.2.0/doc/en/fdl.sgml delete mode 100644 fcron-3.2.0/doc/en/gpl.sgml delete mode 100644 fcron-3.2.0/doc/en/install.sgml delete mode 100644 fcron-3.2.0/doc/en/man/bitstring.3 delete mode 100644 fcron-3.2.0/doc/en/man/fcron.8 delete mode 100644 fcron-3.2.0/doc/en/man/fcron.conf.5 delete mode 100644 fcron-3.2.0/doc/en/man/fcrondyn.1 delete mode 100644 fcron-3.2.0/doc/en/man/fcrontab.1 delete mode 100644 fcron-3.2.0/doc/en/man/fcrontab.5 delete mode 100644 fcron-3.2.0/doc/en/manpage-foot.sgml delete mode 100644 fcron-3.2.0/doc/en/readme.sgml delete mode 100644 fcron-3.2.0/doc/en/relnotes.sgml delete mode 100644 fcron-3.2.0/doc/en/thanks.sgml delete mode 100644 fcron-3.2.0/doc/en/todo.sgml delete mode 100644 fcron-3.2.0/doc/en/txt/changes.txt delete mode 100644 fcron-3.2.0/doc/en/txt/faq.txt delete mode 100644 fcron-3.2.0/doc/en/txt/gpl.txt delete mode 100644 fcron-3.2.0/doc/en/txt/install.txt delete mode 100644 fcron-3.2.0/doc/en/txt/readme.txt delete mode 100644 fcron-3.2.0/doc/en/txt/relnotes.txt delete mode 100644 fcron-3.2.0/doc/en/txt/thanks.txt delete mode 100644 fcron-3.2.0/doc/en/txt/todo.txt delete mode 100644 fcron-3.2.0/doc/fcron-doc.mod.in delete mode 100644 fcron-3.2.0/doc/fr/HTML/LEGALNOTICE.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/changes.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/faq.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/fcron.8.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/fcron.conf.5.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/fcrondyn.1.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/fcrontab.1.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/fcrontab.5.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/fdl.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/gpl.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/how-and-why.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/index.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/install.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/manpages.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/readme.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/relnotes.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/thanks.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/todo.html delete mode 100644 fcron-3.2.0/doc/fr/HTML/using-fcron.html delete mode 100644 fcron-3.2.0/doc/fr/changes.sgml delete mode 100644 fcron-3.2.0/doc/fr/faq.sgml delete mode 100644 fcron-3.2.0/doc/fr/fcron-doc.sgml delete mode 100644 fcron-3.2.0/doc/fr/fcron.8.sgml delete mode 100644 fcron-3.2.0/doc/fr/fcron.conf.5.sgml delete mode 100644 fcron-3.2.0/doc/fr/fcrondyn.1.sgml delete mode 100644 fcron-3.2.0/doc/fr/fcrontab.1.sgml delete mode 100644 fcron-3.2.0/doc/fr/fcrontab.5.sgml delete mode 100644 fcron-3.2.0/doc/fr/fdl.sgml delete mode 100644 fcron-3.2.0/doc/fr/gpl.sgml delete mode 100644 fcron-3.2.0/doc/fr/install.sgml delete mode 100644 fcron-3.2.0/doc/fr/man/bitstring.3 delete mode 100644 fcron-3.2.0/doc/fr/man/fcron.8 delete mode 100644 fcron-3.2.0/doc/fr/man/fcron.conf.5 delete mode 100644 fcron-3.2.0/doc/fr/man/fcrondyn.1 delete mode 100644 fcron-3.2.0/doc/fr/man/fcrontab.1 delete mode 100644 fcron-3.2.0/doc/fr/man/fcrontab.5 delete mode 100644 fcron-3.2.0/doc/fr/manpage-foot.sgml delete mode 100644 fcron-3.2.0/doc/fr/readme.sgml delete mode 100644 fcron-3.2.0/doc/fr/relnotes.sgml delete mode 100644 fcron-3.2.0/doc/fr/thanks.sgml delete mode 100644 fcron-3.2.0/doc/fr/todo.sgml delete mode 100644 fcron-3.2.0/doc/fr/txt/changes.txt delete mode 100644 fcron-3.2.0/doc/fr/txt/faq.txt delete mode 100644 fcron-3.2.0/doc/fr/txt/gpl.txt delete mode 100644 fcron-3.2.0/doc/fr/txt/install.txt delete mode 100644 fcron-3.2.0/doc/fr/txt/readme.txt delete mode 100644 fcron-3.2.0/doc/fr/txt/relnotes.txt delete mode 100644 fcron-3.2.0/doc/fr/txt/thanks.txt delete mode 100644 fcron-3.2.0/doc/fr/txt/todo.txt delete mode 100644 fcron-3.2.0/doc/psgml-docbook-dtd.cache delete mode 100644 fcron-3.2.0/doc/psgml-ecat.file delete mode 100644 fcron-3.2.0/doc/stylesheets/fcron-doc.dsl.in delete mode 100644 fcron-3.2.0/dyncom.h delete mode 100644 fcron-3.2.0/env_list.c delete mode 100644 fcron-3.2.0/env_list.h delete mode 100644 fcron-3.2.0/exe_list.c delete mode 100644 fcron-3.2.0/exe_list.h delete mode 100644 fcron-3.2.0/exe_list_test.c delete mode 100644 fcron-3.2.0/fcron.c delete mode 100644 fcron-3.2.0/fcron.h delete mode 100644 fcron-3.2.0/fcronconf.c delete mode 100644 fcron-3.2.0/fcronconf.h delete mode 100644 fcron-3.2.0/fcrondyn.c delete mode 100644 fcron-3.2.0/fcrondyn.h delete mode 100644 fcron-3.2.0/fcronsighup.c delete mode 100644 fcron-3.2.0/fcronsighup.h delete mode 100644 fcron-3.2.0/fcrontab.c delete mode 100644 fcron-3.2.0/fcrontab.h delete mode 100644 fcron-3.2.0/fifo_list.c delete mode 100644 fcron-3.2.0/fifo_list.h delete mode 100644 fcron-3.2.0/fileconf.c delete mode 100644 fcron-3.2.0/fileconf.h delete mode 100644 fcron-3.2.0/files/fcron.allow delete mode 100644 fcron-3.2.0/files/fcron.conf.in delete mode 100644 fcron-3.2.0/files/fcron.deny delete mode 100644 fcron-3.2.0/files/fcron.pam delete mode 100644 fcron-3.2.0/files/fcrontab.pam delete mode 100644 fcron-3.2.0/filesubs.c delete mode 100644 fcron-3.2.0/filesubs.h delete mode 100644 fcron-3.2.0/getloadavg.c delete mode 100644 fcron-3.2.0/getloadavg.h delete mode 100644 fcron-3.2.0/global.h delete mode 100755 fcron-3.2.0/install-sh delete mode 100644 fcron-3.2.0/job.c delete mode 100644 fcron-3.2.0/job.h delete mode 100644 fcron-3.2.0/lavg_list.c delete mode 100644 fcron-3.2.0/lavg_list.h delete mode 100644 fcron-3.2.0/log.c delete mode 100644 fcron-3.2.0/log.h delete mode 100644 fcron-3.2.0/m4/ax_lib_readline.m4 delete mode 100644 fcron-3.2.0/mem.c delete mode 100644 fcron-3.2.0/mem.h delete mode 100644 fcron-3.2.0/option.h delete mode 100644 fcron-3.2.0/pam.h delete mode 100644 fcron-3.2.0/read_string.c delete mode 100644 fcron-3.2.0/read_string.h delete mode 100644 fcron-3.2.0/save.c delete mode 100644 fcron-3.2.0/save.h delete mode 100755 fcron-3.2.0/script/boot-install delete mode 100755 fcron-3.2.0/script/boot-uninstall delete mode 100755 fcron-3.2.0/script/check_system_crontabs.bash delete mode 100755 fcron-3.2.0/script/check_system_crontabs.sh delete mode 100644 fcron-3.2.0/script/fcron-solaris10-manifest.xml delete mode 100644 fcron-3.2.0/script/fcron.init.suse.in delete mode 100644 fcron-3.2.0/script/fcron.init.systemd.in delete mode 100755 fcron-3.2.0/script/fcron.sh.in delete mode 100755 fcron-3.2.0/script/gen-doc delete mode 100755 fcron-3.2.0/script/gen-in.pl delete mode 100755 fcron-3.2.0/script/has_usrgrp.pl delete mode 100755 fcron-3.2.0/script/install-pam-conf delete mode 100755 fcron-3.2.0/script/sysVinit-launcher.in delete mode 100755 fcron-3.2.0/script/user-group delete mode 100644 fcron-3.2.0/socket.c delete mode 100644 fcron-3.2.0/socket.h delete mode 100644 fcron-3.2.0/subs.c delete mode 100644 fcron-3.2.0/subs.h delete mode 100644 fcron-3.2.0/temp_file.c delete mode 100644 fcron-3.2.0/temp_file.h delete mode 100644 fcron-3.2.0/tests/README.tests delete mode 100644 fcron-3.2.0/tests/test-open.c delete mode 100644 fcron-3.2.0/tests/test-types.c delete mode 100644 fcron-3.2.0/tests/test-uidgid.c delete mode 100644 fcron-3.2.0/u_list.c delete mode 100644 fcron-3.2.0/u_list.h delete mode 100755 launch-container.sh delete mode 100644 server-conf/apache/000-default.conf delete mode 100644 server-conf/apache/passbolt.conf diff --git a/Dockerfile b/Dockerfile index d7cf65e..6ca17f1 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,102 +1,74 @@ -FROM debian:jessie +FROM alpine:latest -# mysql before installation configuration -RUN export DEBIAN_FRONTEND="noninteractive" \ - && echo "mysql-server mysql-server/root_password password root" | debconf-set-selections \ - && echo "mysql-server mysql-server/root_password_again password root" | debconf-set-selections +MAINTAINER diego@passbolt.com -# debian packages installation -RUN apt-get clean && apt-get update && apt-get install -y \ - # persistent &runtime deps. \ - ca-certificates curl libpcre3 librecode0 libsqlite3-0 libxml2 --no-install-recommends \ - # unix tools \ - nano wget openssh-client cron sendmail \ - # versioning & package manager \ - git npm \ - # phpize dependencies \ - autoconf file g++ gcc libc-dev make pkg-config re2c \ - # persistance - redis-server mysql-server-5.5 \ - # php \ - php5-json php5-cli php5-common \ - php5-curl php5-dev php5-gd php5-mcrypt \ - php5-mysql php5-xdebug php5-xsl php5-intl \ - # memchached \ - memcached php5-memcached \ - # apache \ - apache2 apache2-utils libapache2-mod-php5 \ - # gnupg dependency \ - libgpgme11-dev \ - # pear \ - php-pear \ - # Commented until the following bug is fixed : https://github.com/docker/hub-feedback/issues/556 \ - #&& apt-get clean \ - && rm -rf /var/lib/apt/lists/* +ENV PASSBOLT_VERSION 1.4.0 +ENV PASSBOLT_URL https://github.com/passbolt/passbolt_api/archive/v${PASSBOLT_VERSION}.tar.gz -# Configure the user www-data environment -RUN mkdir /home/www-data/ \ - && chown www-data:www-data /home/www-data/ \ - && usermod -d /home/www-data www-data +ARG BASE_PHP_DEPS="php5-curl \ + php5-common \ + php5-gd \ + php5-intl \ + php5-json \ + php5-mcrypt \ + php5-memcache \ + php5-mysql \ + php5-xsl \ + php5-fpm \ + php5-phar \ + php5-xml \ + php5-openssl \ + php5-zlib \ + php5-ctype \ + php5-pdo \ + php5-pdo_mysql \ + php5-pear" -# Configure node and install grunt -# On debian they choose to rename node in nodejs, some tools try to access nodejs by using the commande noe. -RUN ln -s /usr/bin/nodejs /usr/bin/node \ - # install grunt - && npm install -g grunt-cli +ARG PHP_GNUPG_DEPS="php5-dev \ + make \ + gcc \ + g++ \ + libc-dev \ + pkgconfig \ + re2c \ + gpgme-dev \ + autoconf \ + file" -# Apache2 SSL -RUN mkdir /etc/apache2/ssl \ - && openssl req -x509 -nodes -days 365 -new -newkey rsa:2048 -subj "/C=US/ST=Denial/L=Goa/O=Dis/CN=www.passbolt.com" -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt \ - && chmod 600 /etc/apache2/ssl/* \ - && a2enmod ssl +RUN apk update &&\ + apk add $BASE_PHP_DEPS \ + bash \ + ca-certificates \ + curl \ + tar \ + libpcre32 \ + recode \ + libxml2 \ + gpgme \ + gnupg1 \ + mysql-client \ + openssl \ + nginx -# Install and configure gnupg -RUN pecl install gnupg \ - && echo "extension=gnupg.so;" > /etc/php5/mods-available/gnupg.ini \ - && ln -s /etc/php5/mods-available/gnupg.ini /etc/php5/apache2/conf.d/20-gnupg.ini \ - && ln -s /etc/php5/mods-available/gnupg.ini /etc/php5/cli/conf.d/20-gnupg.ini \ - # configure the user www-data env to work with gnupg \ - && mkdir /home/www-data/.gnupg \ - && chown www-data:www-data /home/www-data/.gnupg \ - && chmod 0777 /home/www-data/.gnupg +RUN apk add $PHP_GNUPG_DEPS && \ + #https://bugs.alpinelinux.org/issues/5378 + sed -i "s/ -n / /" $(which pecl) && \ + pecl install gnupg && \ + echo "extension=gnupg.so" > /etc/php5/conf.d/gnupg.ini && \ + apk del $PHP_GNUPG_DEPS -# Configure apache -ADD /server-conf/apache/passbolt.conf /etc/apache2/sites-available/passbolt.conf -ADD /server-conf/apache/000-default.conf /etc/apache2/sites-available/000-default.conf +RUN curl -sS https://getcomposer.org/installer | php && \ + mv composer.phar /usr/local/bin/composer -RUN rm -f /etc/apache2/sites-enabled/* \ - && rm -fr /var/www/html \ - && a2enmod proxy \ - && a2enmod proxy_http \ - && a2enmod rewrite \ - && a2ensite passbolt \ - && a2ensite 000-default.conf +RUN mkdir /var/www/passbolt && curl -sSL $PASSBOLT_URL | \ + tar zxf - -C /var/www/passbolt --strip-components 1 && \ + chown -R nginx:nginx /var/www/passbolt && \ + chmod -R +w /var/www/passbolt/app/tmp && \ + chmod +w /var/www/passbolt/app/webroot/img/public -# Configure php -RUN echo "memory_limit=256M" > /etc/php5/apache2/conf.d/20-memory-limit.ini \ - && echo "memory_limit=256M" > /etc/php5/cli/conf.d/20-memory-limit.ini +COPY conf/passbolt.conf /etc/nginx/conf.d/default.conf +COPY bin/passbolt_start.sh /passbolt_start.sh -# Install composer -RUN curl -sS https://getcomposer.org/installer | php \ - && mv composer.phar /usr/local/bin/composer +EXPOSE 80 443 -# Special hack for macosx, to let www-data able to write on mounted volumes. -# See docker bug: https://github.com/boot2docker/boot2docker/issues/581. -RUN usermod -u 1000 www-data \ - && usermod -a -G staff www-data \ - && chown -Rf www-data:www-data /var/www/ - -# Generate the gpg server key -ADD /conf/gpg_server_key_public.key /home/www-data/gpg_server_key_public.key -ADD /conf/gpg_server_key_private.key /home/www-data/gpg_server_key_private.key - -# fcron -ADD ./fcron-3.2.0 /usr/local/fcron -RUN cd /usr/local/fcron; ./configure --with-editor=/usr/bin/nano \ - && cd /usr/local/fcron; make \ - && cd /usr/local/fcron; make install - -ADD /entry-point.sh /entry-point.sh -RUN chmod 0755 /entry-point.sh - -CMD ["bash", "/entry-point.sh"] +CMD ["/passbolt_start.sh"] diff --git a/README.md b/README.md index 09b7803..b8f153a 100644 --- a/README.md +++ b/README.md @@ -1,62 +1,144 @@ -# PASSBOLT DEBIAN DOCKER CONTAINER +# Passbolt docker official image +![ohyes](http://i.imgur.com/ZdqmDOp.gif) -ATTENTION : THIS IS A DEMO CONTAINER. DO NOT USE IT IN PRODUCTION. +# What is Passbolt? -How to use it -------------- -1) First, download passbolt source code from git. -``` - git clone https://github.com/passbolt/passbolt.git +Passbolt is a free and open source password manager that allows team members to +store and share credentials securely. + +![passbolt](https://raw.githubusercontent.com/passbolt/passbolt_styleguide/master/src/img/logo/logo.png) + +# Build this image + +Inside the repo directory: + +`$ docker build . -t passbolt:1.4.0-alpine` + +# How to use this image? + +## Start passbolt instance + +Passbolt requires mysql to be running. In this example we will be using mysql official docker image +with the default passbolt credentials. + +```bash +$ docker run -e MYSQL_ROOT_PASSWORD= \ + -e MYSQL_DATABASE=passbolt \ + -e MYSQL_USER=passbolt \ + -e MYSQL_PASSWORD=P4ssb0lt \ + mysql ``` -2) Then, configure the container. -There is a configuration file located in /conf/conf.sh +Then you can start passbolt just providing the database container ip in the `db_host` environment variable. -It contains the following options : +`$ docker run -e db_host= passbolt:1.4.0-alpine` -- PASSBOLT_DIR : path to passbolt source code. -- MYSQL_HOST : mysql host. Keep it as 'localhost' to let the container handle the database. -- MYSQL_ROOT_PASSWORD : root password of mysql. It is only useful if MYSQL_HOST is set to localhost. -- MYSQL_USERNAME : valid username for the database. -- MYSQL_PASSWORD : valid password for the database. -- MYSQL_DATABASE : name of the database to be used. -- ADMIN_USERNAME : email of the admin user. -- ADMIN_FIRST_NAME : first name of the admin user. -- ADMIN_LAST_NAME : last name of the admin user. +Once the process is done you just need to point your browser to http://passbolt_container_ip -Enter the values corresponding to your settings. The most important setting is PASSBOLT_DIR. You can keep the default values for the rest. +# Configure passbolt -3) Generate the gpg server key. -``` - cd /path/to/docker/files - ./bin/generate_gpg_server_key.sh +## Environment variables + +Passbolt docker image provides several environment variables to configure different aspects: + +### GnuPG key creation related variables + +* key_length: gpg desired key length +* subkey_length: gpg desired subkey length +* key_name: key owner name +* key_email: key owner email address +* key_expiration: key expiration date + +### App file variables + +* fingerprint: GnuPG fingerprint +* registration: defines if users can register +* ssl + +### Core file variables + +* default_salt +* default_seed +* default_url: url of the passbolt installation + +### Database variables + +* db_host: database hostname This param has to be specified either using env var or in database.php +* db_user: database username (defaults to passbolt) +* db_pass: database password (defaults to P4ssb0lt) +* db_name: database name (defaults to passbolt) + +## Advanced configuration + +What it you have your gpg keys and you want to setup a more complex configuration for passbolt? +It it possible to mount the desired configuration files as volumes. + +### Configuration files subject to be persisted: + +* /var/www/passbolt/app/Config/app.php +* /var/www/passbolt/app/Config/core.php +* /var/www/passbolt/app/Config/database.php +* /var/www/passbolt/app/Config/email.php +* /var/www/passbolt/app/Config/gpg/serverkey.asc +* /var/www/passbolt/app/Config/gpg/serverkey.private.asc + +### SSL certificate files + +If you have your own ssl certificate you can mount it on the following paths + +* /etc/ssl/certs/certificate.crt +* /etc/ssl/certs/certificate.key + +# Examples + +## Automated setup + +In the following example we launch passbolt with the defaults enabled usind mysql official docker container to store passbolt data. + +```bash +$ docker run -e MYSQL_ROOT_PASSWORD=c0mplexp4ss \ + -e MYSQL_DATABASE=passbolt \ + -e MYSQL_USER=passbolt \ + -e MYSQL_PASSWORD=P4ssb0lt \ + mysql ``` -4) (optional) Configure the smtp server. +Once mysql container is running we should extract its ip address we assume 172.17.0.2 for this example -In the PASSBOLT_DIR, edit the file app/Config/email.php. +`$ docker run -e db_host=172.17.0.2 passbolt:1.4.0-alpine` -If you don't configure a smtp server, emails notifications won't be sent. User won't be able to finalize their registration. +Point your browser to the passbolt container ip -5) Finally, you can build and run the container. -``` - cd /path/to/docker/files - docker build -t passbolt_debian . - ./launch-container.sh -``` -If a smtp server has been configured you will receive a registration email at the email you defined in the conf.sh file. +## Advanced configuration -If no smtp server has been configured, you can still finalize the registration process. Take a look at the end of the docker logs, -you will find the admin user registration link. -``` -docker logs passbolt | awk '/The user has been registered with success/{print $0}' +In the following example we launch passbolt with a customized setup mounting and persisting configuration files. We also make use of +mysql official docker container to store passbolt data. + +```bash +$ docker run -e MYSQL_ROOT_PASSWORD=c0mplexp4ss \ + -e MYSQL_DATABASE=passbolt \ + -e MYSQL_USER=passbolt \ + -e MYSQL_PASSWORD=P4ssb0lt \ + mysql ``` -Behavior --------- -By default the container will create a new database and use it to install passbolt. -However, in case an external database is provided in the settings, it will try to use it. -A few consideration : -- There should be a valid username, password and database on the mysql server. -- If the database exists but without passbolt installed, then passbolt will be installed normally. -- If the database exists and already has a passbolt installed, then no db installation will be done and the existing data will be kept. +Using docker inspect or any other method you can get the ip address of the mysql container, we will use 172.17.0.2 in this example. + +Once this container is running and you have the mysql ip address we run passbolt container mounting all configuration files stored +under a example conf directory in $PWD + +```bash +$ docker run -v $PWD/conf/app.php:/var/www/passbolt/app/Config/app.php \ + -v $PWD/conf/core.php:/var/www/passbolt/app/Config/core.php \ + -v $PWD/conf/database.php:/var/www/passbolt/app/Config/database.php \ + -v $PWD/conf/email.php:/var/www/passbolt/app/Config/email.php \ + -v $PWD/conf/private.asc:/var/www/passbolt/app/Config/gpg/serverkey.private.asc \ + -v $PWD/conf/public.asc:/var/www/passbolt/app/Config/gpg/serverkey.asc \ + passbolt:1.4.0-alpine +``` + +Point your browser to the passbolt container ip + +# Requirements: + +* mysql >= 5.6 diff --git a/bin/generate_gpg_server_key.sh b/bin/generate_gpg_server_key.sh deleted file mode 100755 index 59e140f..0000000 --- a/bin/generate_gpg_server_key.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/sh - -DIRNAME=`dirname $0`/.. -gpg --batch --armor --gen-key $DIRNAME/conf/gpg_server_key_settings.conf -mv $DIRNAME/gpg_server_key_public.key $DIRNAME/conf -mv $DIRNAME/gpg_server_key_private.key $DIRNAME/conf diff --git a/bin/passbolt_start.sh b/bin/passbolt_start.sh new file mode 100755 index 0000000..50c64c0 --- /dev/null +++ b/bin/passbolt_start.sh @@ -0,0 +1,155 @@ +#!/bin/bash + +set -eo pipefail + +gpg_private_key=/var/www/passbolt/app/Config/gpg/serverkey.private.asc +gpg_public_key=/var/www/passbolt/app/Config/gpg/serverkey.asc +gpg=$(which gpg) + +core_config='/var/www/passbolt/app/Config/core.php' +db_config='/var/www/passbolt/app/Config/database.php' +app_config='/var/www/passbolt/app/Config/app.php' +ssl_key='/etc/ssl/certs/certificate.key' +ssl_cert='/etc/ssl/certs/certificate.crt' + +gpg_gen_key() { + + su -m -c "$gpg --batch --gen-key < $gpg_private_key" -ls /bin/bash nginx + su -m -c "$gpg --armor --export $key_email > $gpg_public_key" -ls /bin/bash nginx + +} + +gpg_import_key() { + + su -m -c "$gpg --import $gpg_private_key" -ls /bin/bash nginx + su -m -c "$gpg --import $gpg_public_key" -ls /bin/bash nginx + +} + +core_setup() { + #Env vars: + # salt + # cipherseed + # url + + local default_salt='DYhG93b0qyJfIxfs2guVoUubWwvniR2G0FgaC9mi' + local default_seed='76859309657453542496749683645' + local default_url='example.com' + + cp $core_config{.default,} + sed -i s:$default_salt:${salt:-$default_salt}:g $core_config + sed -i s:$default_seed:${cipherseed:-$default_seed}:g $core_config + sed -i s:$default_url:${url:-$default_url}:g $core_config + +} + +db_setup() { + #Env vars: + # db_host + # db_user + # db_pass + # db_name + + local default_host='localhost' + local default_user='user' + local default_pass='password' + local default_db='database_name' + + cp $db_config{.default,} + sed -i s:$default_host:${db_host:-db}:g $db_config + sed -i s:$default_user:${db_user:-passbolt}:g $db_config + sed -i s:$default_pass\',:${db_pass:-P4ssb0lt}\',:g $db_config + sed -i s:$default_db:${db_name:-passbolt}:g $db_config + +} + +app_setup() { + #Env vars: + # fingerprint + # registration + # ssl + + local default_home='/home/www-data/.gnupg' + local default_public_key='unsecure.key' + local default_private_key='unsecure_private.key' + local default_fingerprint='2FC8945833C51946E937F9FED47B0811573EE67E' + local default_ssl='force' + local default_registration='public' + local gpg_home='/var/lib/nginx/.gnupg' + local auto_fingerprint=$(su -m -c "$gpg --fingerprint |grep fingerprint| awk '{for(i=4;i<=NF;++i)printf \$i}'" -ls /bin/bash nginx) + + cp $app_config{.default,} + sed -i s:$default_home:$gpg_home:g $app_config + sed -i s:$default_public_key:serverkey.asc:g $app_config + sed -i s:$default_private_key:serverkey.private.asc:g $app_config + sed -i s:$default_fingerprint:${fingerprint:-$auto_fingerprint}:g $app_config + sed -i "/force/ s:true:${ssl:-true}:" $app_config + +} + +gen_ssl_cert() { + + openssl req -new -newkey rsa:4096 -days 365 -nodes -x509 \ + -subj "/C=FR/ST=Denial/L=Springfield/O=Dis/CN=www.example.com" \ + -keyout $ssl_key -out $ssl_cert + +} + +install() { + local database=${db_host:-$(grep -m1 -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' $db_config)} + echo $database + tables=$(mysql -u passbolt -h $database -p -BN -e "SHOW TABLES FROM passbolt" -p${db_pass:-P4ssb0lt} |wc -l) + + if [ $tables -eq 0 ]; then + su -c "/var/www/passbolt/app/Console/cake install --send-anonymous-statistics true --no-admin" -ls /bin/bash nginx + else + echo "Enjoy! ☮" + fi +} + +php_fpm_setup() { + sed -i '/^user\s/ s:nobody:nginx:g' /etc/php5/php-fpm.conf + sed -i '/^group\s/ s:nobody:nginx:g' /etc/php5/php-fpm.conf + cp /etc/php5/php-fpm.conf /etc/php5/fpm.d/www.conf + sed -i '/^include\s/ s:^:#:' /etc/php5/fpm.d/www.conf +} + +if [ ! -f $gpg_private_key ] || [ ! -f $gpg_public_key ]; then + gpg_gen_key +else + gpg_import_key +fi + +if [ ! -f $core_config ]; then + core_setup +fi + +if [ ! -f $db_config ]; then + db_setup +fi + +if [ ! -f $app_config ]; then + app_setup +fi + +if [ ! -f $ssl_key ] && [ ! -f $ssl_cert ]; then + gen_ssl_cert +fi + +php_fpm_setup + +install + +php-fpm5 +nginx -g "pid /tmp/nginx.pid; daemon off;" diff --git a/conf/conf.sh b/conf/conf.sh deleted file mode 100644 index 28b4ff9..0000000 --- a/conf/conf.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/sh - -# Passbolt directory. -PASSBOLT_DIR=~/projects/passbolt_for_docker_debian - -# MySQL configuration. -MYSQL_HOST=localhost -# Only necessary if we use the local database. -MYSQL_ROOT_PASSWORD=rootpassword -MYSQL_USERNAME=passbolt -MYSQL_PASSWORD=password123 -MYSQL_DATABASE=passbolt - -# Admin settings. -ADMIN_USERNAME=admin@passbolt.com -ADMIN_FIRST_NAME=Admin -ADMIN_LAST_NAME=Admin diff --git a/conf/gpg_server_key_settings.conf b/conf/gpg_server_key_settings.conf deleted file mode 100644 index 8accacc..0000000 --- a/conf/gpg_server_key_settings.conf +++ /dev/null @@ -1,12 +0,0 @@ -Key-Type: RSA -Key-Length: 2048 -Subkey-Type: RSA -Subkey-Length: 2048 -Name-Real: Passbolt Docker Server Key -Name-Comment: Passbolt Docker Server Key -Name-Email: info@passbolt.com -Expire-Date: 0 -%pubring gpg_server_key_public.key -%secring gpg_server_key_private.key -%commit -%echo Your gpg passbolt server key has been generated diff --git a/conf/passbolt.conf b/conf/passbolt.conf new file mode 100644 index 0000000..030b899 --- /dev/null +++ b/conf/passbolt.conf @@ -0,0 +1,110 @@ +server { + listen 80; + + client_body_buffer_size 100K; + client_header_buffer_size 1k; + client_max_body_size 100k; + large_client_header_buffers 2 1k; + + client_body_timeout 10; + client_header_timeout 10; + keepalive_timeout 5 5; + send_timeout 10; + + root /var/www/passbolt; + + # X-Frame-Options is to prevent from clickJacking attack + add_header X-Frame-Options SAMEORIGIN; + + # disable content-type sniffing on some browsers. + add_header X-Content-Type-Options nosniff; + + # This header enables the Cross-site scripting (XSS) filter + add_header X-XSS-Protection "1; mode=block"; + + # This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack + add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; + + ## Only GET, Post, PUT are allowed## + if ($request_method !~ ^(GET|PUT|POST)$ ) { + return 444; + } + + location / { + try_files $uri $uri/ /index.php?$args; + index index.php; + } + + location ~ \.php$ { + fastcgi_index index.php; + fastcgi_pass 127.0.0.1:9000; + fastcgi_split_path_info ^(.+\.php)(.+)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } + + location ~* \.(jpe?g|woff|woff2|ttf|gif|png|bmp|ico|css|js|json|pdf|zip|htm|html|docx?|xlsx?|pptx?|txt|wav|swf|svg|avi|mp\d)$ { + access_log off; + log_not_found off; + try_files $uri /app/webroot/$uri /index.php?$args; + } + +} + +server { + listen 443; + + ssl on; + ssl_certificate /etc/ssl/certs/certificate.crt; + ssl_certificate_key /etc/ssl/certs/certificate.key; + ssl_protocols TLSv1 TLSv1.1 TLSv1.2; + ssl_prefer_server_ciphers on; + ssl_ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS; + ssl_session_tickets off; + ssl_stapling on; + ssl_stapling_verify on; + resolver 8.8.8.8 8.8.4.4 valid=300s; + resolver_timeout 5s; + add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; preload"; + add_header Strict-Transport-Security "max-age=63072000; includeSubdomains"; + add_header X-Frame-Options DENY; + add_header X-Content-Type-Options nosniff; + + root /var/www/passbolt; + + # X-Frame-Options is to prevent from clickJacking attack + add_header X-Frame-Options SAMEORIGIN; + + # disable content-type sniffing on some browsers. + add_header X-Content-Type-Options nosniff; + + # This header enables the Cross-site scripting (XSS) filter + add_header X-XSS-Protection "1; mode=block"; + + # This will enforce HTTP browsing into HTTPS and avoid ssl stripping attack + add_header Strict-Transport-Security "max-age=31536000; includeSubdomains;"; + + ## Only GET, Post, PUT are allowed## + if ($request_method !~ ^(GET|PUT|POST)$ ) { + return 444; + } + + location / { + try_files $uri $uri/ /index.php?$args; + index index.php; + } + + location ~ \.php$ { + fastcgi_index index.php; + fastcgi_pass 127.0.0.1:9000; + fastcgi_split_path_info ^(.+\.php)(.+)$; + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + } + + location ~* \.(jpe?g|woff|woff2|ttf|gif|png|bmp|ico|css|js|json|pdf|zip|htm|html|docx?|xlsx?|pptx?|txt|wav|swf|svg|avi|mp\d)$ { + access_log off; + log_not_found off; + try_files $uri /app/webroot/$uri /index.php?$args; + } +} diff --git a/entry-point.sh b/entry-point.sh deleted file mode 100644 index de449f4..0000000 --- a/entry-point.sh +++ /dev/null @@ -1,137 +0,0 @@ -#!/bin/bash - -######################################################## -## Configure Mysql -######################################################## - -IS_MYSQL_LOCAL=1 -if [ $MYSQL_HOST != "localhost" ]; then - IS_MYSQL_LOCAL=0 -fi - -# If Mysql is local (no persistence), we reset everything and create the database. -if [ $IS_MYSQL_LOCAL == 1 ]; then - echo "using local mysql" - echo "Resetting root password, and create user ${MYSQL_USERNAME}" - # Start mysql - service mysql start - # Change password of database -mysql --host=localhost --user=root --password=root << EOSQL - SET @@SESSION.SQL_LOG_BIN=0; - SET PASSWORD FOR 'root'@'localhost' = PASSWORD('${MYSQL_ROOT_PASSWORD}'); - GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION ; - DROP DATABASE IF EXISTS test ; - FLUSH PRIVILEGES ; -EOSQL - - # Create the passbolt database - echo "Create database ${MYSQL_DATABASE}" - mysql -u "root" --password="${MYSQL_ROOT_PASSWORD}" -e "create database ${MYSQL_DATABASE}" - echo "Create user ${MYSQL_USERNAME} and give access to ${MYSQL_DATABASE}" - mysql -u "root" --password="${MYSQL_ROOT_PASSWORD}" -e "GRANT ALL PRIVILEGES ON ${MYSQL_DATABASE}.* To '${MYSQL_USERNAME}'@'localhost' IDENTIFIED BY '${MYSQL_PASSWORD}'" - echo "flush privileges" - mysql -u "root" --password="${MYSQL_ROOT_PASSWORD}" -e "FLUSH PRIVILEGES" - -# If Mysql is on a different host, check if the database exists. -else - echo "using remote mysql" - echo "Checking database ${MYSQL_DATABASE}" - RESULT=`mysql -h $MYSQL_HOST -u $MYSQL_USERNAME -p$MYSQL_PASSWORD --skip-column-names -e "SHOW DATABASES LIKE '$MYSQL_DATABASE'"` - if [ "$RESULT" != "$MYSQL_DATABASE" ]; then - echo "The database $MYSQL_DATABASE does not exist in the mysql instance provided." - fi - echo "ok" -fi - -######################################################## -## Restart services -######################################################## - -# Restart the apache2 service -service apache2 restart - -# Start the memcached service -service memcached restart - -######################################################## -## Prepare the source code -######################################################## - -# Default configuration files -cp -a /var/www/passbolt/app/Config/app.php.default /var/www/passbolt/app/Config/app.php -cp -a /var/www/passbolt/app/Config/core.php.default /var/www/passbolt/app/Config/core.php -cp -a /var/www/passbolt/app/webroot/js/app/config/config.json.default /var/www/passbolt/app/webroot/js/app/config/config.json - -# gpg -GPG_SERVER_KEY_FINGERPRINT=`gpg -n --with-fingerprint /home/www-data/gpg_server_key_public.key | awk -v FS="=" '/Key fingerprint =/{print $2}' | sed 's/[ ]*//g'` -/var/www/passbolt/app/Console/cake passbolt app_config write GPG.serverKey.fingerprint $GPG_SERVER_KEY_FINGERPRINT -/var/www/passbolt/app/Console/cake passbolt app_config write GPG.serverKey.public /home/www-data/gpg_server_key_public.key -/var/www/passbolt/app/Console/cake passbolt app_config write GPG.serverKey.private /home/www-data/gpg_server_key_private.key -chown www-data:www-data /home/www-data/gpg_server_key_public.key -chown www-data:www-data /home/www-data/gpg_server_key_private.key - -# overwrite the core configuration -/var/www/passbolt/app/Console/cake passbolt core_config gen-cipher-seed -/var/www/passbolt/app/Console/cake passbolt core_config gen-security-salt -/var/www/passbolt/app/Console/cake passbolt core_config write App.fullBaseUrl https://192.168.99.100 - -# overwrite the database configuration -# @TODO based on the cake task DbConfigTask implement a task to manipulate the dabase configuration -#/var/www/passbolt/app/Console/cake passbolt db_config ${MYSQL_HOST} ${MYSQL_USERNAME} ${MYSQL_PASSWORD} ${MYSQL_DATABASE} - -DATABASE_CONF=/var/www/passbolt/app/Config/database.php -# Set configuration in file -cat > $DATABASE_CONF << EOL - 'Database/Mysql', - 'persistent' => false, - 'host' => '${MYSQL_HOST}', - 'login' => '${MYSQL_USERNAME}', - 'password' => '${MYSQL_PASSWORD}', - 'database' => '${MYSQL_DATABASE}', - 'prefix' => '', - 'encoding' => 'utf8', - ); - }; -EOL - -####################################################### -## Install passbolt -######################################################## - -# Check if passbolt is already installed. -IS_PASSBOLT_INSTALLED=0 -OUTPUT=$(mysql -N -s -u ${MYSQL_USERNAME} -p${MYSQL_PASSWORD} -e "select count(*) from information_schema.tables where table_schema='${MYSQL_DATABASE}' and table_name='users';") -echo "OUTPUT=${OUTPUT}" -if [ $OUTPUT == "1" ]; then - echo "passbolt is already installed in this database" - IS_PASSBOLT_INSTALLED=1 -else - echo "passbolt is not installed in this database. Proceeding.." -fi - -# Install passbolt -if [ $IS_PASSBOLT_INSTALLED == "0" ]; then - echo "Installing" - su -s /bin/bash -c "/var/www/passbolt/app/Console/cake install --admin-username ${ADMIN_USERNAME} --admin-first-name=${ADMIN_FIRST_NAME} --admin-last-name=${ADMIN_LAST_NAME}" www-data - echo "We are all set. Have fun with Passbolt !" - echo "Reminder : THIS IS A DEMO CONTAINER. DO NOT USE IT IN PRODUCTION!!!!" -fi - -######################################################## -## After install -######################################################## - -# start fcron -fcron & - -# add passbolt email sender job to fcron -touch /var/log/passbolt.log -chown www-data:www-data /var/log/passbolt.log -env > /etc/cron.d/passbolt -echo "* * * * * /var/www/passbolt/app/Console/cake EmailQueue.sender > /var/log/passbolt.log" >> /etc/cron.d/passbolt -fcrontab -u www-data /etc/cron.d/passbolt - -/bin/bash diff --git a/fcron-3.2.0/MANIFEST b/fcron-3.2.0/MANIFEST deleted file mode 100644 index a0f47e4..0000000 --- a/fcron-3.2.0/MANIFEST +++ /dev/null @@ -1,217 +0,0 @@ -fcron-3.2.0/filesubs.c -fcron-3.2.0/getloadavg.h -fcron-3.2.0/convert-fcrontab.h -fcron-3.2.0/install-sh -fcron-3.2.0/fcrontab.h -fcron-3.2.0/exe_list_test.c -fcron-3.2.0/mem.h -fcron-3.2.0/MANIFEST -fcron-3.2.0/config.h.in -fcron-3.2.0/filesubs.h -fcron-3.2.0/socket.c -fcron-3.2.0/allow.c -fcron-3.2.0/exe_list.h -fcron-3.2.0/log.h -fcron-3.2.0/cl.c -fcron-3.2.0/tests/test-open.c -fcron-3.2.0/tests/test-types.c -fcron-3.2.0/tests/test-uidgid.c -fcron-3.2.0/tests/README.tests -fcron-3.2.0/README -fcron-3.2.0/fcron.h -fcron-3.2.0/log.c -fcron-3.2.0/exe_list.c -fcron-3.2.0/fcron.c -fcron-3.2.0/pam.h -fcron-3.2.0/Makefile.in -fcron-3.2.0/files/fcron.pam -fcron-3.2.0/files/fcron.deny -fcron-3.2.0/files/fcrontab.pam -fcron-3.2.0/files/fcron.conf.in -fcron-3.2.0/files/fcron.allow -fcron-3.2.0/m4/ax_lib_readline.m4 -fcron-3.2.0/getloadavg.c -fcron-3.2.0/fifo_list.h -fcron-3.2.0/subs.c -fcron-3.2.0/allow.h -fcron-3.2.0/global.h -fcron-3.2.0/configure.in -fcron-3.2.0/read_string.h -fcron-3.2.0/doc/fcron-doc.mod.in -fcron-3.2.0/doc/Makefile.in -fcron-3.2.0/doc/stylesheets/fcron-doc.dsl.in -fcron-3.2.0/doc/en/readme.sgml -fcron-3.2.0/doc/en/todo.sgml -fcron-3.2.0/doc/en/man/fcron.conf.5 -fcron-3.2.0/doc/en/man/fcrondyn.1 -fcron-3.2.0/doc/en/man/fcrontab.1 -fcron-3.2.0/doc/en/man/fcrontab.5 -fcron-3.2.0/doc/en/man/bitstring.3 -fcron-3.2.0/doc/en/man/fcron.8 -fcron-3.2.0/doc/en/fcron-doc.sgml -fcron-3.2.0/doc/en/fcrontab.5.sgml -fcron-3.2.0/doc/en/fcrondyn.1.sgml -fcron-3.2.0/doc/en/fcron.conf.5.sgml -fcron-3.2.0/doc/en/fcrontab.1.sgml -fcron-3.2.0/doc/en/HTML/fcrontab.1.html -fcron-3.2.0/doc/en/HTML/readme.html -fcron-3.2.0/doc/en/HTML/relnotes.html -fcron-3.2.0/doc/en/HTML/how-and-why.html -fcron-3.2.0/doc/en/HTML/install.html -fcron-3.2.0/doc/en/HTML/fcron.conf.5.html -fcron-3.2.0/doc/en/HTML/LEGALNOTICE.html -fcron-3.2.0/doc/en/HTML/gpl.html -fcron-3.2.0/doc/en/HTML/fcrondyn.1.html -fcron-3.2.0/doc/en/HTML/fcrontab.5.html -fcron-3.2.0/doc/en/HTML/faq.html -fcron-3.2.0/doc/en/HTML/manpages.html -fcron-3.2.0/doc/en/HTML/fdl.html -fcron-3.2.0/doc/en/HTML/changes.html -fcron-3.2.0/doc/en/HTML/index.html -fcron-3.2.0/doc/en/HTML/fcron.8.html -fcron-3.2.0/doc/en/HTML/thanks.html -fcron-3.2.0/doc/en/HTML/using-fcron.html -fcron-3.2.0/doc/en/HTML/todo.html -fcron-3.2.0/doc/en/manpage-foot.sgml -fcron-3.2.0/doc/en/changes.sgml -fcron-3.2.0/doc/en/fdl.sgml -fcron-3.2.0/doc/en/thanks.sgml -fcron-3.2.0/doc/en/faq.sgml -fcron-3.2.0/doc/en/relnotes.sgml -fcron-3.2.0/doc/en/install.sgml -fcron-3.2.0/doc/en/gpl.sgml -fcron-3.2.0/doc/en/fcron.8.sgml -fcron-3.2.0/doc/en/txt/changes.txt -fcron-3.2.0/doc/en/txt/thanks.txt -fcron-3.2.0/doc/en/txt/gpl.txt -fcron-3.2.0/doc/en/txt/readme.txt -fcron-3.2.0/doc/en/txt/faq.txt -fcron-3.2.0/doc/en/txt/todo.txt -fcron-3.2.0/doc/en/txt/install.txt -fcron-3.2.0/doc/en/txt/relnotes.txt -fcron-3.2.0/doc/psgml-ecat.file -fcron-3.2.0/doc/psgml-docbook-dtd.cache -fcron-3.2.0/doc/bitstring.3 -fcron-3.2.0/doc/fr/readme.sgml -fcron-3.2.0/doc/fr/todo.sgml -fcron-3.2.0/doc/fr/man/fcron.conf.5 -fcron-3.2.0/doc/fr/man/fcrondyn.1 -fcron-3.2.0/doc/fr/man/fcrontab.1 -fcron-3.2.0/doc/fr/man/fcrontab.5 -fcron-3.2.0/doc/fr/man/bitstring.3 -fcron-3.2.0/doc/fr/man/fcron.8 -fcron-3.2.0/doc/fr/fcron-doc.sgml -fcron-3.2.0/doc/fr/fcrontab.5.sgml -fcron-3.2.0/doc/fr/fcrondyn.1.sgml -fcron-3.2.0/doc/fr/fcron.conf.5.sgml -fcron-3.2.0/doc/fr/fcrontab.1.sgml -fcron-3.2.0/doc/fr/HTML/fcrontab.1.html -fcron-3.2.0/doc/fr/HTML/readme.html -fcron-3.2.0/doc/fr/HTML/relnotes.html -fcron-3.2.0/doc/fr/HTML/how-and-why.html -fcron-3.2.0/doc/fr/HTML/install.html -fcron-3.2.0/doc/fr/HTML/fcron.conf.5.html -fcron-3.2.0/doc/fr/HTML/LEGALNOTICE.html -fcron-3.2.0/doc/fr/HTML/gpl.html -fcron-3.2.0/doc/fr/HTML/fcrondyn.1.html -fcron-3.2.0/doc/fr/HTML/fcrontab.5.html -fcron-3.2.0/doc/fr/HTML/faq.html -fcron-3.2.0/doc/fr/HTML/manpages.html -fcron-3.2.0/doc/fr/HTML/fdl.html -fcron-3.2.0/doc/fr/HTML/changes.html -fcron-3.2.0/doc/fr/HTML/index.html -fcron-3.2.0/doc/fr/HTML/fcron.8.html -fcron-3.2.0/doc/fr/HTML/thanks.html -fcron-3.2.0/doc/fr/HTML/using-fcron.html -fcron-3.2.0/doc/fr/HTML/todo.html -fcron-3.2.0/doc/fr/manpage-foot.sgml -fcron-3.2.0/doc/fr/changes.sgml -fcron-3.2.0/doc/fr/fdl.sgml -fcron-3.2.0/doc/fr/thanks.sgml -fcron-3.2.0/doc/fr/faq.sgml -fcron-3.2.0/doc/fr/relnotes.sgml -fcron-3.2.0/doc/fr/install.sgml -fcron-3.2.0/doc/fr/gpl.sgml -fcron-3.2.0/doc/fr/fcron.8.sgml -fcron-3.2.0/doc/fr/txt/changes.txt -fcron-3.2.0/doc/fr/txt/thanks.txt -fcron-3.2.0/doc/fr/txt/gpl.txt -fcron-3.2.0/doc/fr/txt/readme.txt -fcron-3.2.0/doc/fr/txt/faq.txt -fcron-3.2.0/doc/fr/txt/todo.txt -fcron-3.2.0/doc/fr/txt/install.txt -fcron-3.2.0/doc/fr/txt/relnotes.txt -fcron-3.2.0/u_list.h -fcron-3.2.0/env_list.c -fcron-3.2.0/dyncom.h -fcron-3.2.0/fcronconf.h -fcron-3.2.0/fcronsighup.h -fcron-3.2.0/database.h -fcron-3.2.0/debian/changelog -fcron-3.2.0/debian/config -fcron-3.2.0/debian/preinst -fcron-3.2.0/debian/conffiles -fcron-3.2.0/debian/postrm -fcron-3.2.0/debian/init -fcron-3.2.0/debian/templates.fr -fcron-3.2.0/debian/templates -fcron-3.2.0/debian/rules -fcron-3.2.0/debian/fcron-update-crontabs -fcron-3.2.0/debian/TODO.Debian -fcron-3.2.0/debian/README.Debian -fcron-3.2.0/debian/crontab.root -fcron-3.2.0/debian/fcron-update-crontabs.1 -fcron-3.2.0/debian/postinst -fcron-3.2.0/debian/templates.ru -fcron-3.2.0/debian/lintian -fcron-3.2.0/debian/control -fcron-3.2.0/debian/templates.pt -fcron-3.2.0/debian/templates.es -fcron-3.2.0/debian/templates.de -fcron-3.2.0/debian/dirs -fcron-3.2.0/debian/copyright -fcron-3.2.0/mem.c -fcron-3.2.0/configure -fcron-3.2.0/database.c -fcron-3.2.0/save.c -fcron-3.2.0/fcrontab.c -fcron-3.2.0/socket.h -fcron-3.2.0/VERSION -fcron-3.2.0/script/sysVinit-launcher.in -fcron-3.2.0/script/fcron-solaris10-manifest.xml -fcron-3.2.0/script/install-pam-conf -fcron-3.2.0/script/check_system_crontabs.bash -fcron-3.2.0/script/user-group -fcron-3.2.0/script/gen-doc -fcron-3.2.0/script/fcron.sh.in -fcron-3.2.0/script/gen-in.pl -fcron-3.2.0/script/boot-install -fcron-3.2.0/script/check_system_crontabs.sh -fcron-3.2.0/script/fcron.init.suse.in -fcron-3.2.0/script/has_usrgrp.pl -fcron-3.2.0/script/fcron.init.systemd.in -fcron-3.2.0/script/boot-uninstall -fcron-3.2.0/bitstring.h -fcron-3.2.0/option.h -fcron-3.2.0/job.h -fcron-3.2.0/convert-fcrontab.c -fcron-3.2.0/subs.h -fcron-3.2.0/read_string.c -fcron-3.2.0/fileconf.h -fcron-3.2.0/fcrondyn.h -fcron-3.2.0/job.c -fcron-3.2.0/fifo_list.c -fcron-3.2.0/cl.h -fcron-3.2.0/lavg_list.h -fcron-3.2.0/fcronsighup.c -fcron-3.2.0/fcrondyn.c -fcron-3.2.0/temp_file.h -fcron-3.2.0/u_list.c -fcron-3.2.0/lavg_list.c -fcron-3.2.0/temp_file.c -fcron-3.2.0/fcronconf.c -fcron-3.2.0/conf.h -fcron-3.2.0/conf.c -fcron-3.2.0/fileconf.c -fcron-3.2.0/save.h -fcron-3.2.0/env_list.h diff --git a/fcron-3.2.0/Makefile.in b/fcron-3.2.0/Makefile.in deleted file mode 100644 index c201904..0000000 --- a/fcron-3.2.0/Makefile.in +++ /dev/null @@ -1,323 +0,0 @@ -############################ -# fcron's Makefile ######## -############################ - -# @configure_input@ - - -# The following should not be edited manually (use configure options) -# If you must do it, BEWARE : some of the following is also defined -# in config.h, so you must modify config.h AND Makefile in order -# to set the same values in the two files. - -FCRON_ALLOW = fcron.allow -FCRON_DENY = fcron.deny -FCRON_CONF = fcron.conf - -SRCDIR := @srcdir@ -# Useful to build packages -# you may want to use this var with a : 'make DESTDIR=dir install' -DESTDIR := - -# Where should we install it ? -prefix = @prefix@ -exec_prefix = @exec_prefix@ -DESTSBIN = @sbindir@ -DESTBIN = @bindir@ -ETC = @sysconfdir@ -FCRONTABS = @FCRONTABS@ -PIDDIR = @PIDDIR@ -FIFODIR = @FIFODIR@ -PIDFILE = @PIDFILE@ -REBOOT_LOCK = @REBOOT_LOCK@ -FIFOFILE = @FIFOFILE@ -FCRON_SHELL = @FCRON_SHELL@ -SENDMAIL = @SENDMAIL@ -FCRON_EDITOR = @FCRON_EDITOR@ -OPTIM := @CFLAGS@ -LDFLAGS := @LDFLAGS@ -CPPFLAGS := @CPPFLAGS@ -I. -I${SRCDIR} -LIBS := @LIBS@ -LIBOBJS := @LIBOBJS@ -DEFS := @DEFS@ -CC := @CC@ -INSTALL := @INSTALL@ -STRIP := @STRIP@ -ROOTNAME := @ROOTNAME@ -ROOTGROUP := @ROOTGROUP@ -USERNAME := @USERNAME@ -GROUPNAME := @GROUPNAME@ -SYSFCRONTAB := @SYSFCRONTAB@ -DEBUG := @DEBUG@ -BOOTINSTALL := @BOOTINSTALL@ -ANSWERALL := @ANSWERALL@ -USEPAM := @USEPAM@ -FCRONDYN := @FCRONDYN@ -SYSTEMD_DIR := @SYSTEMD_DIR@ - -# Options -# -DDEBUG even more verbose -# -DCHECKJOBS send a mail containing the exact shell command -# for each execution of each job. -# -DFOREGROUND=[0|1] default run in foreground ? -#OPTION= -DCHECKJOBS -#OPTION= -O3 -mcpu=i686 -OPTION := - - -#################################### -# Should not be changed under this # -#################################### - -VERSION := @VERSION@ -CFLAGS += $(OPTIM) $(OPTION) $(DEFS) $(CPPFLAGS) -ifeq ($(FCRONDYN), 1) -LIBOBJS := socket.o $(LIBOBJS) -endif -OBJSD := fcron.o cl.o subs.o mem.o save.o temp_file.o log.o database.o job.o conf.o u_list.o exe_list.o lavg_list.o env_list.o fcronconf.o filesubs.o $(LIBOBJS) -OBJSTAB := fcrontab.o cl.o subs.o mem.o save.o temp_file.o log.o fileconf.o allow.o read_string.o u_list.o env_list.o fcronconf.o filesubs.o -OBJSDYN := fcrondyn.o subs.o mem.o log.o allow.o read_string.o fcronconf.o filesubs.o -OBJCONV := convert-fcrontab.o cl.o subs.o mem.o save.o log.o u_list.o env_list.o fcronconf.o filesubs.o -OBJSIG := fcronsighup.o subs.o mem.o log.o allow.o fcronconf.o filesubs.o -HEADERSALL := config.h $(SRCDIR)/global.h $(SRCDIR)/cl.h $(SRCDIR)/log.h $(SRCDIR)/subs.h $(SRCDIR)/mem.h $(SRCDIR)/save.h $(SRCDIR)/option.h $(SRCDIR)/dyncom.h - -# this is a regular expression : -# do not ci automaticaly generated files and doc (done by doc's Makefile) -RCSNOCI:=.*\(.html\|VERSION\|MANIFEST\|configure\|install.sh\|config.log\|config.status\|config.h\|config.cache\|Makefile\|doc.*\|CVS.*\|.git.*\) - -RUN_NON_PRIVILEGED := @RUN_NON_PRIVILEGED@ -ifeq ($(RUN_NON_PRIVILEGED), 1) - BINMODE:=111 - BINMODESIGHUP:=111 -else - BINMODE:=6111 - BINMODESIGHUP:=4110 -endif - -ifeq ($(FCRONDYN), 1) -all: fcron fcrontab fcrondyn convert-fcrontab files/fcron.conf initscripts documentation -else -all: fcron fcrontab convert-fcrontab files/fcron.conf -endif - -fcron: $(OBJSD) - $(CC) $(CFLAGS) -o $@ $(OBJSD) $(LIBS) - -fcrontab: fcronsighup $(OBJSTAB) - $(CC) $(CFLAGS) -o $@ $(OBJSTAB) $(LIBS) - -fcrondyn: $(OBJSDYN) - $(CC) $(CFLAGS) -o $@ $(OBJSDYN) $(LIBS) - -fcronsighup: $(OBJSIG) - $(CC) $(CFLAGS) -o $@ $(OBJSIG) $(LIBS) - -convert-fcrontab: $(OBJCONV) - $(CC) $(CFLAGS) -o $@ $(OBJCONV) $(LIBS) - -exe_list_test: exe_list.o u_list.o exe_list_test.o log.o subs.o - $(CC) $(CFLAGS) -o $@ exe_list.o u_list.o exe_list_test.o log.o subs.o $(LIBS) - -%.o: $(SRCDIR)/%.c $(HEADERSALL) $(SRCDIR)/%.h - $(CC) $(CFLAGS) -DPIDFILE="\"${PIDFILE}\"" -DREBOOT_LOCK="\"${REBOOT_LOCK}\"" \ - -DFIFOFILE="\"${FIFOFILE}\"" -DETC="\"${ETC}\"" \ - -DFCRON_SHELL="\"${FCRON_SHELL}\"" -DFCRON_CONF="\"${FCRON_CONF}\"" \ - -DFCRONTABS="\"${FCRONTABS}\"" \ - -DFCRON_ALLOW="\"${FCRON_ALLOW}\"" -DFCRON_DENY="\"${FCRON_DENY}\"" \ - -DFCRON_SHELL="\"${FCRON_SHELL}\"" -DSENDMAIL="\"${SENDMAIL}\"" \ - -DFCRON_EDITOR="\"${FCRON_EDITOR}\"" -DBINDIREX="\"${DESTBIN}\"" \ - -c $< - -initscripts: - @(if test ! -d script; then mkdir script ; fi ; \ - for F in sysVinit-launcher fcron.sh fcron.init.suse fcron.init.systemd ; do \ - $(SRCDIR)/script/gen-in.pl $(SRCDIR)/script/$${F}.in script/$${F} ./ ; \ - done) - -documentation: - $(MAKE) -C doc doc-if-none - -install: install-staged strip perms -ifeq ($(BOOTINSTALL), 1) - $(SRCDIR)/script/boot-install "$(INSTALL) -o $(ROOTNAME)" $(DESTSBIN) $(DEBUG) $(FCRONTABS) $(ANSWERALL) $(SRCDIR) -endif -ifneq ($(SYSTEMD_DIR), no) - if test ! -d $(DESTDIR)$(SYSTEMD_DIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(SYSTEMD_DIR) ; fi - $(INSTALL) -m 644 script/fcron.init.systemd $(DESTDIR)$(SYSTEMD_DIR)/fcron.service -endif - -install-staged: all - -# needed by boot-install script : - echo `fcron -V 2>&1 | grep "^fcron "` > PREVIOUS_VERSION && chmod a+rw PREVIOUS_VERSION - - $(SRCDIR)/script/user-group $(USERNAME) $(GROUPNAME) $(ANSWERALL) $(SRCDIR) - -# check if the directories we use exist, and if not, create them - if test ! -d $(DESTDIR)$(DESTSBIN); then $(INSTALL) -m 755 -d $(DESTDIR)$(DESTSBIN) ; fi - if test ! -d $(DESTDIR)$(DESTBIN); then $(INSTALL) -m 755 -d $(DESTDIR)$(DESTBIN) ; fi - if test ! -d $(DESTDIR)$(ETC); then $(INSTALL) -m 755 -d $(DESTDIR)$(ETC) ; fi - if test ! -d $(DESTDIR)$(PIDDIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(PIDDIR) ; fi - if test ! -d $(DESTDIR)$(FIFODIR); then $(INSTALL) -m 755 -d $(DESTDIR)$(FIFODIR) ; fi -# create the spool dir - $(INSTALL) -m 755 -d $(DESTDIR)$(FCRONTABS) - - $(INSTALL) -m 755 fcron $(DESTDIR)$(DESTSBIN) - $(INSTALL) -m 755 fcrontab $(DESTDIR)$(DESTBIN) - $(INSTALL) -m 755 fcronsighup $(DESTDIR)$(DESTBIN) -ifeq ($(FCRONDYN), 1) - $(INSTALL) -m 755 fcrondyn $(DESTDIR)$(DESTBIN) -endif - if test ! -f $(DESTDIR)$(ETC)/fcron.allow -a ! -f $(DESTDIR)$(ETC)/fcron.deny ; then $(INSTALL) -m 644 $(SRCDIR)/files/fcron.allow $(DESTDIR)$(ETC) ; $(INSTALL) -m 644 $(SRCDIR)/files/fcron.deny $(DESTDIR)$(ETC) ; fi - test -f $(DESTDIR)$(ETC)/fcron.conf || $(INSTALL) -m 644 files/fcron.conf $(DESTDIR)$(ETC) - - $(MAKE) -C doc install-staged - - -perms: install-staged strip -# Note : we don't use "chown user:group file" because some systems use ":" -# and others "." as separator. - chown $(ROOTNAME) $(DESTDIR)$(DESTSBIN) - chgrp $(ROOTGROUP) $(DESTDIR)$(DESTSBIN) - chown $(ROOTNAME) $(DESTDIR)$(DESTBIN) - chgrp $(ROOTGROUP) $(DESTDIR)$(DESTBIN) - chown $(ROOTNAME) $(DESTDIR)$(ETC) - chgrp $(ROOTGROUP) $(DESTDIR)$(ETC) - chown $(ROOTNAME) $(DESTDIR)$(FIFODIR) - chgrp $(ROOTGROUP) $(DESTDIR)$(FIFODIR) - chown $(ROOTNAME) $(DESTDIR)$(PIDDIR) - chgrp $(ROOTGROUP) $(DESTDIR)$(PIDDIR) - -# change spool dir mode - chown $(USERNAME) $(DESTDIR)$(FCRONTABS) - chgrp $(GROUPNAME) $(DESTDIR)$(FCRONTABS) - chmod 770 $(DESTDIR)$(FCRONTABS) - - chown $(ROOTNAME) $(DESTDIR)$(DESTSBIN)/fcron - chgrp $(ROOTGROUP) $(DESTDIR)$(DESTSBIN)/fcron - chmod 110 $(DESTDIR)$(DESTSBIN)/fcron - - chown $(USERNAME) $(DESTDIR)$(DESTBIN)/fcrontab - chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcrontab - chmod $(BINMODE) $(DESTDIR)$(DESTBIN)/fcrontab - - chown $(ROOTNAME) $(DESTDIR)$(DESTBIN)/fcronsighup - chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcronsighup - chmod $(BINMODESIGHUP) $(DESTDIR)$(DESTBIN)/fcronsighup - -ifeq ($(FCRONDYN), 1) - chown $(USERNAME) $(DESTDIR)$(DESTBIN)/fcrondyn - chgrp $(GROUPNAME) $(DESTDIR)$(DESTBIN)/fcrondyn - chmod $(BINMODE) $(DESTDIR)$(DESTBIN)/fcrondyn -endif - chown $(ROOTNAME) $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny - chgrp $(GROUPNAME) $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny - chmod 640 $(DESTDIR)$(ETC)/fcron.allow $(DESTDIR)$(ETC)/fcron.deny - - chown $(ROOTNAME) $(DESTDIR)$(ETC)/fcron.conf - chgrp $(GROUPNAME) $(DESTDIR)$(ETC)/fcron.conf - chmod 640 $(DESTDIR)$(ETC)/fcron.conf -ifeq ($(USEPAM), 1) - $(SRCDIR)/script/install-pam-conf $(SRCDIR) $(DESTDIR)$(ETC) $(ROOTNAME) $(ROOTGROUP) "$(INSTALL)" -endif - -# in order to get correct rights when upgrading : - - find $(DESTDIR)$(FCRONTABS) -type f \( -name "*.orig" -a ! -name "$(ROOTNAME).orig" -a ! -name "$(SYSFCRONTAB).orig" \) -exec chown $(USERNAME) {} \; -exec chgrp $(GROUPNAME) {} \; -exec chmod 640 {} \; - find $(DESTDIR)$(FCRONTABS) -type f \( -name "$(ROOTNAME).orig" -o -name "$(SYSFCRONTAB).orig" \) -exec chown $(ROOTNAME) {} \; -exec chgrp $(GROUPNAME) {} \; -exec chmod 600 {} \; - # First, remove the potential fcrontab.sig, or it could not get removed by fcronsighup if it becomes root:root 600 - rm -f $(DESTDIR)$(FCRONTABS)/fcrontab.sig - find $(DESTDIR)$(FCRONTABS) -type f ! -name "*.orig" -exec chown $(ROOTNAME) {} \; -exec chgrp $(ROOTGROUP) {} \; -exec chmod 600 {} \; - - $(MAKE) -C doc perms - -# strip executables -strip: install-staged -ifneq ($(DEBUG), 1) - strip $(DESTDIR)$(DESTSBIN)/fcron - strip $(DESTDIR)$(DESTBIN)/fcrontab - strip $(DESTDIR)$(DESTBIN)/fcronsighup -ifeq ($(FCRONDYN), 1) - strip $(DESTDIR)$(DESTBIN)/fcrondyn -endif -endif - -install-boot: install - $(SRCDIR)/script/boot-install "$(INSTALL) -o $(ROOTNAME)" $(DESTSBIN) $(DEBUG) $(FCRONTABS) $(ANSWERALL) $(SRCDIR) - -install-restart: install -ifeq ($(DEBUG), 1) - kill -TERM `pidof fcron` || exit 0 - /etc/init.d/fcron restart -endif - -uninstall: - rm -f $(DESTDIR)$(DESTSBIN)/fcron - rm -f $(DESTDIR)$(DESTBIN)/fcrontab - rm -f $(DESTDIR)$(DESTBIN)/fcronsighup - rm -f $(DESTDIR)$(DESTBIN)/fcrondyn - $(MAKE) -C doc uninstall - $(SRCDIR)/script/boot-uninstall - -clean: - rm -f *.o core - rm -f fcron fcrontab fcrondyn fcronsighup convert-fcrontab files/fcron.conf - $(MAKE) -C doc clean - -ciclean: clean - find ./ -name "*~" -exec rm -f {} \; - rm -fR autom4te* - -vclean: ciclean - rm -f config.log config.status config.h config.cache Makefile PREVIOUS_VERSION \ - files/fcron.conf script/fcron.init.suse script/fcron.init.systemd \ - script/fcron.sh script/sysVinit-launcher - $(MAKE) -C doc clean - - -files/fcron.conf: $(SRCDIR)/files/fcron.conf.in config.h - if test ! -d files; then mkdir files ; fi - $(SRCDIR)/script/gen-in.pl $(SRCDIR)/files/fcron.conf.in files/fcron.conf ./ - -updatedoc: - $(MAKE) -C doc doc - -indent: - indent -linux -i4 --no-tabs --leave-optional-blank-lines \ - --start-left-side-of-comments --procnames-start-lines \ - --dont-cuddle-else *.c *.h - -configure: configure.in -# update configure script, then Makefile and config.h, and finally -# run make tar using the new Makefile (needed because the version -# is set in the configure.in file) - autoconf - ./configure - @($(MAKE) tar && \ - echo "---------------------------------------------" && \ - echo "Success !" && \ - echo "(Please ignore the following make error" && \ - echo " and run your latest make command again)" && \ - echo "---------------------------------------------" && \ - exit 999) - -ci: ciclean -# the symbolic links verX_X_X has been created since version 2.9.4 - @(find ./ -type f ! -regex '.*RCS.*' ! -regex "$(RCSNOCI)" \ - -exec ci -l -Nver`echo $(VERSION) | tr '.' '_'` {} \;) -# ci the doc files - $(MAKE) -C doc ci - -tar: configure updatedoc vclean ciclean - - echo $(VERSION) > ./VERSION - - $(MAKE) -C doc tarclean - - @(find ./ -type f ! -regex '.*RCS.*' ! -regex '.*CVS.*' ! -regex '.*\.git.*' ! -regex '.*debug/.*'| \ - sed -e "s:^\./:fcron-$(VERSION)/:" > MANIFEST) - @(cd ..; ln -s fcron fcron-$(VERSION)) - (cd ..; tar -czvf fcron-$(VERSION).src.tar.gz `cat fcron/MANIFEST`) - @(cd ..; rm -f fcron-$(VERSION)) - - @(cd ..; mv -f fcron-$(VERSION).src.tar.gz old-fcron-pkg/) diff --git a/fcron-3.2.0/README b/fcron-3.2.0/README deleted file mode 100644 index d502111..0000000 --- a/fcron-3.2.0/README +++ /dev/null @@ -1,2 +0,0 @@ -See readme.txt in directory doc/en/txt/ - or readme.html in directory doc/en/HTML/. \ No newline at end of file diff --git a/fcron-3.2.0/VERSION b/fcron-3.2.0/VERSION deleted file mode 100644 index 944880f..0000000 --- a/fcron-3.2.0/VERSION +++ /dev/null @@ -1 +0,0 @@ -3.2.0 diff --git a/fcron-3.2.0/allow.c b/fcron-3.2.0/allow.c deleted file mode 100644 index 704874f..0000000 --- a/fcron-3.2.0/allow.c +++ /dev/null @@ -1,127 +0,0 @@ - -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - -#include "fcrontab.h" - -#include "allow.h" - -int -in_file(char *str, char *file) - /* return -1 if file doesn't exist - * 0 if string is not in file, - * 1 if it is in file - * and 2 if file contains "all" string */ -{ - char buf[LINE_LEN]; - FILE *f = NULL; - char *start = NULL; - - if ((f = fopen(file, "r")) == NULL) { - if (errno == ENOENT) - /* file does not exist */ - return -1; - else - die_e("could not open %s", file); - } - - while (fgets(buf, sizeof(buf), f) != NULL) { - - /* skip leading and trailing blanks, comments */ - start = buf; - Skip_blanks(start); - if (*start == '#' || *start == '\0') - continue; - remove_blanks(start); - - if (strcmp(str, start) == 0) { - xfclose_check(&f, file); - return 1; - } - if (strcmp(start, "all") == 0) { - xfclose_check(&f, file); - return 2; - } - } - - xfclose_check(&f, file); - /* if execution gets here, string is not in file */ - return 0; - - -} - -int -is_allowed(char *user) - /* return 1 if user is allowed to use this software - * otherwise return 0 */ -{ - int allow = 0; - int deny = 0; - - /* check if user is in passwd file */ - if (getpwnam(user) != NULL) { - - /* check if user is in fcron.allow and/or in fcron.deny files */ - allow = in_file(user, fcronallow); - deny = in_file(user, fcrondeny); - - /* in_file() returns: - * -1 if file doesn't exist - * 0 if string is not in file, - * 1 if it is in file - * and 2 if file contains "all" string */ - - if (allow == -1 && deny == -1) - /* neither fcron.allow nor fcron.deny exist : - * we consider that user is allowed */ - return 1; - - if (allow == -1 && deny == 0) - return 1; - - if (deny == -1 && allow == 1) - return 1; - - if (allow == 1 && deny != 1) - return 1; - if (allow == 2 && deny <= 0) - return 1; - - } - - /* if we gets here, user is not allowed */ - -#ifdef WITH_AUDIT - { - int audit_fd = audit_open(); - audit_log_user_message(audit_fd, AUDIT_USER_START, "fcron deny", - NULL, NULL, NULL, 0); - xclose_check(&audit_fd, "audit"); - } -#endif - - return 0; - -} diff --git a/fcron-3.2.0/allow.h b/fcron-3.2.0/allow.h deleted file mode 100644 index 2e89d94..0000000 --- a/fcron-3.2.0/allow.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - -#ifndef __ALLOW_H__ -#define __ALLOW_H__ - -/* functions prototypes */ -extern int is_allowed(char *user); - -#endif /* __ALLOW_H__ */ diff --git a/fcron-3.2.0/bitstring.h b/fcron-3.2.0/bitstring.h deleted file mode 100644 index 24007bc..0000000 --- a/fcron-3.2.0/bitstring.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright (c) 1989 The Regents of the University of California. - * All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Paul Vixie. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the University of California, Berkeley. The name of the - * University may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * @(#)bitstring.h 5.2 (Berkeley) 4/4/90 - */ - -typedef unsigned char bitstr_t; - -/* internal macros */ - /* byte of the bitstring bit is in */ -/* in other words, _bit_byte(bitnum) is the index (starting from 0) of the byte - * which contain the bit number 'bitnum' */ -#define _bit_byte(bit) \ - ((bit) >> 3) - - /* mask for the bit within its byte */ -#define _bit_mask(bit) \ - (1 << ((bit)&0x7)) - -/* external macros */ - /* bytes in a bitstring of nbits bits */ -#define bitstr_size(nbits) \ - ((((nbits) - 1) >> 3) + 1) - - /* allocate a bitstring */ -#define bit_alloc(nbits) \ - (bitstr_t *)malloc(1, \ - (unsigned int)bitstr_size(nbits) * sizeof(bitstr_t)) - - /* allocate a bitstring on the stack */ -#define bit_decl(name, nbits) \ - (name)[bitstr_size(nbits)] - - /* is bit N of bitstring name set? */ -#define bit_test(name, bit) \ - ((name)[_bit_byte(bit)] & _bit_mask(bit)) - - /* set bit N of bitstring name */ -#define bit_set(name, bit) \ - (name)[_bit_byte(bit)] |= _bit_mask(bit) - - /* clear bit N of bitstring name */ -#define bit_clear(name, bit) \ - (name)[_bit_byte(bit)] &= ~_bit_mask(bit) - - /* clear bits start ... stop in bitstring */ -#define bit_nclear(name, start, stop) { \ - register bitstr_t *_name = name; \ - register int _start = start, _stop = stop; \ - register int _startbyte = _bit_byte(_start); \ - register int _stopbyte = _bit_byte(_stop); \ - if (_startbyte == _stopbyte) { \ - _name[_startbyte] &= ((0xff >> (8 - (_start&0x7))) | \ - (0xff << ((_stop&0x7) + 1))); \ - } else { \ - _name[_startbyte] &= 0xff >> (8 - (_start&0x7)); \ - while (++_startbyte < _stopbyte) \ - _name[_startbyte] = 0; \ - _name[_stopbyte] &= 0xff << ((_stop&0x7) + 1); \ - } \ -} - - /* set bits start ... stop in bitstring */ -#define bit_nset(name, start, stop) { \ - register bitstr_t *_name = name; \ - register int _start = start, _stop = stop; \ - register int _startbyte = _bit_byte(_start); \ - register int _stopbyte = _bit_byte(_stop); \ - if (_startbyte == _stopbyte) { \ - _name[_startbyte] |= ((0xff << (_start&0x7)) & \ - (0xff >> (7 - (_stop&0x7)))); \ - } else { \ - _name[_startbyte] |= 0xff << ((_start)&0x7); \ - while (++_startbyte < _stopbyte) \ - _name[_startbyte] = 0xff; \ - _name[_stopbyte] |= 0xff >> (7 - (_stop&0x7)); \ - } \ -} - - /* find first bit clear in name */ -#define bit_ffc(name, nbits, value) { \ - register bitstr_t *_name = name; \ - register int _byte, _nbits = nbits; \ - register int _stopbyte = _bit_byte(_nbits), _value = -1; \ - for (_byte = 0; _byte <= _stopbyte; ++_byte) \ - if (_name[_byte] != 0xff) { \ - _value = _byte << 3; \ - for (_stopbyte = _name[_byte]; (_stopbyte&0x1); \ - ++_value, _stopbyte >>= 1); \ - break; \ - } \ - *(value) = _value; \ -} - - /* find first bit set in name */ -#define bit_ffs(name, nbits, value) { \ - register bitstr_t *_name = name; \ - register int _byte, _nbits = nbits; \ - register int _stopbyte = _bit_byte(_nbits), _value = -1; \ - for (_byte = 0; _byte <= _stopbyte; ++_byte) \ - if (_name[_byte]) { \ - _value = _byte << 3; \ - for (_stopbyte = _name[_byte]; !(_stopbyte&0x1); \ - ++_value, _stopbyte >>= 1); \ - break; \ - } \ - *(value) = _value; \ -} diff --git a/fcron-3.2.0/cl.c b/fcron-3.2.0/cl.c deleted file mode 100644 index a02c9bc..0000000 --- a/fcron-3.2.0/cl.c +++ /dev/null @@ -1,74 +0,0 @@ -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - -#include "global.h" -#include "cl.h" -#include "mem.h" - -cl_t * -dups_cl(cl_t * orig) - /* Duplicate a line, including the strings it points to. */ -{ - cl_t *cl = NULL; - - Alloc(cl, cl_t); - - /* copy the structure */ - *cl = *orig; - - /* don't assume any link to a file or belonging to a list */ - cl->cl_file = NULL; - cl->cl_next = NULL; - - /* we just copied the pointers of orig to cl, but we didn't - * make a copy of the strings yet. - * Reset the pointers, then copy the strings */ - cl->cl_shell = NULL; - Set(cl->cl_shell, orig->cl_shell); - - cl->cl_runas = NULL; - Set(cl->cl_runas, orig->cl_runas); - debug("%s: Set cl->cl_runas=%s", __func__, - (cl->cl_runas == NULL) ? "null" : cl->cl_runas); - - cl->cl_mailto = NULL; - Set(cl->cl_mailto, orig->cl_mailto); - - cl->cl_tz = NULL; - Set(cl->cl_tz, orig->cl_tz); - - return cl; -} - -void -free_line(cl_t * cl) - /* free a line, including its fields */ -{ - if (cl != NULL) { - Free_safe(cl->cl_shell); - Free_safe(cl->cl_runas); - Free_safe(cl->cl_mailto); - Free_safe(cl->cl_tz); - Free_safe(cl); - } -} diff --git a/fcron-3.2.0/cl.h b/fcron-3.2.0/cl.h deleted file mode 100644 index 0dde2d5..0000000 --- a/fcron-3.2.0/cl.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - -/* cl: Cron Line type and associated functions */ - -#ifndef __CL_H__ -#define __CL_H__ - -/* - * TYPES - */ - -#define OPTION_SIZE 4 /* number of bytes to hold the cl_option bit array */ -#define LAVG_SIZE 3 -/* warning : do not change the order of the members of this structure - * because some tests made are dependent to that order */ -/* warning : if you change a field type, you may have to also make some changes - * in the save/load binary fcrontab functions */ -typedef struct cl_t { - struct cl_t *cl_next; - struct cf_t *cl_file; /* the file in which the line is */ - char *cl_shell; /* shell command */ - char *cl_runas; /* determine permissions of the job */ - char *cl_mailto; /* mail output to cl_mailto */ - char *cl_tz; /* time zone of the line */ - unsigned long cl_id; /* line's unique id number */ - time_t cl_until; /* timeout of the wait for a lavg value */ - time_t cl_first; /* initial delay preserved for volatile entries */ - time_t cl_nextexe; /* time and date of the next execution */ - long int cl_timefreq; /* Run every n seconds */ - unsigned short cl_remain; /* remaining until next execution */ - unsigned short cl_runfreq; /* Run once every n matches(=1 for %-lines) */ - unsigned char cl_option[OPTION_SIZE]; /* line's option (see option.h) */ - unsigned char cl_lavg[LAVG_SIZE]; /*load averages needed (1,5,15 mins) */ - unsigned char cl_numexe; /* entries in queues & running processes */ - char cl_nice; /* nice value to control priority */ - unsigned char cl_jitter; /* run randomly late up to jitter seconds */ - /* see bitstring(3) man page for more details */ - bitstr_t bit_decl(cl_mins, 60); /* 0-59 */ - bitstr_t bit_decl(cl_hrs, 24); /* 0-23 */ - bitstr_t bit_decl(cl_days, 32); /* 1-31 */ - bitstr_t bit_decl(cl_mons, 12); /* 0-11 */ - bitstr_t bit_decl(cl_dow, 8); /* 0-7, 0 and 7 are both Sunday */ -} cl_t; - - -/* - * functions prototypes - */ - -/* duplicate a line, including strings it points to */ -cl_t *dups_cl(cl_t * orig); -void free_line(cl_t * cl); - -#endif /* __CL_H__ */ diff --git a/fcron-3.2.0/conf.c b/fcron-3.2.0/conf.c deleted file mode 100644 index 5f808d1..0000000 --- a/fcron-3.2.0/conf.c +++ /dev/null @@ -1,1180 +0,0 @@ - -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - -#include "fcron.h" - -#include "conf.h" -#include "database.h" - -int read_file(const char *file_name, cf_t * cf, int is_system_startup); -int add_line_to_file(cl_t * cl, cf_t * cf, uid_t runas, char *runas_str, - time_t t_save, int is_system_startup); -int read_strn(int fd, char **str, short int size); -int read_type(int fd, short int *type, short int *size); -void synchronize_file(char *file_name, int is_system_startup); - - -/* this is used to create a list of files to remove, to add */ -typedef struct list_t { - char *str; - struct list_t *next; -} list_t; - - -void -reload_all(const char *dir_name) - /* save all current configuration, remove it from the memory, - * and reload from dir_name */ -{ - cf_t *f = NULL; - - explain("Removing current configuration from memory"); - - f = file_base; - while (f != NULL) { - if (f->cf_running > 0) - wait_all(&f->cf_running); - save_file(f); - delete_file(f->cf_user); - - /* delete_file remove the f file from the list : - * next file to remove is now pointed by file_base. */ - f = file_base; - } - - synchronize_dir(dir_name, 0); - -} - - -void -synchronize_dir(const char *dir_name, int is_system_startup) - /* read dir_name and create three list of files to remove, - * new files and normal files. Then remove each file - * listed in the first list, then read normal files, - * finally add new files. */ -{ - - list_t *rm_list = NULL; - list_t *new_list = NULL; - list_t *file_list = NULL; - list_t *list_cur = NULL; - DIR *dir; - struct dirent *den; - - if (strcmp(dir_name, ".") == 0) - explain("updating configuration from %s", fcrontabs); - else - explain("updating configuration from %s", dir_name); - - if ((dir = opendir("."))) { - while ((den = readdir(dir))) { - - if (strncmp(den->d_name, "rm.", 3) == 0) { - /* this is a file to remove from database */ - Alloc(list_cur, list_t); - list_cur->str = strdup2(den->d_name); - list_cur->next = rm_list; - rm_list = list_cur; - } - else if (strncmp(den->d_name, "new.", 4) == 0) { - /* this is a file to append to database */ - Alloc(list_cur, list_t); - list_cur->str = strdup2(den->d_name); - list_cur->next = new_list; - new_list = list_cur; - } - else if (strchr(den->d_name, '.') != NULL) - continue; - else - /* this is a normal file : if file_base is not null, - * so if a database has already been created, we - * ignore it */ - if (file_base == NULL) { - Alloc(list_cur, list_t); - list_cur->str = strdup2(den->d_name); - list_cur->next = file_list; - file_list = list_cur; - } - - } - closedir(dir); - } - else - die("Unable to open current dir!"); - - - /* proceed to adds or removes */ - - /* begin by removing files which are no longer wanted */ - for (list_cur = rm_list; list_cur; list_cur = list_cur->next) { - explain("removing file %s", list_cur->str + 3); - delete_file(list_cur->str + 3); /* len("rm.") = 3 */ - if (remove(list_cur->str + 3) != 0 && errno != ENOENT) - error_e("Could not remove %s", list_cur->str + 3); - if (remove(list_cur->str) != 0 && errno != ENOENT) - error_e("Could not remove %s", list_cur->str); - } - - /* then add normal files, if any, to database */ - for (list_cur = file_list; list_cur; list_cur = list_cur->next) { - errno = 0; - if (getpwnam(list_cur->str) -#ifdef SYSFCRONTAB - || strcmp(list_cur->str, SYSFCRONTAB) == 0 -#endif - ) { - explain("adding file %s", list_cur->str); - synchronize_file(list_cur->str, is_system_startup); - } - else - error_e("ignoring file \"%s\" : not in passwd file.", - list_cur->str); - } - - /* finally add new files */ - for (list_cur = new_list; list_cur; list_cur = list_cur->next) { - /* len("new.") = 4 : */ - errno = 0; - if (getpwnam(list_cur->str + 4) -#ifdef SYSFCRONTAB - || strcmp(list_cur->str + 4, SYSFCRONTAB) == 0 -#endif - ) { - explain("adding new file %s", list_cur->str + 4); - synchronize_file(list_cur->str, is_system_startup); - } - else - error_e("ignoring file %s : not in passwd file.", - (list_cur->str + 4)); - } - - /* free lists */ - { - list_t *l = NULL; - list_t *next = NULL; - - next = rm_list; - while ((l = next) != NULL) { - next = l->next; - Free_safe(l->str); - Free_safe(l); - } - - next = new_list; - while ((l = next) != NULL) { - next = l->next; - Free_safe(l->str); - Free_safe(l); - } - - next = file_list; - while ((l = next) != NULL) { - next = l->next; - Free_safe(l->str); - Free_safe(l); - } - - } - -} - - -void -synchronize_file(char *file_name, int is_system_startup) -{ - - cf_t *cur_f = NULL; - char *user = NULL; - - if (strchr(file_name, '.') != NULL) { - /* this is a new file : we have to check if there is an old - * version in database in order to keep a maximum of fields - * (cl_nextexe) to their current value */ - - cf_t *prev = NULL; - - /* set user name */ - /* we add 4 to file_name pointer because of the "new." - * string at the beginning of a new file */ - user = (file_name + 4); - - for (cur_f = file_base; cur_f; cur_f = cur_f->cf_next) { - if (strcmp(user, cur_f->cf_user) == 0) - break; - prev = cur_f; - } - - if (cur_f != NULL) { - /* an old version of this file exist in database */ - - cf_t *old = NULL; - cl_t *old_l = NULL; - cl_t *new_l = NULL; - /* size used when comparing two line : - * it's the size of all time table (mins, days ...) */ - const size_t size = (bitstr_size(60) + bitstr_size(24) + - bitstr_size(32) + bitstr_size(12) + - bitstr_size(7)); - - old = cur_f; - - /* load new file */ - Alloc(cur_f, cf_t); - if (read_file(file_name, cur_f, is_system_startup) != 0) { - /* an error as occured */ - return; - } - - /* assign old pointer to the old file, and move it to the first - * place of the list : delete_file() only remove the first - * occurrence of the file which has the name given in argument */ - if (prev != NULL) { - prev->cf_next = old->cf_next; - old->cf_next = file_base; - file_base = old; - } - else - /* this is the first file in the list : no need to move it */ - ; - - /* compare each lines between the new and the old - * version of the file */ - for (new_l = cur_f->cf_line_base; new_l; new_l = new_l->cl_next) - for (old_l = old->cf_line_base; old_l; old_l = old_l->cl_next) { - - /* compare the shell command and the fields - * from cl_mins down to cl_runfreq or the timefreq */ - if (strcmp(new_l->cl_shell, old_l->cl_shell) == 0 - && ((is_freq(new_l->cl_option) - && new_l->cl_timefreq == old_l->cl_timefreq) - || (is_td(new_l->cl_option) - && memcmp(&(new_l->cl_mins), &(old_l->cl_mins), - size) == 0 - && is_dayor(new_l->cl_option) == - is_dayor(old_l->cl_option)) - )) { - - if (new_l->cl_runfreq == old_l->cl_runfreq) - new_l->cl_remain = old_l->cl_remain; - /* check if there is a change about the tz diff */ - if ((new_l->cl_file->cf_tzdiff != - old_l->cl_file->cf_tzdiff) && - (old_l->cl_nextexe - old_l->cl_file->cf_tzdiff - + new_l->cl_file->cf_tzdiff > now)) - new_l->cl_nextexe = old_l->cl_nextexe - - old_l->cl_file->cf_tzdiff + - new_l->cl_file->cf_tzdiff; - else - new_l->cl_nextexe = old_l->cl_nextexe; - - if (is_runonce(new_l->cl_option) - && is_runonce(old_l->cl_option) - && is_hasrun(old_l->cl_option)) { - explain - (" from last conf: job '%s' with runonce set has " - "already run since last system startup: not " - "re-scheduling.", new_l->cl_shell); - set_hasrun(new_l->cl_option); - /* job has already run: remove from the queue */ - job_queue_remove(new_l); - } - else - /* update the position in the queue */ - insert_nextexe(new_l); - - if (debug_opt && !is_hasrun(new_l->cl_option)) { - struct tm *ftime; - ftime = localtime(&new_l->cl_nextexe); - debug - (" from last conf: '%s' next exec %04d-%02d-%02d" - " wday:%d %02d:%02d:%02d (system time)", - new_l->cl_shell, (ftime->tm_year + 1900), - (ftime->tm_mon + 1), ftime->tm_mday, - ftime->tm_wday, ftime->tm_hour, ftime->tm_min, - ftime->tm_sec); - } - - break; - - } - } - - /* remove old file from the list */ - delete_file(user); - - /* insert new file in the list */ - cur_f->cf_next = file_base; - file_base = cur_f; - - /* save final file */ - save_file(cur_f); - - /* delete new.user file */ - if (remove(file_name) != 0) - error_e("could not remove %s", file_name); - - } - - else { - /* no old version exist in database : load this file - * as a normal file, but change its name */ - - Alloc(cur_f, cf_t); - - if (read_file(file_name, cur_f, is_system_startup) != 0) { - /* an error as occured */ - return; - } - - /* insert the file in the list */ - cur_f->cf_next = file_base; - file_base = cur_f; - - /* save as a normal file */ - save_file(cur_f); - - /* delete new.user file */ - if (remove(file_name) != 0) - error_e("could not remove %s", file_name); - } - - } - - else { - /* this is a normal file */ - - Alloc(cur_f, cf_t); - - if (read_file(file_name, cur_f, is_system_startup) != 0) { - /* an error as occured */ - return; - } - - /* insert the file in the list */ - cur_f->cf_next = file_base; - file_base = cur_f; - - } - -} - - -int -read_strn(int fd, char **str, short int size) -/* read a "size"-length string in a binary fcrontab file */ -{ - if ((*str = calloc(size + 1, sizeof(char))) == NULL) - goto err; - - if (read(fd, *str, size) < size) - goto err; - (*str)[size] = '\0'; - return OK; - - err: - Free_safe(*str); - return ERR; - -} - -int -read_type(int fd, short int *type, short int *size) -/* read the type and size of the next field in a binary fcrontab file */ -{ - if (read(fd, type, sizeof(short int)) < sizeof(short int)) - goto err; - if (read(fd, size, sizeof(short int)) < sizeof(short int)) - goto err; - - return OK; - - err: - return ERR; - -} - - -/* macros for read_file() */ -/* read "size" bytes from file "ff", put them in "to", and check for errors */ -#define Read(TO, SIZE, ERR_STR) \ - { \ - if ( read(fileno(ff), &(TO), SIZE) < SIZE ) { \ - error_e(ERR_STR); \ - goto err; \ - } \ - } - -#define Read_strn(TO, SIZE, ERR_STR) \ - { \ - if ( read_strn(fileno(ff), &(TO), SIZE) != OK ) { \ - error_e(ERR_STR); \ - goto err; \ - } \ - } - -int -read_file(const char *file_name, cf_t * cf, int is_system_startup) - /* read a formated fcrontab. - * return ERR on error, OK otherwise */ -{ - FILE *ff = NULL; - cl_t *cl = NULL; - long int bufi = 0; - time_t t_save = 0; - uid_t runas = 0; - char *runas_str = NULL; - struct stat file_stat; - struct passwd *pass = NULL; - short int type = 0, size = 0; - int rc; - int has_read_cl_first = 0; /* have we read S_FIRST_T? */ -#ifdef WITH_SELINUX - int flask_enabled = is_selinux_enabled(); - int retval; - struct av_decision avd; - char *user_name = NULL; -#endif - - /* open file */ - if ((ff = fopen(file_name, "r")) == NULL) { - warn_e("Could not read %s (may have just been removed)", file_name); - goto err; - } - - /* check if this file is owned by root : otherwise, all runas fields - * of this file should be set to the owner */ - rc = fstat(fileno(ff), &file_stat); - if (rc != 0) { - error_e("Could not stat %s", file_name); - goto err; - } -#ifdef WITH_SELINUX - if (flask_enabled && fgetfilecon(fileno(ff), &cf->cf_file_context) < 0) { - error_e("Could not get context of %s", file_name); - goto err; - } -#endif - - if (strncmp(file_name, "new.", 4) == 0) { - if (file_stat.st_uid == rootuid) { - /* file is owned by root : no test needed : set runas to rootuid */ - runas = rootuid; - } - else { - /* this is a standard user's new fcrontab : set the runas field to - * the owner of the file */ - runas = file_stat.st_uid; - if ((pass = getpwuid(file_stat.st_uid)) == NULL) { - error_e("Could not getpwuid(%d)", file_stat.st_uid); - goto err; - } - runas_str = strdup2(pass->pw_name); - } - cf->cf_user = strdup2(file_name + 4); - } - else { - if (!cf->cf_user) - cf->cf_user = strdup2(file_name); - if (file_stat.st_uid == rootuid) { - /* file is owned by root : either this file has already been parsed - * at least once by fcron, or it is root's fcrontab */ - runas = rootuid; - } - else { - error("Non-new file %s owned by someone else than root", file_name); - goto err; - } - } - -#ifdef WITH_SELINUX - /* - * Since fcrontab files are not directly executed, - * fcron daemon must ensure that the fcrontab file has - * a context that is appropriate for the context of - * the user fcron job. It performs an entrypoint - * permission check for this purpose. - */ - if (flask_enabled) { - char *sename = NULL; - char *selevl = NULL; - - /* first, get the SELinux user for that Linux user */ -#ifdef SYSFCRONTAB - if (!strcmp(cf->cf_user, SYSFCRONTAB)) - /* system_u is the default SELinux user for running system services */ - user_name = "system_u"; - else -#endif /* def SYSFCRONTAB */ - { - if (getseuserbyname(cf->cf_user, &sename, &selevl) < 0) { - error_e("Cannot find SELinux user for user \"%s\"\n", - cf->cf_user); - goto err; - } - user_name = sename; - } - - if (get_default_context(user_name, NULL, &cf->cf_user_context)) - error_e("NO CONTEXT for Linux user '%s' (SELinux user '%s')", - cf->cf_user, user_name); - retval = - security_compute_av(cf->cf_user_context, cf->cf_file_context, - SECCLASS_FILE, FILE__ENTRYPOINT, &avd); - - if (retval || ((FILE__ENTRYPOINT & avd.allowed) != FILE__ENTRYPOINT)) { - syslog(LOG_ERR, "ENTRYPOINT FAILED for Linux user '%s' " - "(CONTEXT %s) for file CONTEXT %s", cf->cf_user, - cf->cf_user_context, cf->cf_file_context); - goto err; - } - - Free_safe(sename); - Free_safe(selevl); - } -#endif - - debug("User %s Entry", file_name); - - /* get version of fcrontab file: it permits to daemon not to load - * a file which he won't understand the syntax, for example - * a file using a depreciated format generated by an old fcrontab, - * if the syntax has changed */ - if (read_type(fileno(ff), &type, &size) != OK || type != S_HEADER_T || - read(fileno(ff), &bufi, size) < size || bufi != S_FILEVERSION) { - error("File %s is not valid: ignored.", file_name); - error("This file may have been generated by an old version of fcron."); - error("In that case, you should try to use the converter given in the " - "source package, or install it again using fcrontab."); - goto err; - } - - if (read_type(fileno(ff), &type, &size) != OK || type != S_USER_T) { - error("Invalid binary fcrontab (no USER field)"); - goto err; - } - /* get the owner's name */ - /* we set cf->cf_user before for SE Linux, so we need to free it here */ - Free_safe(cf->cf_user); - if (read_strn(fileno(ff), &cf->cf_user, size) != OK) { - error("Cannot read user's name : file ignored"); - goto err; - } - if (runas != rootuid) { - /* we use file owner's name for more security (see above) */ - /* free the value obtained by read_strn() (we need to read it anyway - * to set the file ptr to the next thing to read) */ - Free_safe(cf->cf_user); - cf->cf_user = runas_str; - } - - /* get the time & date of the saving */ - /* a new file generated by fcrontab has t_save set to 0 */ - if (read_type(fileno(ff), &type, &size) != OK || type != S_TIMEDATE_T - || read(fileno(ff), &t_save, size) < size) { - error("could not get time and date of saving"); - goto err; - } - else { - debug("file saved at %lu.", t_save); - } - - if (cf->cf_env_list == NULL) - cf->cf_env_list = env_list_init(); - - Alloc(cl, cl_t); - /* main loop : read env variables, and lines */ - while (read_type(fileno(ff), &type, &size) == OK) { - /* action is determined by the type of the field */ - switch (type) { - - case S_ENVVAR_T: - /* read a env variable and add it to the env var list */ - { - char *envvar = NULL; - - /* Read_strn go to "err" on error */ - Read_strn(envvar, size, "Error while reading env var"); - debug(" Env: \"%s\"", envvar); - /* we do not allow USER or LOGNAME assignment. - * this was already checked by fcrontab, but we check again - * just in case... */ - if (strcmp_until(envvar, "USER", '=') == 0 - || strcmp_until(envvar, "LOGNAME", '=') == 0) { - error - ("USER or LOGNAME assignement is not allowed: ignored."); - } - else { - env_list_putenv(cf->cf_env_list, envvar, 1); - } - Free_safe(envvar); - } - break; - - case S_TZDIFF_T: - /* time diff between local (real) and system hour */ - Read(bufi, size, "Error while reading tzdiff field"); - cf->cf_tzdiff = (signed char)bufi; - break; - - case S_TZ_T: - /* read the timezone (string) in which the line should run */ - Read_strn(cl->cl_tz, size, "Error while reading timezone field"); - break; - - case S_SHELL_T: - Read_strn(cl->cl_shell, size, "Error while reading shell field"); - break; - - case S_RUNAS_T: - Read_strn(cl->cl_runas, size, "Error while reading runas field"); - break; - - case S_MAILTO_T: - Read_strn(cl->cl_mailto, size, "Error while reading mailto field"); - break; - - case S_NEXTEXE_T: - Read(bufi, size, "Error while reading nextexe field"); - cl->cl_nextexe = (time_t) bufi; - break; - - case S_FIRST_T: - Read(bufi, size, "Error while reading first field"); - cl->cl_first = (time_t) bufi; - has_read_cl_first = 1; - break; - - case S_OPTION_T: - if (size < OPTION_SIZE) - /* set the options not defined in the savefile to default */ - set_default_opt(cl->cl_option); - Read(cl->cl_option, size, "Error while reading option field"); - break; - - case S_NUMEXE_T: - Read(cl->cl_numexe, size, "Error while reading numexe field"); - break; - - case S_LAVG_T: - Read(cl->cl_lavg, size, "Error while reading lavg field"); - break; - - case S_UNTIL_T: - Read(bufi, size, "Error while reading until field"); - cl->cl_until = (time_t) bufi; - break; - - case S_NICE_T: - Read(cl->cl_nice, size, "Error while reading nice field"); - break; - - case S_RUNFREQ_T: - Read(bufi, size, "Error while reading runfreq field"); - cl->cl_runfreq = (unsigned short)bufi; - break; - - case S_REMAIN_T: - Read(bufi, size, "Error while reading remain field"); - cl->cl_remain = (unsigned short)bufi; - break; - - case S_TIMEFREQ_T: - Read(bufi, size, "Error while reading timefreq field"); - cl->cl_timefreq = (time_t) bufi; - break; - - case S_JITTER_T: - /* read the jitter (uchar) to use to set next execution time */ - Read(bufi, size, "Error while reading jitter field"); - cl->cl_jitter = (unsigned char)bufi; - break; - - case S_MINS_T: - Read(cl->cl_mins, size, "Error while reading mins field"); - break; - - case S_HRS_T: - Read(cl->cl_hrs, size, "Error while reading hrs field"); - break; - - case S_DAYS_T: - Read(cl->cl_days, size, "Error while reading days field"); - break; - - case S_MONS_T: - Read(cl->cl_mons, size, "Error while reading mons field"); - break; - - case S_DOW_T: - Read(cl->cl_dow, size, "Error while reading dow field"); - break; - - case S_ENDLINE_T: - if (is_freq(cl->cl_option) && !has_read_cl_first) { - /* Up to fcron 3.0.X, cl_first/S_FIRST_T was not saved for all @-lines */ - cl->cl_first = cl->cl_nextexe; - } - if (add_line_to_file - (cl, cf, runas, runas_str, t_save, is_system_startup) != 0) - free_line(cl); - Alloc(cl, cl_t); - break; - - /* default case in "switch(type)" */ - default: - error("Error while loading %s : unknown field type %d (ignored)", - file_name, type); - free_line(cl); - Alloc(cl, cl_t); - /* skip the data corresponding to the unknown field */ - { - /* we avoid using fseek(), as it seems not to work correctly - * on some systems when we use read() on the FILE stream */ - int i; - for (i = 0; i < size; i++) - if (getc(ff) == EOF) - goto err; - } - } - } - - /* free last cl Alloc : unused */ - Free_safe(cl); - - /* check for an error */ - if (ferror(ff) != 0) - error("file %s is truncated : you should reinstall it with fcrontab", - file_name); - - xfclose_check(&ff, file_name); - - return OK; - - err: - if (ff != NULL) - xfclose_check(&ff, file_name); - - if (cl != NULL && cl->cl_next == NULL) { - /* line is not yet in the line list of the file : free it */ - Free_safe(cl->cl_shell); - Free_safe(cl->cl_runas); - Free_safe(cl->cl_mailto); - Free_safe(cl); - } - - /* check if we have started to read the lines and env var */ - if (cl != NULL) { - /* insert the line in the file list in order to be able to free - * the memory using delete_file() */ - - cf->cf_next = file_base; - file_base = cf; - - delete_file(cf->cf_user); - - } - else { - Free_safe(cf->cf_user); - } - - return ERR; - -} - - -int -add_line_to_file(cl_t * cl, cf_t * cf, uid_t runas, char *runas_str, - time_t t_save, int is_system_startup) - /* check if the line is valid, and if yes, add it to the file cf */ -{ - time_t slept = now - t_save; - - if (cl->cl_shell == NULL || cl->cl_runas == NULL || cl->cl_mailto == NULL) { - error("Line is not valid (empty shell, runas or mailto field)" - " : ignored"); - return 1; - } - - /* set runas field if necessary (to improve security) */ - if (runas != rootuid) { - if (strcmp(cl->cl_runas, runas_str) != 0) - warn("warning: runas(%s) is not owner (%s): overridden.", - cl->cl_runas, runas_str); - Set(cl->cl_runas, runas_str); - } - - /* we need that here because the user's name contained in the - * struct cf_t may be required */ - cl->cl_file = cf; - - /* check if the mailto field is valid */ - if (cl->cl_mailto && (*(cl->cl_mailto) == '-' || - strcspn(cl->cl_mailto, - " \t\n") != strlen(cl->cl_mailto))) { - error("mailto field \'%s\' is not valid : set to owner %s.", - cl->cl_mailto, cl->cl_file->cf_user); - Set(cl->cl_mailto, cl->cl_file->cf_user); - } - - /* job has been stopped during execution: insert it in lavg or serial queue - * if it was in one at fcron's stops. */ - /* NOTE: runatreboot is prioritary over jobs that were still running - * when fcron stops, because the former will get run quicker as they are not - * put into the serial queue. runatreboot jobs will be handled later on. */ - if (cl->cl_numexe > 0 && !is_runatreboot(cl->cl_option)) { - - cl->cl_numexe = 0; - if (is_lavg(cl->cl_option)) { - if (!is_strict(cl->cl_option)) - add_lavg_job(cl, -1); - } - else if (is_serial(cl->cl_option) - || is_serial_once(cl->cl_option)) - add_serial_job(cl, -1); - else { - /* job has been stopped during execution : - * launch it again */ - warn("job '%s' did not finish : running it again.", cl->cl_shell); - set_serial_once(cl->cl_option); - add_serial_job(cl, -1); - } - } - - if (is_system_startup || is_volatile(cl->cl_option)) { - clear_hasrun(cl->cl_option); - } - - if (is_runonce(cl->cl_option) && is_hasrun(cl->cl_option)) { - /* if we get here, then is_system_startup is_volatile are both false */ - /* do nothing: don't re-schedule or add to the job queue */ - explain("job '%s' with runonce set has already run since last " - "system startup: not re-scheduling.", cl->cl_shell); - } - else if (is_td(cl->cl_option)) { - - /* set the time and date of the next execution */ - if (is_system_startup && is_runatreboot(cl->cl_option)) { - - if (is_notice_notrun(cl->cl_option)) { - - if (cl->cl_runfreq == 1) { - /* %-line */ - set_next_exe_notrun(cl, SYSDOWN_RUNATREBOOT); - } - else { - /* set next exe and mail user */ - time_t since = cl->cl_nextexe; - - cl->cl_nextexe = now; - mail_notrun_time_t(cl, SYSDOWN, since); - } - - } - else { - cl->cl_nextexe = now; - } - - insert_nextexe(cl); - - } - else if (cl->cl_nextexe <= now) { - if (cl->cl_nextexe == 0) - /* the is a line from a new file */ - set_next_exe(cl, NO_GOTO, -1); - else if (cl->cl_runfreq == 1 && is_notice_notrun(cl->cl_option)) - set_next_exe_notrun(cl, SYSDOWN); - else if (is_bootrun(cl->cl_option) && t_save != 0 - && cl->cl_runfreq != 1) { - if (cl->cl_remain > 0 && --cl->cl_remain > 0) { - debug(" cl_remain: %d", cl->cl_remain); - } - else { - /* run bootrun jobs */ - cl->cl_remain = cl->cl_runfreq; - debug(" boot-run '%s'", cl->cl_shell); - if (!is_lavg(cl->cl_option)) { - set_serial_once(cl->cl_option); - add_serial_job(cl, -1); - } - else - add_lavg_job(cl, -1); - } - set_next_exe(cl, STD, -1); - } - else { - if (is_notice_notrun(cl->cl_option)) { - /* set next exe and mail user */ - time_t since = cl->cl_nextexe; - - set_next_exe(cl, NO_GOTO, -1); - mail_notrun_time_t(cl, SYSDOWN, since); - - } - else - set_next_exe(cl, NO_GOTO, -1); - } - } - else { - /* value of nextexe is valid : just insert line in queue */ - insert_nextexe(cl); - } - } - else { /* is_td(cl->cl_option) */ - if (cl->cl_timefreq < 10) { - error("Invalid timefreq %ld for job '%s': setting to 1 day", - cl->cl_timefreq, cl->cl_shell); - cl->cl_timefreq = 3600 * 24; - } - - /* standard @-lines */ - if (is_system_startup && is_runatreboot(cl->cl_option)) { - cl->cl_nextexe = now; - } - /* t_save == 0 means this is a new file, hence a new line */ - else if (t_save == 0 || is_volatile(cl->cl_option) - || (is_system_startup && (is_rebootreset(cl->cl_option) - || is_runonce(cl->cl_option)))) { - /* cl_first is always saved to disk for a volatile line */ - if (cl->cl_first == LONG_MAX) { - cl->cl_nextexe = TIME_T_MAX; - } - else { - cl->cl_nextexe = now + cl->cl_first; - if (cl->cl_nextexe < now || cl->cl_nextexe > TIME_T_MAX) { - /* there was an integer overflow! */ - error - ("Error while setting next exe time for job '%s': cl_nextexe" - " overflowed (case1). now=%lu, cl_timefreq=%lu, cl_nextexe=%lu.", - cl->cl_shell, now, cl->cl_timefreq, cl->cl_nextexe); - error - ("Setting cl_nextexe to TIME_T_MAX to prevent an infinite loop."); - cl->cl_nextexe = TIME_T_MAX; - } - } - } - else { - if (cl->cl_nextexe != LONG_MAX) { - cl->cl_nextexe += slept; - if (cl->cl_nextexe < now || cl->cl_nextexe > TIME_T_MAX) { - /* either there was an integer overflow, or the slept time is incorrect - * (e.g. fcron didn't shut down cleanly and the fcrontab wasn't saved correctly) */ - error - ("Error while setting next exe time for job '%s': cl_nextexe" - " overflowed (case2). now=%lu, cl_timefreq=%lu, cl_nextexe=%lu. " - "Did fcron shut down cleanly?", - cl->cl_shell, now, cl->cl_timefreq, cl->cl_nextexe); - error - ("Setting cl_nextexe to now+cl_timefreq to prevent an infinite loop."); - cl->cl_nextexe = now + cl->cl_timefreq; - error("next execution will now be at %ld.", cl->cl_nextexe); - } - } - } - - insert_nextexe(cl); - } - - if (debug_opt && !(is_runonce(cl->cl_option) && is_hasrun(cl->cl_option))) { - struct tm *ftime; - ftime = localtime(&(cl->cl_nextexe)); - debug(" cmd '%s' next exec %04d-%02d-%02d wday:%d %02d:%02d:%02d" - " (system time)", - cl->cl_shell, (ftime->tm_year + 1900), (ftime->tm_mon + 1), - ftime->tm_mday, ftime->tm_wday, ftime->tm_hour, ftime->tm_min, - ftime->tm_sec); - } - - /* add the current line to the list, and allocate a new line */ - if ((cl->cl_id = next_id++) >= ULONG_MAX - 1) { - warn("Line id reached %ld: cycling back to zero.", ULONG_MAX); - next_id = 0; - } - cl->cl_next = cf->cf_line_base; - cf->cf_line_base = cl; - return 0; -} - -void -delete_file(const char *user_name) - /* free a file if user_name is not null - * otherwise free all files */ -{ - cf_t *file; - cf_t *prev_file = NULL; - cl_t *line; - cl_t *cur_line; - struct job_t *j = NULL; - struct job_t *prev_j; - int i, k; - struct cl_t **s_a = NULL; - exe_t *e = NULL; - lavg_t *l = NULL; - - file = file_base; - while (file != NULL) { - if (strcmp(user_name, file->cf_user) != 0) { - prev_file = file; - file = file->cf_next; - continue; - } - - for (e = exe_list_first(exe_list); e != NULL; - e = exe_list_next(exe_list)) - if (e->e_line != NULL && e->e_line->cl_file == file) { - /* we set the e_line to NULL, as so we know in wait_chld() - * and wait_all() the corresponding file has been removed. - * Plus, we decrement serial_running and lavg_serial_running - * as we won't be able to do it at the end of the job */ - if ((is_serial(e->e_line->cl_option) || - is_serial_once(e->e_line->cl_option)) && - !is_lavg(e->e_line->cl_option)) - serial_running--; - else if (is_serial(e->e_line->cl_option) && - is_lavg(e->e_line->cl_option)) - lavg_serial_running--; - e->e_line = NULL; - } - - /* free lavg queue entries */ - for (l = lavg_list_first(lavg_list); l != NULL; - l = lavg_list_next(lavg_list)) - if (l->l_line->cl_file == file) { - debug("removing '%s' from lavg queue", l->l_line->cl_shell); - lavg_list_remove_cur(lavg_list); - } - - /* free serial queue entries */ - for (i = 0; i < serial_array_size; i++) - if (serial_array[i] != NULL && serial_array[i]->cl_file == file) { - if (!s_a) { - s_a = - alloc_safe(serial_array_size * sizeof(cl_t *), - "serial queue"); - } - debug("removing '%s' from serial queue", - serial_array[i]->cl_shell); - serial_num--; - serial_array[i]->cl_numexe--; - serial_array[i] = NULL; - } - /* remove from queue and move the rest of the jobs to get - * a queue in order without empty entries */ - if (!s_a) - goto end_of_serial_recomputing; - - if ((k = serial_array_index + serial_num) >= serial_array_size) - k -= serial_array_size; - for (i = k = 0; i < serial_array_size; i++) { - if (serial_array_index + i < serial_array_size) { - if ((s_a[k] = serial_array[serial_array_index + i]) != NULL) - k++; - } - else if ((s_a[k] = - serial_array[serial_array_index + i - serial_array_size]) - != NULL) - k++; - } - Free_safe(serial_array); - serial_array = s_a; - serial_array_index = 0; - - end_of_serial_recomputing: - - /* free lines */ - cur_line = file->cf_line_base; - while ((line = cur_line) != NULL) { - cur_line = line->cl_next; - - /* remove from the main queue */ - prev_j = NULL; - for (j = queue_base; j != NULL; j = j->j_next) - if (j->j_line == line) { - if (prev_j != NULL) - prev_j->j_next = j->j_next; - else - queue_base = j->j_next; - Free_safe(j); - break; - } - else - prev_j = j; - - /* free line itself */ - free_line(line); - } - /* delete_file() MUST remove only the first occurrence : - * this is needed by synchronize_file() */ - break; - } - - if (file == NULL) - /* file not in the file list */ - return; - - /* remove file from file list */ - if (prev_file == NULL) - file_base = file->cf_next; - else - prev_file->cf_next = file->cf_next; - - /* free env variables */ - env_list_destroy(file->cf_env_list); - - /* finally free file itself */ - Free_safe(file->cf_user); - Free_safe(file); - -} - - -void -save_file(cf_t * arg_file) -/* Store the informations relatives to the executions - * of tasks at a defined frequency of system's running time */ -{ - cf_t *file = NULL; - cf_t *start_file = NULL; - - if (arg_file != NULL) - start_file = arg_file; - else - start_file = file_base; - - - for (file = start_file; file; file = file->cf_next) { - - debug("Saving %s...", file->cf_user); - - /* save the file safely : save it to a temporary name, then rename() it */ - /* chown the file to root:root : this file should only be read and - * modified by fcron (not fcrontab) */ - save_file_safe(file, file->cf_user, "fcron", rootuid, rootgid, now); - - if (arg_file != NULL) - /* we have to save only a single file */ - break; - } -} diff --git a/fcron-3.2.0/conf.h b/fcron-3.2.0/conf.h deleted file mode 100644 index 21e1268..0000000 --- a/fcron-3.2.0/conf.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - -#ifndef __CONF_H__ -#define __CONF_H__ - -/* functions prototypes */ -extern void reload_all(const char *dir_name); -extern void synchronize_dir(const char *dir_name, int is_system_startup); -extern void delete_file(const char *user_name); -extern void save_file(struct cf_t *file_name); - -#endif /* __CONF_H__ */ diff --git a/fcron-3.2.0/config.h.in b/fcron-3.2.0/config.h.in deleted file mode 100644 index 5fef4be..0000000 --- a/fcron-3.2.0/config.h.in +++ /dev/null @@ -1,523 +0,0 @@ -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - - -/* *********************************************************** */ -/* This file is destined to be edited to match your preference */ -/* *********************************************************** */ - - -/* ****************************************************************** */ -/* ****************************************************************** */ -/* beginning of configurable stuff ********************************** */ - - -#define DEFAULT_JOB_PATH "/usr/bin:/bin" /* Default PATH to use when running jobs*/ - -#define SENDMAIL_ARGS "-Ffcron", "-odi" /* args of mail command */ - -/* *** time *** */ -#define FIRST_SLEEP 20 /* fcron sleep at least this time after startup - * before executing a job, to avoid to run jobs - * during system boot */ - -#define LAVG_SLEEP 30 /* the time we sleep when some jobs are in lavg queue */ - -#define SAVE 1800 /* save every n seconds */ - -/* *** behavior *** */ -#define SERIAL_ONCE 0 /* can a job be several times in the serial queue at - * the same moment ? */ - -#define LAVG_ONCE 1 /* can a job be several times in the lavg queue at - * the same moment ? */ - -#define MAXYEAR_SCHEDULE_TIME 10 /* a job can't be scheduled further than - * now + MAXYEAR_SCHEDULE years. This is used - * to prevent infinite loop on corrupted lines */ - -/* *** memory *** */ -#define ENVVAR_INITIAL_SIZE 10 /* initial number of possible env var for a job - * if more env var are required, - * fcron will have to realloc() more memory */ -#define ENVVAR_GROW_SIZE 5 /* this is the number of entries that will be - * added to env_list each time it has to grow - * up */ - -#define EXE_INITIAL_SIZE 6 /* initial number of possible running job - * if more jobs have to be run simultaneously, - * fcron will have to realloc() more memory */ -#define EXE_GROW_SIZE 5 /* this is the number of entries that will be - * added to exe_array each time it has to grow - * up */ - -#define SERIAL_QUEUE_MAX 30 /* if serial queue contains this number of entries, - * the next serial job to be executed will be run - * non-serially each time a serial job is added */ -#define SERIAL_INITIAL_SIZE 10 /* initial number of possible serial job. If - * more jobs have to be in queue simultaneously, - * fcron will have to realloc() more memory */ -#define SERIAL_GROW_SIZE 10 /* this is the number of entries that will be - * added to serial queue each time it has to grow - * up */ - -#define SERIAL_MAX_RUNNING 1 /* fcron will run (by default) no more than this - * number of serial job simultaneously. - * (this may be overridden by fcron option -m */ - -#define LAVG_QUEUE_MAX 30 /* if lavg queue contains this number of entries, - * the next lavg job to be executed will be run - * before a new lavg job is added */ -#define LAVG_INITIAL_SIZE 10 /* initial number of possible lavg job. If - * more jobs have to be in queue simultaneously, - * fcron will have to calloc() more memory */ -#define LAVG_GROW_SIZE 10 /* this is the number of entries that will be - * added to lavg queue each time it has to grow - * up */ - - -#define MAXENTRIES 1024 /* max lines in non-root fcrontabs */ - -#define LINE_LEN 1024 /* max line length in user's config file */ -#define USER_NAME_LEN 128 /* max length of a user name */ -#define PATH_LEN 512 /* max length of a file path */ -#define SOCKET_MSG_LEN 20 /* max length of a socket msg (fcrondyn) */ - -/* WARNING : do not set this too low, or add some more tests in print_field, print_line, - * etc ... */ -#define TERM_LEN 196 /* max nb of char in a term line */ - -#define MAX_MSG 175 /* max length of a log message */ - -#define WRITE_BUF_LEN 1024 /* length of the buffer used for saving files to disk */ - - -/* *** socket *** */ -#define MAX_CONNECTION 25 /* max simultaneous connection allowed */ -#define MAX_IDLE_TIME 600 /* time (in sec) a socket stay idle before being closed */ -#define MAX_AUTH_TIME 60 /* time (in sec) before a socket is closed if not auth'ed */ -#define MAX_WAIT_TIME 10 /* time (in sec) we wait for data on a socket */ -#define MAX_AUTH_FAIL 10 /* auth nobody for some time if more than x fails */ -#define AUTH_WAIT 60 /* if too many fails, wait this time (seconds) before auth - * another client */ - - -/* *** system dependent *** */ -#define EXIT_ERR 1 /* code returned by fcron/fcrontab on error */ -#define EXIT_OK 0 /* code returned on normal exit */ - - -/* Syslog facility and priorities messages will be logged to (see syslog(3)) */ - -/* NOTE : if you change anything here, check if the doc should not - be updated -*/ -#define SYSLOG_FACILITY LOG_CRON -#define EXPLAIN_LEVEL LOG_NOTICE /* informational messages */ -#define WARNING_LEVEL LOG_WARNING /* warning messages */ -#define COMPLAIN_LEVEL LOG_ERR /* error messages */ -#define DEBUG_LEVEL LOG_DEBUG /* only used when DEBUG is defined */ - - -/* end of configurable stuff **************************************** */ -/* ****************************************************************** */ -/* ****************************************************************** */ - - -/* ****************************************************************** */ -/* ****************************************************************** */ -/* *** options which are set by configure script ******************** */ - -/* The following should not be edited manually (use configure options) - * If you must do it, BEWARE : some of the following is also defined - * in the Makefile, so you must modify config.h AND Makefile in order - * to set the same values in the two files. */ - -#undef VERSION_QUOTED -#undef COPYRIGHT_QUOTED - -#undef CFLAGS - -/* ****************************************************************** */ -/* *** paths *** */ - -#undef PROC - -/* ****************************************************************** */ -/* *** Compilation options *** */ - -#undef USE_SENDMAIL -/* 1 if we want to compile and install fcrondyn */ -#undef FCRONDYN -#undef NOLOADAVG -/* 1 if you want debug mode */ -#undef DEBUG -/* 1 if you want foreground mode by default */ -#undef FOREGROUND -#undef RUN_NON_PRIVILEGED - -/* Define if we should use sete[ug]id() funcs */ -#undef USE_SETE_ID - -/* root name and group */ -#undef ROOTNAME -#undef ROOTGROUP - -/* user and group name to run under */ -#undef USERNAME -#undef GROUPNAME - -/* special user for the system fcrontab */ -#undef SYSFCRONTAB - -/* ****************************************************************** */ -/* *** Types *** */ - -/* Define to empty if the keyword does not work. */ -#undef const - -/* Define to `int' if doesn't define. */ -#undef gid_t - -/* Define to `int' if doesn't define. */ -#undef pid_t - -/* Define to `unsigned' if doesn't define. */ -#undef size_t - -/* Define to `int' if doesn't define. */ -#undef uid_t - -/* Define as the return type of signal handlers (int or void). */ -#undef RETSIGTYPE - -/* Define if your struct nlist has an n_un member. */ -#undef NLIST_NAME_UNION - -/* Define for DGUX with . */ -#undef DGUX - -/* Define for Encore UMAX. */ -#undef UMAX - -/* Define for Encore UMAX 4.3 that has - instead of . */ -#undef UMAX4_3 - -/* Define on System V Release 4. */ -#undef SVR4 - -/* ****************************************************************** */ -/* *** Functions *** */ - -/* Define if you have the crypt function. */ -#undef HAVE_CRYPT - -/* Define if you have the flock function. */ -#undef HAVE_FLOCK - -/* Define if you have the lockf function. */ -#undef HAVE_LOCKF - -/* Define if your system has its own `getloadavg' function. */ -#undef HAVE_GETLOADAVG - -/* Define if the `getloadavg' function needs to be run setuid or setgid. */ -#undef GETLOADAVG_PRIVILEGED - -/* Define if you have the getcwd function. */ -#undef HAVE_GETCWD - -/* Define if you have the gethostname function. */ -#undef HAVE_GETHOSTNAME - -/* Define if you have the getopt_long function. */ -#undef HAVE_GETOPT_LONG - -/* Define if you have the getpeereid function. */ -#undef HAVE_GETPEEREID - -/* Define if you have the getpeerucred function. */ -#undef HAVE_GETPEERUCRED - -/* Define if you have the getspnam function. */ -#undef HAVE_GETSPNAM - -/* Define if you have the gettimeofday function. */ -#undef HAVE_GETTIMEOFDAY - -/* Define if you have the kstat* functions. */ -#undef HAVE_KSTAT - -/* Define if you have the mkstemp function. */ -#undef HAVE_MKSTEMP - -/* Define if you have the mktime function. */ -#undef HAVE_MKTIME - -/* Define if you have the putenv function. */ -#undef HAVE_PUTENV - -/* Define if (struct sockaddr) has an sa_len field. */ -#undef HAVE_SA_LEN - -/* Define if you have the setenv function. */ -#undef HAVE_SETENV - -/* Define if you have the setegid function. */ -#undef HAVE_SETEGID - -/* Define if you have the seteuid function. */ -#undef HAVE_SETEUID - -/* Define if you have the setlinebuf function. */ -#undef HAVE_SETLINEBUF - -/* Define if you have the setpriority function. */ -#undef HAVE_SETPRIORITY - -/* Define if you have the strerror function. */ -#undef HAVE_STRERROR - -/* Define if you have the setresgid function. */ -#undef HAVE_SETRESGID - -/* Define if you have the setresuid function. */ -#undef HAVE_SETRESUID - -/* Define if you have the signal function. */ -#undef HAVE_SIGNAL - -/* Define if you have the sigset function. */ -#undef HAVE_SIGSET - -/* Define if you have the strftime function. */ -#undef HAVE_STRFTIME - -/* Define if you have the wait3 system call. */ -#undef HAVE_WAIT3 - -/* ****************************************************************** */ -/* *** Headers *** */ - -/* Define if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - -/* Define if your declares struct tm. */ -#undef TM_IN_SYS_TIME - -/* Define if you have the header file. */ -#undef HAVE_CRED_H - -/* Define if you have the header file. */ -#undef HAVE_CRYPT_H - -/* Define if you have the header file. */ -#undef HAVE_DIRENT_H - -/* Define if you have the header file. */ -#undef HAVE_ERRNO_H - -/* Define if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define if you have the header file. */ -#undef HAVE_GETOPT_H - -/* Define if you have the header file. */ -#undef HAVE_GRP_H - -/* Define if you have the header file. */ -#undef HAVE_HISTORY_H - -/* Define if you have the header file. */ -#undef HAVE_LIBAUDIT_H - -/* Define if you have the header file. */ -#undef HAVE_READLINE_H - -/* Define if you have the header file. */ -#undef HAVE_READLINE_HISTORY_H - -/* Define if you have the header file. */ -#undef HAVE_READLINE_READLINE_H - -/* Define if you have the header file. */ -#undef HAVE_LIMITS_H - -/* Define if you have the header file. */ -#undef HAVE_MACH_MACH_H - -/* Define if you have the header file. */ -#undef HAVE_NDIR_H - -/* Define if you have the header file. */ -#undef HAVE_PAM_PAM_APPL_H - -/* Define if you have . */ -#undef HAVE_SHADOW_H - -/* Define if you have the unsetenv function. */ -#undef HAVE_UNSETENV - -/* Define if you have . */ -#undef NLIST_STRUCT - -/* Define if you have the header file. */ -#undef HAVE_SECURITY_PAM_APPL_H - -/* Define if you have the header file. */ -#undef HAVE_STDARG_H - -/* Define if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_CRED_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_DIR_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_FCNTL_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_FILE_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_IOCTL_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_NDIR_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_RESOURCE_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_SOCKET_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_UCRED_H - -/* Define if you have the header file. */ -#undef HAVE_SYS_UN_H - -/* Define if you have that is POSIX.1 compatible. */ -#undef HAVE_SYS_WAIT_H - -/* Define if you have the header file. */ -#undef HAVE_SYSLOG_H - -/* Define if you have the header file. */ -#undef HAVE_TERMIOS_H - -/* Define if you have the header file. */ -#undef HAVE_UCRED_H - -/* Define if you have the header file. */ -#undef HAVE_UNISTD_H - -/* ****************************************************************** */ -/* *** Libraries *** */ - -/* Define if you have the audit library (-laudit). */ -#undef HAVE_LIBAUDIT - -/* Define if you have the dgc library (-ldgc). */ -#undef HAVE_LIBDGC - -/* Define if you have the pam library (-lpam). */ -#undef HAVE_LIBPAM - -/* Define if you have the readline library. */ -#undef HAVE_LIBREADLINE - -/* Define if you have the readline history library. */ -#undef HAVE_READLINE_HISTORY - -/* Have audit trails (libaudit) support */ -#undef WITH_AUDIT - -/* Have SE Linux support */ -#undef WITH_SELINUX - -/* Define if you have the xnet library (-lxnet). */ -#undef HAVE_LIBXNET - -/* some systems (*BSD, ...) use O_FSYNC instead of O_SYNC for open() */ -#ifdef HAVE_FCNTL_H -#include -#elif HAVE_SYS_FCNTL_H -#include -#endif -#ifndef O_SYNC -#define O_SYNC O_FSYNC -#endif - -/* ****************************************************************** */ -/* *** Size of *** */ - -/* These SIZEOF_* constants are defined by the AC_CHECK_SIZEOF macro */ -#undef SIZEOF_TIME_T -#undef SIZEOF_PID_T -#undef SIZEOF_SHORT_INT -#undef SIZEOF_INT -#undef SIZEOF_LONG_INT -#undef SIZEOF_LONG_LONG_INT - -/* We need all these types in global.h to know which conversion string we whould - * use when reading a pid_t or a time_t */ -#ifndef SIZEOF_PID_T -#error "sizeof pid_t unknown." -#endif - -#ifndef SIZEOF_TIME_T -#error "sizeof time_t unknown." -#endif - -#ifndef SIZEOF_SHORT_INT -#error "sizeof short int unknown." -#endif - -#ifndef SIZEOF_INT -#error "sizeof int unknown." -#endif - -#ifndef SIZEOF_LONG_INT -#error "sizeof long int unknown." -#endif - -#ifndef SIZEOF_LONG_LONG_INT -#error "sizeof long long int unknown." -#endif - diff --git a/fcron-3.2.0/configure b/fcron-3.2.0/configure deleted file mode 100755 index 21a1184..0000000 --- a/fcron-3.2.0/configure +++ /dev/null @@ -1,9631 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69. -# -# -# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -as_fn_exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed `exec'. -$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= -PACKAGE_URL= - -ac_unique_file="allow.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='LTLIBOBJS -DSSSL_DIR -DB2MAN_AFTER -DB2MAN_BEFORE -DB2MAN_SPEC -SGMLSPL -NSGMLS -DB2MAN -JADE -USEPAM -ANSWERALL -BOOTINSTALL -DEBUG -SYSFCRONTAB -GROUPNAME -USERNAME -ROOTGROUP -ROOTNAME -FCRONDYN -RUN_NON_PRIVILEGED -SYSTEMD_DIR -PKG_CONFIG -DOCDIR -FCRONTABS -FIFOFILE -FIFODIR -REBOOT_LOCK -PIDFILE -PIDDIR -FCRON_EDITOR -FOUND_FCRON_EDITOR -FCRON_SHELL -FOUND_FCRON_SHELL -SENDMAIL -FOUND_SENDMAIL -GETLOADAVG_LIBS -KMEM_GROUP -NEED_SETGID -LIBOBJS -EGREP -GREP -CPP -STRIP -LN_S -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -MAKE -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -VERSION -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_checks -with_sendmail -with_shell -with_editor -with_piddir -with_fifodir -with_spooldir -with_proc -with_docdir -with_systemdsystemunitdir -with_run_non_privileged -with_fcrondyn -with_rootname -with_rootgroup -with_username -with_groupname -with_sysfcrontab -with_debug -with_boot_install -with_cflags -with_answer_all -with_audit -with_pam -with_selinux -with_db2man -with_db2man_spec -with_dsssl_dir -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --disable-checks Don't verify that programs exist on the host - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-sendmail=PATH Path to sendmail. - --with-shell=PATH Path to default shell (by default, path to sh). - --with-editor=PATH Path to default editor (by default, path to vi). - --with-piddir=PATH Directory containing pid files. - --with-fifodir=PATH Directory containing fifo files. - --with-spooldir=PATH Directory containing fcron spool (default PREFIX/var/spool/fcron). - --with-proc=PATH Directory where linux procfs is mounted (default /proc). - --with-docdir=PATH Directory containing documentation. - --with-systemdsystemunitdir=DIR Directory for systemd service files. - --with-run-non-privileged=yes|no Run fcron without root's rights (see FAQ !) - --with-fcrondyn=yes|no Compile (or not) fcrondyn (default: yes). - --with-rootname=USERNAME Root's username (default root) - --with-rootgroup=GROUPNAME Root's groupname (default root (or wheel)) - --with-username=USERNAME Username to run fcrontab under (default fcron) - --with-groupname=GROUPNAME Groupname to run fcrontab under (default fcron) - --with-sysfcrontab=NAME Use (or not) a system fcrontab (default: yes) - --with-debug=CFLAGS Use default debug flags or CFLAGS if given to compile fcron in debug mode. - --with-boot-install=yes|no Install (interactively) a boot script (default: yes). - --with-cflags=CFLAGS Use CFLAGS flags to compile fcron. - --with-answer-all=yes|no Answer the argument to every make install's questions. - --with-audit=yes|no Enable (or not) audit trails if available (default: yes). - --with-pam=yes|no Use (or not) PAM if available (default: yes). - --with-selinux=yes|no Use (or not) SELinux (default: yes). - --with-db2man=PATH(or 'no') set PATH to a docbook2man converter. - --with-db2man-spec=PATH set the PATH to docbook2man-spec file - (needed if no db2man converter is set). - --with-dsssl-dir=DIR change the default location of DSSSL stylesheets. - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.69 - -Copyright (C) 2012 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -# -------------------------------------------- -# Tries to find the compile-time value of EXPR in a program that includes -# INCLUDES, setting VAR accordingly. Returns whether the value could be -# computed -ac_fn_c_compute_int () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=0 ac_mid=0 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid; break -else - as_fn_arith $ac_mid + 1 && ac_lo=$as_val - if test $ac_lo -le $ac_mid; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) < 0)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=-1 ac_mid=-1 - while :; do - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_lo=$ac_mid; break -else - as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val - if test $ac_mid -le $ac_hi; then - ac_lo= ac_hi= - break - fi - as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - done -else - ac_lo= ac_hi= -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -while test "x$ac_lo" != "x$ac_hi"; do - as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -test_array [0] = 0; -return test_array [0]; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_hi=$ac_mid -else - as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -done -case $ac_lo in #(( -?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -'') ac_retval=1 ;; -esac - else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -static long int longval () { return $2; } -static unsigned long int ulongval () { return $2; } -#include -#include -int -main () -{ - - FILE *f = fopen ("conftest.val", "w"); - if (! f) - return 1; - if (($2) < 0) - { - long int i = longval (); - if (i != ($2)) - return 1; - fprintf (f, "%ld", i); - } - else - { - unsigned long int i = ulongval (); - if (i != ($2)) - return 1; - fprintf (f, "%lu", i); - } - /* Do not output a trailing newline, as this causes \r\n confusion - on some platforms. */ - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - echo >>conftest.val; read $3 &5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES -# ---------------------------------------------------- -# Tries to find if the field MEMBER exists in type AGGR, after including -# INCLUDES, setting cache variable VAR accordingly. -ac_fn_c_check_member () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -$as_echo_n "checking for $2.$3... " >&6; } -if eval \${$4+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main () -{ -static $2 ac_aggr; -if (ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$4=yes" -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main () -{ -static $2 ac_aggr; -if (sizeof ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$4=yes" -else - eval "$4=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$4 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_member -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_config_headers="$ac_config_headers config.h" - - -# =========================================================================== -# http://www.gnu.org/software/autoconf-archive/ax_lib_readline.html -# =========================================================================== -# -# SYNOPSIS -# -# AX_LIB_READLINE -# -# DESCRIPTION -# -# Searches for a readline compatible library. If found, defines -# `HAVE_LIBREADLINE'. If the found library has the `add_history' function, -# sets also `HAVE_READLINE_HISTORY'. Also checks for the locations of the -# necessary include files and sets `HAVE_READLINE_H' or -# `HAVE_READLINE_READLINE_H' and `HAVE_READLINE_HISTORY_H' or -# 'HAVE_HISTORY_H' if the corresponding include files exists. -# -# The libraries that may be readline compatible are `libedit', -# `libeditline' and `libreadline'. Sometimes we need to link a termcap -# library for readline to work, this macro tests these cases too by trying -# to link with `libtermcap', `libcurses' or `libncurses' before giving up. -# -# Here is an example of how to use the information provided by this macro -# to perform the necessary includes or declarations in a C file: -# -# #ifdef HAVE_LIBREADLINE -# # if defined(HAVE_READLINE_READLINE_H) -# # include -# # elif defined(HAVE_READLINE_H) -# # include -# # else /* !defined(HAVE_READLINE_H) */ -# extern char *readline (); -# # endif /* !defined(HAVE_READLINE_H) */ -# char *cmdline = NULL; -# #else /* !defined(HAVE_READLINE_READLINE_H) */ -# /* no readline */ -# #endif /* HAVE_LIBREADLINE */ -# -# #ifdef HAVE_READLINE_HISTORY -# # if defined(HAVE_READLINE_HISTORY_H) -# # include -# # elif defined(HAVE_HISTORY_H) -# # include -# # else /* !defined(HAVE_HISTORY_H) */ -# extern void add_history (); -# extern int write_history (); -# extern int read_history (); -# # endif /* defined(HAVE_READLINE_HISTORY_H) */ -# /* no history */ -# #endif /* HAVE_READLINE_HISTORY */ -# -# LICENSE -# -# Copyright (c) 2008 Ville Laurikari -# -# Copying and distribution of this file, with or without modification, are -# permitted in any medium without royalty provided the copyright notice -# and this notice are preserved. This file is offered as-is, without any -# warranty. - -#serial 6 - -# This is what autoupdate's m4 run will expand. It fires -# the warning (with _au_warn_XXX), outputs it into the -# updated configure.ac (with AC_DIAGNOSE), and then outputs -# the replacement expansion. - - -# This is an auxiliary macro that is also run when -# autoupdate runs m4. It simply calls m4_warning, but -# we need a wrapper so that each warning is emitted only -# once. We break the quoting in m4_warning's argument in -# order to expand this macro's arguments, not AU_DEFUN's. - - -# Finally, this is the expansion that is picked up by -# autoconf. It tells the user to run autoupdate, and -# then outputs the replacement expansion. We do not care -# about autoupdate's warning because that contains -# information on what to do *after* running autoupdate. - - - -vers="3.2.0" -vers_quoted="\"$vers\"" -cat >>confdefs.h <<_ACEOF -#define VERSION $vers -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define VERSION_QUOTED $vers_quoted -_ACEOF - -VERSION="$vers" - - -copyright_quoted="\"2000-2014\"" -cat >>confdefs.h <<_ACEOF -#define COPYRIGHT_QUOTED $copyright_quoted -_ACEOF - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -for ac_prog in $MAKE gmake make -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_MAKE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAKE in - [\\/]* | ?:[\\/]*) - ac_cv_path_MAKE="$MAKE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_MAKE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -MAKE=$ac_cv_path_MAKE -if test -n "$MAKE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAKE" >&5 -$as_echo "$MAKE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$MAKE" && break -done -test -n "$MAKE" || MAKE="$PATH:/local/bin:/usr/local/bin:/opt/TWWfsw/bin:/opt/sfw/bin" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if make is actually GNU Make" >&5 -$as_echo_n "checking if make is actually GNU Make... " >&6; } -if test x"$MAKE" = x; then - as_fn_error 1 "Cannot locate a make utility" "$LINENO" 5 -elif $MAKE --version 2>/dev/null |grep "^GNU Make" >/dev/null; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - as_fn_error 1 "$MAKE is not GNU Make. -Please install GNU Make or adjust your PATH so that GNU make can be found -before any others." "$LINENO" 5 -fi -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -for ac_prog in $STRIP strip -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $STRIP in - [\\/]* | ?:[\\/]*) - ac_cv_path_STRIP="$STRIP" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_STRIP="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -STRIP=$ac_cv_path_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$STRIP" && break -done -test -n "$STRIP" || STRIP="/usr/css/bin:$PATH:/local/bin:/usr/local/bin:/opt/TWWfsw/bin:/opt/sfw/bin" - - - - -ac_header_dirent=no -for ac_hdr in dirent.h sys/ndir.h sys/dir.h ndir.h; do - as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh` -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5 -$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; } -if eval \${$as_ac_Header+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include <$ac_hdr> - -int -main () -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$as_ac_Header=yes" -else - eval "$as_ac_Header=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$as_ac_Header - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_hdr" | $as_tr_cpp` 1 -_ACEOF - -ac_header_dirent=$ac_hdr; break -fi - -done -# Two versions of opendir et al. are in -ldir and -lx on SCO Xenix. -if test $ac_header_dirent = dirent.h; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' dir; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_opendir=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : - break -fi -done -if ${ac_cv_search_opendir+:} false; then : - -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5 -$as_echo_n "checking for library containing opendir... " >&6; } -if ${ac_cv_search_opendir+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char opendir (); -int -main () -{ -return opendir (); - ; - return 0; -} -_ACEOF -for ac_lib in '' x; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_opendir=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_opendir+:} false; then : - break -fi -done -if ${ac_cv_search_opendir+:} false; then : - -else - ac_cv_search_opendir=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_opendir" >&5 -$as_echo "$ac_cv_search_opendir" >&6; } -ac_res=$ac_cv_search_opendir -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -fi - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_GREP" || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - as_fn_executable_p "$ac_path_EGREP" || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5 -$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; } -if ${ac_cv_header_sys_wait_h+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#ifndef WEXITSTATUS -# define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8) -#endif -#ifndef WIFEXITED -# define WIFEXITED(stat_val) (((stat_val) & 255) == 0) -#endif - -int -main () -{ - int s; - wait (&s); - s = WIFEXITED (s) ? WEXITSTATUS (s) : 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_sys_wait_h=yes -else - ac_cv_header_sys_wait_h=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_sys_wait_h" >&5 -$as_echo "$ac_cv_header_sys_wait_h" >&6; } -if test $ac_cv_header_sys_wait_h = yes; then - -$as_echo "#define HAVE_SYS_WAIT_H 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in fcntl.h sys/file.h sys/ioctl.h sys/time.h syslog.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_header in errno.h sys/fcntl.h getopt.h limits.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_header in stdarg.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdarg.h" "ac_cv_header_stdarg_h" "$ac_includes_default" -if test "x$ac_cv_header_stdarg_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDARG_H 1 -_ACEOF - -fi - -done - -for ac_header in termios.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default" -if test "x$ac_cv_header_termios_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_TERMIOS_H 1 -_ACEOF - -fi - -done - -for ac_header in strings.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "strings.h" "ac_cv_header_strings_h" "$ac_includes_default" -if test "x$ac_cv_header_strings_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRINGS_H 1 -_ACEOF - -fi - -done - -for ac_header in sys/types.h sys/socket.h sys/un.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_header in security/pam_appl.h pam/pam_appl.h crypt.h shadow.h libaudit.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_header in sys/resource.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/resource.h" "ac_cv_header_sys_resource_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_resource_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_RESOURCE_H 1 -_ACEOF - -fi - -done - -for ac_header in grp.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "grp.h" "ac_cv_header_grp_h" "$ac_includes_default" -if test "x$ac_cv_header_grp_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GRP_H 1 -_ACEOF - -fi - -done - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 -$as_echo_n "checking size of time_t... " >&6; } -if ${ac_cv_sizeof_time_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_time_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (time_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_time_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5 -$as_echo "$ac_cv_sizeof_time_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_TIME_T $ac_cv_sizeof_time_t -_ACEOF - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -#ifndef __cplusplus - /* Ultrix mips cc rejects this sort of thing. */ - typedef int charset[2]; - const charset cs = { 0, 0 }; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this sort of thing. */ - char tx; - char *t = &tx; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; } bx; - struct s *b = &bx; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - -ac_fn_c_check_type "$LINENO" "pid_t" "ac_cv_type_pid_t" "$ac_includes_default" -if test "x$ac_cv_type_pid_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define pid_t int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if ${ac_cv_struct_tm+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_struct_tm=time.h -else - ac_cv_struct_tm=sys/time.h -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -$as_echo "$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for uid_t in sys/types.h" >&5 -$as_echo_n "checking for uid_t in sys/types.h... " >&6; } -if ${ac_cv_type_uid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "uid_t" >/dev/null 2>&1; then : - ac_cv_type_uid_t=yes -else - ac_cv_type_uid_t=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_uid_t" >&5 -$as_echo "$ac_cv_type_uid_t" >&6; } -if test $ac_cv_type_uid_t = no; then - -$as_echo "#define uid_t int" >>confdefs.h - - -$as_echo "#define gid_t int" >>confdefs.h - -fi - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of pid_t" >&5 -$as_echo_n "checking size of pid_t... " >&6; } -if ${ac_cv_sizeof_pid_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (pid_t))" "ac_cv_sizeof_pid_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_pid_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (pid_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_pid_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_pid_t" >&5 -$as_echo "$ac_cv_sizeof_pid_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_PID_T $ac_cv_sizeof_pid_t -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of time_t" >&5 -$as_echo_n "checking size of time_t... " >&6; } -if ${ac_cv_sizeof_time_t+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (time_t))" "ac_cv_sizeof_time_t" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_time_t" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (time_t) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_time_t=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_time_t" >&5 -$as_echo "$ac_cv_sizeof_time_t" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_TIME_T $ac_cv_sizeof_time_t -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of short int" >&5 -$as_echo_n "checking size of short int... " >&6; } -if ${ac_cv_sizeof_short_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (short int))" "ac_cv_sizeof_short_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_short_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (short int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_short_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_short_int" >&5 -$as_echo "$ac_cv_sizeof_short_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_SHORT_INT $ac_cv_sizeof_short_int -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of int" >&5 -$as_echo_n "checking size of int... " >&6; } -if ${ac_cv_sizeof_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (int))" "ac_cv_sizeof_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_int" >&5 -$as_echo "$ac_cv_sizeof_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_INT $ac_cv_sizeof_int -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long int" >&5 -$as_echo_n "checking size of long int... " >&6; } -if ${ac_cv_sizeof_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long int))" "ac_cv_sizeof_long_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_int" >&5 -$as_echo "$ac_cv_sizeof_long_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_INT $ac_cv_sizeof_long_int -_ACEOF - - -# The cast to long int works around a bug in the HP C Compiler -# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -# This bug is HP SR number 8606223364. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of long long int" >&5 -$as_echo_n "checking size of long long int... " >&6; } -if ${ac_cv_sizeof_long_long_int+:} false; then : - $as_echo_n "(cached) " >&6 -else - if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (long long int))" "ac_cv_sizeof_long_long_int" "$ac_includes_default"; then : - -else - if test "$ac_cv_type_long_long_int" = yes; then - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "cannot compute sizeof (long long int) -See \`config.log' for more details" "$LINENO" 5; } - else - ac_cv_sizeof_long_long_int=0 - fi -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_long_long_int" >&5 -$as_echo "$ac_cv_sizeof_long_long_int" >&6; } - - - -cat >>confdefs.h <<_ACEOF -#define SIZEOF_LONG_LONG_INT $ac_cv_sizeof_long_long_int -_ACEOF - - - -if test $ac_cv_c_compiler_gnu = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC needs -traditional" >&5 -$as_echo_n "checking whether $CC needs -traditional... " >&6; } -if ${ac_cv_prog_gcc_traditional+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_pattern="Autoconf.*'x'" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -Autoconf TIOCGETP -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then : - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -f conftest* - - - if test $ac_cv_prog_gcc_traditional = no; then - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -Autoconf TCGETA -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "$ac_pattern" >/dev/null 2>&1; then : - ac_cv_prog_gcc_traditional=yes -fi -rm -f conftest* - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_gcc_traditional" >&5 -$as_echo "$ac_cv_prog_gcc_traditional" >&6; } - if test $ac_cv_prog_gcc_traditional = yes; then - CC="$CC -traditional" - fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 -$as_echo_n "checking for working memcmp... " >&6; } -if ${ac_cv_func_memcmp_working+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_memcmp_working=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = '\100', c1 = '\200', c2 = '\201'; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - return 1; - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - return 1; - } - return 0; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_memcmp_working=yes -else - ac_cv_func_memcmp_working=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 -$as_echo "$ac_cv_func_memcmp_working" >&6; } -test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" - ;; -esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking return type of signal handlers" >&5 -$as_echo_n "checking return type of signal handlers... " >&6; } -if ${ac_cv_type_signal+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -return *(signal (0, 0)) (0) == 1; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_type_signal=int -else - ac_cv_type_signal=void -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_type_signal" >&5 -$as_echo "$ac_cv_type_signal" >&6; } - -cat >>confdefs.h <<_ACEOF -#define RETSIGTYPE $ac_cv_type_signal -_ACEOF - - -for ac_func in strftime -do : - ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" -if test "x$ac_cv_func_strftime" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRFTIME 1 -_ACEOF - -else - # strftime is in -lintl on SCO UNIX. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 -$as_echo_n "checking for strftime in -lintl... " >&6; } -if ${ac_cv_lib_intl_strftime+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strftime (); -int -main () -{ -return strftime (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_strftime=yes -else - ac_cv_lib_intl_strftime=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 -$as_echo "$ac_cv_lib_intl_strftime" >&6; } -if test "x$ac_cv_lib_intl_strftime" = xyes; then : - $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h - -LIBS="-lintl $LIBS" -fi - -fi -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for wait3 that fills in rusage" >&5 -$as_echo_n "checking for wait3 that fills in rusage... " >&6; } -if ${ac_cv_func_wait3_rusage+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_wait3_rusage=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -#include -#include -#include -/* HP-UX has wait3 but does not fill in rusage at all. */ -int -main () -{ - struct rusage r; - int i; - /* Use a field that we can force nonzero -- - voluntary context switches. - For systems like NeXT and OSF/1 that don't set it, - also use the system CPU time. And page faults (I/O) for Linux. */ - r.ru_nvcsw = 0; - r.ru_stime.tv_sec = 0; - r.ru_stime.tv_usec = 0; - r.ru_majflt = r.ru_minflt = 0; - switch (fork ()) - { - case 0: /* Child. */ - sleep(1); /* Give up the CPU. */ - _exit(0); - break; - case -1: /* What can we do? */ - _exit(0); - break; - default: /* Parent. */ - wait3(&i, 0, &r); - /* Avoid "text file busy" from rm on fast HP-UX machines. */ - sleep(2); - return (r.ru_nvcsw == 0 && r.ru_majflt == 0 && r.ru_minflt == 0 - && r.ru_stime.tv_sec == 0 && r.ru_stime.tv_usec == 0); - } -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_wait3_rusage=yes -else - ac_cv_func_wait3_rusage=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_wait3_rusage" >&5 -$as_echo "$ac_cv_func_wait3_rusage" >&6; } -if test $ac_cv_func_wait3_rusage = yes; then - -$as_echo "#define HAVE_WAIT3 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for shutdown in -lxnet" >&5 -$as_echo_n "checking for shutdown in -lxnet... " >&6; } -if ${ac_cv_lib_xnet_shutdown+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lxnet $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shutdown (); -int -main () -{ -return shutdown (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_xnet_shutdown=yes -else - ac_cv_lib_xnet_shutdown=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_xnet_shutdown" >&5 -$as_echo "$ac_cv_lib_xnet_shutdown" >&6; } -if test "x$ac_cv_lib_xnet_shutdown" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBXNET 1 -_ACEOF - - LIBS="-lxnet $LIBS" - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for getcon in -lselinux" >&5 -$as_echo_n "checking for getcon in -lselinux... " >&6; } -if ${ac_cv_lib_selinux_getcon+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lselinux $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char getcon (); -int -main () -{ -return getcon (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_selinux_getcon=yes -else - ac_cv_lib_selinux_getcon=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_selinux_getcon" >&5 -$as_echo "$ac_cv_lib_selinux_getcon" >&6; } -if test "x$ac_cv_lib_selinux_getcon" = xyes; then : - selinuxavail=1 -else - selinuxavail=0 -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for audit_open in -laudit" >&5 -$as_echo_n "checking for audit_open in -laudit... " >&6; } -if ${ac_cv_lib_audit_audit_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-laudit $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char audit_open (); -int -main () -{ -return audit_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_audit_audit_open=yes -else - ac_cv_lib_audit_audit_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_audit_audit_open" >&5 -$as_echo "$ac_cv_lib_audit_audit_open" >&6; } -if test "x$ac_cv_lib_audit_audit_open" = xyes; then : - auditavail=1 -else - auditavail=0 -fi - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a readline compatible library" >&5 -$as_echo_n "checking for a readline compatible library... " >&6; } -if ${ax_cv_lib_readline+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ORIG_LIBS="$LIBS" - for readline_lib in readline edit editline; do - for termcap_lib in "" termcap curses ncurses; do - if test -z "$termcap_lib"; then - TRY_LIB="-l$readline_lib" - else - TRY_LIB="-l$readline_lib -l$termcap_lib" - fi - LIBS="$ORIG_LIBS $TRY_LIB" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char readline (); -int -main () -{ -return readline (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ax_cv_lib_readline="$TRY_LIB" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -n "$ax_cv_lib_readline"; then - break - fi - done - if test -n "$ax_cv_lib_readline"; then - break - fi - done - if test -z "$ax_cv_lib_readline"; then - ax_cv_lib_readline="no" - fi - LIBS="$ORIG_LIBS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_lib_readline" >&5 -$as_echo "$ax_cv_lib_readline" >&6; } - - if test "$ax_cv_lib_readline" != "no"; then - LIBS="$LIBS $ax_cv_lib_readline" - -$as_echo "#define HAVE_LIBREADLINE 1" >>confdefs.h - - for ac_header in readline.h readline/readline.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether readline supports history" >&5 -$as_echo_n "checking whether readline supports history... " >&6; } -if ${ax_cv_lib_readline_history+:} false; then : - $as_echo_n "(cached) " >&6 -else - - ax_cv_lib_readline_history="no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char add_history (); -int -main () -{ -return add_history (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ax_cv_lib_readline_history="yes" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_lib_readline_history" >&5 -$as_echo "$ax_cv_lib_readline_history" >&6; } - if test "$ax_cv_lib_readline_history" = "yes"; then - -$as_echo "#define HAVE_READLINE_HISTORY 1" >>confdefs.h - - for ac_header in history.h readline/history.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - fi - fi - -ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" -if test "x$ac_cv_func_getloadavg" = xyes; then : - getloadavg=1 -else - getloadavg=0 -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 -$as_echo_n "checking for kstat_open in -lkstat... " >&6; } -if ${ac_cv_lib_kstat_kstat_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkstat $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char kstat_open (); -int -main () -{ -return kstat_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_kstat_kstat_open=yes -else - ac_cv_lib_kstat_kstat_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 -$as_echo "$ac_cv_lib_kstat_kstat_open" >&6; } -if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then : - kstat=1 -else - kstat=0 -fi - -if test $getloadavg -eq 1; then - ac_have_func=no # yes means we've found a way to get the load average. - -# Make sure getloadavg.c is where it belongs, at configure-time. -test -f "$srcdir/$ac_config_libobj_dir/getloadavg.c" || - as_fn_error $? "$srcdir/$ac_config_libobj_dir/getloadavg.c is missing" "$LINENO" 5 - -ac_save_LIBS=$LIBS - -# Check for getloadavg, but be sure not to touch the cache variable. -(ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" -if test "x$ac_cv_func_getloadavg" = xyes; then : - exit 0 -else - exit 1 -fi -) && ac_have_func=yes - -# On HPUX9, an unprivileged user can get load averages through this function. -for ac_func in pstat_getdynamic -do : - ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" -if test "x$ac_cv_func_pstat_getdynamic" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PSTAT_GETDYNAMIC 1 -_ACEOF - -fi -done - - -# Solaris has libkstat which does not require root. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 -$as_echo_n "checking for kstat_open in -lkstat... " >&6; } -if ${ac_cv_lib_kstat_kstat_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkstat $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char kstat_open (); -int -main () -{ -return kstat_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_kstat_kstat_open=yes -else - ac_cv_lib_kstat_kstat_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 -$as_echo "$ac_cv_lib_kstat_kstat_open" >&6; } -if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBKSTAT 1 -_ACEOF - - LIBS="-lkstat $LIBS" - -fi - -test $ac_cv_lib_kstat_kstat_open = yes && ac_have_func=yes - -# Some systems with -lutil have (and need) -lkvm as well, some do not. -# On Solaris, -lkvm requires nlist from -lelf, so check that first -# to get the right answer into the cache. -# For kstat on solaris, we need libelf to force the definition of SVR4 below. -if test $ac_have_func = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 -$as_echo_n "checking for elf_begin in -lelf... " >&6; } -if ${ac_cv_lib_elf_elf_begin+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lelf $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char elf_begin (); -int -main () -{ -return elf_begin (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_elf_elf_begin=yes -else - ac_cv_lib_elf_elf_begin=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 -$as_echo "$ac_cv_lib_elf_elf_begin" >&6; } -if test "x$ac_cv_lib_elf_elf_begin" = xyes; then : - LIBS="-lelf $LIBS" -fi - -fi -if test $ac_have_func = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 -$as_echo_n "checking for kvm_open in -lkvm... " >&6; } -if ${ac_cv_lib_kvm_kvm_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkvm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char kvm_open (); -int -main () -{ -return kvm_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_kvm_kvm_open=yes -else - ac_cv_lib_kvm_kvm_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 -$as_echo "$ac_cv_lib_kvm_kvm_open" >&6; } -if test "x$ac_cv_lib_kvm_kvm_open" = xyes; then : - LIBS="-lkvm $LIBS" -fi - - # Check for the 4.4BSD definition of getloadavg. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 -$as_echo_n "checking for getloadavg in -lutil... " >&6; } -if ${ac_cv_lib_util_getloadavg+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char getloadavg (); -int -main () -{ -return getloadavg (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_util_getloadavg=yes -else - ac_cv_lib_util_getloadavg=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 -$as_echo "$ac_cv_lib_util_getloadavg" >&6; } -if test "x$ac_cv_lib_util_getloadavg" = xyes; then : - LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes -fi - -fi - -if test $ac_have_func = no; then - # There is a commonly available library for RS/6000 AIX. - # Since it is not a standard part of AIX, it might be installed locally. - ac_getloadavg_LIBS=$LIBS - LIBS="-L/usr/local/lib $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 -$as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; } -if ${ac_cv_lib_getloadavg_getloadavg+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgetloadavg $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char getloadavg (); -int -main () -{ -return getloadavg (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_getloadavg_getloadavg=yes -else - ac_cv_lib_getloadavg_getloadavg=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 -$as_echo "$ac_cv_lib_getloadavg_getloadavg" >&6; } -if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes; then : - LIBS="-lgetloadavg $LIBS" -else - LIBS=$ac_getloadavg_LIBS -fi - -fi - -# Make sure it is really in the library, if we think we found it, -# otherwise set up the replacement function. -for ac_func in getloadavg -do : - ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" -if test "x$ac_cv_func_getloadavg" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETLOADAVG 1 -_ACEOF - -else - case " $LIBOBJS " in - *" getloadavg.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS getloadavg.$ac_objext" - ;; -esac - - -$as_echo "#define C_GETLOADAVG 1" >>confdefs.h - -# Figure out what our getloadavg.c needs. -ac_have_func=no -ac_fn_c_check_header_mongrel "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes; then : - ac_have_func=yes - -$as_echo "#define DGUX 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 -$as_echo_n "checking for dg_sys_info in -ldgc... " >&6; } -if ${ac_cv_lib_dgc_dg_sys_info+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldgc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dg_sys_info (); -int -main () -{ -return dg_sys_info (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dgc_dg_sys_info=yes -else - ac_cv_lib_dgc_dg_sys_info=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 -$as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; } -if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDGC 1 -_ACEOF - - LIBS="-ldgc $LIBS" - -fi - -fi - - - -ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" -if test "x$ac_cv_header_locale_h" = xyes; then : - -fi - - -for ac_func in setlocale -do : - ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" -if test "x$ac_cv_func_setlocale" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETLOCALE 1 -_ACEOF - -fi -done - - -# We cannot check for , because Solaris 2 does not use dwarf (it -# uses stabs), but it is still SVR4. We cannot check for because -# Irix 4.0.5F has the header but not the library. -if test $ac_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes \ - && test "$ac_cv_lib_kvm_kvm_open" = yes; then - ac_have_func=yes - -$as_echo "#define SVR4 1" >>confdefs.h - -fi - -if test $ac_have_func = no; then - ac_fn_c_check_header_mongrel "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" -if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes; then : - ac_have_func=yes - -$as_echo "#define UMAX 1" >>confdefs.h - - -$as_echo "#define UMAX4_3 1" >>confdefs.h - -fi - - -fi - -if test $ac_have_func = no; then - ac_fn_c_check_header_mongrel "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_cpustats_h" = xyes; then : - ac_have_func=yes; $as_echo "#define UMAX 1" >>confdefs.h - -fi - - -fi - -if test $ac_have_func = no; then - for ac_header in mach/mach.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" -if test "x$ac_cv_header_mach_mach_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MACH_MACH_H 1 -_ACEOF - -fi - -done - -fi - -for ac_header in nlist.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" -if test "x$ac_cv_header_nlist_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NLIST_H 1 -_ACEOF - ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include -" -if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1 -_ACEOF - - -$as_echo "#define NLIST_NAME_UNION 1" >>confdefs.h - -fi - - -fi - -done - -fi -done - - -# Some definitions of getloadavg require that the program be installed setgid. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getloadavg requires setgid" >&5 -$as_echo_n "checking whether getloadavg requires setgid... " >&6; } -if ${ac_cv_func_getloadavg_setgid+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include "$srcdir/$ac_config_libobj_dir/getloadavg.c" -#ifdef LDAV_PRIVILEGED -Yowza Am I SETGID yet -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Yowza Am I SETGID yet" >/dev/null 2>&1; then : - ac_cv_func_getloadavg_setgid=yes -else - ac_cv_func_getloadavg_setgid=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getloadavg_setgid" >&5 -$as_echo "$ac_cv_func_getloadavg_setgid" >&6; } -if test $ac_cv_func_getloadavg_setgid = yes; then - NEED_SETGID=true - -$as_echo "#define GETLOADAVG_PRIVILEGED 1" >>confdefs.h - -else - NEED_SETGID=false -fi - -if test $ac_cv_func_getloadavg_setgid = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking group of /dev/kmem" >&5 -$as_echo_n "checking group of /dev/kmem... " >&6; } -if ${ac_cv_group_kmem+:} false; then : - $as_echo_n "(cached) " >&6 -else - # On Solaris, /dev/kmem is a symlink. Get info on the real file. - ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null` - # If we got an error (system does not support symlinks), try without -L. - test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem` - ac_cv_group_kmem=`$as_echo "$ac_ls_output" \ - | sed -ne 's/[ ][ ]*/ /g; - s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\) *.*/\1/; - / /s/.* //;p;'` - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_group_kmem" >&5 -$as_echo "$ac_cv_group_kmem" >&6; } - KMEM_GROUP=$ac_cv_group_kmem -fi -if test "x$ac_save_LIBS" = x; then - GETLOADAVG_LIBS=$LIBS -else - GETLOADAVG_LIBS=`$as_echo "$LIBS" | sed "s|$ac_save_LIBS||"` -fi -LIBS=$ac_save_LIBS - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking function to use for lavg* options" >&5 -$as_echo_n "checking function to use for lavg* options... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: getloadavg()" >&5 -$as_echo "getloadavg()" >&6; } -elif test $kstat -eq 1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking function to use for lavg* options" >&5 -$as_echo_n "checking function to use for lavg* options... " >&6; } - LIBS="$LIBS -lkstat" - case " $LIBOBJS " in - *" getloadavg.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS getloadavg.$ac_objext" - ;; -esac - - cat >>confdefs.h <<_ACEOF -#define HAVE_KSTAT 1 -_ACEOF - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: kstat" >&5 -$as_echo "kstat" >&6; } -else - ac_have_func=no # yes means we've found a way to get the load average. - -# Make sure getloadavg.c is where it belongs, at configure-time. -test -f "$srcdir/$ac_config_libobj_dir/getloadavg.c" || - as_fn_error $? "$srcdir/$ac_config_libobj_dir/getloadavg.c is missing" "$LINENO" 5 - -ac_save_LIBS=$LIBS - -# Check for getloadavg, but be sure not to touch the cache variable. -(ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" -if test "x$ac_cv_func_getloadavg" = xyes; then : - exit 0 -else - exit 1 -fi -) && ac_have_func=yes - -# On HPUX9, an unprivileged user can get load averages through this function. -for ac_func in pstat_getdynamic -do : - ac_fn_c_check_func "$LINENO" "pstat_getdynamic" "ac_cv_func_pstat_getdynamic" -if test "x$ac_cv_func_pstat_getdynamic" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PSTAT_GETDYNAMIC 1 -_ACEOF - -fi -done - - -# Solaris has libkstat which does not require root. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for kstat_open in -lkstat" >&5 -$as_echo_n "checking for kstat_open in -lkstat... " >&6; } -if ${ac_cv_lib_kstat_kstat_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkstat $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char kstat_open (); -int -main () -{ -return kstat_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_kstat_kstat_open=yes -else - ac_cv_lib_kstat_kstat_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kstat_kstat_open" >&5 -$as_echo "$ac_cv_lib_kstat_kstat_open" >&6; } -if test "x$ac_cv_lib_kstat_kstat_open" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBKSTAT 1 -_ACEOF - - LIBS="-lkstat $LIBS" - -fi - -test $ac_cv_lib_kstat_kstat_open = yes && ac_have_func=yes - -# Some systems with -lutil have (and need) -lkvm as well, some do not. -# On Solaris, -lkvm requires nlist from -lelf, so check that first -# to get the right answer into the cache. -# For kstat on solaris, we need libelf to force the definition of SVR4 below. -if test $ac_have_func = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for elf_begin in -lelf" >&5 -$as_echo_n "checking for elf_begin in -lelf... " >&6; } -if ${ac_cv_lib_elf_elf_begin+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lelf $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char elf_begin (); -int -main () -{ -return elf_begin (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_elf_elf_begin=yes -else - ac_cv_lib_elf_elf_begin=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_elf_elf_begin" >&5 -$as_echo "$ac_cv_lib_elf_elf_begin" >&6; } -if test "x$ac_cv_lib_elf_elf_begin" = xyes; then : - LIBS="-lelf $LIBS" -fi - -fi -if test $ac_have_func = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for kvm_open in -lkvm" >&5 -$as_echo_n "checking for kvm_open in -lkvm... " >&6; } -if ${ac_cv_lib_kvm_kvm_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lkvm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char kvm_open (); -int -main () -{ -return kvm_open (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_kvm_kvm_open=yes -else - ac_cv_lib_kvm_kvm_open=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_kvm_kvm_open" >&5 -$as_echo "$ac_cv_lib_kvm_kvm_open" >&6; } -if test "x$ac_cv_lib_kvm_kvm_open" = xyes; then : - LIBS="-lkvm $LIBS" -fi - - # Check for the 4.4BSD definition of getloadavg. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lutil" >&5 -$as_echo_n "checking for getloadavg in -lutil... " >&6; } -if ${ac_cv_lib_util_getloadavg+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char getloadavg (); -int -main () -{ -return getloadavg (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_util_getloadavg=yes -else - ac_cv_lib_util_getloadavg=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_getloadavg" >&5 -$as_echo "$ac_cv_lib_util_getloadavg" >&6; } -if test "x$ac_cv_lib_util_getloadavg" = xyes; then : - LIBS="-lutil $LIBS" ac_have_func=yes ac_cv_func_getloadavg_setgid=yes -fi - -fi - -if test $ac_have_func = no; then - # There is a commonly available library for RS/6000 AIX. - # Since it is not a standard part of AIX, it might be installed locally. - ac_getloadavg_LIBS=$LIBS - LIBS="-L/usr/local/lib $LIBS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for getloadavg in -lgetloadavg" >&5 -$as_echo_n "checking for getloadavg in -lgetloadavg... " >&6; } -if ${ac_cv_lib_getloadavg_getloadavg+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgetloadavg $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char getloadavg (); -int -main () -{ -return getloadavg (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_getloadavg_getloadavg=yes -else - ac_cv_lib_getloadavg_getloadavg=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_getloadavg_getloadavg" >&5 -$as_echo "$ac_cv_lib_getloadavg_getloadavg" >&6; } -if test "x$ac_cv_lib_getloadavg_getloadavg" = xyes; then : - LIBS="-lgetloadavg $LIBS" -else - LIBS=$ac_getloadavg_LIBS -fi - -fi - -# Make sure it is really in the library, if we think we found it, -# otherwise set up the replacement function. -for ac_func in getloadavg -do : - ac_fn_c_check_func "$LINENO" "getloadavg" "ac_cv_func_getloadavg" -if test "x$ac_cv_func_getloadavg" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETLOADAVG 1 -_ACEOF - -else - case " $LIBOBJS " in - *" getloadavg.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS getloadavg.$ac_objext" - ;; -esac - - -$as_echo "#define C_GETLOADAVG 1" >>confdefs.h - -# Figure out what our getloadavg.c needs. -ac_have_func=no -ac_fn_c_check_header_mongrel "$LINENO" "sys/dg_sys_info.h" "ac_cv_header_sys_dg_sys_info_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_dg_sys_info_h" = xyes; then : - ac_have_func=yes - -$as_echo "#define DGUX 1" >>confdefs.h - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dg_sys_info in -ldgc" >&5 -$as_echo_n "checking for dg_sys_info in -ldgc... " >&6; } -if ${ac_cv_lib_dgc_dg_sys_info+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldgc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dg_sys_info (); -int -main () -{ -return dg_sys_info (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dgc_dg_sys_info=yes -else - ac_cv_lib_dgc_dg_sys_info=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dgc_dg_sys_info" >&5 -$as_echo "$ac_cv_lib_dgc_dg_sys_info" >&6; } -if test "x$ac_cv_lib_dgc_dg_sys_info" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBDGC 1 -_ACEOF - - LIBS="-ldgc $LIBS" - -fi - -fi - - - -ac_fn_c_check_header_mongrel "$LINENO" "locale.h" "ac_cv_header_locale_h" "$ac_includes_default" -if test "x$ac_cv_header_locale_h" = xyes; then : - -fi - - -for ac_func in setlocale -do : - ac_fn_c_check_func "$LINENO" "setlocale" "ac_cv_func_setlocale" -if test "x$ac_cv_func_setlocale" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETLOCALE 1 -_ACEOF - -fi -done - - -# We cannot check for , because Solaris 2 does not use dwarf (it -# uses stabs), but it is still SVR4. We cannot check for because -# Irix 4.0.5F has the header but not the library. -if test $ac_have_func = no && test "$ac_cv_lib_elf_elf_begin" = yes \ - && test "$ac_cv_lib_kvm_kvm_open" = yes; then - ac_have_func=yes - -$as_echo "#define SVR4 1" >>confdefs.h - -fi - -if test $ac_have_func = no; then - ac_fn_c_check_header_mongrel "$LINENO" "inq_stats/cpustats.h" "ac_cv_header_inq_stats_cpustats_h" "$ac_includes_default" -if test "x$ac_cv_header_inq_stats_cpustats_h" = xyes; then : - ac_have_func=yes - -$as_echo "#define UMAX 1" >>confdefs.h - - -$as_echo "#define UMAX4_3 1" >>confdefs.h - -fi - - -fi - -if test $ac_have_func = no; then - ac_fn_c_check_header_mongrel "$LINENO" "sys/cpustats.h" "ac_cv_header_sys_cpustats_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_cpustats_h" = xyes; then : - ac_have_func=yes; $as_echo "#define UMAX 1" >>confdefs.h - -fi - - -fi - -if test $ac_have_func = no; then - for ac_header in mach/mach.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "mach/mach.h" "ac_cv_header_mach_mach_h" "$ac_includes_default" -if test "x$ac_cv_header_mach_mach_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MACH_MACH_H 1 -_ACEOF - -fi - -done - -fi - -for ac_header in nlist.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "nlist.h" "ac_cv_header_nlist_h" "$ac_includes_default" -if test "x$ac_cv_header_nlist_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_NLIST_H 1 -_ACEOF - ac_fn_c_check_member "$LINENO" "struct nlist" "n_un.n_name" "ac_cv_member_struct_nlist_n_un_n_name" "#include -" -if test "x$ac_cv_member_struct_nlist_n_un_n_name" = xyes; then : - -cat >>confdefs.h <<_ACEOF -#define HAVE_STRUCT_NLIST_N_UN_N_NAME 1 -_ACEOF - - -$as_echo "#define NLIST_NAME_UNION 1" >>confdefs.h - -fi - - -fi - -done - -fi -done - - -# Some definitions of getloadavg require that the program be installed setgid. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether getloadavg requires setgid" >&5 -$as_echo_n "checking whether getloadavg requires setgid... " >&6; } -if ${ac_cv_func_getloadavg_setgid+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include "$srcdir/$ac_config_libobj_dir/getloadavg.c" -#ifdef LDAV_PRIVILEGED -Yowza Am I SETGID yet -#endif -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "Yowza Am I SETGID yet" >/dev/null 2>&1; then : - ac_cv_func_getloadavg_setgid=yes -else - ac_cv_func_getloadavg_setgid=no -fi -rm -f conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_getloadavg_setgid" >&5 -$as_echo "$ac_cv_func_getloadavg_setgid" >&6; } -if test $ac_cv_func_getloadavg_setgid = yes; then - NEED_SETGID=true - -$as_echo "#define GETLOADAVG_PRIVILEGED 1" >>confdefs.h - -else - NEED_SETGID=false -fi - -if test $ac_cv_func_getloadavg_setgid = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking group of /dev/kmem" >&5 -$as_echo_n "checking group of /dev/kmem... " >&6; } -if ${ac_cv_group_kmem+:} false; then : - $as_echo_n "(cached) " >&6 -else - # On Solaris, /dev/kmem is a symlink. Get info on the real file. - ac_ls_output=`ls -lgL /dev/kmem 2>/dev/null` - # If we got an error (system does not support symlinks), try without -L. - test -z "$ac_ls_output" && ac_ls_output=`ls -lg /dev/kmem` - ac_cv_group_kmem=`$as_echo "$ac_ls_output" \ - | sed -ne 's/[ ][ ]*/ /g; - s/^.[sSrwx-]* *[0-9]* *\([^0-9]*\) *.*/\1/; - / /s/.* //;p;'` - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_group_kmem" >&5 -$as_echo "$ac_cv_group_kmem" >&6; } - KMEM_GROUP=$ac_cv_group_kmem -fi -if test "x$ac_save_LIBS" = x; then - GETLOADAVG_LIBS=$LIBS -else - GETLOADAVG_LIBS=`$as_echo "$LIBS" | sed "s|$ac_save_LIBS||"` -fi -LIBS=$ac_save_LIBS - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking function to use for lavg* options" >&5 -$as_echo_n "checking function to use for lavg* options... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: /proc/loadavg" >&5 -$as_echo "/proc/loadavg" >&6; } -fi -for ac_func in getcwd gettimeofday mktime putenv strerror setenv unsetenv gethostname -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in getopt_long -do : - ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long" -if test "x$ac_cv_func_getopt_long" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETOPT_LONG 1 -_ACEOF - -fi -done - -for ac_func in mkstemp -do : - ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp" -if test "x$ac_cv_func_mkstemp" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MKSTEMP 1 -_ACEOF - -fi -done - -for ac_func in flock lockf -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - -for ac_func in setlinebuf -do : - ac_fn_c_check_func "$LINENO" "setlinebuf" "ac_cv_func_setlinebuf" -if test "x$ac_cv_func_setlinebuf" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETLINEBUF 1 -_ACEOF - -fi -done - -for ac_func in signal -do : - ac_fn_c_check_func "$LINENO" "signal" "ac_cv_func_signal" -if test "x$ac_cv_func_signal" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SIGNAL 1 -_ACEOF - -fi -done - -for ac_func in sigset -do : - ac_fn_c_check_func "$LINENO" "sigset" "ac_cv_func_sigset" -if test "x$ac_cv_func_sigset" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SIGSET 1 -_ACEOF - -fi -done - - -for ac_func in seteuid -do : - ac_fn_c_check_func "$LINENO" "seteuid" "ac_cv_func_seteuid" -if test "x$ac_cv_func_seteuid" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETEUID 1 -_ACEOF - seteuid=1 -else - seteuid=0 -fi -done - -for ac_func in setegid -do : - ac_fn_c_check_func "$LINENO" "setegid" "ac_cv_func_setegid" -if test "x$ac_cv_func_setegid" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETEGID 1 -_ACEOF - setegid=1 -else - setegid=0 -fi -done - -for ac_func in setresuid -do : - ac_fn_c_check_func "$LINENO" "setresuid" "ac_cv_func_setresuid" -if test "x$ac_cv_func_setresuid" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETRESUID 1 -_ACEOF - setresuid=1 -else - setresuid=0 -fi -done - -for ac_func in setresgid -do : - ac_fn_c_check_func "$LINENO" "setresgid" "ac_cv_func_setresgid" -if test "x$ac_cv_func_setresgid" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETRESGID 1 -_ACEOF - setresgid=1 -else - setresgid=0 -fi -done - -if test \( \( $seteuid -eq 1 \) -a \( $setegid -eq 1 \) \) -o \( \( "$setresuid" -eq 1 \) -a \( "$setresgid" -eq 1 \) \) ; then - has_euid=1 -else - has_euid=0 -fi - -for ac_func in setpriority -do : - ac_fn_c_check_func "$LINENO" "setpriority" "ac_cv_func_setpriority" -if test "x$ac_cv_func_setpriority" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SETPRIORITY 1 -_ACEOF - -fi -done - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing getspnam" >&5 -$as_echo_n "checking for library containing getspnam... " >&6; } -if ${ac_cv_search_getspnam+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char getspnam (); -int -main () -{ -return getspnam (); - ; - return 0; -} -_ACEOF -for ac_lib in '' shadow sec; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_getspnam=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_getspnam+:} false; then : - break -fi -done -if ${ac_cv_search_getspnam+:} false; then : - -else - ac_cv_search_getspnam=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_getspnam" >&5 -$as_echo "$ac_cv_search_getspnam" >&6; } -ac_res=$ac_cv_search_getspnam -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - cat >>confdefs.h <<_ACEOF -#define HAVE_GETSPNAM 1 -_ACEOF - -fi - - -for ac_func in crypt -do : - ac_fn_c_check_func "$LINENO" "crypt" "ac_cv_func_crypt" -if test "x$ac_cv_func_crypt" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_CRYPT 1 -_ACEOF - crypt=1 -else - crypt=0 -fi -done - -if test "$crypt" -eq "0"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for crypt in -lcrypt" >&5 -$as_echo_n "checking for crypt in -lcrypt... " >&6; } -if ${ac_cv_lib_crypt_crypt+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcrypt $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char crypt (); -int -main () -{ -return crypt (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_crypt_crypt=yes -else - ac_cv_lib_crypt_crypt=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_crypt_crypt" >&5 -$as_echo "$ac_cv_lib_crypt_crypt" >&6; } -if test "x$ac_cv_lib_crypt_crypt" = xyes; then : - crypt=1 -else - crypt=0 -fi - - if test "$crypt" -eq "1"; then - LIBS="$LIBS -lcrypt" - fi -fi -if test "$crypt" -eq "1"; then - cat >>confdefs.h <<_ACEOF -#define HAVE_CRYPT 1 -_ACEOF - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sa_len" >&5 -$as_echo_n "checking for sa_len... " >&6; } -if ${ac_cv_sa_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -int -main () -{ -int main(void) { - struct sockaddr t;t.sa_len = 0;} - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_sa_len=yes -else - ac_cv_sa_len=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sa_len" >&5 -$as_echo "$ac_cv_sa_len" >&6; } -if test $ac_cv_sa_len = yes; then - $as_echo "#define HAVE_SA_LEN 1" >>confdefs.h - -fi - -for ac_header in cred.h sys/cred.h ucred.h sys/ucred.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - -for ac_func in getpeerucred -do : - ac_fn_c_check_func "$LINENO" "getpeerucred" "ac_cv_func_getpeerucred" -if test "x$ac_cv_func_getpeerucred" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPEERUCRED 1 -_ACEOF - -fi -done - for ac_func in getpeereid -do : - ac_fn_c_check_func "$LINENO" "getpeereid" "ac_cv_func_getpeereid" -if test "x$ac_cv_func_getpeereid" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GETPEEREID 1 -_ACEOF - -fi -done - - -fcron_enable_checks=yes -# Check whether --enable-checks was given. -if test "${enable_checks+set}" = set; then : - enableval=$enable_checks; case "$enableval" in - no) - fcron_enable_checks=no - ;; - yes) - fcron_enable_checks=yes - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Bad value for --disable-checks" >&5 -$as_echo "$as_me: WARNING: Bad value for --disable-checks" >&2;} - ;; - esac - -fi - - - - -# Extract the first word of "sendmail", so it can be a program name with args. -set dummy sendmail; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FOUND_SENDMAIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $FOUND_SENDMAIL in - [\\/]* | ?:[\\/]*) - ac_cv_path_FOUND_SENDMAIL="$FOUND_SENDMAIL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/usr/lib:/usr/sbin " -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_FOUND_SENDMAIL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -FOUND_SENDMAIL=$ac_cv_path_FOUND_SENDMAIL -if test -n "$FOUND_SENDMAIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FOUND_SENDMAIL" >&5 -$as_echo "$FOUND_SENDMAIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -SENDMAIL= -USE_SENDMAIL=1 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking actual sendmail to use" >&5 -$as_echo_n "checking actual sendmail to use... " >&6; } - -# Check whether --with-sendmail was given. -if test "${with_sendmail+set}" = set; then : - withval=$with_sendmail; case "$withval" in - no) USE_SENDMAIL=0 ;; - yes) ;; - *) SENDMAIL=$withval ;; - esac -fi - - -if test "$USE_SENDMAIL" != "1" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 -$as_echo "disabled" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Without sendmail you will not get the output of the jobs by mail" >&5 -$as_echo "$as_me: WARNING: Without sendmail you will not get the output of the jobs by mail" >&2;} -elif test -n "$SENDMAIL" ; then - if test ! -x "$SENDMAIL" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SENDMAIL" >&5 -$as_echo "$SENDMAIL" >&6; } - as_fn_error $? "File $SENDMAIL is not an executable file" "$LINENO" 5 - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SENDMAIL" >&5 -$as_echo "$SENDMAIL" >&6; } - fi -elif test -z "$FOUND_SENDMAIL" ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not found" >&5 -$as_echo "not found" >&6; } - as_fn_error $? "Empty sendmail path or cannot determine path to sendmail: try option --with-sendmail=PATH" "$LINENO" 5 -else - SENDMAIL="$FOUND_SENDMAIL" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SENDMAIL" >&5 -$as_echo "$SENDMAIL" >&6; } -fi - - -if test "$USE_SENDMAIL" = "1"; then - $as_echo "#define USE_SENDMAIL 1" >>confdefs.h - -fi - -# Extract the first word of "sh", so it can be a program name with args. -set dummy sh; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FOUND_FCRON_SHELL+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $FOUND_FCRON_SHELL in - [\\/]* | ?:[\\/]*) - ac_cv_path_FOUND_FCRON_SHELL="$FOUND_FCRON_SHELL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_FOUND_FCRON_SHELL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -FOUND_FCRON_SHELL=$ac_cv_path_FOUND_FCRON_SHELL -if test -n "$FOUND_FCRON_SHELL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FOUND_FCRON_SHELL" >&5 -$as_echo "$FOUND_FCRON_SHELL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -FCRON_SHELL= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking default shell to use to run a job" >&5 -$as_echo_n "checking default shell to use to run a job... " >&6; } - -# Check whether --with-shell was given. -if test "${with_shell+set}" = set; then : - withval=$with_shell; case "$withval" in - no) - as_fn_error $? "Need a default shell" "$LINENO" 5 - ;; - yes) - ;; - *) - FCRON_SHELL=$withval - if test $fcron_enable_checks = 'yes' -a ! -x "$withval"; then - as_fn_error $? " -File $withval is not an executable file" "$LINENO" 5 - fi - ;; - esac - -fi - -if test x"$FCRON_SHELL" = x ; then - FCRON_SHELL=$FOUND_FCRON_SHELL - if test "$FOUND_FCRON_SHELL" = "" ; then - as_fn_error $? " -Cannot determine path to sh: try option --with-shell=PATH" "$LINENO" 5 - fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FCRON_SHELL" >&5 -$as_echo "$FCRON_SHELL" >&6; } - - -# Extract the first word of "vi", so it can be a program name with args. -set dummy vi; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_FOUND_FCRON_EDITOR+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $FOUND_FCRON_EDITOR in - [\\/]* | ?:[\\/]*) - ac_cv_path_FOUND_FCRON_EDITOR="$FOUND_FCRON_EDITOR" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_FOUND_FCRON_EDITOR="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -FOUND_FCRON_EDITOR=$ac_cv_path_FOUND_FCRON_EDITOR -if test -n "$FOUND_FCRON_EDITOR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $FOUND_FCRON_EDITOR" >&5 -$as_echo "$FOUND_FCRON_EDITOR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -FCRON_EDITOR= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking editor to use for fcrontab" >&5 -$as_echo_n "checking editor to use for fcrontab... " >&6; } - -# Check whether --with-editor was given. -if test "${with_editor+set}" = set; then : - withval=$with_editor; case "$withval" in - no) - as_fn_error $? "Need a default editor" "$LINENO" 5 - ;; - yes) - ;; - *) - FCRON_EDITOR=$withval - if test $fcron_enable_checks = 'yes' -a ! -x "$withval"; then - as_fn_error $? " -File $withval is not an executable file" "$LINENO" 5 - fi - ;; - esac - -fi - - -if test x"$FCRON_EDITOR" = x; then - FCRON_EDITOR=$FOUND_FCRON_EDITOR - if test x"$FCRON_EDITOR" = x ; then - as_fn_error $? " -Cannot determine path to vi: try option --with-editor=PATH" "$LINENO" 5 - fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FCRON_EDITOR" >&5 -$as_echo "$FCRON_EDITOR" >&6; } - - - -PIDDIR="${localstatedir}/run" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking location of pid files" >&5 -$as_echo_n "checking location of pid files... " >&6; } - -# Check whether --with-piddir was given. -if test "${with_piddir+set}" = set; then : - withval=$with_piddir; case "$withval" in - no) - as_fn_error $? "Need PIDDIR." "$LINENO" 5 - ;; - yes) - ;; - *) - PIDDIR=$withval - ;; - esac - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $PIDDIR" >&5 -$as_echo "$PIDDIR" >&6; } -PIDFILE="${PIDDIR}/fcron.pid" -REBOOT_LOCK="${PIDDIR}/fcron.reboot" - - - - -FIFODIR="${localstatedir}/run" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking location of fifo files" >&5 -$as_echo_n "checking location of fifo files... " >&6; } - -# Check whether --with-fifodir was given. -if test "${with_fifodir+set}" = set; then : - withval=$with_fifodir; case "$withval" in - no) - as_fn_error $? "Need FIFODIR." "$LINENO" 5 - ;; - yes) - ;; - *) - FIFODIR=$withval - ;; - esac - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $FIFODIR" >&5 -$as_echo "$FIFODIR" >&6; } -FIFOFILE="${FIFODIR}/fcron.fifo" - - - -sp="${localstatedir}/spool/fcron" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking location of spool directory" >&5 -$as_echo_n "checking location of spool directory... " >&6; } - -# Check whether --with-spooldir was given. -if test "${with_spooldir+set}" = set; then : - withval=$with_spooldir; case "$withval" in - no) - as_fn_error $? "Need SPOOLDIR." "$LINENO" 5 - ;; - yes) - ;; - *) - sp="$withval" - ;; - esac - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $sp" >&5 -$as_echo "$sp" >&6; } -FCRONTABS="$sp" -cat >>confdefs.h <<_ACEOF -#define FCRONTABS "$sp" -_ACEOF - - - -if test \( $getloadavg -eq 0 \) -a \( $kstat -eq 0 \); then -proc=/proc -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking proc directory" >&5 -$as_echo_n "checking proc directory... " >&6; } - -# Check whether --with-proc was given. -if test "${with_proc+set}" = set; then : - withval=$with_proc; case "$withval" in - no) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: -Without proc, you won't be able to use the lavg* options -" >&5 -$as_echo "$as_me: WARNING: -Without proc, you won't be able to use the lavg* options -" >&2;} - $as_echo "#define NOLOADAVG 1" >>confdefs.h - - ;; - yes) - ;; - *) - proc=$withval - ;; - esac - -fi - - -if test "$withval" != "no" -a $fcron_enable_checks = 'yes'; then - if test -f "$proc/loadavg"; then : - else - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: -Cannot determine value for proc directory: try option --with-proc=PATH" >&5 -$as_echo "$as_me: WARNING: -Cannot determine value for proc directory: try option --with-proc=PATH" >&2;} - as_fn_error $? "Use --with-proc=no to disable the lavg* options" "$LINENO" 5 - fi -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $proc" >&5 -$as_echo "$proc" >&6; } -PROC=$proc -cat >>confdefs.h <<_ACEOF -#define PROC "$proc" -_ACEOF - -fi - -docdir="${datadir}/doc" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking location of doc directory" >&5 -$as_echo_n "checking location of doc directory... " >&6; } - -# Check whether --with-docdir was given. -if test "${with_docdir+set}" = set; then : - withval=$with_docdir; case "$withval" in - no) - as_fn_error $? "Need DOCDIR." "$LINENO" 5 - ;; - yes) - ;; - *) - docdir="$withval" - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $docdir" >&5 -$as_echo "$docdir" >&6; } -DOCDIR="$docdir" - - - -SYSTEMD_DIR="no" - -for ac_prog in $PKG_CONFIG pkg-config -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_PKG_CONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$PKG_CONFIG"; then - ac_cv_prog_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_dummy="$PATH:/local/bin:/usr/local/bin:/opt/sfw/bin" -for as_dir in $as_dummy -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_prog_PKG_CONFIG="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -PKG_CONFIG=$ac_cv_prog_PKG_CONFIG -if test -n "$PKG_CONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 -$as_echo "$PKG_CONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$PKG_CONFIG" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for systemd" >&5 -$as_echo_n "checking for systemd... " >&6; } - -# Check whether --with-systemdsystemunitdir was given. -if test "${with_systemdsystemunitdir+set}" = set; then : - withval=$with_systemdsystemunitdir; -else - if test "x" != "x$PKG_CONFIG"; then - with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd` - fi -fi - -if test "x$with_systemdsystemunitdir" != xno; then - if test "x" != "x$with_systemdsystemunitdir"; then - SYSTEMD_DIR="$with_systemdsystemunitdir" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: disabled" >&5 -$as_echo "disabled" >&6; } -fi - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking run non-privileged" >&5 -$as_echo_n "checking run non-privileged... " >&6; } - -# Check whether --with-run-non-privileged was given. -if test "${with_run_non_privileged+set}" = set; then : - withval=$with_run_non_privileged; case "$withval" in - no) - run_non_privileged=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - yes) - run_non_privileged=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -WARNING : - This option allows a non privileged user to run fcron. When used, - fcron does not change its rights before running a job (i.e., - if joe runs fcron, every job will run as joe). - It means that YOU SHOULD NOT RUN FCRON AS A PRIVILEGED USER WHEN - COMPILED WITH THIS OPTION or you'll have a serious security hole. -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -" >&5 -$as_echo "$as_me: WARNING: - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -WARNING : - This option allows a non privileged user to run fcron. When used, - fcron does not change its rights before running a job (i.e., - if joe runs fcron, every job will run as joe). - It means that YOU SHOULD NOT RUN FCRON AS A PRIVILEGED USER WHEN - COMPILED WITH THIS OPTION or you'll have a serious security hole. -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -" >&2;} - $as_echo "#define RUN_NON_PRIVILEGED 1" >>confdefs.h - - RUN_NON_PRIVILEGED=1 - - bootinstall=0 - fcrondyn=0 - usepam=0 - useselinux=0 - useaudit=0 - ;; - *) - as_fn_error $? "Invalid argument : please use 'yes' or 'no'." "$LINENO" 5 - ;; - esac -else - run_non_privileged=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi - - - -if test "$fcrondyn" = ""; then - fcrondyn=1 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if fcrondyn should be compiled" >&5 -$as_echo_n "checking if fcrondyn should be compiled... " >&6; } - -# Check whether --with-fcrondyn was given. -if test "${with_fcrondyn+set}" = set; then : - withval=$with_fcrondyn; case "$withval" in - no) - fcrondyn=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - yes) - if test "$crypt" -eq 1; then - fcrondyn=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - as_fn_error $? "Need a crypt() function." "$LINENO" 5 - fi - ;; - *) - as_fn_error $? "Must be set to either \"yes\" or \"no\"." "$LINENO" 5 - ;; - esac -else - if test "$fcrondyn" = "1" && test "$crypt" -eq 1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - fcrondyn=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - -fi - -FCRONDYN="$fcrondyn" -if test "$fcrondyn" = 1; then - cat >>confdefs.h <<_ACEOF -#define FCRONDYN "$fcrondyn" -_ACEOF - - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking root's username" >&5 -$as_echo_n "checking root's username... " >&6; } -rootname=root - -# Check whether --with-rootname was given. -if test "${with_rootname+set}" = set; then : - withval=$with_rootname; case "$withval" in - no) - as_fn_error $? "Need rootname." "$LINENO" 5 - ;; - yes) - ;; - *) - rootname=$withval - ;; - esac - -fi - - -if test $fcron_enable_checks = 'yes'; then - - rootuid=`$srcdir/script/has_usrgrp.pl -user $rootname -printuid` - if test "x$rootuid" = "x"; then - as_fn_error $? " -Invalid root's username or cannot determine root's username: try option --with-rootname=USERNAME" "$LINENO" 5 - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $rootname" >&5 -$as_echo "$rootname" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking root's groupname" >&5 -$as_echo_n "checking root's groupname... " >&6; } - -# Check whether --with-rootgroup was given. -if test "${with_rootgroup+set}" = set; then : - withval=$with_rootgroup; case "$withval" in - no) - as_fn_error $? "Need rootgroup." "$LINENO" 5 - ;; - yes) - ;; - *) - rootgroup=$withval - ;; - esac - -fi - - -if test $fcron_enable_checks = 'yes'; then - - if test x"$rootgroup" = x; then - # rootgroup not defined: test a few possibilities - rgid=`$srcdir/script/has_usrgrp.pl -group root -printgid` - wgid=`$srcdir/script/has_usrgrp.pl -group wheel -printgid` - if test "x$rgid" != "x"; then - rootgid=$rgid - rootgroup=root - elif test "x$wgid" != "x"; then - rootgid=$wgid - rootgroup=wheel - else - as_fn_error $? " -Cannot determine root's groupname: try option --with-rootgroup=GROUPNAME" "$LINENO" 5 - fi - else - # rootgroup defined: check it - rootgid=`$srcdir/script/has_usrgrp.pl -group $rootgroup -printgid` - if test "x$rootgid" = "x"; then - as_fn_error $? " -Cannot determine root's groupname: try option --with-rootgroup=GROUPNAME" "$LINENO" 5 - fi - fi - -else - # no check: use values given by user or default values - if test x"$rootgroup" = x ; then - rootgroup=root - fi - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $rootgroup" >&5 -$as_echo "$rootgroup" >&6; } - -ROOTNAME="$rootname" - -cat >>confdefs.h <<_ACEOF -#define ROOTNAME "$rootname" -_ACEOF - -ROOTGROUP="$rootgroup" - -cat >>confdefs.h <<_ACEOF -#define ROOTGROUP "$rootgroup" -_ACEOF - - - -username="$rootname" -groupname="$rootgroup" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking username to run fcrontab under" >&5 -$as_echo_n "checking username to run fcrontab under... " >&6; } - -# Check whether --with-username was given. -if test "${with_username+set}" = set; then : - withval=$with_username; case "$withval" in - no) - as_fn_error $? "Need USERNAME." "$LINENO" 5 - ;; - yes) - if test "$has_euid" -eq 1 ; then - username=fcron - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $username" >&5 -$as_echo "$username" >&6; } - ;; - *) - if test "$has_euid" -eq 1 ; then - username="$withval"; - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $username" >&5 -$as_echo "$username" >&6; } - if test "$withval" = "$rootname" && test "$RUN_NON_PRIVILEGED" != "1"; then - as_fn_error $? " - -Running fcrontab setuid root is NOT secure and would completely break -the security model of fcron. You must use a different user name. -" "$LINENO" 5 - has_euid=0 - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $username" >&5 -$as_echo "$username" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: username must be $rootname as your system has no seteuid" >&5 -$as_echo "$as_me: WARNING: username must be $rootname as your system has no seteuid" >&2;} - fi - ;; - esac -else - if test "$has_euid" -eq 1 ; then - username=fcron - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $username" >&5 -$as_echo "$username" >&6; } - -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking groupname to run fcrontab under" >&5 -$as_echo_n "checking groupname to run fcrontab under... " >&6; } - -# Check whether --with-groupname was given. -if test "${with_groupname+set}" = set; then : - withval=$with_groupname; case "$withval" in - no) - as_fn_error $? "Need GROUPNAME." "$LINENO" 5 - ;; - yes) - if test "$has_euid" -eq 1 ; then - groupname=fcron - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groupname" >&5 -$as_echo "$groupname" >&6; } - ;; - *) - if test "$has_euid" -eq 1 ; then - groupname="$withval"; - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groupname" >&5 -$as_echo "$groupname" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groupname" >&5 -$as_echo "$groupname" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: groupname must be $rootgroup as username is $username" >&5 -$as_echo "$as_me: WARNING: groupname must be $rootgroup as username is $username" >&2;} - fi - ;; - esac -else - if test "$has_euid" -eq 1 ; then - groupname=fcron - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $groupname" >&5 -$as_echo "$groupname" >&6; } - -fi - - -USERNAME="$username" - -cat >>confdefs.h <<_ACEOF -#define USERNAME "$username" -_ACEOF - -GROUPNAME="$groupname" - -cat >>confdefs.h <<_ACEOF -#define GROUPNAME "$groupname" -_ACEOF - - - -if test "$has_euid" -eq 1 ; then - $as_echo "#define USE_SETE_ID 1" >>confdefs.h - -fi - - - -sysfcrontab="systab" -use_sysfcrontab=1 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking use a system fcrontab" >&5 -$as_echo_n "checking use a system fcrontab... " >&6; } - -# Check whether --with-sysfcrontab was given. -if test "${with_sysfcrontab+set}" = set; then : - withval=$with_sysfcrontab; case "$withval" in - no) - use_sysfcrontab=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ;; - *) - sysfcrontab="$withval" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $sysfcrontab" >&5 -$as_echo "$sysfcrontab" >&6; } - esac -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - -fi - -if test "$use_sysfcrontab" -eq 1 ; then - cat >>confdefs.h <<_ACEOF -#define SYSFCRONTAB "$sysfcrontab" -_ACEOF - - SYSFCRONTAB="$sysfcrontab" - -fi - - - - -# Check whether --with-debug was given. -if test "${with_debug+set}" = set; then : - withval=$with_debug; case "$withval" in - no) - cflags="-O2 -Wall" - debug="0" - ;; - yes) - cflags="-DDEBUG -g -Wall -DFOREGROUND -DMALLOC_CHECK_=2 -Wpointer-arith -Wstrict-prototypes" - bootinstall=0 - debug="1" - ;; - *) - cflags="$withval" - debug="1" - ;; - esac -else - cflags="-O2 -Wall" - debug="0" - -fi - -DEBUG=$debug - - - -if test "$bootinstall" = ""; then - bootinstall=1 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking install interactively a boot script" >&5 -$as_echo_n "checking install interactively a boot script... " >&6; } - -# Check whether --with-boot-install was given. -if test "${with_boot_install+set}" = set; then : - withval=$with_boot_install; case "$withval" in - no) - bootinstall=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - yes) - bootinstall=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - ;; - *) - as_fn_error $? "Must be set to either \"yes\" or \"no\"." "$LINENO" 5 - ;; - esac -else - if test "$bootinstall" = "1"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - -fi - -BOOTINSTALL="$bootinstall" -cat >>confdefs.h <<_ACEOF -#define BOOTINSTALL "$bootinstall" -_ACEOF - - - - - -# Check whether --with-cflags was given. -if test "${with_cflags+set}" = set; then : - withval=$with_cflags; case "$withval" in - no) - as_fn_error $? "Need an explicit value for --with-cflags." "$LINENO" 5 - ;; - yes) - as_fn_error $? "Need an explicit value for --with-cflags." "$LINENO" 5 - ;; - *) - cflags="$withval" - ;; - esac -fi - -CFLAGS=$cflags -cat >>confdefs.h <<_ACEOF -#define CFLAGS "$cflags" -_ACEOF - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking automatic answer to make install's questions" >&5 -$as_echo_n "checking automatic answer to make install's questions... " >&6; } - -# Check whether --with-answer-all was given. -if test "${with_answer_all+set}" = set; then : - withval=$with_answer_all; case "$withval" in - no) - answerall=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (answer \"no\")" >&5 -$as_echo "yes (answer \"no\")" >&6; } - ;; - yes) - answerall=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes (answer \"yes\")" >&5 -$as_echo "yes (answer \"yes\")" >&6; } - ;; - *) - as_fn_error $? "Must be set to either \"yes\" or \"no\"." "$LINENO" 5 - ;; - esac -else - answerall=2 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -fi - -ANSWERALL="$answerall" -cat >>confdefs.h <<_ACEOF -#define ANSWERALL "$answerall" -_ACEOF - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if audit trails should be enabled if available" >&5 -$as_echo_n "checking if audit trails should be enabled if available... " >&6; } - -# Check whether --with-audit was given. -if test "${with_audit+set}" = set; then : - withval=$with_audit; case "$withval" in - no) - useaudit=0 - ;; - yes) - useaudit=1 - ;; - *) - as_fn_error $? "Must be set to either \"yes\" or \"no\"." "$LINENO" 5 - ;; - esac - -fi - -if test useaudit = "0"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -elif test "$useaudit" = "1" && test "$auditavail" != 1; then - useaudit=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not available" >&5 -$as_echo "not available" >&6; } - as_fn_error $? " - You requested audit trails to be enabled, but libaudit was not found. -" "$LINENO" 5 -elif test "$auditavail" = 1; then - useaudit=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - LIBS="$LIBS -laudit" - $as_echo "#define WITH_AUDIT 1" >>confdefs.h - -else - useaudit=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test "$usepam" = ""; then - usepam=1 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if pam should be used if available" >&5 -$as_echo_n "checking if pam should be used if available... " >&6; } - -# Check whether --with-pam was given. -if test "${with_pam+set}" = set; then : - withval=$with_pam; case "$withval" in - no) - usepam=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - yes) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_acct_mgmt in -lpam" >&5 -$as_echo_n "checking for pam_acct_mgmt in -lpam... " >&6; } -if ${ac_cv_lib_pam_pam_acct_mgmt+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpam $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pam_acct_mgmt (); -int -main () -{ -return pam_acct_mgmt (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pam_pam_acct_mgmt=yes -else - ac_cv_lib_pam_pam_acct_mgmt=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_acct_mgmt" >&5 -$as_echo "$ac_cv_lib_pam_pam_acct_mgmt" >&6; } -if test "x$ac_cv_lib_pam_pam_acct_mgmt" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPAM 1 -_ACEOF - - LIBS="-lpam $LIBS" - -fi - - ;; - *) - as_fn_error $? "Must be set to either \"yes\" or \"no\"." "$LINENO" 5 - ;; - esac -else - if test "$usepam" = "1"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pam_acct_mgmt in -lpam" >&5 -$as_echo_n "checking for pam_acct_mgmt in -lpam... " >&6; } -if ${ac_cv_lib_pam_pam_acct_mgmt+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpam $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pam_acct_mgmt (); -int -main () -{ -return pam_acct_mgmt (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_pam_pam_acct_mgmt=yes -else - ac_cv_lib_pam_pam_acct_mgmt=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_pam_pam_acct_mgmt" >&5 -$as_echo "$ac_cv_lib_pam_pam_acct_mgmt" >&6; } -if test "x$ac_cv_lib_pam_pam_acct_mgmt" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBPAM 1 -_ACEOF - - LIBS="-lpam $LIBS" - -fi - - else - usepam=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - -fi - -if test "$usepam" != "0" && echo "$LIBS" | grep -- "-lpam" > /dev/null ; then - usepam=1 -else - usepam=0 -fi -USEPAM="$usepam" - - - -if test "$useselinux" = ""; then - useselinux=1 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if SELinux should be used" >&5 -$as_echo_n "checking if SELinux should be used... " >&6; } - -# Check whether --with-selinux was given. -if test "${with_selinux+set}" = set; then : - withval=$with_selinux; case "$withval" in - no) - useselinux=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - yes) - if test "$selinuxavail" -eq 1; then - useselinux=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not available" >&5 -$as_echo "not available" >&6; } - as_fn_error $? " - You requested the use of SELinux, but SELinux is considered - as not available by configure script. -" "$LINENO" 5 - fi - ;; - *) - as_fn_error $? "Must be set to either \"yes\" or \"no\"." "$LINENO" 5 - ;; - esac -else - if test "$useselinux" != "0" && test "$selinuxavail" -eq 1; then - useselinux=1 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - useselinux=0 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: not available" >&5 -$as_echo "not available" >&6; } - fi - -fi - -if test "$useselinux" -eq 1; then - LIBS="$LIBS -lselinux" - $as_echo "#define WITH_SELINUX 1" >>confdefs.h - - CFLAGS="$CFLAGS -I/usr/include/selinux" -fi - - - -# Extract the first word of "openjade", so it can be a program name with args. -set dummy openjade; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_JADE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $JADE in - [\\/]* | ?:[\\/]*) - ac_cv_path_JADE="$JADE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_JADE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -JADE=$ac_cv_path_JADE -if test -n "$JADE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JADE" >&5 -$as_echo "$JADE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test -z "$JADE"; then - # Extract the first word of "jade", so it can be a program name with args. -set dummy jade; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_JADE+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $JADE in - [\\/]* | ?:[\\/]*) - ac_cv_path_JADE="$JADE" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_JADE="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -JADE=$ac_cv_path_JADE -if test -n "$JADE"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $JADE" >&5 -$as_echo "$JADE" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi - -# Extract the first word of "docbook2man", so it can be a program name with args. -set dummy docbook2man; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_DB2MAN+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $DB2MAN in - [\\/]* | ?:[\\/]*) - ac_cv_path_DB2MAN="$DB2MAN" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_DB2MAN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -DB2MAN=$ac_cv_path_DB2MAN -if test -n "$DB2MAN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DB2MAN" >&5 -$as_echo "$DB2MAN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -if test -z "$DB2MAN"; then - # Extract the first word of "db2man", so it can be a program name with args. -set dummy db2man; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_DB2MAN+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $DB2MAN in - [\\/]* | ?:[\\/]*) - ac_cv_path_DB2MAN="$DB2MAN" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_DB2MAN="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -DB2MAN=$ac_cv_path_DB2MAN -if test -n "$DB2MAN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DB2MAN" >&5 -$as_echo "$DB2MAN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Looking for docbook2man converter" >&5 -$as_echo_n "checking Looking for docbook2man converter... " >&6; } - -# Check whether --with-db2man was given. -if test "${with_db2man+set}" = set; then : - withval=$with_db2man; case "$withval" in - no) - DB2MAN="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } - ;; - yes) - as_fn_error $? "Must be set to PATH or \"no\"." "$LINENO" 5 - ;; - *) - if test ! -x "$withval"; then - as_fn_error $? "$withval is not an exe file." "$LINENO" 5 - fi - DB2MAN="$withval" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -$as_echo "$withval" >&6; } - ;; - esac -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: default: $DB2MAN" >&5 -$as_echo "default: $DB2MAN" >&6; } - -fi - - - -# Extract the first word of "nsgmls", so it can be a program name with args. -set dummy nsgmls; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_NSGMLS+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $NSGMLS in - [\\/]* | ?:[\\/]*) - ac_cv_path_NSGMLS="$NSGMLS" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_NSGMLS="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -NSGMLS=$ac_cv_path_NSGMLS -if test -n "$NSGMLS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NSGMLS" >&5 -$as_echo "$NSGMLS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -# Extract the first word of "sgmlspl", so it can be a program name with args. -set dummy sgmlspl; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_SGMLSPL+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $SGMLSPL in - [\\/]* | ?:[\\/]*) - ac_cv_path_SGMLSPL="$SGMLSPL" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then - ac_cv_path_SGMLSPL="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -SGMLSPL=$ac_cv_path_SGMLSPL -if test -n "$SGMLSPL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $SGMLSPL" >&5 -$as_echo "$SGMLSPL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - -DB2MAN_SPEC="/usr/share/sgml/docbook/utils-0.6.9/helpers/docbook2man-spec.pl" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Looking for docbook2man-spec file" >&5 -$as_echo_n "checking Looking for docbook2man-spec file... " >&6; } - -# Check whether --with-db2man-spec was given. -if test "${with_db2man_spec+set}" = set; then : - withval=$with_db2man_spec; case "$withval" in - no) - DB2MAN_SPEC="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } - ;; - yes) - as_fn_error $? "Must be set to PATH or \"no\"." "$LINENO" 5 - ;; - *) - if test ! -f "$withval"; then - as_fn_error $? "$withval is not a file." "$LINENO" 5 - fi - DB2MAN_SPEC="$withval" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -$as_echo "$withval" >&6; } - ;; - esac -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: default" >&5 -$as_echo "default" >&6; } - -fi - - - -if test -x "$DB2MAN"; then - DB2MAN_BEFORE="$DB2MAN" - DB2MAN_AFTER="" -else - if test \( \( -f "$DB2MAN_SPEC" \) -a \( -x "$NSGMLS" \) \ - -a \( -x "$SGMLSPL" \) \); then - DB2MAN_BEFORE="$NSGMLS" - DB2MAN_AFTER="2> /dev/null | $SGMLSPL $DB2MAN_SPEC" - else - DB2MAN_BEFORE="" - DB2MAN_AFTER="" - fi -fi - - - - -DSSSL_DIR="/usr/share/sgml/docbook/stylesheet/dsssl/modular" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking Looking for dsssl stylsheets" >&5 -$as_echo_n "checking Looking for dsssl stylsheets... " >&6; } - -# Check whether --with-dsssl-dir was given. -if test "${with_dsssl_dir+set}" = set; then : - withval=$with_dsssl_dir; case "$withval" in - no) - DSSSL_DIR="" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } - ;; - yes) - as_fn_error $? "Must be set to DIR or \"no\"." "$LINENO" 5 - ;; - *) - if test ! -f "$withval/html/docbook.dsl"; then - as_fn_error $? "$withval/html/docbook.dsl does not exist." "$LINENO" 5 - fi - DSSSL_DIR="$withval" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $withval" >&5 -$as_echo "$withval" >&6; } - ;; - esac -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: default" >&5 -$as_echo "default" >&6; } - if test ! -f "$DSSSL_DIR/html/docbook.dsl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: - -$DSSSL_DIR/html/docbook.dsl does not exist. You will probably not be able to generate the documentation from the DocBook source files." >&5 -$as_echo "$as_me: WARNING: - -$DSSSL_DIR/html/docbook.dsl does not exist. You will probably not be able to generate the documentation from the DocBook source files." >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Use --with-dsssl-dir to specify a directory. -" >&5 -$as_echo "$as_me: WARNING: Use --with-dsssl-dir to specify a directory. -" >&2;} - fi - -fi - - - - - - -ac_config_files="$ac_config_files Makefile doc/Makefile doc/stylesheets/fcron-doc.dsl" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.69. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to the package provider." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.69, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2012 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; - "doc/stylesheets/fcron-doc.dsl") CONFIG_FILES="$CONFIG_FILES doc/stylesheets/fcron-doc.dsl" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi - ;; - - - esac - -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - - - -echo -echo "Summary :" -echo "-------" -echo -echo -n "run in debug mode by default : " -if test "$debug" -eq "1"; then - echo "yes" -else - echo "no" -fi - -echo -n "Audit trails : " -if test "$useaudit" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo -n "PAM : " -if test "$usepam" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo -n "SELinux : " -if test "$useselinux" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo -n "Readline : " -if test "$ax_cv_lib_readline" = "no"; then - echo "no" -else - echo "yes" -fi - - -echo -n "Run without root's rights : " -if test "$run_non_privileged" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo -n "Load average support : " -if test "$getloadavg" -eq 1 -o -n "$proc"; then - echo "yes" -else - echo "no" -fi - -echo -n "compile fcrondyn : " -if test "$fcrondyn" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo "fcron's user (resp. group) name : $username (resp. $groupname)" - -echo -n "sysfcrontab : " -if test "$use_sysfcrontab" -eq 1; then - echo "yes ($sysfcrontab)" -else - echo "no" -fi - -echo "prefix: $prefix" -echo "exec_prefix: $exec_prefix" -echo "datarootdir: $datarootdir" -echo "bin dir: $bindir" -echo "sbin dir: $sbindir" -echo "spool dir: $sp" -echo "etc dir: $sysconfdir" -echo "doc dir: $docdir" -echo "man dir: $mandir " - - -echo -echo "You can now run '$MAKE' to compile" -echo "and then (as root) '$MAKE install' to install fcron." -echo diff --git a/fcron-3.2.0/configure.in b/fcron-3.2.0/configure.in deleted file mode 100644 index 590d5b2..0000000 --- a/fcron-3.2.0/configure.in +++ /dev/null @@ -1,1124 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. - - -dnl --------------------------------------------------------------------- -dnl Initial settings -dnl --------------------------------------------------------------------- - -AC_INIT(allow.c) -AC_CONFIG_HEADER(config.h) -AC_PREREQ(2.57) -m4_include([m4/ax_lib_readline.m4]) - -vers="3.2.0" -vers_quoted="\"$vers\"" -AC_DEFINE_UNQUOTED(VERSION, $vers) -AC_DEFINE_UNQUOTED(VERSION_QUOTED, $vers_quoted) -VERSION="$vers" -AC_SUBST(VERSION) - -copyright_quoted="\"2000-2014\"" -AC_DEFINE_UNQUOTED(COPYRIGHT_QUOTED, $copyright_quoted) - - -dnl --------------------------------------------------------------------- -dnl Check for programs, header files, types, etc (autoconf builtins) -dnl --------------------------------------------------------------------- - -dnl Checks for programs. -AC_PROG_CC -AC_PATH_PROGS(MAKE, $MAKE gmake make, $PATH:/local/bin:/usr/local/bin:/opt/TWWfsw/bin:/opt/sfw/bin) -AC_MSG_CHECKING(if make is actually GNU Make) -if test x"$MAKE" = x; then - AC_MSG_ERROR(Cannot locate a make utility, 1) -elif $MAKE --version 2>/dev/null |grep "^GNU Make" >/dev/null; then - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) - AC_MSG_ERROR($MAKE is not GNU Make. -Please install GNU Make or adjust your PATH so that GNU make can be found -before any others., 1) -fi -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PATH_PROGS(STRIP, $STRIP strip, /usr/css/bin:$PATH:/local/bin:/usr/local/bin:/opt/TWWfsw/bin:/opt/sfw/bin) - -dnl Checks for libraries. - -dnl Checks for header files. -AC_HEADER_DIRENT -AC_HEADER_STDC -AC_HEADER_SYS_WAIT -AC_CHECK_HEADERS(fcntl.h sys/file.h sys/ioctl.h sys/time.h syslog.h unistd.h) -AC_CHECK_HEADERS(errno.h sys/fcntl.h getopt.h limits.h) -AC_CHECK_HEADERS(stdarg.h) -AC_CHECK_HEADERS(termios.h) -AC_CHECK_HEADERS(strings.h) -AC_CHECK_HEADERS(sys/types.h sys/socket.h sys/un.h) -AC_CHECK_HEADERS(security/pam_appl.h pam/pam_appl.h crypt.h shadow.h libaudit.h) -AC_CHECK_HEADERS(sys/resource.h) -AC_CHECK_HEADERS(grp.h) - -AC_CHECK_SIZEOF(time_t) - -dnl Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_PID_T -AC_TYPE_SIZE_T -AC_HEADER_TIME -AC_STRUCT_TM -AC_TYPE_UID_T - -dnl Define sizeof constants -AC_CHECK_SIZEOF(pid_t) -AC_CHECK_SIZEOF(time_t) -AC_CHECK_SIZEOF(short int) -AC_CHECK_SIZEOF(int) -AC_CHECK_SIZEOF(long int) -AC_CHECK_SIZEOF(long long int) - -dnl Checks for library functions. -AC_PROG_GCC_TRADITIONAL -AC_FUNC_MEMCMP -AC_TYPE_SIGNAL -AC_FUNC_STRFTIME -AC_FUNC_WAIT3 -AC_CHECK_LIB(xnet, shutdown) -AC_CHECK_LIB(selinux, getcon, [selinuxavail=1], [selinuxavail=0]) -AC_CHECK_LIB(audit, audit_open, [auditavail=1], [auditavail=0]) -AX_LIB_READLINE -AC_CHECK_FUNC(getloadavg, [getloadavg=1], [getloadavg=0]) -AC_CHECK_LIB(kstat, kstat_open, [kstat=1], [kstat=0]) -if test $getloadavg -eq 1; then -dnl Nothing to do ... - AC_FUNC_GETLOADAVG - AC_MSG_CHECKING(function to use for lavg* options) - AC_MSG_RESULT(getloadavg()) -elif test $kstat -eq 1; then - AC_MSG_CHECKING(function to use for lavg* options) - LIBS="$LIBS -lkstat" - AC_LIBOBJ([getloadavg]) - AC_DEFINE_UNQUOTED(HAVE_KSTAT, 1) - AC_MSG_RESULT(kstat) -else -dnl Try to use the /proc/loadavg file ... - AC_FUNC_GETLOADAVG - AC_MSG_CHECKING(function to use for lavg* options) - AC_MSG_RESULT(/proc/loadavg) -fi -AC_CHECK_FUNCS(getcwd gettimeofday mktime putenv strerror setenv unsetenv gethostname) -AC_CHECK_FUNCS(getopt_long) -AC_CHECK_FUNCS(mkstemp) -AC_CHECK_FUNCS(flock lockf) -AC_CHECK_FUNCS(setlinebuf) -AC_CHECK_FUNCS(signal) -AC_CHECK_FUNCS(sigset) - -AC_CHECK_FUNCS(seteuid, [seteuid=1], [seteuid=0]) -AC_CHECK_FUNCS(setegid, [setegid=1], [setegid=0]) -AC_CHECK_FUNCS(setresuid, [setresuid=1], [setresuid=0]) -AC_CHECK_FUNCS(setresgid, [setresgid=1], [setresgid=0]) -if test \( \( $seteuid -eq 1 \) -a \( $setegid -eq 1 \) \) -o \( \( "$setresuid" -eq 1 \) -a \( "$setresgid" -eq 1 \) \) ; then - has_euid=1 -else - has_euid=0 -fi - -AC_CHECK_FUNCS(setpriority) - -AC_SEARCH_LIBS([getspnam],[shadow sec], [AC_DEFINE_UNQUOTED(HAVE_GETSPNAM, 1)], []) - -AC_CHECK_FUNCS(crypt, [crypt=1], [crypt=0]) -if test "$crypt" -eq "0"; then - AC_CHECK_LIB(crypt, crypt, [crypt=1], [crypt=0]) - if test "$crypt" -eq "1"; then - LIBS="$LIBS -lcrypt" - fi -fi -if test "$crypt" -eq "1"; then - AC_DEFINE_UNQUOTED(HAVE_CRYPT, 1) -fi - - -dnl --- sockets -dnl Check for post-Reno style struct sockaddr -AC_CACHE_CHECK([for sa_len], - ac_cv_sa_len, -[AC_TRY_COMPILE([#include -#include ], [int main(void) { - struct sockaddr t;t.sa_len = 0;}], - ac_cv_sa_len=yes,ac_cv_sa_len=no)]) -if test $ac_cv_sa_len = yes; then - AC_DEFINE(HAVE_SA_LEN) -fi - -dnl --- Socket authentication -AC_CHECK_HEADERS(cred.h sys/cred.h ucred.h sys/ucred.h) -AC_CHECK_FUNCS(getpeerucred) dnl Solaris 10 onward -AC_CHECK_FUNCS(getpeereid) dnl OpenBSD/FreeBSD - -dnl --------------------------------------------------------------------- -dnl Check for fcron more specific stuffs (paths, progs, ...) -dnl --------------------------------------------------------------------- - -fcron_enable_checks=yes -AC_ARG_ENABLE(checks, -[ --disable-checks Don't verify that programs exist on the host ], dnl ' -[ case "$enableval" in - no) - fcron_enable_checks=no - ;; - yes) - fcron_enable_checks=yes - ;; - *) - AC_MSG_WARN([Bad value for --disable-checks]) - ;; - esac -]) - - -dnl --------------------------------------------------------------------- -dnl Programs ... - -AC_PATH_PROG(FOUND_SENDMAIL, sendmail, , $PATH:/usr/lib:/usr/sbin ) -SENDMAIL= -USE_SENDMAIL=1 -AC_MSG_CHECKING([actual sendmail to use]) -AC_ARG_WITH(sendmail, [ --with-sendmail=PATH Path to sendmail.], -[ case "$withval" in - no) USE_SENDMAIL=0 ;; - yes) ;; - *) SENDMAIL=$withval ;; - esac ], -) - -if test "$USE_SENDMAIL" != "1" ; then - AC_MSG_RESULT([disabled]) - AC_MSG_WARN([Without sendmail you will not get the output of the jobs by mail]) -elif test -n "$SENDMAIL" ; then - dnl The user defined a sendmail program to use: - if test ! -x "$SENDMAIL" ; then - dnl ... but it is not an executable file! - AC_MSG_RESULT([$SENDMAIL]) - AC_MSG_ERROR([File $SENDMAIL is not an executable file]) - else - dnl ... and it is valid - AC_MSG_RESULT([$SENDMAIL]) - fi -elif test -z "$FOUND_SENDMAIL" ; then - dnl The user didn't defined a program to use, and we didn't find one automatically - AC_MSG_RESULT([not found]) - AC_MSG_ERROR([Empty sendmail path or cannot determine path to sendmail: try option --with-sendmail=PATH]) -else - dnl Use the automatically found sendmail program: - SENDMAIL="$FOUND_SENDMAIL" - AC_MSG_RESULT([$SENDMAIL]) -fi - -AC_SUBST([SENDMAIL]) -if test "$USE_SENDMAIL" = "1"; then - AC_DEFINE([USE_SENDMAIL]) -fi - -AC_PATH_PROG(FOUND_FCRON_SHELL, sh, , $PATH) -FCRON_SHELL= -AC_MSG_CHECKING([default shell to use to run a job]) -AC_ARG_WITH(shell, -[ --with-shell=PATH Path to default shell (by default, path to sh).], -[ case "$withval" in - no) - AC_MSG_ERROR(Need a default shell) - ;; - yes) - ;; - *) - FCRON_SHELL=$withval - if test $fcron_enable_checks = 'yes' -a ! -x "$withval"; then - AC_MSG_ERROR([ -File $withval is not an executable file]) - fi - ;; - esac ] -) -if test x"$FCRON_SHELL" = x ; then - FCRON_SHELL=$FOUND_FCRON_SHELL - if test "$FOUND_FCRON_SHELL" = "" ; then - AC_MSG_ERROR([ -Cannot determine path to sh: try option --with-shell=PATH]) - fi -fi - -AC_MSG_RESULT([$FCRON_SHELL]) -AC_SUBST([FCRON_SHELL]) - -AC_PATH_PROG(FOUND_FCRON_EDITOR, vi) -FCRON_EDITOR= -AC_MSG_CHECKING([editor to use for fcrontab]) -AC_ARG_WITH(editor, -[ --with-editor=PATH Path to default editor (by default, path to vi).], -[ case "$withval" in - no) - AC_MSG_ERROR([Need a default editor]) - ;; - yes) - ;; - *) - FCRON_EDITOR=$withval - if test $fcron_enable_checks = 'yes' -a ! -x "$withval"; then - AC_MSG_ERROR([ -File $withval is not an executable file]) - fi - ;; - esac ] -) - -if test x"$FCRON_EDITOR" = x; then - FCRON_EDITOR=$FOUND_FCRON_EDITOR - if test x"$FCRON_EDITOR" = x ; then - AC_MSG_ERROR([ -Cannot determine path to vi: try option --with-editor=PATH]) - fi -fi - -AC_MSG_RESULT([$FCRON_EDITOR]) -AC_SUBST([FCRON_EDITOR]) - -dnl --------------------------------------------------------------------- -dnl Paths ... - -PIDDIR="${localstatedir}/run" -AC_MSG_CHECKING(location of pid files) -AC_ARG_WITH(piddir, -[ --with-piddir=PATH Directory containing pid files.], -[ case "$withval" in - no) - AC_MSG_ERROR([Need PIDDIR.]) - ;; - yes) - ;; - *) - PIDDIR=$withval - ;; - esac ] -) -AC_MSG_RESULT([$PIDDIR]) -PIDFILE="${PIDDIR}/fcron.pid" -REBOOT_LOCK="${PIDDIR}/fcron.reboot" -AC_SUBST(PIDDIR) -AC_SUBST(PIDFILE) -AC_SUBST(REBOOT_LOCK) - -FIFODIR="${localstatedir}/run" -AC_MSG_CHECKING(location of fifo files) -AC_ARG_WITH(fifodir, -[ --with-fifodir=PATH Directory containing fifo files.], -[ case "$withval" in - no) - AC_MSG_ERROR(Need FIFODIR.) - ;; - yes) - ;; - *) - FIFODIR=$withval - ;; - esac] -) -AC_MSG_RESULT([$FIFODIR]) -FIFOFILE="${FIFODIR}/fcron.fifo" -AC_SUBST(FIFODIR) -AC_SUBST(FIFOFILE) - -sp="${localstatedir}/spool/fcron" -AC_MSG_CHECKING(location of spool directory) -AC_ARG_WITH(spooldir, -[ --with-spooldir=PATH Directory containing fcron spool (default PREFIX/var/spool/fcron).], -[ case "$withval" in - no) - AC_MSG_ERROR(Need SPOOLDIR.) - ;; - yes) - ;; - *) - sp="$withval" - ;; - esac ] -) -AC_MSG_RESULT($sp) -FCRONTABS="$sp" -AC_DEFINE_UNQUOTED(FCRONTABS, "$sp") -AC_SUBST(FCRONTABS) - -if test \( $getloadavg -eq 0 \) -a \( $kstat -eq 0 \); then -proc=/proc -AC_MSG_CHECKING(proc directory) -AC_ARG_WITH(proc, -[ --with-proc=PATH Directory where linux procfs is mounted (default /proc).], -[ case "$withval" in - no) - AC_MSG_WARN([ -Without proc, you won't be able to use the lavg* options -]) - AC_DEFINE(NOLOADAVG) - ;; - yes) - ;; - *) - proc=$withval - ;; - esac ] -) - -if test "$withval" != "no" -a $fcron_enable_checks = 'yes'; then - if test -f "$proc/loadavg"; then : - else - AC_MSG_WARN([ -Cannot determine value for proc directory: try option --with-proc=PATH]) - AC_MSG_ERROR(Use --with-proc=no to disable the lavg* options) - fi -fi - -AC_MSG_RESULT($proc) -PROC=$proc -AC_DEFINE_UNQUOTED(PROC, "$proc") -fi - -docdir="${datadir}/doc" -AC_MSG_CHECKING(location of doc directory) -AC_ARG_WITH(docdir, -[ --with-docdir=PATH Directory containing documentation.], -[ case "$withval" in - no) - AC_MSG_ERROR(Need DOCDIR.) - ;; - yes) - ;; - *) - docdir="$withval" - ;; - esac ]) - -AC_MSG_RESULT($docdir) -DOCDIR="$docdir" -AC_SUBST(DOCDIR) - - -dnl systemd init system -SYSTEMD_DIR="no" - -AC_CHECK_PROGS(PKG_CONFIG, $PKG_CONFIG pkg-config, , $PATH:/local/bin:/usr/local/bin:/opt/sfw/bin) -AC_MSG_CHECKING(for systemd) -AC_ARG_WITH([systemdsystemunitdir], -[ --with-systemdsystemunitdir=DIR Directory for systemd service files.], -[], [ if test "x" != "x$PKG_CONFIG"; then - with_systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd` - fi]) -if test "x$with_systemdsystemunitdir" != xno; then - if test "x" != "x$with_systemdsystemunitdir"; then - SYSTEMD_DIR="$with_systemdsystemunitdir" - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi -else - AC_MSG_RESULT(disabled) -fi -AC_SUBST(SYSTEMD_DIR) - - -dnl --------------------------------------------------------------------- -dnl Users and groups ... - -AC_MSG_CHECKING(run non-privileged) -AC_ARG_WITH(run-non-privileged, -[ --with-run-non-privileged=[yes|no] Run fcron without root's rights (see FAQ !)], -[ case "$withval" in - no) - run_non_privileged=0 - AC_MSG_RESULT(no) - ;; - yes) - run_non_privileged=1 - AC_MSG_RESULT(yes) - AC_MSG_WARN([ - -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -WARNING : - This option allows a non privileged user to run fcron. When used, - fcron does not change its rights before running a job (i.e., - if joe runs fcron, every job will run as joe). - It means that YOU SHOULD NOT RUN FCRON AS A PRIVILEGED USER WHEN - COMPILED WITH THIS OPTION or you'll have a serious security hole. -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - -]) - AC_DEFINE(RUN_NON_PRIVILEGED) - RUN_NON_PRIVILEGED=1 - AC_SUBST(RUN_NON_PRIVILEGED) - bootinstall=0 - fcrondyn=0 - usepam=0 - useselinux=0 - useaudit=0 - ;; - *) - AC_MSG_ERROR(Invalid argument : please use 'yes' or 'no'.) - ;; - esac], - run_non_privileged=0 - AC_MSG_RESULT(no) -) - - -if test "$fcrondyn" = ""; then - fcrondyn=1 -fi -AC_MSG_CHECKING(if fcrondyn should be compiled) -AC_ARG_WITH(fcrondyn, -[ --with-fcrondyn=[yes|no] Compile (or not) fcrondyn (default: yes).], -[ case "$withval" in - no) - fcrondyn=0 - AC_MSG_RESULT(no) - ;; - yes) - if test "$crypt" -eq 1; then - fcrondyn=1 - AC_MSG_RESULT(yes) - else - AC_MSG_ERROR(Need a crypt() function.) - fi - ;; - *) - AC_MSG_ERROR(Must be set to either "yes" or "no".) - ;; - esac ], - if test "$fcrondyn" = "1" && test "$crypt" -eq 1; then - AC_MSG_RESULT(yes) - else - fcrondyn=0 - AC_MSG_RESULT(no) - fi -) -FCRONDYN="$fcrondyn" -if test "$fcrondyn" = 1; then - AC_DEFINE_UNQUOTED(FCRONDYN, "$fcrondyn") - AC_SUBST(FCRONDYN) -fi - -AC_MSG_CHECKING([root's username]) -rootname=root -AC_ARG_WITH(rootname, -[ --with-rootname=USERNAME Root's username (default root) ], -[ case "$withval" in - no) - AC_MSG_ERROR([Need rootname.]) - ;; - yes) - ;; - *) - rootname=$withval - ;; - esac -]) - -if test $fcron_enable_checks = 'yes'; then - - rootuid=`$srcdir/script/has_usrgrp.pl -user $rootname -printuid` - if test "x$rootuid" = "x"; then - AC_MSG_ERROR([ -Invalid root's username or cannot determine root's username: try option --with-rootname=USERNAME]) - fi -fi -AC_MSG_RESULT([$rootname]) - - -AC_MSG_CHECKING([root's groupname]) -AC_ARG_WITH(rootgroup, -[ --with-rootgroup=GROUPNAME Root's groupname (default root (or wheel)) ], -[ case "$withval" in - no) - AC_MSG_ERROR(Need rootgroup.) - ;; - yes) - ;; - *) - rootgroup=$withval - ;; - esac ] -) - -if test $fcron_enable_checks = 'yes'; then - - if test x"$rootgroup" = x; then - # rootgroup not defined: test a few possibilities - rgid=`$srcdir/script/has_usrgrp.pl -group root -printgid` - wgid=`$srcdir/script/has_usrgrp.pl -group wheel -printgid` - if test "x$rgid" != "x"; then - rootgid=$rgid - rootgroup=root - elif test "x$wgid" != "x"; then - rootgid=$wgid - rootgroup=wheel - else - AC_MSG_ERROR([ -Cannot determine root's groupname: try option --with-rootgroup=GROUPNAME]) - fi - else - # rootgroup defined: check it - rootgid=`$srcdir/script/has_usrgrp.pl -group $rootgroup -printgid` - if test "x$rootgid" = "x"; then - AC_MSG_ERROR([ -Cannot determine root's groupname: try option --with-rootgroup=GROUPNAME]) - fi - fi - -else - # no check: use values given by user or default values - if test x"$rootgroup" = x ; then - rootgroup=root - fi - -fi - -AC_MSG_RESULT([$rootgroup]) - -ROOTNAME="$rootname" -AC_SUBST(ROOTNAME) -AC_DEFINE_UNQUOTED(ROOTNAME, "$rootname") -ROOTGROUP="$rootgroup" -AC_SUBST(ROOTGROUP) -AC_DEFINE_UNQUOTED(ROOTGROUP, "$rootgroup") - - -username="$rootname" -groupname="$rootgroup" - -AC_MSG_CHECKING(username to run fcrontab under) -AC_ARG_WITH(username, -[ --with-username=USERNAME Username to run fcrontab under (default fcron) ], -[ case "$withval" in - no) - AC_MSG_ERROR(Need USERNAME.) - ;; - yes) - if test "$has_euid" -eq 1 ; then - username=fcron - fi - AC_MSG_RESULT($username) - ;; - *) - if test "$has_euid" -eq 1 ; then - username="$withval"; - AC_MSG_RESULT($username) - if test "$withval" = "$rootname" && test "$RUN_NON_PRIVILEGED" != "1"; then - AC_MSG_ERROR([ - -Running fcrontab setuid root is NOT secure and would completely break -the security model of fcron. You must use a different user name. -]) - has_euid=0 - fi - else - AC_MSG_RESULT($username) - AC_MSG_WARN(username must be $rootname as your system has no seteuid) - fi - ;; - esac ], - if test "$has_euid" -eq 1 ; then - username=fcron - fi - AC_MSG_RESULT($username) -) - -AC_MSG_CHECKING(groupname to run fcrontab under) -AC_ARG_WITH(groupname, -[ --with-groupname=GROUPNAME Groupname to run fcrontab under (default fcron) ], -[ case "$withval" in - no) - AC_MSG_ERROR(Need GROUPNAME.) - ;; - yes) - if test "$has_euid" -eq 1 ; then - groupname=fcron - fi - AC_MSG_RESULT($groupname) - ;; - *) - if test "$has_euid" -eq 1 ; then - groupname="$withval"; - AC_MSG_RESULT($groupname) - else - AC_MSG_RESULT($groupname) - AC_MSG_WARN(groupname must be $rootgroup as username is $username) - fi - ;; - esac ], - if test "$has_euid" -eq 1 ; then - groupname=fcron - fi - AC_MSG_RESULT($groupname) -) - -USERNAME="$username" -AC_SUBST(USERNAME) -AC_DEFINE_UNQUOTED(USERNAME, "$username") -GROUPNAME="$groupname" -AC_SUBST(GROUPNAME) -AC_DEFINE_UNQUOTED(GROUPNAME, "$groupname") - - -if test "$has_euid" -eq 1 ; then - AC_DEFINE(USE_SETE_ID) -fi - - - -sysfcrontab="systab" -use_sysfcrontab=1 -AC_MSG_CHECKING(use a system fcrontab) -AC_ARG_WITH(sysfcrontab, -[ --with-sysfcrontab=NAME Use (or not) a system fcrontab (default: yes)], -[ case "$withval" in - no) - use_sysfcrontab=0 - AC_MSG_RESULT(no) - ;; - yes) - AC_MSG_RESULT(yes) - ;; - *) - sysfcrontab="$withval" - AC_MSG_RESULT($sysfcrontab) - esac ], - AC_MSG_RESULT(yes) -) -if test "$use_sysfcrontab" -eq 1 ; then - AC_DEFINE_UNQUOTED(SYSFCRONTAB, "$sysfcrontab") - SYSFCRONTAB="$sysfcrontab" - AC_SUBST(SYSFCRONTAB) -fi - - -dnl --------------------------------------------------------------------- -dnl Misc ... - -AC_ARG_WITH(debug, -[ --with-debug=CFLAGS Use default debug flags or CFLAGS if given to compile fcron in debug mode.], -[ case "$withval" in - no) - cflags="-O2 -Wall" - debug="0" - ;; - yes) - cflags="-DDEBUG -g -Wall -DFOREGROUND -DMALLOC_CHECK_=2 -Wpointer-arith -Wstrict-prototypes" - bootinstall=0 - debug="1" - ;; - *) - cflags="$withval" - debug="1" - ;; - esac ], - cflags="-O2 -Wall" - debug="0" -) -DEBUG=$debug -AC_SUBST(DEBUG) - - -if test "$bootinstall" = ""; then - bootinstall=1 -fi -AC_MSG_CHECKING(install interactively a boot script) -AC_ARG_WITH(boot-install, -[ --with-boot-install=[yes|no] Install (interactively) a boot script (default: yes).], -[ case "$withval" in - no) - bootinstall=0 - AC_MSG_RESULT(no) - ;; - yes) - bootinstall=1 - AC_MSG_RESULT(yes) - ;; - *) - AC_MSG_ERROR(Must be set to either "yes" or "no".) - ;; - esac ], - if test "$bootinstall" = "1"; then - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi -) -BOOTINSTALL="$bootinstall" -AC_DEFINE_UNQUOTED(BOOTINSTALL, "$bootinstall") -AC_SUBST(BOOTINSTALL) - - -AC_ARG_WITH(cflags, -[ --with-cflags=CFLAGS Use CFLAGS flags to compile fcron.], -[ case "$withval" in - no) - AC_MSG_ERROR(Need an explicit value for --with-cflags.) - ;; - yes) - AC_MSG_ERROR(Need an explicit value for --with-cflags.) - ;; - *) - cflags="$withval" - ;; - esac ], -) -CFLAGS=$cflags -AC_DEFINE_UNQUOTED(CFLAGS, "$cflags") - - -AC_MSG_CHECKING(automatic answer to make install's questions) -AC_ARG_WITH(answer-all, -[ --with-answer-all=[yes|no] Answer the argument to every make install's questions.], -[ case "$withval" in - no) - answerall=0 - AC_MSG_RESULT(yes (answer "no")) - ;; - yes) - answerall=1 - AC_MSG_RESULT(yes (answer "yes")) - ;; - *) - AC_MSG_ERROR(Must be set to either "yes" or "no".) - ;; - esac ], - answerall=2 - AC_MSG_RESULT(no) -) -ANSWERALL="$answerall" -AC_DEFINE_UNQUOTED(ANSWERALL, "$answerall") -AC_SUBST(ANSWERALL) - - -AC_MSG_CHECKING(if audit trails should be enabled if available) -AC_ARG_WITH(audit, -[ --with-audit=[yes|no] Enable (or not) audit trails if available (default: yes).], -[ case "$withval" in - no) - useaudit=0 - ;; - yes) - useaudit=1 - ;; - *) - AC_MSG_ERROR(Must be set to either "yes" or "no".) - ;; - esac ] -) -if test useaudit = "0"; then - AC_MSG_RESULT(no) -elif test "$useaudit" = "1" && test "$auditavail" != 1; then - useaudit=0 - AC_MSG_RESULT(not available) - AC_MSG_ERROR([ - You requested audit trails to be enabled, but libaudit was not found. -]) -elif test "$auditavail" = 1; then - useaudit=1 - AC_MSG_RESULT(yes) - LIBS="$LIBS -laudit" - AC_DEFINE(WITH_AUDIT) -else - useaudit=0 - AC_MSG_RESULT(no) -fi - - -if test "$usepam" = ""; then - usepam=1 -fi -AC_MSG_CHECKING(if pam should be used if available) -AC_ARG_WITH(pam, -[ --with-pam=[yes|no] Use (or not) PAM if available (default: yes).], -[ case "$withval" in - no) - usepam=0 - AC_MSG_RESULT(no) - ;; - yes) - AC_MSG_RESULT(yes) - AC_CHECK_LIB(pam, pam_acct_mgmt) - ;; - *) - AC_MSG_ERROR(Must be set to either "yes" or "no".) - ;; - esac ], - if test "$usepam" = "1"; then - AC_MSG_RESULT(yes) - AC_CHECK_LIB(pam, pam_acct_mgmt) - else - usepam=0 - AC_MSG_RESULT(no) - fi -) -if test "$usepam" != "0" && echo "$LIBS" | grep -- "-lpam" > /dev/null ; then - usepam=1 -else - usepam=0 -fi -USEPAM="$usepam" -AC_SUBST(USEPAM) - - -if test "$useselinux" = ""; then - useselinux=1 -fi -AC_MSG_CHECKING(if SELinux should be used) -AC_ARG_WITH(selinux, -[ --with-selinux=[yes|no] Use (or not) SELinux (default: yes).], -[ case "$withval" in - no) - useselinux=0 - AC_MSG_RESULT(no) - ;; - yes) - if test "$selinuxavail" -eq 1; then - useselinux=1 - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(not available) - AC_MSG_ERROR([ - You requested the use of SELinux, but SELinux is considered - as not available by configure script. -]) - fi - ;; - *) - AC_MSG_ERROR(Must be set to either "yes" or "no".) - ;; - esac ], - if test "$useselinux" != "0" && test "$selinuxavail" -eq 1; then - useselinux=1 - AC_MSG_RESULT(yes) - else - useselinux=0 - AC_MSG_RESULT(not available) - fi -) -if test "$useselinux" -eq 1; then - LIBS="$LIBS -lselinux" - AC_DEFINE(WITH_SELINUX) - CFLAGS="$CFLAGS -I/usr/include/selinux" -fi - - -dnl --------------------------------------------------------------------- -dnl DocBook - -AC_PATH_PROG(JADE,openjade) -if test -z "$JADE"; then - AC_PATH_PROG(JADE,jade) -fi - -AC_PATH_PROG(DB2MAN,docbook2man) -if test -z "$DB2MAN"; then - AC_PATH_PROG(DB2MAN,db2man) -fi -AC_MSG_CHECKING(Looking for docbook2man converter) -AC_ARG_WITH(db2man, -[ --with-db2man=PATH(or 'no') set PATH to a docbook2man converter.], -[ case "$withval" in - no) - DB2MAN="" - AC_MSG_RESULT(none) - ;; - yes) - AC_MSG_ERROR(Must be set to PATH or "no".) - ;; - *) - if test ! -x "$withval"; then - AC_MSG_ERROR($withval is not an exe file.) - fi - DB2MAN="$withval" - AC_MSG_RESULT($withval) - ;; - esac ], - AC_MSG_RESULT(default: $DB2MAN) -) -AC_SUBST(DB2MAN) - -AC_PATH_PROG(NSGMLS, nsgmls) -AC_PATH_PROG(SGMLSPL, sgmlspl) - -DB2MAN_SPEC="/usr/share/sgml/docbook/utils-0.6.9/helpers/docbook2man-spec.pl" - -AC_MSG_CHECKING(Looking for docbook2man-spec file) -AC_ARG_WITH(db2man-spec, -[ --with-db2man-spec=PATH set the PATH to docbook2man-spec file - (needed if no db2man converter is set).], -[ case "$withval" in - no) - DB2MAN_SPEC="" - AC_MSG_RESULT(none) - ;; - yes) - AC_MSG_ERROR(Must be set to PATH or "no".) - ;; - *) - if test ! -f "$withval"; then - AC_MSG_ERROR($withval is not a file.) - fi - DB2MAN_SPEC="$withval" - AC_MSG_RESULT($withval) - ;; - esac ], - AC_MSG_RESULT(default) -) -AC_SUBST(DB2MAN_SPEC) - -if test -x "$DB2MAN"; then - DB2MAN_BEFORE="$DB2MAN" - DB2MAN_AFTER="" -else - if test \( \( -f "$DB2MAN_SPEC" \) -a \( -x "$NSGMLS" \) \ - -a \( -x "$SGMLSPL" \) \); then - DB2MAN_BEFORE="$NSGMLS" - DB2MAN_AFTER="2> /dev/null | $SGMLSPL $DB2MAN_SPEC" - else - DB2MAN_BEFORE="" - DB2MAN_AFTER="" - fi -fi -AC_SUBST(DB2MAN_BEFORE) -AC_SUBST(DB2MAN_AFTER) - - -DSSSL_DIR="/usr/share/sgml/docbook/stylesheet/dsssl/modular" - -AC_MSG_CHECKING(Looking for dsssl stylsheets) -AC_ARG_WITH(dsssl-dir, -[ --with-dsssl-dir=DIR change the default location of DSSSL stylesheets.], -[ case "$withval" in - no) - DSSSL_DIR="" - AC_MSG_RESULT(none) - ;; - yes) - AC_MSG_ERROR(Must be set to DIR or "no".) - ;; - *) - if test ! -f "$withval/html/docbook.dsl"; then - AC_MSG_ERROR($withval/html/docbook.dsl does not exist.) - fi - DSSSL_DIR="$withval" - AC_MSG_RESULT($withval) - ;; - esac ], - AC_MSG_RESULT(default) - if test ! -f "$DSSSL_DIR/html/docbook.dsl"; then - AC_MSG_WARN([ - -$DSSSL_DIR/html/docbook.dsl does not exist. You will probably not be able to generate the documentation from the DocBook source files.]) - AC_MSG_WARN([Use --with-dsssl-dir to specify a directory. -]) - fi -) -AC_SUBST(DSSSL_DIR) - - -dnl --------------------------------------------------------------------- -dnl Final settings -dnl --------------------------------------------------------------------- - - -AC_OUTPUT(Makefile doc/Makefile doc/stylesheets/fcron-doc.dsl) - - -dnl --------------------------------------------------------------------- -dnl Info for user -dnl --------------------------------------------------------------------- - -echo -echo "Summary :" -echo "-------" -echo -echo -n "run in debug mode by default : " -if test "$debug" -eq "1"; then - echo "yes" -else - echo "no" -fi - -echo -n "Audit trails : " -if test "$useaudit" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo -n "PAM : " -if test "$usepam" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo -n "SELinux : " -if test "$useselinux" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo -n "Readline : " -if test "$ax_cv_lib_readline" = "no"; then - echo "no" -else - echo "yes" -fi - - -echo -n "Run without root's rights : " -if test "$run_non_privileged" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo -n "Load average support : " -if test "$getloadavg" -eq 1 -o -n "$proc"; then - echo "yes" -else - echo "no" -fi - -echo -n "compile fcrondyn : " -if test "$fcrondyn" -eq 1; then - echo "yes" -else - echo "no" -fi - -echo "fcron's user (resp. group) name : $username (resp. $groupname)" - -echo -n "sysfcrontab : " -if test "$use_sysfcrontab" -eq 1; then - echo "yes ($sysfcrontab)" -else - echo "no" -fi - -echo "prefix: $prefix" -echo "exec_prefix: $exec_prefix" -echo "datarootdir: $datarootdir" -echo "bin dir: $bindir" -echo "sbin dir: $sbindir" -echo "spool dir: $sp" -echo "etc dir: $sysconfdir" -echo "doc dir: $docdir" -echo "man dir: $mandir " - - -echo -echo "You can now run '$MAKE' to compile" -echo "and then (as root) '$MAKE install' to install fcron." -echo diff --git a/fcron-3.2.0/convert-fcrontab.c b/fcron-3.2.0/convert-fcrontab.c deleted file mode 100644 index c40c62e..0000000 --- a/fcron-3.2.0/convert-fcrontab.c +++ /dev/null @@ -1,289 +0,0 @@ - -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - -#include "convert-fcrontab.h" -#include "mem.h" - - -void info(void); -void usage(void); -void convert_file(char *file_name); -char *read_str(FILE * f, char *buf, int max); -void delete_file(cf_t * file); - -char *cdir = FCRONTABS; /* the dir where are stored users' fcrontabs */ - -/* needed by log part : */ -char *prog_name = NULL; -char foreground = 1; -pid_t daemon_pid = 0; -uid_t rootuid = 0; -gid_t rootgid = 0; - -void -info(void) - /* print some informations about this program : - * version, license */ -{ - fprintf(stderr, - "convert-fcrontab " VERSION_QUOTED "\n" - "Copyright " COPYRIGHT_QUOTED " Thibault Godouet \n" - "This program is free software distributed WITHOUT ANY WARRANTY.\n" - "See the GNU General Public License for more details.\n" - "\n" - "WARNING: this program is not supposed to be installed on the " - "system. It is only used at installation time to convert the " - "the binary fcrontabs in the old format (fcron < 1.1.0, which " - "was published in 2001) to the present one."); - - exit(EXIT_OK); - -} - - -void -usage() - /* print a help message about command line options and exit */ -{ - fprintf(stderr, "\nconvert-fcrontab " VERSION_QUOTED "\n\n" - "convert-fcrontab -h\n" - "convert-fcrontab -V\n" - "convert-fcrontab user\n" - " Update the fcrontab of \"user\" to fit the new binary format.\n" - "\n" - "WARNING: this program is not supposed to be installed on the " - "system. It is only used at installation time to convert the " - "the binary fcrontabs in the old format (fcron < 1.1.0, which " - "was published in 2001) to the present one."); - - exit(EXIT_ERR); -} - - -char * -read_str(FILE * f, char *buf, int max) - /* return a pointer to string read from file f - * if it is non-zero length */ -{ - int i; - - for (i = 0; i < max; i++) - if ((buf[i] = fgetc(f)) == '\0') - break; - buf[max - 1] = '\0'; - - if (strlen(buf) == 0) - return NULL; - else - return strdup2(buf); - -} - - -void -delete_file(cf_t * file) - /* free a file if user_name is not null - * otherwise free all files */ -{ - cl_t *line = NULL; - cl_t *cur_line = NULL; - - - /* free lines */ - cur_line = file->cf_line_base; - while ((line = cur_line) != NULL) { - cur_line = line->cl_next; - Free_safe(line->cl_shell); - Free_safe(line->cl_mailto); - Free_safe(line->cl_runas); - Free_safe(line); - } - - /* free env variables */ - env_list_destroy(file->cf_env_list); - - /* finally free file itself */ - Free_safe(file->cf_user); - Free_safe(file); - -} - - -void -convert_file(char *file_name) -/* this functions is a mix of read_file() from version 1.0.3 and save_file(), - * so you can read more comments there */ -{ - cf_t *file = NULL; - cl_t *line = NULL; - char *env = NULL; - FILE *f = NULL; - char buf[LINE_LEN]; - time_t t_save = 0; - struct stat file_stat; - - explain("Converting %s's fcrontab ...", file_name); - - Alloc(file, cf_t); - /* open file */ - if ((f = fopen(file_name, "r")) == NULL) - die_e("Could not read %s", file_name); - - if (fstat(fileno(f), &file_stat) != 0) - die_e("Could not stat %s", file_name); - - bzero(buf, sizeof(buf)); - - if (fgets(buf, sizeof(buf), f) == NULL || - strncmp(buf, "fcrontab-017\n", sizeof("fcrontab-017\n")) != 0) { - - error("File %s is not valid: ignored.", file_name); - error("Maybe this file has been generated by a too old version " - "of fcron ( <= 0.9.4), or is already in the new binary format."); - error("In this case, you should reinstall it using fcrontab" - " (but be aware that you may lose some data as the last " - "execution time and date as if you run a fcrontab -z -n)."); - exit(EXIT_ERR); - } - - if ((file->cf_user = read_str(f, buf, sizeof(buf))) == NULL) - die_e("Cannot read user's name"); - - if (fscanf(f, "%" ATTR_SIZE_TIMET "d", CAST_TIMET_PTR & t_save) != 1) - error("could not get time and date of saving"); - - /* read env variables */ - while ((env = read_str(f, buf, sizeof(buf))) != NULL) { - env_list_putenv(file->cf_env_list, env, 1); - Free_safe(env); - } - - /* read lines */ - Alloc(line, cl_t); - while (fread(line, sizeof(cl_t), 1, f) == 1) { - - if ((line->cl_shell = read_str(f, buf, sizeof(buf))) == NULL) { - error("Line is not valid (empty shell command) : ignored"); - continue; - } - if ((line->cl_runas = read_str(f, buf, sizeof(buf))) == NULL) { - error("Line is not valid (empty runas field) : ignored"); - continue; - } - if ((line->cl_mailto = read_str(f, buf, sizeof(buf))) == NULL) { - error("Line is not valid (empty mailto field) : ignored"); - continue; - } - - line->cl_next = file->cf_line_base; - file->cf_line_base = line; - Alloc(line, cl_t); - - } - - Free_safe(line); - - xfclose(&f); - - /* open a temp file in write mode and truncate it */ - strcpy(buf, "tmp_"); - strncat(buf, file_name, sizeof(buf) - sizeof("tmp_") - 1); - buf[sizeof(buf) - 1] = '\0'; - - /* everything's ok : we can override the src file safely */ - if (rename(buf, file_name) != 0) - error_e("Could not rename %s to %s", buf, file_name); - - save_file_safe(file, file_name, "convert-fcrontab", file_stat.st_uid, - file_stat.st_gid, t_save); - - delete_file(file); -} - -int -main(int argc, char *argv[]) -{ - int c; - extern char *optarg; - extern int optind, opterr, optopt; - char *user_to_update = NULL; - - rootuid = get_user_uid_safe(ROOTNAME); - rootgid = get_group_gid_safe(ROOTGROUP); - - if (strrchr(argv[0], '/') == NULL) - prog_name = argv[0]; - else - prog_name = strrchr(argv[0], '/') + 1; - - - /* constants and variables defined by command line */ - - while (1) { - c = getopt(argc, argv, "chV"); - if (c == EOF) - break; - switch (c) { - - case 'V': - info(); - break; - - case 'h': - usage(); - break; - - case 'c': - Set(fcronconf, optarg); - break; - - case ':': - fprintf(stderr, "(setopt) Missing parameter"); - usage(); - - case '?': - usage(); - - default: - fprintf(stderr, "(setopt) Warning: getopt returned %c", c); - } - } - - if (optind >= argc || argc != 2) - usage(); - - /* parse fcron.conf */ - read_conf(); - - user_to_update = strdup2(argv[optind]); - - if (chdir(cdir) != 0) - die_e("Could not change dir to " FCRONTABS); - - convert_file(user_to_update); - - exit(EXIT_OK); - -} diff --git a/fcron-3.2.0/convert-fcrontab.h b/fcron-3.2.0/convert-fcrontab.h deleted file mode 100644 index 1d739a3..0000000 --- a/fcron-3.2.0/convert-fcrontab.h +++ /dev/null @@ -1,39 +0,0 @@ -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - -#ifndef __CONVERT_FCRONTAB_H__ -#define __CONVERT_FCRONTAB_H__ - -/* We create a .h (even if empty !) because we have a generic rule - in Makefile to create .o files which needs the corresponding .h to exist. */ - -#include "global.h" - -/* needed for parsing a conf file */ -#include "fcronconf.h" - -extern uid_t rootuid; -extern gid_t rootgid; - -#endif /* __CONVERT_FCRONTAB_H__ */ diff --git a/fcron-3.2.0/database.c b/fcron-3.2.0/database.c deleted file mode 100644 index c76e629..0000000 --- a/fcron-3.2.0/database.c +++ /dev/null @@ -1,1583 +0,0 @@ -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - -#include "fcron.h" - -#include "database.h" -#include "job.h" -#include "getloadavg.h" - -int is_leap_year(int year); -int get_nb_mdays(int year, int mon); -void set_wday(struct tm *date); -time_t mktime_no_dst(struct tm *t); -void goto_beginning_next_period_periodical(cl_t * line, struct tm *ftime); -void move_time_to(int where, cl_t * line, struct tm *ftime); -#define BEGIN_NEXT_PERIOD 11 /* move_time_to()'s where possible value */ -#define END_OF_INTERVAL 12 /* move_time_to()'s where possible value */ -void run_serial_job(void); -void run_lavg_job(lavg_t * l); -void run_queue_job(cl_t * line); - -void -test_jobs(void) - /* determine which jobs need to be run, and run them. */ -{ - struct job_t *j; - -/* // */ - debug("Looking for jobs to execute ..."); -/* // */ - - while ((j = queue_base) && j->j_line->cl_nextexe <= now) { - - if (j->j_line->cl_remain > 0 && --(j->j_line->cl_remain) > 0) { - debug(" cl_remain: %d", j->j_line->cl_remain); - } - else { - - j->j_line->cl_remain = j->j_line->cl_runfreq; - - if (is_lavg(j->j_line->cl_option)) - add_lavg_job(j->j_line, -1); - else if (is_serial(j->j_line->cl_option)) - add_serial_job(j->j_line, -1); - else - run_normal_job(j->j_line, -1); - - set_hasrun(j->j_line->cl_option); - } - - if (is_runonce(j->j_line->cl_option) && is_hasrun(j->j_line->cl_option)) { - explain("Line '%s' has runonce set: not re-scheduling it.", - j->j_line->cl_shell); - job_queue_remove(j->j_line); - } - else { - set_next_exe(j->j_line, STD, -1); - } - } - -} - - -int -switch_timezone(const char *orig_tz, const char *dest_tz) -/* check if we have already switched to dest_tz timezone, otherwise do it */ -/* If dest_tz is NULL, this function does nothing */ -/* Returns 1 if this function has switched the timezone, 0 otherwise */ -{ - char *current_tz = getenv("TZ"); - - if (dest_tz != NULL && - (current_tz == NULL || strcmp(dest_tz, current_tz) != 0)) { - my_setenv_overwrite("TZ", dest_tz); - return 1; - } - else - return 0; -} - -void -switch_back_timezone(const char *orig_tz) -/* if orig_tz is NULL, unsets TZ - * otherwise, sets TZ to orig_tz */ -{ - if (orig_tz == NULL) { - my_unsetenv("TZ"); - } - else { - my_setenv_overwrite("TZ", orig_tz); - } -} - - -time_t -mktime_no_dst(struct tm *t) -/* same as mktime(), but without daylight saving time (dst) change adjustment - * (ie. the returned time_t does not depend on the tm_isdst field) */ -/* Remark : you may think that instead of creating a new function, - * it would be easier to set the tm_isdst field to -1. - * Unfortunately, the behaviour of mktime() with - * tm_isdst set to -1 depends on the unix you run. - * In other word, it wouldn't be portable. */ -/* - * WARNING : the content of t has to be valid (for instance, 0<=t->tm_hour<=23, - * etc) - */ -{ - struct tm t2; - time_t ti1; - - t2 = *t; - - ti1 = mktime(&t2); - /* */ - debug("after mktime() : %d:%d isdst:%d ti:%ld\n", - t2.tm_hour, t2.tm_min, t2.tm_isdst, ti1); - /* */ - - /* check if there have been a dst change adjustment */ - if (t->tm_isdst != t2.tm_isdst) { - - time_t ti2; - struct tm t3; - - /* recompute the time_t field with the other isdst value - * it works well, unless in a special case, hence the test - * below */ - t3 = *t; - t3.tm_isdst = t2.tm_isdst; - ti2 = mktime(&t3); - /* */ - debug("after dst fix 1 : %d:%d isdst:%d ti:%ld\n", - t3.tm_hour, t3.tm_min, t3.tm_isdst, ti2); - /* */ - - /* if t1 is in the "gap" of a dst change (for instance, - * if t1 is 2:30 while at 2:00, it is 3:00 due to the dst change, - * ie. 2:30 is never reached), the ti2 may be incorrect : - * we check that it is correct before using it : */ - if (t3.tm_hour == t->tm_hour || ti1 < ti2) { - t2 = t3; - ti1 = ti2; - } - - } - - *t = t2; - return ti1; -} - - -void -run_normal_job(cl_t * line, int info_fd) -/* run a job, and write "log" on info_fd if positive */ -{ - - if (line->cl_numexe <= 0 || - (is_exe_sev(line->cl_option) && line->cl_numexe < UCHAR_MAX)) { - line->cl_numexe += 1; - run_queue_job(line); - send_msg_fd(info_fd, "Job '%s' started.", line->cl_shell); - } - else { - warn_fd(info_fd, " process already running: %s's '%s'", - line->cl_file->cf_user, line->cl_shell); - } - -} - -void -run_lavg_job(lavg_t * l) -{ - - run_queue_job(l->l_line); - - if (is_serial(l->l_line->cl_option)) - lavg_serial_running++; - -} - - -void -run_serial_job(void) - /* run the next serialized job */ -{ -/* // */ -/* debug("running next serial job"); */ -/* // */ - - debug("num: %d running:%d index:%d", serial_num, serial_running, - serial_array_index); - if (serial_num != 0) { - run_queue_job(serial_array[serial_array_index]); - serial_array[serial_array_index] = NULL; - - serial_running++; - if (++serial_array_index >= serial_array_size) - serial_array_index -= serial_array_size; - serial_num--; - - } -} - - -void -run_queue_job(cl_t * line) - /* run a job */ -{ - - exe_t e = { NULL, 0, 0 }; - -/* // */ -/* debug("run_queue_job"); */ -/* // */ - - e.e_line = line; - - /* run the job */ - if (run_job(&e) == OK) { - /* append job to the list of executed job */ - exe_list_add(exe_list, &e); - line->cl_file->cf_running += 1; - } - -} - -job_t * -job_queue_remove(cl_t * line) - /* remove a job from the queue list - * returns a pointer to the previous entry, - * or NULL if the line either wasn't in the queue or was the first entry */ -{ - struct job_t *j; - struct job_t *jprev = NULL; - - if (queue_base == NULL) - return NULL; - - /* find the job in the list */ - for (j = queue_base; j != NULL; jprev = j, j = j->j_next) { - if (j->j_line == line) { - /* remove it from the list */ - if (jprev != NULL) { - jprev->j_next = j->j_next; - } - else - /* first element of the list */ - queue_base = j->j_next; - - Free_safe(j); - return jprev; - } - } - - /* the job wasn't there */ - return NULL; -} - -void -insert_nextexe(cl_t * line) - /* insert a job at the right position in the job queue */ -{ - struct job_t *newjob = NULL; - struct job_t *j = NULL; - struct job_t *jprev = NULL; - - Alloc(newjob, job_t); - newjob->j_line = line; - newjob->j_next = NULL; - - if (queue_base == NULL) { - /* no job in queue */ - queue_base = newjob; - return; - } - - jprev = job_queue_remove(line); - j = (jprev) ? jprev : queue_base; - - /* check if we should start from queue_base or from jprev - * (in some cases, e.g. fcrontab has just been edited, the line should - * be moved *forward* in the queue) */ - if (jprev == NULL || line->cl_nextexe < jprev->j_line->cl_nextexe) { - j = queue_base; - } - - /* a job can only be moved back */ - while (j != NULL && (line->cl_nextexe >= j->j_line->cl_nextexe)) { - jprev = j; - j = j->j_next; - } - /* when we get out from the while(), newjob should be added between jprev and j */ - - newjob->j_next = j; - - if (jprev == NULL) - queue_base = newjob; - else - jprev->j_next = newjob; - -} - -void -add_serial_job(cl_t * line, int info_fd) - /* add the next queued job in serial queue */ -{ - short int i; - - /* check if the line is already in the serial queue - * (we consider serial jobs currently running as in the queue) */ - if ((is_serial_sev(line->cl_option) && line->cl_numexe >= UCHAR_MAX) || - (!is_serial_sev(line->cl_option) && line->cl_numexe > 0)) { - send_msg_fd_debug(info_fd, "already in serial queue '%s'", - line->cl_shell); - return; - } - - send_msg_fd_debug(info_fd, "inserting in serial queue '%s'", - line->cl_shell); - - if (serial_num >= serial_array_size) { - if (serial_num >= serial_queue_max) { - error_fd(info_fd, "Could not add job : serial queue is full " - "(%d jobs). Consider using option serialonce, fcron's " - "option -m and/or -q : '%s'", serial_queue_max, - line->cl_shell); - if (is_notice_notrun(line->cl_option)) - mail_notrun(line, QUEUE_FULL, NULL); - return; - } - else { - cl_t **ptr = NULL; - short int old_size = serial_array_size; - - debug("Resizing serial_array"); - serial_array_size = (serial_array_size + SERIAL_GROW_SIZE); - - ptr = - alloc_safe(serial_array_size * sizeof(cl_t *), "serial_array"); - - /* copy lines in order to have the first line at the index 0 */ - memcpy(ptr + serial_array_index, serial_array, - (sizeof(cl_t *) * (old_size - serial_array_index))); - memcpy(ptr, serial_array + (old_size - serial_array_index), - (sizeof(cl_t *) * serial_array_index)); - serial_array_index = 0; - Free_safe(serial_array); - serial_array = ptr; - } - } - - if ((i = serial_array_index + serial_num) >= serial_array_size) - i -= serial_array_size; - - serial_array[i] = line; - - serial_num++; - line->cl_numexe += 1; - - send_msg_fd_debug(info_fd, "serial num: %d size:%d index:%d curline:%d " - "running:%d (%s)", serial_num, serial_array_size, - serial_array_index, i, serial_running, line->cl_shell); - - -} - - -void -add_lavg_job(cl_t * line, int info_fd) - /* add the next queued job in lavg queue */ - /* WARNING : must be run before a set_next_exe() to get the strict option - * working correctly */ -{ - lavg_t *lavg_entry = NULL; - - /* check if the line is already in the lavg queue - * (we consider serial jobs currently running as in the queue) */ - if ((is_lavg_sev(line->cl_option) && line->cl_numexe >= UCHAR_MAX) || - (!is_lavg_sev(line->cl_option) && line->cl_numexe > 0)) { - send_msg_fd_debug(info_fd, "already in lavg queue '%s'", - line->cl_shell); - return; - } -/* // */ - send_msg_fd_debug(info_fd, "inserting in lavg queue '%s'", line->cl_shell); -/* // */ - - /* append job to the list of lavg job */ - lavg_entry = lavg_list_add_line(lavg_list, line); - if (lavg_entry == NULL) { - error_fd(info_fd, - "Could not add job '%s' : lavg queue is full (%d jobs)." - " Consider using options lavgonce, until, strict and/or " - "fcron's option -q.", line->cl_shell, lavg_list->max_entries); - if (is_notice_notrun(line->cl_option)) - mail_notrun(line, QUEUE_FULL, NULL); - return; - } - - line->cl_numexe += 1; - set_run_if_late(line->cl_option); - if (is_strict(line->cl_option) && line->cl_runfreq == 1) { - struct tm *ft; - struct tm ftime; - time_t begin_of_cur_int, end_of_cur_int = 0; - int tz_changed = 0; - - /* Switch to another timezone if necessary. */ - /* If line should be scheduled in a different time zone - * (ie. cl_tz != NULL), - * switch to that timezone now, do the calculations, - * and switch back to the local timezone at the end - * of the function. */ - tz_changed = switch_timezone(orig_tz_envvar, line->cl_tz); - - /* handle timezone differences */ - begin_of_cur_int = line->cl_nextexe - (line->cl_file->cf_tzdiff * 3600); - - ft = localtime(&begin_of_cur_int); - - /* localtime() function seems to return every time the same pointer : - * it resets our previous changes, so we need to prevent it - * ( localtime() is used in the debug() function) */ - memcpy(&ftime, ft, sizeof(struct tm)); - - move_time_to(END_OF_INTERVAL, line, &ftime); - - end_of_cur_int = - mktime_no_dst(&ftime) + (line->cl_file->cf_tzdiff * 3600); - - if ((line->cl_until > 0) && (line->cl_until + now < end_of_cur_int)) - lavg_entry->l_until = line->cl_until + now; - else { - lavg_entry->l_until = end_of_cur_int; - clear_run_if_late(line->cl_option); - } - - if (tz_changed > 0) - switch_back_timezone(orig_tz_envvar); - } - else - lavg_entry->l_until = (line->cl_until > 0) ? now + line->cl_until : 0; - -} - - -void -wait_chld(void) - /* wait_chld() - check for job completion */ -{ - int pid; - cl_t *line = NULL; - exe_t *e = NULL; - -/* // */ -/* debug("wait_chld"); */ -/* // */ - - while ((pid = wait3(NULL, WNOHANG, NULL)) > 0) { - - for (e = exe_list_first(exe_list); e != NULL; - e = exe_list_next(exe_list)) { - - if (pid == e->e_ctrl_pid) { - if (e->e_line == NULL) { - /* the corresponding file has been removed from memory */ - debug("job finished: pid %d", pid); - } - else { - - line = e->e_line; -/* debug("job finished: %s", line->cl_shell); */ - line->cl_numexe -= 1; - line->cl_file->cf_running -= 1; - - if (is_serial_once(line->cl_option)) { - clear_serial_once(line->cl_option); - if (--serial_running < serial_max_running) - run_serial_job(); - } - else if (is_serial(line->cl_option) - && !is_lavg(line->cl_option)) { - if (--serial_running < serial_max_running) - run_serial_job(); - } - else if (is_lavg(line->cl_option) - && is_serial(line->cl_option)) - lavg_serial_running--; - } - - exe_list_remove_cur(exe_list); - exe_list_end_iteration(exe_list); - break; - } - } - - } - -} - - -void -wait_all(int *counter) - /* return after all jobs completion. */ -{ - int pid; - exe_t *e = NULL; - - debug("Waiting for all jobs"); - - while ((*counter > 0) && (pid = wait3(NULL, 0, NULL)) > 0) { - for (e = exe_list_first(exe_list); e != NULL; - e = exe_list_next(exe_list)) { - if (pid == e->e_ctrl_pid) { - if (e->e_line == NULL) { - /* the corresponding file has been removed from memory */ - debug("job finished: pid %d", pid); - } - else { - - debug("job finished: '%s'", e->e_line->cl_shell); - e->e_line->cl_numexe -= 1; - e->e_line->cl_file->cf_running -= 1; - - if (is_serial_once(e->e_line->cl_option)) - clear_serial_once(e->e_line->cl_option); - - } - - exe_list_remove_cur(exe_list); - exe_list_end_iteration(exe_list); - break; - } - } - } - -} - - -int -is_leap_year(int year) - /* return 1 if it's a leap year otherwise return 0 */ -{ - return ((year % 4 == 0) && ((year % 100 != 0) || (year % 400 == 0))); - -} - - -int -get_nb_mdays(int year, int mon) - /* return the number of days in a given month of a given year */ -{ - if (mon == 1) { /* is February ? */ - if (is_leap_year(year)) - return 29; - else - return 28; - } - else if (mon <= 6) - if (mon % 2 == 0) - return 31; - else - return 30; - else if (mon % 2 == 0) - return 30; - else - return 31; - -} - - -void -set_wday(struct tm *date) - /* we know that 01/01/2000 was a Saturday ( day number 6 ) - * so we count the number of days since 01/01/2000, - * and add this number modulo 7 to the wday number */ -{ - long nod = 0; - int i; - - /* we add the number of days of each previous years */ - for (i = (date->tm_year - 1); i >= 100; i--) - nod += (is_leap_year(i + 1900)) ? 366 : 365; - - /* and month */ - for (i = (date->tm_mon - 1); i >= 0; i--) - nod += get_nb_mdays((date->tm_year + 1900), i); - - /* then we add the number of days passed in the current month */ - nod += (date->tm_mday - 1); /* (mday is set from 1 to 31) */ - - date->tm_wday = (nod % 7) + 6; - - if (date->tm_wday >= 7) - date->tm_wday -= 7; - - debug(" dow of %04d-%02d-%02d : %d", (date->tm_year + 1900), - (date->tm_mon + 1), date->tm_mday, date->tm_wday); - -} - - -void -goto_beginning_next_period_periodical(cl_t * line, struct tm *ftime) - /* From ftime, search the first/nearest time and date of the line's next - * period of execution. - * - * Line must be periodical (i.e. is_freq_periodically(line->cl_option) == TRUE) - * - * ftime will contain this time and date when this function returns. - * - * Vocabulary: - * interval of execution= a continuous interval of time during which - * the line can be executed. - * period of execution= a continuous interval of time during which - * the line is to be executed once and only once. */ -{ - int max = 0; - - /* sanity check */ - if (!is_freq_periodically(line->cl_option)) - die("goto_beginning_next_period() called with a non periodical line"); - - - /* number of days in ftime's month */ - max = get_nb_mdays(ftime->tm_year, ftime->tm_mon); - - /* STEP 1: find the beginning of the next period without ensuring - * there is no overflow (min>=60, hour>=24, etc) */ - - if (is_freq_mid(line->cl_option)) { - - if (is_freq_mins(line->cl_option)) - /* nothing to do : return */ - return; - else if (is_freq_hrs(line->cl_option)) { - if (ftime->tm_min >= 30) - ftime->tm_hour++; - ftime->tm_min = 30; - } - else { - ftime->tm_min = 0; - if (is_freq_days(line->cl_option)) { - if (ftime->tm_hour >= 12) - ftime->tm_mday++; - ftime->tm_hour = 12; - } - else { - ftime->tm_hour = 0; - if (is_freq_dow(line->cl_option)) { - int to_add = (ftime->tm_wday >= 4) ? 11 - ftime->tm_wday : - 4 - ftime->tm_wday; - if (ftime->tm_mday + to_add > max) { - ftime->tm_mon++; - ftime->tm_mday = ftime->tm_mday + to_add - max; - } - else - ftime->tm_mday += to_add; - } - else { - if (is_freq_mons(line->cl_option)) { - if (ftime->tm_mday >= 15) - ftime->tm_mon++; - ftime->tm_mday = 15; - } - else { - /* weird : we have the bit freq_mid set, but - * none of freq_{mins|hour|days|dow|mons} is set : - * we do nothing but increase tm_min by 1 - * so as we don't return a time in the past */ - ftime->tm_min++; - warn("Line %s doesn't seem correct: consider " - "reinstalling the corresponding fcrontab"); - } - } - } - } - - } - - else { /* is_freq_mid(line->cl_option) */ - - if (is_freq_mins(line->cl_option)) - /* nothing to do */ - return; - else { - ftime->tm_min = 0; - if (is_freq_hrs(line->cl_option)) - ftime->tm_hour++; - else { - ftime->tm_hour = 0; - if (is_freq_days(line->cl_option)) - ftime->tm_mday++; - else { - if (is_freq_dow(line->cl_option)) { - int to_add = - (ftime->tm_wday == 0) ? 1 : 8 - ftime->tm_wday; - if (ftime->tm_mday + to_add > max) { - ftime->tm_mday = ftime->tm_mday + to_add - max; - ftime->tm_mon++; - } - else - ftime->tm_mday += to_add; - } - else { - ftime->tm_mday = 1; - if (is_freq_mons(line->cl_option)) - ftime->tm_mon++; - } - } - } - } - - } /* is_freq_mid(line->cl_option) */ - - /* we set tm_sec to 0 here and not before to ensure we will never return - * a time in the past (case is_freq_mins(line->cl_option) - * where we do nothing) */ - ftime->tm_sec = 0; - - /* STEP 2: fix the overflows. - * (a value may exceed the max value of a field: fix it if necessary) */ - - if (ftime->tm_min >= 60) { - ftime->tm_min = 0; - ftime->tm_hour++; - } - if (ftime->tm_hour >= 24) { - ftime->tm_hour = 0; - ftime->tm_mday++; - } - /* the month field may have changed */ - max = get_nb_mdays((ftime->tm_year + 1900), ftime->tm_mon); - if (ftime->tm_mday > max) { - ftime->tm_mday = 1; - ftime->tm_mon++; - } - if (ftime->tm_mon >= 12) { - ftime->tm_mon = 0; - ftime->tm_year++; - } - - if (debug_opt) - set_wday(ftime); - debug(" '%s' beginning of next period %04d-%02d-%02d wday:%d %02d:%02d " - "(tzdiff=%d, timezone=%s)", line->cl_shell, (ftime->tm_year + 1900), - (ftime->tm_mon + 1), ftime->tm_mday, ftime->tm_wday, - ftime->tm_hour, ftime->tm_min, line->cl_file->cf_tzdiff, - (line->cl_tz != NULL) ? line->cl_tz : "localtime"); - -} - - -void -move_time_to(int where, cl_t * line, struct tm *ftime) - /* IF WHERE == BEGIN_NEXT_PERIOD: from ftime, search the first/nearest time and date - * of the line's next period of execution. - * IF WHERE == END_OF_INTERVAL: search the last time and date - * of the line's interval of execution containing ftime. - * - * ftime will contain this time and date when move_time_to returns. - * - * Vocabulary: - * interval of execution= a continuous interval of time during which - * the line can be executed. - * period of execution= a continuous interval of time during which - * the line is to be executed once and only once. */ -{ - struct tm tm_next_period; - time_t timet_ftime; - /* by default we set timet_next_period to now + 10 years, which will - * always be later than the end of the interval of execution - * so as to make the test timet_ftime < timet_next_period always true */ - time_t timet_next_period = now + 10 * 365 * 24 * 3600; - - /* to prevent from infinite loop with unvalid lines : */ - short int year_limit = MAXYEAR_SCHEDULE_TIME; - /* Depending on the situation we may need to ignore some fields - * while we walk through time */ - char ignore_mins, ignore_hrs, ignore_days, ignore_mons, ignore_dow; - - /* sanity checks */ - if (where != BEGIN_NEXT_PERIOD && where != END_OF_INTERVAL) - die("move_time_to() called with invalid argument 'where': %d", - (int)where); - - - if (where == BEGIN_NEXT_PERIOD && is_freq_periodically(line->cl_option)) { - goto_beginning_next_period_periodical(line, ftime); - return; - } - - /* In all other cases, we will have to walk through time */ - - if (is_freq_periodically(line->cl_option)) { - - /* In this case we want to make sure we won't go after the end - * of the period of execution, so we need to set next_period */ - - memcpy(&tm_next_period, ftime, sizeof(tm_next_period)); - goto_beginning_next_period_periodical(line, &tm_next_period); - timet_next_period = mktime_no_dst(&tm_next_period); - - } - - timet_ftime = mktime_no_dst(ftime); - - if (where == BEGIN_NEXT_PERIOD) { - /* we have to ignore the fields containing single numbers */ - ignore_mins = (is_freq_mins(line->cl_option)) ? 1 : 0; - ignore_hrs = (is_freq_hrs(line->cl_option)) ? 1 : 0; - ignore_days = (is_freq_days(line->cl_option)) ? 1 : 0; - ignore_mons = (is_freq_mons(line->cl_option)) ? 1 : 0; - ignore_dow = (is_freq_dow(line->cl_option)) ? 1 : 0; - } - else { - /* we want to go to the end of the current interval: - * we don't ignore anything */ - ignore_mins = ignore_hrs = ignore_days = ignore_mons = ignore_dow = 0; - } - - /* */ - debug(" ignore: %d %d %d %d %d", ignore_mins, ignore_hrs, - ignore_days, ignore_mons, ignore_dow); - /* */ - - /* while we are in an interval of execution and not in the next period */ - while ((ignore_mins == 1 || bit_test(line->cl_mins, ftime->tm_min)) && - (ignore_hrs == 1 || bit_test(line->cl_hrs, ftime->tm_hour)) && - ((is_dayand(line->cl_option) && - (ignore_days == 1 || bit_test(line->cl_days, ftime->tm_mday)) && - (ignore_dow == 1 || bit_test(line->cl_dow, ftime->tm_wday))) - || - (is_dayor(line->cl_option) && - (ignore_days == 1 || bit_test(line->cl_days, ftime->tm_mday) || - ignore_dow == 1 || bit_test(line->cl_dow, ftime->tm_wday))) - ) && (ignore_mons == 1 || bit_test(line->cl_mons, ftime->tm_mon)) - && (timet_ftime < timet_next_period) - ) { - - ftime->tm_sec = 0; - if (ignore_mins) - ftime->tm_min = 60; - else { - do - ftime->tm_min++; - while (bit_test(line->cl_mins, ftime->tm_min) - && (ftime->tm_min < 60)); - } - if (ftime->tm_min >= 60) { - ftime->tm_min = 0; - if (ignore_hrs && ignore_mins) - ftime->tm_hour = 24; - else - ftime->tm_hour++; - if (ftime->tm_hour >= 24) { - ftime->tm_hour = 0; - if (ignore_days && ignore_hrs && ignore_mins && ignore_dow) - ftime->tm_mday = 32; /* go to next month */ - else - ftime->tm_mday++; - if (ftime->tm_mday > - get_nb_mdays((ftime->tm_year + 1900), ftime->tm_mon)) { - ftime->tm_mday = 1; - if (ignore_mons && ignore_days && ignore_dow - && ignore_hrs && ignore_mins) - ftime->tm_mon = 12; - else - ftime->tm_mon++; - if (ftime->tm_mon >= 12) { - ftime->tm_mon = 0; - ftime->tm_year++; - if (--year_limit <= 0) { - error("Can't found a non matching date for '%s' " - "in the next %d years. Maybe this line " - "is corrupted : consider reinstalling " - "the fcrontab", line->cl_shell, - MAXYEAR_SCHEDULE_TIME); - return; - } - } - } - set_wday(ftime); - } - } - - /* // */ - { - /* set temporarily debug_opt to false to avoid having too many - * messages in the logs */ - char debug_opt_previous = debug_opt; - debug_opt = 0; - - timet_ftime = mktime_no_dst(ftime); - - debug_opt = debug_opt_previous; - } - /* // */ - - } - - if (timet_ftime > timet_next_period) { - /* the end of the interval if after the end of the period: - * we don't want to go in the next period, so we return - * the value of the end of the period. */ - memcpy(ftime, &tm_next_period, sizeof(tm_next_period)); - } - - if (where == END_OF_INTERVAL) { - /* we want the end of the current interval, not the beginning - * of the first non-matching interval : go back by one minute */ - if (--ftime->tm_min < 0) { - ftime->tm_min = 59; - if (--ftime->tm_hour < 0) { - ftime->tm_hour = 23; - if (--ftime->tm_mday < 1) { - if (--ftime->tm_mon < 0) { - ftime->tm_mon = 11; - ftime->tm_year--; - } - ftime->tm_mday = - get_nb_mdays((ftime->tm_year + 1900), ftime->tm_mon); - } - } - } - } - - debug - (" '%s' %s %04d-%02d-%02d wday:%d %02d:%02d (tzdiff=%d, timezone=%s)", - line->cl_shell, - (where == - END_OF_INTERVAL) ? "end of interval" : "begin of next period", - (ftime->tm_year + 1900), (ftime->tm_mon + 1), ftime->tm_mday, - ftime->tm_wday, ftime->tm_hour, ftime->tm_min, - line->cl_file->cf_tzdiff, - (line->cl_tz != NULL) ? line->cl_tz : "localtime"); -} - - -void -set_next_exe(cl_t * line, char option, int info_fd) - /* set the cl_nextexe of a given cl_t and insert it in the queue */ -{ - - time_t basetime; - struct tm *ft; - struct tm ftime; - int tz_changed = 0; - - basetime = (option & FROM_CUR_NEXTEXE) ? line->cl_nextexe : now; - - /* Switch to another timezone if necessary. */ - /* If line should be scheduled in a different time zone - * (ie. cl_tz != NULL), - * switch to that timezone now, do the calculations, - * and switch back to the local timezone at the end - * of the function. */ - tz_changed = switch_timezone(orig_tz_envvar, line->cl_tz); - - if (is_td(line->cl_option)) { - - time_t nextexe = 0; - int i; - int max; - char has_changed = 0; - /* to prevent from invinite loop with unvalid lines : */ - short int year_limit = MAXYEAR_SCHEDULE_TIME; - /* timezone difference */ - time_t basetime_tz = basetime - (line->cl_file->cf_tzdiff * 3600); - - ft = localtime(&basetime_tz); - - /* localtime() function seem to return every time the same pointer : - * it resets our previous changes, so we need to prevent it - * ( localtime() is used in the debug() function) */ - memcpy(&ftime, ft, sizeof(struct tm)); - - /* creates a bug on DST change on some systems ?? */ - /* ftime.tm_isdst = -1; */ - - /* to prevent multiple execution of &-jobs in the same minute - * (but not if the user has explicitely asked to run jobs immediately) */ - if (first_sleep > 0 || option == STD || line->cl_runfreq != 1) { - ftime.tm_min += 1; - ftime.tm_sec = 0; - } - - if (line->cl_runfreq == 1 && option != NO_GOTO && option != NO_GOTO_LOG) - /* %-line: go to next period */ - move_time_to(BEGIN_NEXT_PERIOD, line, &ftime); - - setMonth: - for (i = ftime.tm_mon; (bit_test(line->cl_mons, i) == 0) && (i < 12); - i++) ; - if (i >= 12) { - ftime.tm_year++; - if (--year_limit <= 0) { - error("Can't found a matching date for '%s' in the next %d" - " years. Maybe this line is corrupted : consider" - " reinstalling the fcrontab.", - line->cl_shell, MAXYEAR_SCHEDULE_TIME); - goto set_cl_nextexe; - } - if (has_changed < 3) { - has_changed = 3; - ftime.tm_mon = 0; - ftime.tm_mday = 1; - ftime.tm_hour = 0; - ftime.tm_min = 0; - } - else - ftime.tm_mon = 0; - goto setMonth; - } - if (ftime.tm_mon != i) { - ftime.tm_mon = i; - if (has_changed < 2) { - has_changed = 2; - ftime.tm_mday = 1; - ftime.tm_hour = 0; - ftime.tm_min = 0; - } - } - - /* set the number of days in that month */ - max = get_nb_mdays((ftime.tm_year + 1900), ftime.tm_mon); - - setDay: - if (is_dayand(line->cl_option)) { - for (i = ftime.tm_mday; - (bit_test(line->cl_days, i) == 0) && (i <= max); i++) ; - if (i > max) { - ftime.tm_mon++; - if (has_changed < 2) { - has_changed = 2; - ftime.tm_mday = 1; - ftime.tm_hour = 0; - ftime.tm_min = 0; - } - else - ftime.tm_mday = 1; - goto setMonth; - } - if (ftime.tm_mday != i) { - ftime.tm_mday = i; - if (has_changed < 1) { - has_changed = 1; - ftime.tm_hour = 0; - ftime.tm_min = 0; - } - } - - set_wday(&ftime); - - /* check if the day of week is OK */ - if (bit_test(line->cl_dow, ftime.tm_wday) == 0) { - ftime.tm_mday++; - ftime.tm_hour = 0; - ftime.tm_min = 0; - goto setDay; - } - } - else { /* dayor */ - int j; - - set_wday(&ftime); - - j = ftime.tm_wday; - i = ftime.tm_mday; - while ((bit_test(line->cl_days, i) == 0) && - (bit_test(line->cl_dow, j) == 0)) { - if (i > max) { - ftime.tm_mon++; - if (has_changed < 2) { - has_changed = 2; - ftime.tm_mday = 1; - ftime.tm_hour = 0; - ftime.tm_min = 0; - } - else - ftime.tm_mday = 1; - goto setMonth; - } - if (j >= 7) - j -= 7; - i++; - j++; - } - if (ftime.tm_mday != i) { - ftime.tm_mday = i; - if (has_changed < 1) { - has_changed = 1; - ftime.tm_hour = 0; - ftime.tm_min = 0; - } - } - } - - setHour: - for (i = ftime.tm_hour; (bit_test(line->cl_hrs, i) == 0) && (i < 24); - i++) ; - if (i >= 24) { - ftime.tm_mday++; - if (has_changed < 1) { - has_changed = 1; - ftime.tm_hour = 0; - ftime.tm_min = 0; - } - else - ftime.tm_hour = 0; - goto setDay; - } - if (ftime.tm_hour != i) { - ftime.tm_hour = i; - ftime.tm_min = 0; - } - - - for (i = ftime.tm_min; (bit_test(line->cl_mins, i) == 0) && (i < 60); - i++) ; - if (i >= 60) { - ftime.tm_hour++; - ftime.tm_min = 0; - goto setHour; - } - ftime.tm_min = i; - - set_cl_nextexe: - /* set cl_nextexe (handle the timezone differences) */ - - /* NOTE : the output of mktime does not depend on the timezone, - * hence, nextexe is correct even if option timezone is used. */ - nextexe = mktime_no_dst(&ftime); - - if (is_random(line->cl_option)) { - /* run the job at a random time during its interval of execution */ - struct tm int_end; - time_t int_end_timet; - - debug - (" cmd: '%s' begin int exec %04d-%02d-%02d wday:%d %02d:%02d " - "(tzdiff=%d, timezone=%s)", line->cl_shell, - (ftime.tm_year + 1900), (ftime.tm_mon + 1), ftime.tm_mday, - ftime.tm_wday, ftime.tm_hour, ftime.tm_min, - line->cl_file->cf_tzdiff, - (line->cl_tz != NULL) ? line->cl_tz : "localtime"); - - memcpy(&int_end, &ftime, sizeof(int_end)); - move_time_to(END_OF_INTERVAL, line, &int_end); - int_end_timet = mktime_no_dst(&int_end); - - /* set a random time to add to the first allowed time of execution */ - nextexe += ((i = int_end_timet - nextexe) > 0) ? - (time_t) (((float)i * (float)rand()) / (float)RAND_MAX) : 0; - } - else if (is_td(line->cl_option) && line->cl_runfreq != 1 - && line->cl_jitter > 0) { - /* &-lines only: - * run the command between nextexe and nextexe+jitter seconds, - * as a way not to have 100 jobs all starting exactly at - * the second 0 of the minute they should run */ - nextexe += - (time_t) (((float)line->cl_jitter * (float)rand()) / - (float)RAND_MAX); - } - - line->cl_nextexe = nextexe + (line->cl_file->cf_tzdiff * 3600); - - if (option != NO_GOTO) { - if (is_random(line->cl_option)) { - ft = localtime(&nextexe); - memcpy(&ftime, ft, sizeof(ftime)); - } - send_msg_fd_debug(info_fd, - " cmd: '%s' next exec %04d-%02d-%02d wday:%d " - "%02d:%02d:%02d (tzdiff=%d, timezone=%s)", - line->cl_shell, (ftime.tm_year + 1900), - (ftime.tm_mon + 1), ftime.tm_mday, ftime.tm_wday, - ftime.tm_hour, ftime.tm_min, ftime.tm_sec, - line->cl_file->cf_tzdiff, - (line->cl_tz != NULL) ? line->cl_tz : "system's"); - } - - /* - * sanity check : - * if the nextexe is set to the past because of a bug, - * the line will be executed again immediately, and it is most likely - * to be set again in the past next time. - * It would create a nasty infinite loop, a kind of "while(1) fork();" - * - * We add a test here to limit the consequences that would have - * an unknown bug in this function. - */ - if (line->cl_nextexe <= now) { - error("BUG ??? Fcron thinks the next exe time of '%s' is %ld, " - "hence before now (%ld). To avoid infinite loop, nextexe" - " will be set at now+5s.", line->cl_shell, line->cl_nextexe); - line->cl_nextexe = now + 5; - } - - } - else { - /* this is a job based on system up time */ - - if (line->cl_timefreq == LONG_MAX) { - /* when timefreq is set to LONG_MAX, it means that next time nextexe - * is updated we want it to be the furthest away possible so as the job - * is never executed again (unless at the next reboot/fcron startup - * if the line as the appropriate options set) */ - /* NOTE: the options runonce/hasrun should be used to achieve this, - * but we keep this here as an extra safety */ - debug - ("Setting cl_nextexe to TIME_T_MAX to prevent the line from running again."); - line->cl_nextexe = TIME_T_MAX; - } - else { - line->cl_nextexe = basetime + line->cl_timefreq; - if (line->cl_nextexe <= basetime) { - /* either there was an integer overflow, or the slept time is incorrect - * (e.g. fcron didn't shut down cleanly and the fcrontab wasn't saved correctly) */ - error - ("Error while setting next exe time for job '%s': cl_nextexe" - " overflowed (case3). basetime=%lu, cl_timefreq=%lu, cl_nextexe=%lu. " - "Did fcron shut down cleanly?", line->cl_shell, basetime, - line->cl_timefreq, line->cl_nextexe); - error - ("Setting cl_nextexe to now+cl_timefreq to prevent an infinite loop."); - line->cl_nextexe = now + line->cl_timefreq; - error("next execution will now be at %ld.", line->cl_nextexe); - } - } - - ft = localtime(&(line->cl_nextexe)); - - /* localtime() function seem to return every time the same pointer : - * it resets our previous changes, so we need to prevent it - * ( localtime() is used in the debug() function) */ - memcpy(&ftime, ft, sizeof(struct tm)); - - send_msg_fd_debug(info_fd, - " cmd: '%s' next exec %04d-%02d-%02d wday:%d " - "%02d:%02d:%02d (system time)", line->cl_shell, - (ftime.tm_year + 1900), (ftime.tm_mon + 1), - ftime.tm_mday, ftime.tm_wday, ftime.tm_hour, - ftime.tm_min, ftime.tm_sec); - } - - insert_nextexe(line); - - if (tz_changed > 0) - switch_back_timezone(orig_tz_envvar); - -} - - -void -set_next_exe_notrun(cl_t * line, char context) - /* set the time of the next execution and send a mail to tell user his job - * has not run if necessary */ -{ - time_t previous_period = 0, next_period = 0; - struct tm *ft = NULL; - struct tm ftime, last_nextexe; - char set_next_exe_opt = 0; - int tz_changed = 0; - -/* // */ - debug(" set_next_exe_notrun : '%s' %d", line->cl_shell, context); -/* // */ - - - /* Switch to another timezone if necessary. */ - /* If line should be scheduled in a different time zone - * (ie. cl_tz != NULL), - * switch to that timezone now, do the calculations, - * and switch back to the local timezone at the end - * of the function. */ - tz_changed = switch_timezone(orig_tz_envvar, line->cl_tz); - - if (context == SYSDOWN || context == SYSDOWN_RUNATREBOOT) { - /* handle timezone differences */ - previous_period = line->cl_nextexe - (line->cl_file->cf_tzdiff * 3600); - set_next_exe_opt = NO_GOTO; - } - else { - previous_period = now - (line->cl_file->cf_tzdiff * 3600); - set_next_exe_opt = NO_GOTO_LOG; - } - ft = localtime(&previous_period); - - /* localtime() function seem to return every time the same pointer : - * it resets our previous changes, so we need to prevent it - * ( localtime() is used in the debug() function) */ - memcpy(&ftime, ft, sizeof(ftime)); - /* we also copy it to last_nextexe which will be used in mail_notrun */ - memcpy(&last_nextexe, ft, sizeof(last_nextexe)); - - ftime.tm_sec = 0; - move_time_to(BEGIN_NEXT_PERIOD, line, &ftime); - next_period = mktime_no_dst(&ftime) + (line->cl_file->cf_tzdiff * 3600); - - if (context == SYSDOWN_RUNATREBOOT) - line->cl_nextexe = now; - else - set_next_exe(line, set_next_exe_opt, -1); - - if (line->cl_nextexe >= next_period) { - /* line has not run during one or more period(s) : send a mail */ - mail_notrun(line, context, &last_nextexe); - } - - if (tz_changed > 0) - switch_back_timezone(orig_tz_envvar); - -} - -void -mail_notrun_time_t(cl_t * line, char context, time_t since_time_t) -/* Same as mail_notrun() but with 'since' defined as a time_t instead of a struct tm */ -{ - struct tm *since2 = NULL; - struct tm since; - int tz_changed = 0; - - since2 = localtime(&line->cl_nextexe); - memcpy(&since, since2, sizeof(since)); - - tz_changed = switch_timezone(orig_tz_envvar, line->cl_tz); - - mail_notrun(line, SYSDOWN, &since); - - if (tz_changed > 0) - switch_back_timezone(orig_tz_envvar); - -} - -void -mail_notrun(cl_t * line, char context, struct tm *since) - /* send a mail to tell user a job has not run (and why) */ -{ - int pid = 0; - FILE *mailf = 0; - struct tm *time2 = NULL, time; - char **sendmailenv = NULL; - - switch (pid = fork()) { - case -1: - error_e("Fork error : could not mail for not run '%s'", line->cl_shell); - return; - case 0: - /* child */ - break; - default: - /* parent */ - -/* // */ - debug("Reporting by mail non execution of '%s' (pid %d)", - line->cl_shell, pid); -/* // */ - - /* create an entry in exe_list */ - /* set line to NULL as this is not a line ... */ - exe_list_add_line(exe_list, NULL); - return; - } - - /* If line should be scheduled in a different time zone - * (ie. cl_tz != NULL), - * switch to that timezone now, before we do the calculations. */ - /* No need to switch back as this function does NOT return. */ - switch_timezone(orig_tz_envvar, line->cl_tz); - - if (context == QUEUE_FULL) - time2 = localtime(&now); - else - time2 = localtime(&line->cl_nextexe); - memcpy(&time, time2, sizeof(time)); - - /* create a temp file, and write in it the message to send */ - mailf = create_mail(line, "Non-execution of fcron job", NULL, NULL, NULL); - - switch (context) { - case SYSDOWN: - fprintf(mailf, "Line '%s' has not run since and including " - "%04d-%02d-%02d wday:%d %02d:%02d (timezone=%s)\n" - "due to system's down state.\n", - line->cl_shell, (since->tm_year + 1900), (since->tm_mon + 1), - since->tm_mday, since->tm_wday, since->tm_hour, since->tm_min, - (line->cl_tz) ? line->cl_tz : "system's"); - fprintf(mailf, - "It will be next executed at %04d-%02d-%02d wday:" - "%d %02d:%02d\n", (time.tm_year + 1900), (time.tm_mon + 1), - time.tm_mday, time.tm_wday, time.tm_hour, time.tm_min); - break; - case LAVG: - fprintf(mailf, "Line '%s' has not run since and including " - "%04d-%02d-%02d wday:%d %02d:%02d (timezone=%s)\n", - line->cl_shell, (since->tm_year + 1900), (since->tm_mon + 1), - since->tm_mday, since->tm_wday, since->tm_hour, since->tm_min, - (line->cl_tz) ? line->cl_tz : "system's"); - fprintf(mailf, - "due to a too high system load average or " - "too many lavg-serial jobs.\n"); - fprintf(mailf, - "It will be next executed at %04d-%02d-%02d " - "wday:%d %02d:%02d (timezone=%s)\n", (time.tm_year + 1900), - (time.tm_mon + 1), time.tm_mday, time.tm_wday, time.tm_hour, - time.tm_min, (line->cl_tz) ? line->cl_tz : "system's"); - break; - case QUEUE_FULL: - fprintf(mailf, - "Line '%s' couldn't be added to lavg or serial queue which" - " is full ( %04d-%02d-%02d wday:%d %02d:%02d (timezone=%s)).\n", - line->cl_shell, (time.tm_year + 1900), (time.tm_mon + 1), - time.tm_mday, time.tm_wday, time.tm_hour, time.tm_min, - (line->cl_tz) ? line->cl_tz : "system's"); - fprintf(mailf, - "Consider using options lavgonce, until, strict, " - "serialonce and/or fcron's option -m.\n"); - fprintf(mailf, "Note that job '%s' has not run.\n", line->cl_shell); - break; - } - - /* become user (for security reasons) */ - change_user_setup_env(line, &sendmailenv, NULL, NULL, NULL, NULL, NULL); - - /* then, send mail */ - launch_mailer(line, mailf, sendmailenv); - - /* we should not come here : launch_mailer does not return */ - die("mail_notrun : launch_mailer failed"); - -} - -time_t -check_lavg(time_t lim) - /* run a job based on system load average if one should be run - * and return the time to sleep */ -{ - time_t tts = 0; - lavg_t *l = NULL; - -#ifdef NOLOADAVG - for (l = lavg_list_first(lavg_list); l != NULL; - l = lavg_list_next(lavg_list)) { - run_lavg_job(l); - lavg_list_remove_cur(lavg_list); - } - - - tts = time_to_sleep(lim); - return tts; -#else - - int i = 0; - double l_avg[3] = { 0, 0, 0 }; - - /* first, check if some lines must be executed because of until */ - for (l = lavg_list_first(lavg_list); l != NULL; - l = lavg_list_next(lavg_list)) - if ((l->l_line->cl_until > 0 || l->l_line->cl_runfreq == 1) - && l->l_until < now) { - if (!is_run_if_late(l->l_line->cl_option)) { - if (!is_nolog(l->l_line->cl_option)) - explain("Interval of execution exceeded : '%s' (not run)", - l->l_line->cl_shell); - - /* set time of the next execution and send a mail if needed */ - if (is_td(l->l_line->cl_option) && - is_notice_notrun(l->l_line->cl_option)) - set_next_exe_notrun(l->l_line, LAVG); - else - set_next_exe(l->l_line, NO_GOTO_LOG, -1); - - /* remove this job from the lavg queue */ - l->l_line->cl_numexe -= 1; - lavg_list_remove_cur(lavg_list); - } - else { - debug("until '%s' %d", l->l_line->cl_shell, l->l_until); - run_lavg_job(l); - lavg_list_remove_cur(lavg_list); - } - } - - /* we do this set here as the nextexe of lavg line may change before */ - tts = time_to_sleep(lim); - - if (lavg_list->num_entries == 0) - return tts; - - if ((i = getloadavg(l_avg, 3)) != 3) - debug("got only %d lavg values", i); - debug("get_lavg: %lf, %lf, %lf", l_avg[0], l_avg[1], l_avg[2]); - /* the 3 values stored in the fcron lines are the real value *= 10 */ - l_avg[0] *= 10; - l_avg[1] *= 10; - l_avg[2] *= 10; - for (l = lavg_list_first(lavg_list); l != NULL; - l = lavg_list_next(lavg_list)) { - /* check if the line should be executed */ - if (lavg_serial_running >= serial_max_running && - is_serial(l->l_line->cl_option)) { - continue; - } - if ((is_land(l->l_line->cl_option) - && (l_avg[0] < l->l_line->cl_lavg[0] || l->l_line->cl_lavg[0] == 0) - && (l_avg[1] < l->l_line->cl_lavg[1] || l->l_line->cl_lavg[1] == 0) - && (l_avg[2] < l->l_line->cl_lavg[2] || l->l_line->cl_lavg[2] == 0) - ) - || (is_lor(l->l_line->cl_option) - && (l_avg[0] < l->l_line->cl_lavg[0] - || l_avg[1] < l->l_line->cl_lavg[1] - || l_avg[2] < l->l_line->cl_lavg[2]) - ) - ) { - debug("lavg '%s' %s %.0f:%d %.0f:%d %.0f:%d", - l->l_line->cl_shell, - (is_lor(l->l_line->cl_option)) ? "or" : "and", - l_avg[0], l->l_line->cl_lavg[0], - l_avg[1], l->l_line->cl_lavg[1], l_avg[2], - l->l_line->cl_lavg[2]); - run_lavg_job(l); - lavg_list_remove_cur(lavg_list); - - } - } - - - if (lavg_list->num_entries == 0) - return tts; - else - return (LAVG_SLEEP < tts) ? LAVG_SLEEP : tts; - -#endif /* def NOLOADAVG */ - -} - -time_t -time_to_sleep(time_t lim) - /* return the time to sleep until next task have to be executed. */ -{ - /* we set tts to a big value, unless some problems can occurs - * with files without any line */ - time_t tts = lim; - time_t ti = time(NULL); - - /* note : jobs in queue_base are sorted */ - if (queue_base != NULL) { - if (queue_base->j_line->cl_nextexe < lim) - tts = queue_base->j_line->cl_nextexe; - } - - tts = tts - ti; - if (tts < 0) - tts = 0; - -/* debug("Time to sleep: %lds", tts); */ - - return tts; -} diff --git a/fcron-3.2.0/database.h b/fcron-3.2.0/database.h deleted file mode 100644 index d3fb5eb..0000000 --- a/fcron-3.2.0/database.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * FCRON - periodic command scheduler - * - * Copyright 2000-2014 Thibault Godouet - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * The GNU General Public License can also be found in the file - * `LICENSE' that comes with the fcron source distribution. - */ - - -#ifndef __DATABASE_H__ -#define __DATABASE_H__ - -/* functions prototypes */ -extern void test_jobs(void); -extern void wait_chld(void); -extern void wait_all(int *counter); -extern time_t time_to_sleep(time_t lim); -extern time_t check_lavg(time_t lim); -extern void set_next_exe(struct cl_t *line, char option, int info_fd); -#define NO_GOTO 1 /* set_next_exe() : no goto_non_matching() */ -#define NO_GOTO_LOG 2 /* set_next_exe() : NO_GOTO but also log nextexe time */ -#define FROM_CUR_NEXTEXE 4 /* set_next_exe() : compute from nextexe, not now */ -extern void set_next_exe_notrun(struct cl_t *line, char context); -#define LAVG 1 /* set_next_exe_notrun() : context */ -#define SYSDOWN 2 /* set_next_exe_notrun() : context */ -#define QUEUE_FULL 3 /* set_next_exe_notrun() : context */ -#define SYSDOWN_RUNATREBOOT 4 /* set_next_exe_notrun() : context */ -extern void mail_notrun(struct cl_t *line, char context, struct tm *since); -extern void mail_notrun_time_t(cl_t * line, char context, time_t since_time_t); -extern job_t *job_queue_remove(cl_t * line); -extern void insert_nextexe(struct cl_t *line); -extern void run_normal_job(cl_t * line, int fd); -extern void add_serial_job(struct cl_t *line, int fd); -extern void add_lavg_job(struct cl_t *line, int fd); -extern void run_serial_job(void); -extern int switch_timezone(const char *orig_tz, const char *dest_tz); -extern void switch_back_timezone(const char *orig_tz); - -#endif /* __DATABASE_H__ */ diff --git a/fcron-3.2.0/debian/README.Debian b/fcron-3.2.0/debian/README.Debian deleted file mode 100644 index 79adfb4..0000000 --- a/fcron-3.2.0/debian/README.Debian +++ /dev/null @@ -1,21 +0,0 @@ -fcron for Debian ------------------------------------------------------------------ - -While in principle this would be possible, the Debian package of fcron does -not try to supersede cron. Note, however, that it has to play dirty with -anacron so as to hijack control of /etc/cron.{daily,weekly,monthly} from -cron even if anacron is not installed in the system. - -This is done symlinking /usr/sbin/anacron to /bin/true, and unfortunately -causes the fcron package to conflict with the anacron package. If you just -removed (as opposed to purging) the anacron package to install fcron, -anacron's initscript might still try to activate anacron. This is harmless, -do NOT file bugs against anacron because of it! - -I'm working with upstream to make fcron more secure (although it looks -fairly secure as is). If you don't want to worry about any possible -security holes, remove the suid permission from fcrontab (using either -suidregister or dpkg-statoverride), and do not install fcrontabs for -anyone other than root. - - -- Henrique M. Holschuh , Mon, 11 Dec 2000 20:14:13 -0200 diff --git a/fcron-3.2.0/debian/TODO.Debian b/fcron-3.2.0/debian/TODO.Debian deleted file mode 100644 index c2d03cd..0000000 --- a/fcron-3.2.0/debian/TODO.Debian +++ /dev/null @@ -1,8 +0,0 @@ -* PAMify fcron (ongoing) -* Get rid of anacron hack. -* Security audit entire package. -* Add the notion of system-wide fcrontab, a la - /etc/crontab and get rid of /var/spool/fcron/ - root.orig in the package. -* Deal well with uid 0 != root (name not root) -* add logcheck.ignore files diff --git a/fcron-3.2.0/debian/changelog b/fcron-3.2.0/debian/changelog deleted file mode 100644 index 0f90381..0000000 --- a/fcron-3.2.0/debian/changelog +++ /dev/null @@ -1,248 +0,0 @@ -fcron (2.9.5-1) unstable; urgency=low - - * New upstream version. - - * Fix init script. - Closes: #262886 - - * Merged change from BSP. - Closes: #232986 - - -- Russell Coker Sun, 31 Oct 2004 05:39:00 +1100 - -fcron (2.9.4-3.1) unstable; urgency=low - - * NMU during BSP. - * ./configure uses now --with-sendmail without checks (closes: #232986). - - -- Sebastian Muszynski Fri, 19 Mar 2004 16:54:57 +0100 - -fcron (2.9.4-3) unstable; urgency=high - - * Made it depend on exim4|mail-transport-agent. - Closes: #228570 - - -- Russell Coker Tue, 20 Jan 2004 17:36:00 +1100 - -fcron (2.9.4-2) unstable; urgency=high - - * Accidentally uploaded a version compiled with debugging code, so this - version has a correct compile. - - -- Russell Coker Thu, 4 Jan 2004 22:31:00 +1100 - -fcron (2.9.4-1) unstable; urgency=high - - * New upstream with SE Linux. Upstream has old SE Linux so patched for new - SE Linux. - - -- Russell Coker Thu, 4 Jan 2004 22:25:00 +1100 - -fcron (2.9.3-3) unstable; urgency=high - - * Added patch for ./configure checking for SE Linux from Torsten Knodt - . Also added the SE Linux patch. - Closes: #193610 - - -- Russell Coker Sat, 17 May 2003 13:55:00 +1000 - -fcron (2.9.3-2) unstable; urgency=high - - * Changes for warnings, I think it fixes #169451. - - -- Russell Coker Sun, 17 Nov 2002 14:12:00 +0100 - -fcron (2.9.3-1) unstable; urgency=high - - * New upstream version. - - -- Russell Coker Sat, 2 Nov 2002 22:09:00 +0100 - -fcron (2.9.2-2) unstable; urgency=high - - * Made it not try to use -lsecure for non-SE systems. - Closes: #163680 - - * Added fcrondyn to package. - Closes: #163808 - - * This is a 2.x.x release. - Closes: #112146 - - -- Russell Coker Sat, 26 Oct 2002 21:25:00 +0200 - -fcron (2.9.2-1) unstable; urgency=high - - * New upstream version. - - * Temporarily taking over maintenance. - - -- Russell Coker Sun, 6 Oct 2002 07:14:00 +0200 - -fcron (1.0.3-5) unstable; urgency=high - - * Fix infinite loop on midmontly code. Thanks to Guy Geens - for the patch (closes: #143497) - - -- Henrique de Moraes Holschuh Thu, 18 Apr 2002 16:45:55 -0300 - -fcron (1.0.3-4) unstable; urgency=high - - * Merge in new es, fr, ru templates (closes: #136099, #136484, #137646) - * Fix bug in code that showed up with the glibc nice() fix (closes: #143044) - - -- Henrique de Moraes Holschuh Tue, 16 Apr 2002 10:49:17 -0300 - -fcron (1.0.3-3) unstable; urgency=high - - * SECURITY FIX: Close /tmp exploitable race in fcrontab. Thanks to - Colin Phipps for reporting the bug and - supplying a patch (closes: #102930) - - -- Henrique de Moraes Holschuh Fri, 6 Jul 2001 22:22:42 -0300 - -fcron (1.0.3-2) unstable; urgency=low - - * Do not abort postinst if dpkg-statoverride returns non-zero - status (closes: #100905) - - -- Henrique de Moraes Holschuh Wed, 20 Jun 2001 02:24:19 -0300 - -fcron (1.0.3-1) unstable; urgency=medium - - * New upstream source: - - Fixes a crash when truncating long messages (not exploitable) - - -- Henrique de Moraes Holschuh Sun, 15 Apr 2001 16:41:02 -0300 - -fcron (1.0.2-4) unstable; urgency=low - - * Restore default umask settings before running a job. Do note that not - setting the umask explicitly in a cronjob that creates files sensitive - to it IS asking for trouble, though (closes: #93123) - - -- Henrique de Moraes Holschuh Sat, 7 Apr 2001 23:59:10 -0300 - -fcron (1.0.2-3) unstable; urgency=low - - * Make sure postinst and postrm will exit with status 0 - upon successful completion - - -- Henrique de Moraes Holschuh Sun, 1 Apr 2001 02:10:14 -0300 - -fcron (1.0.2-2) unstable; urgency=low - - * Build-depends only in mail-transport-agent, as autobuilders will not - use the OR dependency - * Trash dpkg-statoverride entries on purge - - -- Henrique de Moraes Holschuh Wed, 14 Mar 2001 15:00:45 -0300 - -fcron (1.0.2-1) unstable; urgency=low - - * New upstream source - - Fixes bootrun option - - shell variables containing "_" are now accepted. - - -- Henrique de Moraes Holschuh Sat, 10 Mar 2001 23:25:39 -0300 - -fcron (1.0.1-1) unstable; urgency=low - - * New upstream source - - -- Henrique de Moraes Holschuh Mon, 26 Feb 2001 17:53:46 -0300 - -fcron (1.0.0-1) unstable; urgency=low - - * New upstream source - - -- Henrique de Moraes Holschuh Mon, 26 Feb 2001 09:29:13 -0300 - -fcron (0.9.5-3) unstable; urgency=low - - * Added german template. Thanks go to Joerg Rieger - (closes: #84261). This would have been done much sooner, - if I had actually received the report from the BTS. - * Fixed lintian warnings, and added lintian override file - - -- Henrique de Moraes Holschuh Thu, 22 Feb 2001 22:47:34 -0300 - -fcron (0.9.5-2) unstable; urgency=low - - * Better handling of dpkg-overriding in postinst - - -- Henrique de Moraes Holschuh Sat, 3 Feb 2001 21:52:15 -0200 - -fcron (0.9.5-1) unstable; urgency=high - - * Converted to dpkg-statoverride instead of suidregister - * New upstream version - * Upstream fixed a severe security hole (another local root exploit) - * Minor updates to bring package up-to-date with policy 3.5.0.0 - - -- Henrique de Moraes Holschuh Wed, 31 Jan 2001 10:44:43 -0200 - -fcron (0.9.4-1) unstable; urgency=high - - * New upstream version - * Real fix for local root exploit in fcrontab - * Re-enables user crontabs disabled by 0.9.3-5 to -7 - * Root fcrontab protected against non-root access at filesystem level. - - -- Henrique de Moraes Holschuh Sun, 31 Dec 2000 22:41:34 -0200 - -fcron (0.9.3-7) unstable; urgency=low - - * Fixed sendmail invoke path, and build-depends - (closes: #79414) - - -- Henrique de Moraes Holschuh Tue, 12 Dec 2000 10:15:00 -0200 - -fcron (0.9.3-6) unstable; urgency=high - - * Make sure the security workaround is enabled - by suidunregistering fcrontab. - - -- Henrique de Moraes Holschuh Sun, 10 Dec 2000 00:23:40 -0200 - -fcron (0.9.3-5) unstable; urgency=high - - * Disable fcrontab for users, as it is currently a local root exploit. - I'll reenable it after a fix is ready and tested. - * All user fcrontabs are moved to /var/spool/fcron/rxdisabled to make - sure they're not run until the fix is ready. - - -- Henrique de Moraes Holschuh Sat, 9 Dec 2000 16:21:36 -0200 - -fcron (0.9.3-4) unstable; urgency=low - - * Fixed double negative in package description - * Fixed bogus .orig.tar.gz source - - -- Henrique de Moraes Holschuh Fri, 8 Dec 2000 18:31:20 -0200 - -fcron (0.9.3-3) unstable; urgency=low - - * Added postinst message (using debconf) to - reduce probability of bogus bug reports against - anacron. - * First upload to Debian (closes: #76497) - - -- Henrique de Moraes Holschuh Wed, 6 Dec 2000 21:56:42 -0200 - -fcron (0.9.3-2) unstable; urgency=low - - * Fixed maintainer address in control file - * Changed package description in control file - * Better Depends: line - * Better init.d script reload behaviour, now it - will freshen up saved uid/gids in fcrontabs. - * Updated README.Debian - - -- Henrique de Moraes Holschuh Sat, 2 Dec 2000 22:03:45 -0200 - -fcron (0.9.3-1) unstable; urgency=low - - * Initial Package. (Closes: #76497) - - -- Henrique de Moraes Holschuh Sat, 11 Nov 2000 23:10:37 -0200 diff --git a/fcron-3.2.0/debian/conffiles b/fcron-3.2.0/debian/conffiles deleted file mode 100644 index 58061c5..0000000 --- a/fcron-3.2.0/debian/conffiles +++ /dev/null @@ -1 +0,0 @@ -/var/spool/fcron/systab.orig diff --git a/fcron-3.2.0/debian/config b/fcron-3.2.0/debian/config deleted file mode 100644 index 51509a9..0000000 --- a/fcron-3.2.0/debian/config +++ /dev/null @@ -1,12 +0,0 @@ -#! /bin/sh -# Debconf config file for fcron - -set -e -. /usr/share/debconf/confmodule - -# Babysit users who don't read README.Debian -db_title fcron -db_input high fcron/anacronwarn || true -db_go - -exit 0 diff --git a/fcron-3.2.0/debian/control b/fcron-3.2.0/debian/control deleted file mode 100644 index 4341077..0000000 --- a/fcron-3.2.0/debian/control +++ /dev/null @@ -1,21 +0,0 @@ -Source: fcron -Section: admin -Priority: extra -Maintainer: Russell Coker -Build-Depends: debhelper (>= 4.1.16), libpam0g-dev, libselinux1-dev (>= 1.2-1.1) -Standards-Version: 3.5.9 - -Package: fcron -Architecture: any -Depends: ${misc:Depends}, ${shlibs:Depends}, debconf, system-log-daemon, mail-transport-agent, adduser (>=3.25), dpkg (>>1.8.3) -Conflicts: anacron, suidmanager (<< 0.50) -Description: cron-like scheduler with extended capabilities - Fcron is a scheduler. It implements most of Vixie Cron's functionalities. - But contrary to Vixie Cron, fcron does not need your system to be up 7 days - a week, 24 hours a day: it also works well with systems which are running - neither all the time nor regularly. - . - Fcron also includes a useful system of options, such as: run jobs one by - one, run jobs at fcron's startup if they should have been run during system - down time, a better management of the mailing of outputs, set a nice value - for a job... diff --git a/fcron-3.2.0/debian/copyright b/fcron-3.2.0/debian/copyright deleted file mode 100644 index 934112e..0000000 --- a/fcron-3.2.0/debian/copyright +++ /dev/null @@ -1,16 +0,0 @@ -This package was debianized by Henrique M. Holschuh on -Sat, 11 Nov 2000 23:10:37 -0200. - -It was downloaded from http://fcron.free.fr/ - -Upstream Author: Thibault GODOUET - -fcron is Copyright (c) 2000 by Thibault Godouet , and it is -released under the terms of the GNU General Public License: - - This program is free software; you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by the - Free Software Foundation; either version 2, or (at your option) any - later version. - -The GPL may be found in /usr/share/common-licenses/GPL on a Debian system. diff --git a/fcron-3.2.0/debian/crontab.root b/fcron-3.2.0/debian/crontab.root deleted file mode 100644 index aef341c..0000000 --- a/fcron-3.2.0/debian/crontab.root +++ /dev/null @@ -1,4 +0,0 @@ -!bootrun(true),nice(15),serial(true) -%daily * 3-6 run-parts --report /etc/cron.daily -%weekly * 3-6 run-parts --report /etc/cron.weekly -%monthly * 3-6 * run-parts --report /etc/cron.monthly diff --git a/fcron-3.2.0/debian/dirs b/fcron-3.2.0/debian/dirs deleted file mode 100644 index 9641c9f..0000000 --- a/fcron-3.2.0/debian/dirs +++ /dev/null @@ -1,4 +0,0 @@ -usr/bin -usr/sbin -var/spool/fcron -etc/pam.d diff --git a/fcron-3.2.0/debian/fcron-update-crontabs b/fcron-3.2.0/debian/fcron-update-crontabs deleted file mode 100644 index 2d48ec6..0000000 --- a/fcron-3.2.0/debian/fcron-update-crontabs +++ /dev/null @@ -1,19 +0,0 @@ -#!/bin/sh -# -# fcron-update-crontabs -# -# Copyright (c) 2000 Thibault Godouet -# Released under the same license as the fcron program. - -fcrontabdir=/var/spool/fcron - -test -d ${fcrontabdir} || exit 0 - -# Recompile all crontabs -for FILE in ${fcrontabdir}/* ; do - if test -f ${FILE} ; then - FCRONTAB=`basename "${FILE}" | \ - sed "s|\..*orig|| ; s|new\..*|| ; s|fcrontab\.sig|| ; s|rm\..*||"` - ( test ! -z "${FCRONTAB}" && fcrontab -u "${FCRONTAB}" -z ) || echo -n "" - fi -done diff --git a/fcron-3.2.0/debian/fcron-update-crontabs.1 b/fcron-3.2.0/debian/fcron-update-crontabs.1 deleted file mode 100644 index c6b6915..0000000 --- a/fcron-3.2.0/debian/fcron-update-crontabs.1 +++ /dev/null @@ -1,26 +0,0 @@ -.TH FCRON-UPDATE-CRONTABS 8 -.\" NAME should be all caps, SECTION should be 1-8, maybe w/ subsection -.\" other parms are allowed: see man(7), man(1) -.SH NAME -fcron-update-crontabs \- refreshes all fcron crontabs -.SH SYNOPSIS -.B fcron-update-crontabs -.SH "DESCRIPTION" -This manual page documents briefly the -.BR fcron-update-crontabs -command. -fcron keeps its crontabs in a binary format, which needs to be -recompiled from their text source when fcron is updated or when -a userid referenced in the crontabs changes. -.B fcron-update-crontabs -can be used to recompile all fcron crontabs installed in the -system. -.PP -.SH "SEE ALSO" -.BR fcron (8), -.BR fcrontab (1), -.BR fcrontab (1), -.BR fcrontab (5). -.SH AUTHOR -This manual page was written by Henrique M. Holschuh , -for the Debian GNU/Linux system (but may be used by others). diff --git a/fcron-3.2.0/debian/init b/fcron-3.2.0/debian/init deleted file mode 100644 index ec96466..0000000 --- a/fcron-3.2.0/debian/init +++ /dev/null @@ -1,72 +0,0 @@ -#! /bin/sh -# -# fcron fcron is a scheduler especially useful for people \ -# who are not running their system all the time. -# -# Initscript by Henrique M. Holschuh . -# -# Based in /etc/init.d/skeleton: -# Written by Miquel van Smoorenburg . -# Modified for Debian GNU/Linux -# by Ian Murdock . -# - -PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin -DAEMON=/usr/sbin/fcron -NAME=fcron -DESC=fcron - -startdaemon () { - start-stop-daemon --start --quiet "$@" --pidfile /var/run/$NAME.pid --exec ${DAEMON} -- -b -} - -stopdaemon () { - start-stop-daemon --stop --quiet "$@" --pidfile /var/run/$NAME.pid --exec ${DAEMON} -} - -test -x $DAEMON || exit 0 - -set -e - -case "$1" in - start) - echo -n "Starting $DESC: " - startdaemon - echo "${NAME}." - ;; - stop) - echo -n "Stopping $DESC: " - stopdaemon --oknodo - echo "${NAME}." - ;; - reload|force-reload) - echo "Reloading $DESC configuration files." - fcron-update-crontabs >/dev/null 2>&1 - stopdaemon --signal 1 - ;; - restart) - echo -n "Restarting $DESC: " - stopdaemon - sleep 1 - startdaemon - echo "${NAME}." - ;; -# restart-if-running) -# echo -n "Stopping $DESC if it is running: " -# if start-stop-daemon --stop --quiet --pidfile /var/run/$NAME.pid --exec ${DAEMON} ; then -# echo "${NAME}." -# echo -n "Restarting $DESC: " -# startdaemon -# echo "${NAME}." -# else -# echo "(not running)." -# fi -# ;; - *) - N=/etc/init.d/$NAME - echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2 - exit 1 - ;; -esac - -exit 0 diff --git a/fcron-3.2.0/debian/lintian b/fcron-3.2.0/debian/lintian deleted file mode 100644 index 2f644b3..0000000 --- a/fcron-3.2.0/debian/lintian +++ /dev/null @@ -1,3 +0,0 @@ -fcron: non-standard-dir-perm var/spool/fcron/ 0770 != 0755 -fcron: file-in-unusual-dir var/spool/fcron/systab.orig -fcron: link-to-undocumented-manpage usr/share/man/man8/anacron.8.gz diff --git a/fcron-3.2.0/debian/postinst b/fcron-3.2.0/debian/postinst deleted file mode 100644 index ba244cb..0000000 --- a/fcron-3.2.0/debian/postinst +++ /dev/null @@ -1,102 +0,0 @@ -#! /bin/sh -# postinst script for fcron - -set -e -. /usr/share/debconf/confmodule -db_stop - -# summary of how this script can be called: -# * `configure' -# * `abort-upgrade' -# * `abort-remove' `in-favour' -# -# * `abort-deconfigure' `in-favour' -# `removing' -# -# for details, see /usr/share/doc/packaging-manual/ -# -# quoting from the policy: -# Any necessary prompting should almost always be confined to the -# post-installation script, and should be protected with a conditional -# so that unnecessary prompting doesn't happen if a package's -# installation fails and the `postinst' is called with `abort-upgrade', -# `abort-remove' or `abort-deconfigure'. - -case "$1" in - configure) - # - # Create user fcron and chown spool - # - cd /var/spool/fcron - adduser --system --group --home /var/spool/fcron --no-create-home --disabled-password fcron >/dev/null 2>&1 - chown fcron:fcron /var/spool/fcron - # add dpkg-statoverride here after dpkg 1.9.x is out - - # - # Reenable local user fcrontabs removed by 0.9.3-5..7 - # - [ -d /var/spool/fcron/rxdisabled ] && { - echo "Trying to reenable fcrontabs disabled by security patch..." - userftb= - for i in `find /var/spool/fcron/rxdisabled -type f \ - ! -name '.*' -maxdepth 1 -print0 | xargs -0` ; do - fcrontabname="`basename ${i}`" - # we can salvage only uncompiled fcrontabs - if [ "${fcrontabname%.orig}" != "${fcrontabname}" ] ; then - if [ ! -e /var/spool/fcron/${fcrontabname} ] ; then - mv /var/spool/fcron/rxdisabled/${fcrontabname} /var/spool/fcron/ - userftb="${userftb} ${fcrontabname%.orig}" - fi - else - rm -f "${i}" || true - fi - done - if rmdir /var/spool/fcron/rxdisabled >/dev/null 2>&1 ; then - [ "${userftb}" != "" ] && echo "Reinstaled fcrontabs for user(s): " ${userftb} - else - echo "Failed to reinstall all previously disabled user fcrontabs." - echo "Please check /var/spool/fcron and /var/spool/fcron/rxdisabled manually," - echo "and remove the rxdisabled subdirectory when done." - fi - } - - # - # Ensures correct owner and group for all fcrontabs - # - find /var/spool/fcron -type f ! -name '*.*' -exec chown root:root {} \; - find /var/spool/fcron -type f ! -name 'root.*' -name '*.*' -exec chown fcron:fcron {} \; - chown root:fcron root.* *.root >/dev/null 2>&1 || true - - # - # Setgid/setuid fcrontab binary - # - OVERRIDEN= - OVERRIDEN=`dpkg-statoverride --list /usr/bin/fcrontab` || true - [ "${OVERRIDEN}" = "" ] && dpkg-statoverride --update --add fcron fcron 6755 /usr/bin/fcrontab - OVERRIDEN= - OVERRIDEN=`dpkg-statoverride --list /usr/bin/fcronsighup` || true - [ "${OVERRIDEN}" = "" ] && dpkg-statoverride --update --add root fcron 4750 /usr/bin/fcronsighup - - # - # Makes sure we have no version incompatibilities on compiled - # fcrontabs - # - fcron-update-crontabs >/dev/null 2>&1 - chgrp fcron /etc/fcron.conf /etc/fcron.allow /etc/fcron.deny - ;; - - abort-upgrade|abort-remove|abort-deconfigure) - ;; - - *) - echo "postinst called with unknown argument \`$1'" >&2 - exit 0 - ;; -esac - -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - -#DEBHELPER# - -exit 0 diff --git a/fcron-3.2.0/debian/postrm b/fcron-3.2.0/debian/postrm deleted file mode 100644 index d60f020..0000000 --- a/fcron-3.2.0/debian/postrm +++ /dev/null @@ -1,51 +0,0 @@ -#! /bin/sh -# postrm script for fcron -# -# see: dh_installdeb(1) - -set -e - -# summary of how this script can be called: -# * `remove' -# * `purge' -# * `upgrade' -# * `failed-upgrade' -# * `abort-install' -# * `abort-install' -# * `abort-upgrade' -# * `disappear' overwrit>r> -# for details, see /usr/share/doc/packaging-manual/ - -case "$1" in - purge) - - # Purge fcrontabs - rm -rf /var/spool/fcron || true - - # Purge statoverrides - dpkg-statoverride --remove /usr/bin/fcrontab || true - dpkg-statoverride --remove /usr/bin/fcronsighup || true - - # Remove user fcron - userdel fcron || true - ;; - - remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear) - ;; - - *) - echo "postrm called with unknown argument \`$1'" >&2 - exit 0 - -esac - -# dh_installdeb will replace this with shell code automatically -# generated by other debhelper scripts. - -#DEBHELPER# - -if [ "$1" = remove -a -e /etc/suid.conf ] && \ - command -v suidunregister >/dev/null 2>&1; then - suidunregister -s fcron /usr/bin/fcrontab -fi -exit 0 diff --git a/fcron-3.2.0/debian/preinst b/fcron-3.2.0/debian/preinst deleted file mode 100644 index 17760bb..0000000 --- a/fcron-3.2.0/debian/preinst +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -FILE=/var/spool/fcron/root.orig - -if [ -f $FILE ]; then - grep -v "/etc/cron.\(daily\)\|\(weekly\)\|\(monthly\)" $FILE > $FILE.new - mv $FILE.new $FILE -fi - -#DEBHELPER# diff --git a/fcron-3.2.0/debian/rules b/fcron-3.2.0/debian/rules deleted file mode 100644 index 38e786c..0000000 --- a/fcron-3.2.0/debian/rules +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/make -f -# Sample debian/rules that uses debhelper. -# GNU copyright 1997 to 1999 by Joey Hess. -# Modified for package fcron - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# This is the debhelper compatability version to use. -export DH_COMPAT=3 - -# Enable debug package build if DEB_BUILD_OPTIONS contains debug -CONFFLAGS = -ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) - CONFFLAGS += --with-debug -endif - -configure-stamp: configure - dh_testdir - ./configure --prefix=/usr --with-mandir=/usr/share/man --with-docdir=/usr/share/doc --with-editor=/usr/bin/sensible-editor --with-spooldir=/var/spool/fcron --with-etcdir=/etc --with-sendmail=/usr/sbin/sendmail $(CONFFLAGS) --with-selinux=yes - - touch configure-stamp - -configure: - autoconf - -build: configure-stamp build-stamp -build-stamp: - dh_testdir - $(MAKE) - touch build-stamp - -clean: configure - dh_testdir - dh_testroot - rm -f build-stamp configure-stamp - - -$(MAKE) clean - -$(RM) -f config.cache config.log config.status config.h Makefile - - dh_clean - -install: build - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - #$(MAKE) install prefix=`pwd`/debian/tmp/usr - - install -m 755 fcron `pwd`/debian/fcron/usr/sbin - install -m 755 fcrontab fcronsighup fcrondyn `pwd`/debian/fcron/usr/bin - install files/fcron.deny files/fcron.allow `pwd`/debian/fcron/etc - install files/fcron.conf `pwd`/debian/fcron/etc - install -m 644 files/fcrontab.pam `pwd`/debian/fcron/etc/pam.d/fcrontab - install -m 644 files/fcron.pam `pwd`/debian/fcron/etc/pam.d/fcron - - install -m 755 debian/fcron-update-crontabs `pwd`/debian/fcron/usr/sbin - - # root's default crontab - install -m 640 debian/crontab.root `pwd`/debian/fcron/var/spool/fcron/systab.orig - - # lintian overrides - install -D -m 644 debian/lintian `pwd`/debian/fcron/usr/share/lintian/overrides/fcron - - # add anacron hack - ln -s /bin/true `pwd`/debian/fcron/usr/sbin/anacron - -# Build architecture-independent files here. -binary-indep: build install -# We have nothing to do by default. - -# Build architecture-dependent files here. -binary-arch: build install -# dh_testversion - dh_testdir - dh_testroot - dh_installdebconf - dh_installdocs - dh_installexamples -# dh_installmenu -# dh_installpam - dh_installinit -- defaults 89 11 -# dh_installcron - dh_installmanpages bitstring.3 -# dh_installinfo - dh_installchangelogs - dh_link -ifeq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) - dh_strip -endif - dh_compress - dh_fixperms - chmod 640 `pwd`/debian/fcron/etc/fcron.allow `pwd`/debian/fcron/etc/fcron.deny - chmod 640 `pwd`/debian/fcron/etc/fcron.conf - chmod 770 `pwd`/debian/fcron/var/spool/fcron - #dh_suidregister -# dh_makeshlibs - dh_installdeb -# dh_perl - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install diff --git a/fcron-3.2.0/debian/templates b/fcron-3.2.0/debian/templates deleted file mode 100644 index 2bf0928..0000000 --- a/fcron-3.2.0/debian/templates +++ /dev/null @@ -1,14 +0,0 @@ -Template: fcron/anacronwarn -Type: note -Description: Warning: interactions with anacron! - If you have the anacron package in the 'removed' but not 'purged' - state (i.e. anacron configuration files are still around the system), - the fcron package will cause harmless side effects, such as reports - of anacron being started at boot up. - . - DO NOT FILE BUGS AGAINST ANACRON IF YOU HAVE FCRON INSTALLED IN THE - SYSTEM. They will be either reassigned to fcron to be summarily closed - by me, or summarily closed by the anacron maintainer himself. - . - More information about this issue is available in - /usr/share/doc/fcron/README.Debian diff --git a/fcron-3.2.0/debian/templates.de b/fcron-3.2.0/debian/templates.de deleted file mode 100644 index 16eb3b5..0000000 --- a/fcron-3.2.0/debian/templates.de +++ /dev/null @@ -1,14 +0,0 @@ -Template: fcron/anacronwarn -Type: note -Description-de: Warnung: Wechselwirkungen mit anacron ! - Wenn Sie das anachron Packet im 'removed' aber nicht im 'purged' Status - haben (z.B. es befinden sich noch irgendwo im System anacron Konfigurations - Dateien ), kann es sein, dass das fcron Paket einige harmlose Seiteneffekte - aufweist, z.B. Meldungen das anacron beim booten gestartet wurde. - . - MELDEN SIE KEINE ANACRON BUGS, WENN SIE ES MIT FCRON ZUSAMMEN INSTALLIERT - HABEN. Diese werden entweder fcron zugeschrieben um von mir geschlossen zu - werden oder vom direkt anacron Maintainer geschlossen. - . - Weiter Informationen finden Sie in - /usr/share/doc/fcron/README.Debian diff --git a/fcron-3.2.0/debian/templates.es b/fcron-3.2.0/debian/templates.es deleted file mode 100644 index 39a950f..0000000 --- a/fcron-3.2.0/debian/templates.es +++ /dev/null @@ -1,25 +0,0 @@ -Template: fcron/anacronwarn -Type: note -Description: Warning: interactions with anacron! - If you have the anacron package in the 'removed' but not 'purged' state - (i.e. anacron configuration files are still around the system), the fcron - package will cause harmless side effects, such as reports of anacron being - started at boot up. - . - DO NOT FILE BUGS AGAINST ANACRON IF YOU HAVE FCRON INSTALLED IN THE - SYSTEM. They will be either reassigned to fcron to be summarily closed by - me, or summarily closed by the anacron maintainer himself. - . - More information about this issue is available in - /usr/share/doc/fcron/README.Debian -Description-es: Aviso sobre las interacciones con anacron. - Si ha borrado el paquete anacron pero no lo ha purgado, sus ficheros de - configuracin an se encuentran en el sistema y pueden provocar efectos - colaterales en fcron y comportamientos extraos, como que parezca que se - ha iniciado anacron al arrancar. - . - NO ENVE INFORMES DE ERROR CONTRA ANACRON SI TIENE FCRON INSTALADO EN EL - SISTEMA. Sern reasignados a fcron y cerrados inmediatamente, o bien - los cerrar el propio mantenedor de anacron. - . - Puede encontrar ms informacin en /usr/share/doc/fcron/README.Debian. diff --git a/fcron-3.2.0/debian/templates.fr b/fcron-3.2.0/debian/templates.fr deleted file mode 100644 index 029c7ac..0000000 --- a/fcron-3.2.0/debian/templates.fr +++ /dev/null @@ -1,28 +0,0 @@ -Template: fcron/anacronwarn -Type: note -Description: Warning: interactions with anacron! - If you have the anacron package in the 'removed' but not 'purged' state - (i.e. anacron configuration files are still around the system), the fcron - package will cause harmless side effects, such as reports of anacron being - started at boot up. - . - DO NOT FILE BUGS AGAINST ANACRON IF YOU HAVE FCRON INSTALLED IN THE - SYSTEM. They will be either reassigned to fcron to be summarily closed by - me, or summarily closed by the anacron maintainer himself. - . - More information about this issue is available in - /usr/share/doc/fcron/README.Debian -Description-fr: Attention: interfrences avec anacron! - Si le paquet anacron a t supprim (removed) mais non purg - (purged) --ce qui signifie que les fichiers de configuration - d'anacron sont toujours prsents--, fcron fera des actions - inattendues mais sans consquence, telles que des rapports disant - qu'anacron est lanc au dmarrage. - . - N'EFFECTUEZ PAS DE RAPPORT DE BOGUE CONTRE ANACRON SI VOUS AVEZ FCRON - INSTALL SUR VOTRE SYSTME. Il sera soit rassign fcron et ferm - sans autre forme de procs par moi-mme, soit ferm directement par le - responsable d'anacron. - . - Vous pouvez consulter /usr/share/doc/fcron/README.Debian pour plus - d'informations. diff --git a/fcron-3.2.0/debian/templates.pt b/fcron-3.2.0/debian/templates.pt deleted file mode 100644 index 50e15de..0000000 --- a/fcron-3.2.0/debian/templates.pt +++ /dev/null @@ -1,14 +0,0 @@ -Template: fcron/anacronwarn -Type: note -Description-pt_BR: Aviso: interaes com anacron! - Se voc removeu o pacote anacron mas deixou seus arquivos de - configurao no sistema (ou seja, no usou "purge"), o pacote fcron - ir causar efeitos colaterais inofensivos, tais como anacron dizendo - que foi ativado durante a inicializao do sistema. - . - NO REGISTRE DEFEITOS (bugs) CONTRA O PACOTE ANACRON SE VOC INSTALOU - O PACOTE FCRON. Eles sero sumariamente deletados ou por mim, ou pelo - responsvel pelo pacote anacron. - . - Mais informaes sobre o problema podem ser encontradas em - /usr/share/doc/fcron/README.Debian diff --git a/fcron-3.2.0/debian/templates.ru b/fcron-3.2.0/debian/templates.ru deleted file mode 100644 index d06153d..0000000 --- a/fcron-3.2.0/debian/templates.ru +++ /dev/null @@ -1,27 +0,0 @@ -Template: fcron/anacronwarn -Type: note -Description: Warning: interactions with anacron! - If you have the anacron package in the 'removed' but not 'purged' state - (i.e. anacron configuration files are still around the system), the fcron - package will cause harmless side effects, such as reports of anacron being - started at boot up. - . - DO NOT FILE BUGS AGAINST ANACRON IF YOU HAVE FCRON INSTALLED IN THE - SYSTEM. They will be either reassigned to fcron to be summarily closed by - me, or summarily closed by the anacron maintainer himself. - . - More information about this issue is available in - /usr/share/doc/fcron/README.Debian -Description-ru: : anacron! - anacron 'removed', 'purged' - (.. anacron ), - fcron , anacron - . - . - ANACRON, - FCRON. , - fcron , anacron. - . - - /usr/share/doc/fcron/README.Debian - diff --git a/fcron-3.2.0/doc/Makefile.in b/fcron-3.2.0/doc/Makefile.in deleted file mode 100644 index bd053c7..0000000 --- a/fcron-3.2.0/doc/Makefile.in +++ /dev/null @@ -1,243 +0,0 @@ -############################ -# fcron-doc's Makefile #### -############################ - -# @configure_input@ - - -# The following should not be edited manually (use configure options) -# If you must do it, BEWARE: some of the following is also defined -# in config.h, so you must modify config.h AND Makefile in order -# to set the same values in the two files. - - -SRCDIR = @srcdir@ - -prefix = @prefix@ -datarootdir = @datarootdir@ -DESTMAN = @mandir@ -DESTDOC = @DOCDIR@ - -INSTALL = @INSTALL@ -JADE = @JADE@ -DB2MAN_BEFORE = @DB2MAN_BEFORE@ -DB2MAN_AFTER = @DB2MAN_AFTER@ - -ROOTNAME = @ROOTNAME@ -ROOTGROUP = @ROOTGROUP@ - -ANSWERALL = @ANSWERALL@ - -#################################### -# Should not be changed under this # -#################################### -STYLESHEET = stylesheets/fcron-doc.dsl -MODFILE = fcron-doc.mod -VERSION = @VERSION@ -SGMLFILES = fcron-doc.sgml readme.sgml relnotes.sgml changes.sgml faq.sgml thanks.sgml todo.sgml fcron.8.sgml fcrontab.1.sgml install.sgml fcron.conf.5.sgml fcrontab.5.sgml fcrondyn.1.sgml fdl.sgml gpl.sgml -TXTFILES = readme install thanks faq gpl todo relnotes changes -MANPAGES = fcron.8 fcron.conf.5 fcrontab.1 fcrontab.5 fcrondyn.1 -LANGUAGES = en fr - -# this is a regular expression: -# do not ci these files -RCSNOCI=.*\(bitstring.3\|fcron-doc.ced\|Makefile\|${STYLESHEET}\|fcron-doc.mod\|HTML.*\|txt.*\|man\/.*\|CVS.*\|.git.*\) - -all: doc - -doc: -# Build all the HTML, text and manual pages in all the languages - @(for i in $(LANGUAGES); \ - do \ - test -d $(SRCDIR)/$$i/HTML || mkdir $(SRCDIR)/$$i/HTML ; \ - test -d $(SRCDIR)/$$i/txt || mkdir $(SRCDIR)/$$i/txt ; \ - test -d $(SRCDIR)/$$i/man || mkdir $(SRCDIR)/$$i/man ; \ - $(MAKE) $(SRCDIR)/$$i/HTML/index.html $(SRCDIR)/$$i/txt/readme.txt \ - $(SRCDIR)/$$i/man/fcron.8 ; \ - done) - -doc-if-none: -# Only generate the doc if there is none (e.g. if the sources came from git -# and not a tarball) -# The reason we don't try to generate the doc everytime is that we want the user -# to be able to compile and install fcron without needing all the tools required -#to generate the documentations. -# -# "make doc" will be called once at max, as all the tests will -#succeed after the first time "make doc" is called - @(for i in $(LANGUAGES); \ - do \ - test -f $(SRCDIR)/$$i/HTML/index.html || $(MAKE) doc ; \ - test -f $(SRCDIR)/$$i/txt/readme.txt || $(MAKE) doc ; \ - test -f $(SRCDIR)/$$i/man/fcron.8 || $(MAKE) doc ; \ - done) - -# man/fcron.8 means in fact "build *all* the man pages" -%/man/fcron.8: %/*.sgml fcron-doc.mod ${STYLESHEET}.in - @(if test -z "$(DB2MAN_BEFORE)"; then \ - echo "ERROR: cannot generate man pages." ; \ - echo " Please check if a db2man converter is installed, or if" \ - echo " nsgmls, sgmlspl are installed, and if configure's options" \ - echo " --with-db2man and --with-db2man-spec are correctly set." ; \ - exit 1 ; \ - fi) - @(echo ; echo "Building $(@D) manual pages..."; echo ) - @(cp -f bitstring.3 $(@D)/) - @(cd $(@D)/../ ; \ - ln ../fcron-doc.mod ./ ; \ - for i in $(MANPAGES); do \ - echo " $(@D)/$$i..."; \ - echo '%decl;]>' > _tmp_ ; \ - echo "&$$i;" >> _tmp_ ; \ - $(DB2MAN_BEFORE) _tmp_ $(DB2MAN_AFTER) > /dev/null 2>&1 ; \ - rm -f _tmp_ ; \ - mv `basename $$i .sgml` man/ ; \ - done ; \ - rm fcron-doc.mod ; \ - rm -f manpage.links manpage.refs) - - -# txt/readme.txt means in fact "build *all* the text pages" -%/txt/readme.txt: %/HTML/index.html - @(echo ; echo "Building $(@D) files..."; echo ) - @(for i in $(TXTFILES); do \ - echo " $(@D)/$$i..."; \ - lynx -dump -nolist $(@D)/../HTML/$$i.html > $(@D)/$$i.txt; done ) - -fcron-doc.mod: fcron-doc.mod.in ../configure.in - @(echo ; echo "Building fcron-doc.mod") - @(../script/gen-in.pl fcron-doc.mod.in fcron-doc.mod ../) - -# HTML/index.html means in fact "build *all* the HTML pages" -%/HTML/index.html: %/*.sgml fcron-doc.mod ${STYLESHEET}.in - @(echo ; echo "Building $(@D)...") - @(rm -fR $(@D)/*.html) - @(cd $(@D)/../ ; $(JADE) -D ../ -D ./ -t sgml -i html -d ../${STYLESHEET}\#html fcron-doc.sgml) - -install: install-staged perms - -install-staged: doc-if-none clean - @(echo "Installing man pages in $(DESTDIR)$(DESTMAN)...") - @(for l in $(LANGUAGES); do \ - if test "x$$l" = "xen"; then \ - DIR=$(DESTDIR)$(DESTMAN); \ - else \ - DIR=$(DESTDIR)$(DESTMAN)/$$l; \ - fi ; \ - for i in 1 3 5 8; do \ - if test ! -d $$DIR/man$$i; then \ - $(INSTALL) -m 755 -d $$DIR/man$$i ; \ - fi ; \ - for m in $(SRCDIR)/$$l/man/*.$$i; do \ - $(INSTALL) -m 644 $$m $$DIR/man$$i ; \ - done ; \ - done ; \ - done ) - - @(echo "Installing documentation files in $(DESTDIR)$(DESTDOC)/fcron-$(VERSION)...") - @(if test ! -d $(DESTDIR)$(DESTDOC)/fcron-$(VERSION); then $(INSTALL) -m 755 -d $(DESTDIR)$(DESTDOC)/fcron-$(VERSION) ; fi) - - @(for l in $(LANGUAGES); do \ - DIR=$(DESTDIR)$(DESTDOC)/fcron-$(VERSION) ; \ - if test ! -d $$DIR/$$l; then \ - $(INSTALL) -m 755 -d $$DIR/$$l ; \ - fi ; \ - for i in txt HTML; do \ - if test ! -d $$DIR/$$l/$$i; then \ - $(INSTALL) -m 755 -d $$DIR/$$l/$$i ; \ - fi ; \ - for m in $(SRCDIR)/$$l/$$i/* ; do \ - $(INSTALL) -m 644 $$m $$DIR/$$l/$$i/ ;\ - done ; \ - done ; \ - done ) - -perms: - for l in $(LANGUAGES); do \ - if test "x$$l" = "xen"; then \ - DIR=$(DESTDIR)$(DESTMAN); \ - else \ - DIR=$(DESTDIR)$(DESTMAN)/$$l; \ - fi ; \ - chown $(ROOTNAME) $$DIR; \ - chgrp $(ROOTGROUP) $$DIR; \ - for i in 1 3 5 8; do \ - chown $(ROOTNAME) $$DIR/man$$i; \ - chgrp $(ROOTGROUP) $$DIR/man$$i; \ - done ; \ - for f in man1/fcrontab.1 man1/fcrondyn.1 man3/bitstring.3 \ - man5/fcrontab.5 man5/fcron.conf.5 man8/fcron.8 ; do \ - chown $(ROOTNAME) $$DIR/$$f; \ - chgrp $(ROOTGROUP) $$DIR/$$f; \ - done ; \ - done - chown $(ROOTNAME) $(DESTDIR)$(DESTDOC) - chgrp $(ROOTGROUP) $(DESTDIR)$(DESTDOC) - chown $(ROOTNAME) $(DESTDIR)$(DESTDOC)/fcron-$(VERSION) - chgrp $(ROOTGROUP) $(DESTDIR)$(DESTDOC)/fcron-$(VERSION) - for l in $(LANGUAGES); do \ - DIR=$(DESTDIR)$(DESTDOC)/fcron-$(VERSION)/$$l ; \ - chown $(ROOTNAME) $$DIR ; \ - chgrp $(ROOTGROUP) $$DIR ; \ - for i in txt HTML; do \ - chown $(ROOTNAME) $$DIR/$$i; \ - chgrp $(ROOTGROUP) $$DIR/$$i; \ - chown $(ROOTNAME) $$DIR/$$i/*; \ - chgrp $(ROOTGROUP) $$DIR/$$i/*; \ - done ; \ - done - - -uninstall: - rm -fR $(DESTDOC)/fcron-$(VERSION) - @(echo "Removing man pages ...") - @(for l in $(LANGUAGES); do \ - if test "x$$l" = "xen"; then \ - DIR=$(DESTDIR)$(DESTMAN); \ - else \ - DIR=$(DESTDIR)$(DESTMAN)/$$l; \ - fi ; \ - rm -f $$DIR/man1/fcrontab.1 ; \ - rm -f $$DIR/man1/fcrondyn.1 ; \ - rm -f $$DIR/man3/bitstring.3 ; \ - rm -f $$DIR/man5/fcrontab.5 ; \ - rm -f $$DIR/man5/fcron.conf.5 ; \ - rm -f $$DIR/man8/fcron.8 ; \ - done ) - - -clean: - @(cd $(SRCDIR) ; \ - BASEDIR=`pwd` ; \ - for i in stylesheets $(LANGUAGES) . ; do \ - cd $$i ; \ - echo "Cleaning: `pwd`"; \ - rm -f *~ *.html *.htm *.texi *.info *.refs manpage.links manpage.refs \ - core *.tar.gz ; \ - cd $$BASEDIR ; \ - done) - -tarclean: clean - rm -f Makefile ${STYLESHEET} fcron-doc.mod - -vclean: clean -# rm -f */HTML/* */man/* */txt/* - rm -f Makefile ${STYLESHEET} - -ci: clean -# we run a "cd .." because it makes the path of the file appear ( ./doc/XXXX ) -# during the ci-ing -# the symbolic links verX_X_X has been created since version 2.9.4 - @(cd ..; find ./doc/ -type f ! -regex '.*RCS.*' ! -regex "$(RCSNOCI)" \ - -exec ci -l -Nver`echo $(VERSION) | tr '.' '_'` {} \;) - -tarhtmldoc: doc - for i in $(LANGUAGES); do \ - cd $$i ; \ - mkdir fcron-$(VERSION)-doc-$$i-html ;\ - cp HTML/*.html fcron-$(VERSION)-doc-$$i-html ;\ - rm -f fcron-doc-$$i-html.tar.gz ;\ - tar -czvf fcron-doc-$$i-html.tar.gz fcron-$(VERSION)-doc-$$i-html/* ;\ - rm -fR fcron-$(VERSION)-doc-$$i-html ; \ - cd .. ; \ - done diff --git a/fcron-3.2.0/doc/bitstring.3 b/fcron-3.2.0/doc/bitstring.3 deleted file mode 100644 index efe9ae3..0000000 --- a/fcron-3.2.0/doc/bitstring.3 +++ /dev/null @@ -1,168 +0,0 @@ -.\" Copyright (c) 1989 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" This code is derived from software contributed to Berkeley by -.\" Paul Vixie. -.\" -.\" Redistribution and use in source and binary forms are permitted -.\" provided that the above copyright notice and this paragraph are -.\" duplicated in all such forms and that any documentation, -.\" advertising materials, and other materials related to such -.\" distribution and use acknowledge that the software was developed -.\" by the University of California, Berkeley. The name of the -.\" University may not be used to endorse or promote products derived -.\" from this software without specific prior written permission. -.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -.\" -.\" @(#)bitstring.3 5.1 (Berkeley) 12/13/89 -.\" -.TH BITSTRING 3 "December 13, 1989" -.UC 4 -.SH NAME -bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset, -bit_set, bitstr_size, bit_test \- bit-string manipulation macros -.SH SYNOPSIS -.ft B -.nf -#include - -name = bit_alloc(nbits) -bitstr_t *name; -int nbits; - -bit_decl(name, nbits) -bitstr_t name; -int nbits; - -bit_clear(name, bit) -bitstr_t name; -int bit; - -bit_ffc(name, nbits, value) -bitstr_t name; -int nbits, *value; - -bit_ffs(name, nbits, value) -bitstr_t name; -int nbits, *value; - -bit_nclear(name, start, stop) -bitstr_t name; -int start, stop; - -bit_nset(name, start, stop) -bitstr_t name; -int start, stop; - -bit_set(name, bit) -bitstr_t name; -int bit; - -bitstr_size(nbits) -int nbits; - -bit_test(name, bit) -bitstr_t name; -int bit; -.fi -.ft R -.SH DESCRIPTION -These macros operate on strings of bits. -.PP -.I Bit_alloc -returns a pointer of type -.I bitstr_t\ * -to sufficient space to store -.I nbits -bits, or NULL if no space is available. -.PP -.I Bit_decl -is a macro for allocating sufficient space to store -.I nbits -bits on the stack. -.PP -.I Bitstr_size -returns the number of elements of type -.I bitstr_t -necessary to store -.I nbits -bits. -This is useful for copying bit strings. -.PP -.I Bit_clear -and -.I bit_set -clear or set the zero-based numbered bit -.IR bit , -in the bit string -.IR name . -.PP -.I Bit_nset -and -.I bit_nclear -set or clear the zero-based numbered bits from -.I start -to -.I stop -in the bit string -.IR name . -.PP -.I Bit_test -evaluates to zero if the zero-based numbered bit -.I bit -of bit string -.I name -is set, and non-zero otherwise. -.PP -.I Bit_ffs -sets -.I *value -to the zero-based number of the first bit set in the array of -.I nbits -bits referenced by -.IR name . -If no bits are set, -.I *value -is set to -1. -.PP -.I Bit_ffc -sets -.I *value -to the zero-based number of the first bit not set in the array of -.I nbits -bits referenced by -.IR name . -If all bits are set, -.I value -is set to -1. -.SH EXAMPLE -.nf -.in +5 -#include -#include - -... -#define LPR_BUSY_BIT 0 -#define LPR_FORMAT_BIT 1 -#define LPR_DOWNLOAD_BIT 2 -... -#define LPR_AVAILABLE_BIT 9 -#define LPR_MAX_BITS 10 - -make_lpr_available() -{ - bitstr_t bit_decl(bitlist, LPR_MAX_BITS); - ... - bit_nclear(bitlist, 0, LPR_MAX_BITS - 1); - ... - if (!bit_test(bitlist, LPR_BUSY_BIT)) { - bit_clear(bitlist, LPR_FORMAT_BIT); - bit_clear(bitlist, LPR_DOWNLOAD_BIT); - bit_set(bitlist, LPR_AVAILABLE_BIT); - } -} -.fi -.SH "SEE ALSO" -malloc(3) diff --git a/fcron-3.2.0/doc/en/HTML/LEGALNOTICE.html b/fcron-3.2.0/doc/en/HTML/LEGALNOTICE.html deleted file mode 100644 index 6368f06..0000000 --- a/fcron-3.2.0/doc/en/HTML/LEGALNOTICE.html +++ /dev/null @@ -1,142 +0,0 @@ - -
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation

Fcron documentation Copyright -2000-2014 Thibault Godouet, <fcron@free.fr>

Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the Back-Cover -Texts being Back Cover Text. A copy of the license is included in -Appendix B.


 Home 
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/changes.html b/fcron-3.2.0/doc/en/HTML/changes.html deleted file mode 100644 index 153e006..0000000 --- a/fcron-3.2.0/doc/en/HTML/changes.html +++ /dev/null @@ -1,1926 +0,0 @@ - -Changes
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevChapter 1. Fcron: how and why?Next

1.3. Changes

From version 3.1.3 to 3.2.0

  • Print date as %Y-%m-%d (the ISO 8601 date format), to avoid being ambiguous in international context. Also always use the ':' as hour:minute separator (there was a couple of 'h' instead).

  • Don't fully disable a @-line when something goes wrong (e.g. fcron didn't shut down cleanly). The idea was to prevent infinite loops, but this was overkill. Instead set its next execution to now+frequency.`

  • Cosmetic changes in the log lines (quote the job shell commands) and fcrondyn (use the pipe char "|" as a column separator).

  • Fixed file descriptor leak when executing jobs in case of NSS failures (thanks Pavel Stano).

From version 3.1.2 to 3.1.3

  • Fixed compilation on Solaris 10, and fixed fcrondyn authentication without a password on that platform.

  • Fixed bug where LONG_MAX could potentially be used in functions like localtime(), which is too big for localtime(). This was unlikely to happen unless there was another problem in the first place.

  • fcrondyn -x no longer adds null characters at the end of the output. This would cause problems if the output was piped to something as grep. Thanks Dimitri Semitsoglou-Tsiapos for pointing this out.

  • Fixed minor bug in fcronsighup resulting in log errors about closing the signal file

  • fcrondyn no longer crashes when receiving an EOF when using readline (thanks Wade Carpenter for the patch)

  • fcrontab no longer crash if mailto is empty (thanks Olaf for reporting the issue)

  • Fixed SELinux issue with Linux user being used instead of the SELinux user (thanks Sven Vermeulen for the patch)

From version 3.1.1 to 3.1.2

  • bug fix: fixed fcron crash bug when using fcrondyn

  • bug fix: the configure option --without-sendmail was not working correctly.

  • bug fix: inline runas wouldn't work with Vixie-cron style shortcut lines.

  • bug fix: fixed bug in the code to log to a file.

  • systemd: fixed the installation on systems using systemd, and also don't kill jobs when killing fcron.

  • Made file closures more robust to prevent bugs difficult to troubleshoot to creep in.

From version 3.1.0 to 3.1.1

  • Added readline support for fcrondyn

  • tweaked 'make indent' options and applied

  • Fcron can now log to a file (without syslog) - thanks Matthew Signorini.

  • fixed fcrontab edition of *ly lines (hourly, daily, etc)

  • fixed fcron crashes when noticenotrun was triggered

From version 3.0.6 to 3.1.0

  • Vixie cron compatibility: added options @reboot, @daily, @hourly, etc. Also added more generic options runatreboot, rebootreset and runonce.

  • Pass fcrondyn client credentials through the socket when possible so as the user doesn't need to type his password when using fcrondyn.

  • added audit (libaudit) support

  • Better validation of string arguments of fcrontab options. In particular for timezones, previously a space could be added at the beginning or the end of the timezone with no warning, and this led fcron to use an unexpected timezone, which could cause confusion.

  • Allow tasks to run every seconds

  • don't inherit fcron's environment when running a job but build the environment from scratch (cleaner, and this is what Vixie cron does)

  • fcron now sets the email headers X-Cron-Env and Auto-Submitted (as described in RFC 3834).

  • email encoding: fcron now sets the email headers Content-Type and Content-Transfer-Encoding. They can be controlled by setting the CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in fcrontabs.

  • Added systemd service definition (thank you Reiner)

  • Allow Makefile parallelism (e.g. make -j 4)

  • bug fix: fcrontab: don't alert about invalid character when correcting fcrontab twice

  • bug fix: fixed free_safe() function (replaced by macro).

  • bug fix: configure script: usage of sendmail couldn't be disabled

  • bug fix: fixed a potential (unlikely) 1 byte overflow in strncat() in socket.c

  • Quite a lot of code clean-up and refactoring -- e.g. implemented generic unordred list for lavgq / exeq.

From version 3.0.5 to 3.0.6

  • Fixed bug preventing normal user from running fcrontab -l if fcron's uid!=gid

  • Fixed fcrontab's PAM initialization when working on the systab user.

  • Added check_system_crontabs.sh which is to replace the less portable check_system_crontabs.bash.

  • Added option -c to check_system_crontabs.sh to specify a fcron.conf file to use

  • Fixed Makefile bug preventing installation when building from a different folder than the sources (wrong fcron.conf path)

From version 3.0.4 to 3.0.5

  • Security issue: fixed security issue that allowed malicious user to read any file readable by group 'fcron' (in particular fcron's config files and the fcrontabs of non-root users). On systems without seteuid() (i.e. quite exotic systems) then the bug is harder to exploit but any file could be read.

  • Improved general security of fcrontab and fcrondyn by dropping more privileges.

  • Work on portability (aix, hpux, irix, tru64 unix, solaris). Thanks Peter O'Gorman for his patch!

  • Patched startup script to make it more compliant to the LSB.

  • Increased maximum number of fcrontab entries from 256 to 1024.

  • bug fix: if fcron could not fork() to run a job, then the job would still appear to be running until fcron is restarted (thanks Alexander Y. Fomichev for noticing this bug).

  • bug fix: fcrontab used to accept MAXENTRIES+1 fcrontab entries

  • chdir to /tmp before executing the editor (as some editor needs to be able to read information on the current folder).

From version 3.0.3 to 3.0.4

  • Initialize the random number generator with some values specific to the machine so as two fcron started exactly at the same time on two different machines run their random jobs at different time. This is useful for clusters for instance.

  • Added option erroronlymail so as the output of a job is emailed only when the job exited with a non-zero status.

  • Bug fix: in certain conditions, jobs could be executed outside their interval of execution when using option random on %-lines.

  • Fixed bug which prevented the pid of the job to be written to the (grand-)parent process. This was not a major issue but would prevent fcrondyn from working well with the concerned jobs. This bug was caused by a close() function applied twice on a file descriptor, which would trigger the bug in some rare occasions (only one affected linux system reported).

  • Fixed bug which would stop fcron from running any job any more on the affected system and until fcron was restarted if the bug above occured.

  • Cleaned-up the closures of file descriptors (check for errors, etc).

From version 3.0.3-rc1 to 3.0.3

  • The configure script now check that the make command is GNU make (which is required to build fcron).

    Bug fix: better handling of getpwnam() errors (we cannot rely on errno to spot an error). This was causing problems for AIX for instance.

From version 3.0.2 to 3.0.3-rc1

  • New configure scripts, with more standard default values for paths, etc. This aims at simplifying the packaging of fcron. Thanks go to Patrice Dumas for his patch!

  • New make targets: perms and strip. This aims at simplifying the packaging of fcron. Thanks go to Patrice Dumas for his patch!

  • Set environment variable LOGNAME when running a job (as Vixie Cron does: thanks Martin McGreal for pointing that out).

  • Portability work for AIX 5.2 and Solaris 8 and 10 (thanks Martin McGreal).

  • Chmod()ed fcron's fifo file to 777. It was 666 previously, but the exec bit is needed for AIX and apparently ignored on other platforms, so we now set it to.

  • Set TZ environment variable for lines which uses fcron option timezone.

  • A file was closed twice by fcrontab: removed the duplicate close().

  • Replaced include sys/termios.h by termios.h.

  • Fixed a fcrontab bug cause by an return value not handled and resulting in many useless (but pretty much harmless) iteration in a loop.

From version 3.0.1 to 3.0.2

  • Use sockaddr's field sa_len/sun_len on system defining it (BSD, ...). It should allow fcrondyn to connect to fcron on these systems.

  • Non-SELinux systems: run each job in a different session by calling setuid() for each one of them. This is to improve compatibility with Vixie cron.

  • Don't use the shell defined in /etc/passwd by default, but use the default value from fcron.conf instead. This is for compatibility with Vixie cron.

  • Use root name and group instead of root uid and gid. This seems more logical since the configure scripts asks for the name and group and not the uid and gid.

  • Added an init file for Suse in script/ (contribution from Alex: thanks!).

  • Minor spelling fixes in the French documentation.

From version 3.0.0 to 3.0.1

  • fcrontab: access user's directory with user's rights (necessary if user/group fcron has not the right to read the directory).

  • improvement in check_system_crontabs: more comments, added some help messages, added command line options, cleaner, safer code.

  • Improved English documentation: clarified some previously-unclear points.

  • Added French translation of the manual pages (thanks go to Alain Portal)

  • Removed old documentation from the package.

  • Better handling of the pipes in job.c: this should remove some problems encountered on BSD systems.

  • bug fix: do not use a tv_usec > 999999: should fix the problem encountered on BSD systems with select().

  • bug fix: fixed a bug in make_msg(): the size of a string written to a buffer was not controlled correctly in some cases. This could result in buffer overflow and thus this was security problem. However the bug seems not exploitable as the part of the string which could overflow the buffer could not be freely defined by an attacker (it was either ": " or one of the strings returned by strerror()).

  • Bug fix: set the FDs correctly for select().

From version 2.9.7 to 3.0.0

  • Added a missing entry in changelog (changes from 2.9.6 to 2.9.7, bug fix for NetBSD).

  • Merged a patch for the check_system_crontabs script (Security enhancements and cleanups).

From version 2.9.6 to 2.9.7

  • Added time zone support (option timezone).

  • Better support FreeBSD's users and groups modifications in - fcron's install scripts.

  • Fixed a bug which used to make fcron send empty mails on very - recent systems.

  • Fixed a bug which prevented fcrondyn to being used on NetBSD (thanks go to Gabor Z. Papp).

  • Added some casts in fileconf.c and save.c (to avoid some - warnings when compiling on HP-UX).

  • Added a FAQ entry on how to emulate an anacron entry.

From version 2.9.5.1 to 2.9.6

  • fixed the bug which made jobs run an hour too early after a - daylight saving time change.

    Added detailed explanations about when a job will run when - there is a DST change in the FAQ.

  • fixed fcrondyn's "Unknown command" bug on x86_64 (thanks go to - Georgi Georgiev).

  • made fcrontab behave better when there is no space left in the - spool directory (used to truncate the fcrontab source file). -

  • Added a script, check_system_crontabs, to emulate Vixie cron's - behavior about /etc/crontab and /etc/cron.d. Please have a look - at the top of script/check_system_crontabs for more information. -

  • HP-UX support (needs more tests).

  • bug fix: restore umask even if fcron runs - unprivileged.

From version 2.9.5 to 2.9.5.1

  • Fixed serious security vulnerabilities in fcronsighup, and - improved fcronsighup's overall security (drop privileges, better - check user inputs, etc).

  • Fixed several typos in the doc.

  • Updated debian package scripts (patch from debian - maintainer).

From version 2.9.4 to 2.9.5

  • Ported to HP-UX (thanks go to Scott Tinsley)

  • Implemented fcrondyn commands run and runnow.

  • Merged patch from Russell Coker for new SE Linux.

  • Merged debian/ dir for debian package.

  • Mail reports: put the same username in the To: field than the - one we give as recipient to the MTA. mailto can now also be a - fully qualified email address.

  • changed a log message: a job which has ended without error is - reported has "completed" (which is more appropriated than - "terminated"). -

  • Internal changes in log.c: code is more segmented, and code - has been added to be able to send log message to fcrondyn. Syslog - messages are now never longer than MAX_MSG (even with string from - strerror()).

  • Fixed a bug which happened on Daylight Saving Time change on - some systems. It would make fcron run into a nasty infinite loop. - Added a sanity check in set_nextexe() to avoid such - things.

  • Fixed a crash bug: in 2.9.4, if a user run ls_exeq when a job - is running and has been removed from its fcrontab, it makes fcron - crash.

  • Fixed a small bug: scripts were supposing perl was in - /usr/bin.

  • Fixed a bug which caused the pid of a child process to be - incorrectly read

  • fixed memory leak: some strings returned by log.c:make_msg() - weren't always free()d.

  • bug fix: fcrondyn commands renice and kill used not to handle - correctly the case where a job has several entries in exeq - (exesev jobs).

From version 2.9.3 to 2.9.4

  • Merged support for SE Linux (patch from Russell Coker: thanks!) -

  • Work on the documentation (fixed spelling mistakes, tried to - make things clearer in fcrontab.5) (thanks Bill Wohler for your - help!)

  • Changed the subject line of mail reports: it now contains the - subject line, and is very similar to vixie cron's one.

  • Added a sum-up at the end of ./configure.

  • bug fix: "makewhatis" bug is fixed -- at last!

    In fact, the problems encountered were due to an abusively - ignored signal SIGPIPE.

  • bug fix: possible crash of fcron when trying to save a file - if there was no space left on device.

  • bug fix: we don't consider '-' and '_' as word delimiters for - a username before the command anymore, since many programs have - one of these characters in their name.

  • bug fix: option first was broken in fcron 2.9.3.

  • fixed a little typo in an error message - (could->couldn't)

  • bug fix: do not ignore the last line of a fcrontab if there - is no \n before the end of file.

  • fixed compile on SunOS 5.9 .

  • Fcron now compiles on MacOS X.

  • added some $srcdir to be able (again ;) ) to run configure - from another directory.

  • Perf improvement: use buffer for i/o in run_job().

From version 2.9.2 to 2.9.3

  • security issue: fcron used not to check the fcrontabs - installed by root for a standard user. This could make an - inattentive superuser install a user job runas(root) - involontary.

  • Perf improvement: we now use buffers to write something to - disk (became necessary due to the use of O_SYNC).

  • To avoid loss of data in case of an hardware failure or a - system crash, fcron now saves files to a temporary name, and then - renames them to their definitive filename if everything's - ok.

  • The PID indicated by fcrondyn is now the pid of the job itself - (up to now, it was the one of the fcron process controlling the - job).

  • Implemented functions kill (send a signal to a running job) - and renice (change the priority of a running job) in - fcrondyn.

  • Added fcron's option -q to control the lavg and serial queue - sizes. -

  • Added some timeouts in fcron for fcrondyn clients.

  • Fcron is less restrictive concerning mailto addresses. In - particular, you can now use address like user@host.

  • bug fix: in 2.9.2, fcrontab and fcron did not set correctly - some file modes.

  • bug (introduced in 2.9.1): when a job stops with an non-zero - exit status or because it has been signaled, send a mail to its - owner to inform him (in 2.9.1 and 2.9.2, the mail was sent, but - contained nothing).

  • code clean: use the same scheme for all struct types, removed - some code redundancy (save to disk management).

From version 2.9.1 to 2.9.2

  • Added a system fcrontab. Root can access it with fcrontab by - using "-u systab".

  • fcrondyn's ls_lavgq, ls_serialq and ls_exeq are now - functional.

  • mailto can now be set to a non-real user (for ex., an - alias).

  • fcron now calls shutdown() when a connection from fcrondyn is - closed. Another change in the code should prevent fcrondyn from - not returning to the prompt after a command has been run.

  • use open() instead of fopen() to write files, for more - security.

  • fcrontab sets euid=uid before running the editor. This is - required by some programs (for instance, perl).

  • bug fix: using DESTDIR with make did not work with the - doc.

  • Code clean: changed macros to make parameters clearly - different from vars.

From version 2.9.0 to 2.9.1

  • fcron can now be run without root's privileges (see FAQ)

  • added configure's option --with-boot-install .

  • Minor change in the PAM code of fcron: may work better on - some systems.

  • configure script now uses getpwnam() and getgrnam() instead of - reading directly /etc/passwd and /etc/group: this makes easier - the use of NIS, LDAP, etc.

  • Bug fix: using some "cmd > /dev/stderr" (or stdout) in a - script used to make fcron send a bogus output mail. (rewrite of - the code managing the output of jobs)

  • Bug fix: typo error prevented fcrontab to be compiled on some - systems.

  • Minor bug fix about stdout option.

  • Minor bug fix: giving fcrontab's option -c a relative path - now works correctly.

From version 2.1.0 to 2.9.0

  • Added some new options to fcron: -y, -o, -l; and some - fcrontab options: stdout and volatile. All these permit to make - fcron run in foreground, execute all the pending jobs (mainly - %-jobs), and return. May be used, for instance, in a ppp-up - script with a dialup connection to update a software - regularly.

  • Added fcrondyn: this software allows users to dialog - dyn-amically with a running fcron daemon. Currently, it can list - jobs of the user running it (or all jobs for root). In the near - future, it should be able to run a job, change its next time and - date of execution, renice a running job, send a signal to a - running job, etc.

  • All the documentation has been ported to SGML DocBook.

    It results on a much better HTML version, which I recommand - you use. It is installed by default in fcron documentation - directory (for instance, on my system: - /usr/share/doc/fcron-X.X.X/).

  • Fcrontab.5 has been updated and improved. Some examples have - been added and some possible use of the different lines and - options are mentioned.

  • Added option random, which allows an entry run periodically to - be run at a random time in its intervals of execution, instead of - being run as soon as possible.

  • added some more checks in fileconf.c: allow user to use - hours, days, hourly, daily, etc options only with %-lines: it is - ignored if set for a &-line, which is quite confusing for users - who may type, for instance "&hourly" instead of - "%hourly".

  • bug fixed: you can now use arguments in the var EDITOR and - VISUAL.

  • bug fixed: fcron used to call sometimes a sleep(-1), which - causes a freeze (no crash, but a very very long sleep :) ) under - system using LIBC5, and maybe on some non-linux systems. It was - not causing any problem under GLIBC2. Thanks go to Nick - Pasich.

From version 2.0.0 to 2.1.0

  • PAM support for fcron and fcrontab (need testing! - help - would be appreciated).

  • Fcron now send a mail if a job has noticenotrun set and could - not be run because of a queue full.

  • Fcron now compiles on AIX (thank you, John A. Parker!), and a - few AIX-only bugs have been fixed, but it may remain some - problems to correct. Please try, and tell me!

  • We now use constants ROOTUID and ROOTGID instead of some - hard-coded "0", and those constants are defined by the configure - script (we use the uid/gid of the name given with the option - "--with-root{name|group}"). It allows fcron to be run on system - on which root is not uid/gid 0/0.

  • code cleaning.

  • bug fixed: setting lavg to (0,0,0) used to make the line be - added in the lavg queue instead of the serial queue (but the - lavgs were ignored anyway).

  • bug fixed: fcrontab's "-z" option was not ignoring previous - user's fcrontab version.

  • bug fixed: on systems using putenv(), the var HOME, USER and - SHELL wasn't correctly assigned. On system supporting setenv() - (which is the default), the problem did not occur. (thanks go to - Evan A. Zacks).

From version 1.1.1 to 2.0.0

  • using SIGUSR2 on fcron makes it print its current schedule on - syslog and toggles on/off the printing of debug info on - syslog.

  • fcron behavior on serial and lavg queues overflow has changed: - in previous versions, it used to run a job to make room to put - a new one. As it may conduct to a overwhelming of system - resources, the new job is now refused (and not run). An error - message is also logged through syslog.

  • a mail is now sent if the job exited due to a signal, or if - exit status is non-zero. Read FAQ if you experience problems - about that.

  • added a FAQ.

  • bug fixed: a midmonthly job executed after the 15th of the - month used to cause an endless loop. Thanks go to Guy Geens - (thanks a lot!).

  • bug fixed: inserting a job in serial queue or running a job - not finished at startup was broken, unless the job was - strict(no).

  • bug fixed: some 1.1.1 changes used to make fcron impossible - to compile without sendmail (./configure's option - "--with-sendmail=no").

  • bug fixed in sysV boot script: we know specify explicitly the - path to fcron.

  • bug fixed: unresolved error used to occur on some system not - defining getopt_long().

From version 1.1.0 to 1.1.1

  • security fix: sym link attack against fcrontab. Any user - allowed to use fcrontab used to be able to remove any fcrontab, - and potentially to truncate any file to zero-length (under - certain conditions, anyway).

  • fcron and fcrontab now have a configuration file: fcron.conf. - It contains the default paths (spool dir, etc) and programs to - use (editor, shell, etc). Thanks to that file, several fcron - processes can run simultaneously if they have a different config - (different spool dir and pid file).

  • added fcron's option "-m" to control the number of serial jobs - which can be executed simultaneously.

  • added fcron's option "-n" to create a new spool dir.

  • command line syntax of fcrontab has changed: you can know use - "user" (after the file name if any) instead of "-u user". It - should make fcrontab a little more intuitive.

  • It is now possible to put a user name between the time/date - fields and the shell command of a fcrontab line (for Vixie cron - format compatibility): it is equivalent to runas(user).

  • support of Solaris (and SysV).

  • early support of OpenBSD.

  • the installation scripts now use nsswitch.conf to detect if a - user or a group exists on the system. That way, naming services - (NYS, ldap, etc) are supported.

  • the man page and doc is now installed by default in - $prefix/share/{man|doc} (instead of the previous - $prefix/{man|doc}) ($prefix is generally "/usr").

  • bug corrected: fcron used not to add a serial_sev line to - serial/lavg queue if this line was running, saying "already in - serial queue".

  • bug corrected: a "all" in fcron.allow with no fcron.deny file - was not considered as an allow rule.

From version 1.0.3 to 1.1.0

  • The binary format of the binary fcrontabs has changed: there - is now no more need to reinstall the fcrontabs when upgrading - fcron (but you need to convert your fcrontabs to the new format - once), and this format should allow extensions without losing any - information.

  • better management of the errors in load/save fcrontabs - functions.

  • the doc is a clearer about @-lines.

  • more security tests by fcrontab in the case it is suid root - (but, if possible, it should be suid fcron as it is far more - secure).

  • we now remove unwanted fcrontabs before loading them in memory: - well, it seems to be more logical like that :)) .

  • bug fix: using options first with a &-line may have led to - some problems during the first read by fcron (mail send - erroneously if noticenotrun was used, bad set of the first - execution's time and date or immediate execution if bootrun was - set: in fact, the line was not recognized as a new line).

  • bug fix: fcron used not to be able to be compiled from any - directory because of an absent -I. line option for the compiler - (the config.h file was not found).

From version 1.0.2 to 1.0.3

  • fcron can now be configured and compiled from any directory - (not only from the source dir).

  • bug fix: fcron now sets umask to the value it got at start - before running a job.

  • bug corrected: a bug used to make the "truncated" system not - to work correctly, so a too long log message used to make fcron - crash.

From version 1.0.1 to 1.0.2

  • the user for whom a job is run is now logged.

  • installation script is now more explicit about what it is - going to do.

  • a boolean value can now also be set by "yes" and "no".

  • bug corrected: bootrun option works again.

  • bug corrected: shell variable containing underscore (_) used - to be rejected.

  • bug corrected: installation script used not to check if user - fcron was in group fcron, in which case fcrontab doesn't work - correctly (it cannot, in that case, read the fcrontabs for - non-privileged users).

From version 1.0.0 to 1.0.1

  • security fix: a user used to be able to read a file owned by - root if root runs a "fcrontab -u user -e".

From version 0.9.5 to 1.0.0

  • added fcron's option "-s" to control the time between two - saves of the fcrontabs on disk.

  • installation scripts now support better FreeBSD and sh.

  • bug corrected: configure's options prefix and - without-sendmail used not to work.

  • bug corrected: installing an fcrontab by "fcrontab file" - wasn't working correctly with a relative path (a path not - beginning by a "/").

From version 0.9.4 to 0.9.5

  • security fix: the jobs of a fcrontab reinstalled by root used - to be run as root (until the next action of the owner on the - fcrontab).

  • added options strict and noticenotrun to tell fcron - respectively if a job should be removed from lavg queue if its - execution interval is exceeded, and if fcron should mail user to - report the non-execution of a job.

  • added option nolog in order to log only errors (i.e. no - message like "job x started"). This can help to reduce the disk - access and save energy on a laptop, and make the log more - readable if some jobs are run very often.

  • better handle of changes of the uids of users in /etc/passwd - (no more need to reinstall the fcrontabs).

  • fcron.deny and fcron.allow files are now owned by root (they - used to be owned by user fcron).

  • added ./configure's option --with-answer-all to be able to use - "make install" in a non-interactive way (can be useful for - automatic installers).

  • added option --with-rootname and --with-rootgroup to - ./configure script for a better support of exotic systems.

  • bug corrected in make install (script user-group): the script - used not to handle correctly the absence of both useradd and - adduser commands. This script now checks and tries to add a - group fcron if necessary.

From version 0.9.3 to 0.9.4

  • security improvement: after the (horrible) root exploit found - in version 0.9.3, I decided to improve fcron/fcrontab's security. - I've included some strong (I hope :)) ) tests in fcron to ensure - that only root can run commands as superuser and use option - runas. Even an corrupted fcrontab should not be able to get - root's privileges. Pretty reassuring, isn't it?

  • runfreq(1) lines have been replaced and extended by a new kind - of line: the lines beginning by a "%". It's now possible to tell - fcron to run a command once an hour, a week, etc, but only at - some specified moments. For instance: '%weekly * 4-7 echo "foo"' - will run the command 'echo "foo"' once a week between 4 and 7 in - the morning. (see "man 5 fcrontab" for more details).

  • installation process improved: user is now consulted before - anything is done about installation in boot scripts, etc. The - default username of fcron is now ... fcron! (this is more secure - than daemon, which can be used by other programs).

  • fcron now adds the host name to the addresses of the mails it - sends.

  • fcrontab determines the identity of the running user by his - uid (it used to use the var USER). That way, fcrontab should act - as crontab under a "su".

  • bug fixed: a tmp file was not removed after a "fcron - -z"

  • bug fixed in fcrontab: an expression of the form "start-stop" - with start > stop used to be incorrectly managed by fcron.

  • bug fixed: when fcron and fcrontab were installed under a - non-privileged user rights, a normal user used to be not able to - use fcrontab.

  • bug fixed: while fcrontab was asking user if he would like to - correct an erroneous line, the answer was not correctly - handled.

From version 0.9.2.1 to 0.9.3

  • installation scripts improved.

  • added code to avoid infinite loops.

  • bugs corrected in the functions to set the time and date of - next execution.

  • bug corrected in the check for invalid lines.

From version 0.9.2 to 0.9.2.1

  • minor bug corrected in Makefile

From version 0.9.1 to 0.9.2

  • fcron now uses autoconf (the configure script), so it should - be easier to compile and install it and various systems.

  • support of lavg options for all systems where getloadavg() is - defined (BSD unix, etc) and on Linux systems with a proc - filesystem (fcron can use /proc/loadavg).

  • a job can now be executed several times simultaneously if - option exesev is set to 1.

  • user can determine if a job can be put several times in the - serial queue simultaneously thanks to option serialonce.

  • fcron does not wait anymore for the completion of all jobs of - a file before deleting it from memory.

  • fcron handles correctly the jobs which are both serial and - lavg.

  • fcron now runs under a specific user and group (other than - root) for basic security reasons.

  • bug corrected: fcron used to crash after a file was deleted - from memory in some conditions.

  • corrected the bug which used to appear when a line was put - several times in the serial queue: in this case, fcron used not - to count correctly the number of running serial jobs.

  • bug corrected: fcrontab used not to remove the temporary file - it creates if no modification where done to a file after an - edition using the -e option and on errors.

  • bug corrected: fcrontab now defines correctly the remain - value of a line based on time and date beginning with a "&" but - without runfreq definition.

  • bug corrected: fcron used to not install correctly a file - edited if a correction was made.

  • bug corrected: reset option was not working correctly when - set to a single line.

From version 0.9.0 to 0.9.1

  • support of the option mailto for each line (it used to be set - for the whole file).

  • the value of the runas and mailto options are now stored - internally as a uid number: you must reinstall all the system's - fcrontabs if you change the uid of a user.

  • Support of options "lavg*", in order to run a job under a - specific 1, 5 and/or 15 minutes system load average value(s). - When the job should be run, it is placed in a specific queue and - the load average is checked regularly until the right value(s) - is/are got. The options "lavgor" and "lavgand" permits users to - tell fcron if they prefer to perform a logic OR or AND between - the 1, 5 and 15 load average values. The option "until" can be - use to force the execution of a job after a determined timeout if - the right conditions to run the job are not filled.

  • fcron now uses putenv() in place of setenv() (setenv() is not - POSIX compliant).

  • a mailto option set to "" is now equivalent to - "mail(false)".

  • corrected the bug which used to make a bootrun and runfreq(1) - job executed twice when fcron's start occurs in an interval of - execution of the job.

  • corrected the bug which used to make fcron crash after - serial_array is resized.

From version 0.8.3 to 0.9.0

  • support of options in fcrontabs. Options can be specific to a - line or defined once for every line located after their - definition (a special option "reset" set all options to their - default). Some options also have too names: a long name and an - abbreviation.

  • jobs can now be run be run one after the other (option - "serial"): when the job should normally be run, it is added to a - queue, which entries are executed one by one. It permits to avoid - the use of a lot of system resources for a brief moment by the - simultaneous execution of several tasks.

  • jobs can be run at system start up if they should have been - run during system down time (option "bootrun").

  • root can run jobs as an another user (option "runas")

  • user can set a nice value to a job, but only root can use a - negative value (a negative value will increase priority)

  • user can choose to perform a logic AND or a logic OR between - day of month and day of week (option "dayor" and "dayand")

  • user can choose to mail the output of jobs (option "mail") if - any, and can force fcron to send a mail even if output is - zero-length (option "forcemail").

  • fixed the bug which used to make fcron run a job with a - runfreq set to 1 at a wrong time.

  • fixed a bug which used to make fcrontab crash after several - corrections in edit mode.

From version 0.8.2 to 0.8.3

  • (all this bugs appeared in version 0.8.2 :)

  • fixed the bug which used to make fcron crash after a - SIGHUP

  • fixed the bug which used to prevent fcron from running some - job based on time and date

  • fixed the bug which used to makes fcron run the jobs one - second too late

From version 0.8.1 to 0.8.2

  • code has been optimized: The jobs are now queued in order of - execution. It permits avoid useless tests of all jobs every time - fcron wakes up, speeds up the determination of the time fcron - should sleep, speeds up the processing after the end of a job, - etc. I don't know why I haven't made it before :-) ...

  • fcrontab has been improved: it is now more stable (many bugs - which used to make fcrontab crash in case of errors in the - fcrontab has been fixed). Plus, it now asks if you want to make - corrections if needed when editing.

From version 0.8.0 to 0.8.1

  • ported to FreeBSD 4.0

From version 0.7.0 to 0.8.0

  • corrected the bug which keep normal users from listing and - editing their current configuration file with fcrontab -l or - -e.

  • corrected the bugs which used to block fcron when a task was - marked for execution but fcron stopped before it has been - launched, and when fcron stopped after the end of a job but - before the output has been mailed.

  • day of week 0 and 7 now both mean Sunday.

  • the abbreviations of months and day of week are not any more - case dependent.

  • months are now defined from 1 to 12 (and not from 0 to 11) (it - was a little bit illogical :-).

  • you can now force spaces in strings if you place them in - quotes.

  • I discovered ispell :-) ...

  • I've added a kind of signature in the formated configuration - files in order to keep the daemon from attempting to read an old - configuration file which doesn't use the same syntax.

  • You can now install a file with fcrontab from standard - input.

  • others minor adds and bug corrections.


PrevHomeNext
How to install fcronUpRelease notes: fcron 3.2.0
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/faq.html b/fcron-3.2.0/doc/en/HTML/faq.html deleted file mode 100644 index 628d176..0000000 --- a/fcron-3.2.0/doc/en/HTML/faq.html +++ /dev/null @@ -1,1127 +0,0 @@ - -Frequently Asked Questions
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevChapter 2. Using fcron ...Next

2.2. Frequently Asked Questions

This FAQ intends to complement the man pages by following a more -practical approach.

If you think a QA should be added, please mail me it!

2.2.1. How does fcron handle system clock adjustments?
2.2.2. How does fcron handle daylight saving time changes?
2.2.3. What about fcron and software suspend - (aka. suspend to RAM, to disk)?
2.2.4. How can I prevent fcrontab from considering the first -"word" of my command line as a user name i.e. "runas(word)"?
2.2.5. I have a job which usually terminates with a non-zero status. When it -does, I receive a email with the exit status even if the command had no output. -How can I avoid the email?
2.2.6. What does "loadavg" mean anyway?
2.2.7. How can I use fcrontab in scripts?
2.2.8. Can I use fcron from time to time, for instance in a -script?
2.2.9. Can I run fcron without root's privileges?
2.2.10. Has fcron some incompatibilities with Vixie cron?
2.2.11. How can I emulate an anacron entry?
2.2.12. How can I emulate a Vixie cron @reboot entry?

2.2.1. How does fcron handle system clock adjustments?

First, you must understand that fcron determines, for each job, its next -time and date of execution. It then determines which of those jobs would be the -next to run and then, sleeps until that job should be run. In other words, fcron -doesn't wake up like Vixie cron each minute to check all job in case one should -be run ... and it avoids some problems associated with clock adjusts.

This means that if the new time value is set into the past, fcron won't -run a particular job again. For instance, suppose the real time and system clock -are 3:00, so the next job cannot be scheduled to run before 3:00, as it would -have already been run and re-scheduled.

First, suppose you set your system clock into the past, say to 2:00, -Presuming that the last run was shortly before 3:00. then fcron will sleep until -the next job should be executed. The execution time for a job is determined by -identifying the last time that the job ran and computing the next scheduled -time. This means that the next scheduled time must be on or after 3:01. -Therefore, in this example, fcron will not run a job for at least one -hour.

Next, if you set the system time into the future, say to 4:00, fcron will -run every job scheduled between the old and the new time value once, regardless -of how many times it would have been scheduled. When fcron wakes up to run a job -after the time value has changed, it runs all the jobs which should have run -during the interval because they are scheduled to run in a past time.

As special case is when "@xxx" style scheduling rules are involved, you -must consider the "adjustment-interval". The "adjustment-interval" is the time -difference between the original system time and the new system time. The concerned -jobs will run at "adjust-interval" too -early or too late depending of the nature of the adjust.

To conclude, fcron behaves quite well for small clock adjusts. Each job -which should have run does so once, but not exactly at the correct time as if -the job were scheduled within the adjustment interval. But, if you have to make -a big change in the time and date, you should probably reset all the scheduled -"nextexe" by running "fcrontab -z" on all the fcrontabs.

2.2.2. How does fcron handle daylight saving time changes?

There are two types of daylight saving time change: -the remove-one-hour change (for instance, "at 3:00, it will be 2:00"), -and the add-one-hour one (for instance, "at 2:00, it will be 3:00"). -In both cases, fcron will run the job only once (more precisely, it won't -run the job twice as many as it should have).

In the first case, the official time changes as follow -(in order of real chronological time): [x, 2:00] -> i1: [2:00, 3:00] - -> i2: [2:00, 3:00] -> [3:00, y]. i1 and i2 are the names of the two -intervals [2:00, 3:00]. For this kind of DST change, a job which should -run between 2:00 and 3:00 will run either in i1 or in i2, but not both. -Consequently, a job scheduled to run every day at 2:30 (for instance) -will be run only once. There is no way for a user to know if the job will -be run in i1 or i2.

In the second case, there is a gap in time: -the official time changes as follow (in order of real chronological time): -[x, 2:00] -> [3:00, y]. A job scheduled between 2:00 and 3:00 will get -run once, and only once, even if it should have been run several times. -For instance, a job which should have run every 10 minutes will run only -once, not 6 times, between 1:59 and 3:01. A job scheduled to run at -2:xx will run at 3:xx. For instance, if a job is scheduled to run -every day at 2:30, it will run at 3:30 the day of this kind of DST change.

2.2.3. What about fcron and software suspend - (aka. suspend to RAM, to disk)?

We suppose here that you are using swsusp and the hibernate - script to do a "suspend to disk", but it should be similar - with other methods.

When you switch on your computer after a suspend to disk, - the system time will be incorrect, and will then be corrected - by the hibernate script. Before it is corrected, fcron may - compute the time and date of the next execution of a job: - the computation would then be incorrect (please see the entry - about system clock adjustment in the present FAQ).

So you should have the hibernate script stop fcron before - the suspend, and then restart it when the system is switched on, - ie. put a line like "RestartServices fcron" in your hibernate.conf - file. That way, the system time will always be correct when - fcron runs (assuming that fcron is started after the system time - is corrected).

2.2.4. How can I prevent fcrontab from considering the first -"word" of my command line as a user name i.e. "runas(word)"?

Suppose you have an user called "echo" (weird idea ... :)) ). If you use -the line '* * * * * echo "Hello!"' in root's fcrontab, "echo" will be -interpreted as "runas(echo)".

To avoid that, put your command in quotes: -
* * * * * 'echo "Hello!"'
will work as -expected as quotes are allowed for the shell command but not for the user -name.

2.2.5. I have a job which usually terminates with a non-zero status. When it -does, I receive a email with the exit status even if the command had no output. -How can I avoid the email?

You could disable email entirely by setting the "mail" option to "no". But, -if you still want to receive the standard output as email, you can add an command -which always evaluates to 0, like "/bin/true", after your primary command. This -will not affect your job nor create additional output. For example:

* * * * * /a/non/zero/status/job ; /bin/true

2.2.6. What does "loadavg" mean anyway?

The "/proc/loadavg" file provides loadavg values. These values are (in -order): the system load averages for the past 1, 5, and 15 minutes; a count of -the (active tasks/active processes); the pid of last process run; -

The active task count includes those processes marked as running or -uninterruptable. A load average is an estimate of the average number of -processes running within a specified period. The load averages are computed from -active task count. They are updated each time active task counts are taken. -

-The load average formula is:
loadavg(d,n) = active_task_cnt - (active_task_cnt - old_loadavg)*(1/exp(d/n)
-where: d is the time interval between active task count readings, typically every -5 seconds; n is the time over which the readings are averaged. -

2.2.7. How can I use fcrontab in scripts?

You can use pipes with "fcrontab -l" (list the -fcrontab) and "fcrontab -" (read the new fcrontab from -input). For example:

 echo -e "`fcrontab -l | grep -v exim`\n0 * * * *	/usr/sbin/exim -q" | fcrontab -

can be used to add a line. Another way to do it would be to: -list the fcrontab settings into a temporary file ("fcrontab -l > -tmpfile"); modify the temporary file ("echo $LINE >> -tmpfile"); replace the original fcrontab by the temporary; and -finally, remove the temporary file ("fcrontab tmpfile ; rm -f -tmpfile"). -

2.2.8. Can I use fcron from time to time, for instance in a -script?

Let's suppose you use fcron in your ppp-up script. Fcron -can permit you to run some jobs at connection startup, but not at each -connection, like it would be if the job was run directly by the ppp-up script: -for instance, only once every week.

Example 2-5. Using fcron in a script: running a job once -every day, week, etc, at dialup connection

You can use a script like:

# A ppp-up script ... 
-# run the jobs pending, then returns: 
-fcron -f -y -o

in conjunction with a fcrontab file like:

# a fcrontab file ... 
-%random(no),weekly,stdout * * /a/command/to/download/latest/mozilla/release 
-%monthly,stdout * * * /update/junkbuster/config/files

You can also use fcron to run some jobs until the end of -the connection. For instance, you can make fetchmail retrieve emails more often -during connection: we suppose that it is configured to retrieve mails every -hour, which launches a dialup connection if necessary, and we want it to check -for mails every 5 minutes while connected.

Example 2-6. Using fcron in a script: running a job until the -end of the connection

ppp-up script:

# A ppp-up script ... 
-# run fcron at the beginning of the connection: 
-fcron -b

ppp-down script:

# A ppp-down script ... 
-# stop fcron at the end of the connection: 
-# -- Warning: killall may have unwanted effect on non linux systems -- 
-killall -TERM fcron

the fcrontab:

# a fcrontab file ... 
-@volatile,first(0) 5 fetchmail

If you run fcron in several scripts, or if you run fcron -as a daemon and want also to run fcron in scripts, then you should use fcron, -fcrontab and fcrondyn's --configfile.

For more details, see fcron's command line arguments ---once, --nosyslog, ---sleeptime and --configfile in fcron(8), and fcrontab's options volatile, -stdout, first in fcrontab(5)

2.2.9. Can I run fcron without root's privileges?

Yes, you can. To do that, see the -following instructions, but please note that fcrondyn currently does *not* work -without root privileges.

  1. First, create a directory where you'll install fcron, - and some subdirectories:

    bash$ mkdir /home/thib/fcron
    -bash$ cd /home/thib/fcron
    -bash$ mkdir doc man spool
  2. Then, run configure with option ---with-run-non-privileged, set all user names and groups to yours, -and set appropriately the paths:

    Warning

    This option allows a non privileged user to run - fcron. When used, fcron does not change its rights before running a job - (i.e., if joe runs fcron, every job will run as joe). It means that - YOU SHOULD NOT RUN FCRON AS A PRIVILEGED USER WHEN COMPILED - WITH THIS OPTION or you'll have a serious security - hole.

    bash$ ./configure --with-run-non-privileged --with-rootname=thib
    ---with-rootgroup=thib --with-username=thib --with-groupname=thib
    ---with-etcdir=/home/thib/fcron --with-piddir=/home/thib/fcron
    ---with-fifodir=/home/thib/fcron --with-spooldir=/home/thib/fcron/spool
    ---with-docdir=/home/thib/fcron/doc --prefix=/home/thib/fcron

The rest of the installation is described in the -install file.

2.2.10. Has fcron some incompatibilities with Vixie cron?

As far as I know, fcron supports Vixie cron's crontab syntax - fully. You should be able to use a crontab - with fcron with no modification (if not please - contact me at <fcron@free.fr>).

The main problem is about the management of the system (f)crontab. - Vixie cron monitors the changes on /etc/crontab every minute, - and automatically takes into account the changes if any. - As for now, fcron does not do that by itself. - Fcron does not support the - /etc/cron.d/ directory either, as it is just an extension to the /etc/crontab - file. - However /etc/cron.{daily,weekly,monthly} directories will work - in fcron just fine: they are supported through the run-parts program, just as Vixie cron).

So if you want to replace Vixie cron by fcron transparently, - all you have to do is create a /usr/bin/crontab link to - /usr/bin/fcrontab, and reinstall the system (f)crontab - with 'fcrontab /etc/crontab' every time you modify it - (if you needed some more work than that, please let me know!).

You can also use the script script/check_system_crontabs - to monitor for system (f)crontab changes, i.e. changes to /etc/(f)crontab - and /etc/cron.d/. When it detects a change, it will generate - a new system fcrontab, and install it automatically. - Should you choose to use that script, please take - a look at the beginning of the script: you will find insctructions - on how to use it -- and a few warnings you should pay attention to. - With this script, the fcron's behavior should be very similar - to Vixie cron regarding /etc/crontab and /etc/cron.d/. -

2.2.11. How can I emulate an anacron entry?

As anacron, fcron does not assume that the system runs permanently. - Thus, fcron features similar functionalities to anacron, but it - has different means to achieve it, in other words other ways to define - when a job should run. Fcron is in general much more flexible - than anacron. - The best thing to do is to have look at - fcrontab(5), and choose the - type of line which is the most appropriate for your needs (this is - likely to be a @-line or a %-line).

On a Debian/Ubuntu, the default /etc/anacrontab looks like:

1       5       cron.daily       nice run-parts --report /etc/cron.daily
-7       10      cron.weekly      nice run-parts --report /etc/cron.weekly
-@monthly        15      cron.monthly nice run-parts --report /etc/cron.monthly
-

A close fcron equivalent would be (see serial):

# Run once a day/week/month, and ensure only one of those tasks is run at a time:
-!reset
-!serial,nice(10)
-%daily * * run-parts --report /etc/cron.daily
-%weekly * * run-parts --report /etc/cron.weekly
-%monthly * * * run-parts --report /etc/cron.monthly
-

Or you could go for something a bit more specific (see lavg, noticenotrun):

# Only run the tasks out of office-hours when the system load is low
-# and send an email to the user if fcron couldn't run the job:
-!reset
-!serial,lavg(0.5,1,1.5),noticenotrun,nice(10),mailto(admin@yourdomain.com)
-%daily * 0-9,18-23 run-parts --report /etc/cron.daily
-%weekly * 0-9,18-23 run-parts --report /etc/cron.weekly
-%monthly * 0-9,18-23 * run-parts --report /etc/cron.monthly
-

Also, if you do want to emulate an anacron entry of the form:

0 delay job-identity /your/command

then you can use something as:

@runonce delay /your/command

2.2.12. How can I emulate a Vixie cron @reboot entry?

No need to emulate any more, as - Vixie cron shortcuts, - including @reboot, are now supported by fcron!


PrevHomeNext
fcrondynUpGNU GENERAL PUBLIC LICENSE
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/fcron.8.html b/fcron-3.2.0/doc/en/HTML/fcron.8.html deleted file mode 100644 index ae10641..0000000 --- a/fcron-3.2.0/doc/en/HTML/fcron.8.html +++ /dev/null @@ -1,1112 +0,0 @@ - -fcron
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevNext

fcron

Name

fcron -- daemon to execute scheduled tasks

Synopsis

fcron [-c file] [-d] [-b] [-s time] [-m num] [-q num]

fcron [-c file] [-d] [-f] [-o] [-y] [-p file] [-l time]

fcron [-n dir]

fcron [-h]

fcron [-V]

Description

Fcron should be started from /etc/rc or -/etc/rc.local. Unless the -f (or ---foreground) option is given, it will return immediately, so -you don't need to start it with '&'.

Fcron loads users fcrontabs (see fcrontab(5)) files previously installed by -fcrontab (see fcrontab(1)). Then, fcron calculates the time -and date of each job's next execution, and determines how long it has to sleep, -and sleeps for this amount of time. When it wakes up, it checks all jobs loaded -and runs them if needed. When a job is executed, fcron forks, changes its user -and group permissions to match those of the user the job is being done for, -executes that job and mails the outputs to the user (this can be changed: see -fcrontab(5)).

Informative message about what fcron is doing are sent to -syslogd(8) under facility cron, -priority notice. Warning and error messages are sent -respectively at priority warning and -error.

Note: fcron sleeps at least 20 seconds after it has been started before -executing a job to avoid to use too much resources during system boot.

Options

-f, --foreground

Don't fork to the background. In this mode, fcron will -output informational message to standard error as well as to syslogd.

-b, --background

Force running in background, even if fcron has been -compiled to run in foreground as default.

-s time, --savetime -time

Save fcrontabs on disk every - time sec (default is 1800).

-m num, --maxserial -num

Set to num the maximum number - of serial jobs which can run simultaneously. By default, - this value is set to 1.

See also: option serial in fcrontab(5).

-q num, --queuelen num

Set to n the number of jobs the serial queue and -the lavg queue can contain.

-c file, --configfile -file

Make fcron use config file -file instead of default config file -/usr/local/etc/fcron.conf. To interact with that running -fcron process, fcrontab must use the same config file (which is defined by -fcrontab's option -c). That way, several fcron processes -can run simultaneously on an only system (but each fcron process *must* have a -different spool dir and pid file from the other processes).

-o, --once

Execute all jobs that need to be run at the time fcron -was started, wait for them, then return. Sets --sleeptime to 0. -May be especially useful when used with options -y and --f in a script run, for instance, at dialup connection.

See also: fcrontab's options volatile, -stdout.

-y, --nosyslog

Don't log to syslog at all. May be useful when running -in foreground.

-p file, --logfilepath -file

If set, log to the file given as argument. fcron will - log to both that file and syslog in parallel unless - -y is also set.

-l time, --firstsleep -time

Sets the initial delay (in seconds) before any job is -executed, default to 20 seconds.

-n dir, --newspooldir -dir

Create dir as a new spool -directory for fcron. Set correctly its mode and owner. Then, exit.

-h, --help

Display a brief description of the options.

-V, --version

Display an informational message about fcron, -including its version and the license under which it is distributed.

-d, --debug

Run in debug mode (more details on stderr -- if option --f is set -- and in log file)

Return values

Fcron returns 0 on normal exit, and 1 on -error.

Signals

SIGTERM

Save configuration (time remaining until next -execution, time and date of next execution, etc), wait for all running jobs and -exit.

SIGUSR1

Force fcron to reload its configuration.

SIGUSR2

Make fcron print its current schedule on syslog. It -also toggles on/off the printing on debug info on syslog.

SIGHUP

Tell fcron to check if there is any configuration -update (this signal is used by fcrontab(5))

Conforming to

Should be POSIX compliant.

Files

/usr/local/etc/fcron.conf

Configuration file for fcron, fcrontab and -fcrondyn: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See fcron.conf(5) -for more details.

/usr/local/etc/fcron.allow

Users allowed to use fcrontab and fcrondyn (one -name per line, special name "all" acts for everyone)

/usr/local/etc/fcron.deny

Users who are not allowed to use fcrontab and -fcrondyn (same format as allow file)

/usr/local/etc/pam.d/fcron (or -/usr/local/etc/pam.conf)

PAM configuration file for -fcron. Take a look at pam(8) for more details.

See also

fcrontab(1),
fcrondyn(1),
fcrontab(5),
fcron.conf(5),
fcron(8).
If you're learning how to use fcron from scratch, I suggest - that you read the HTML version of the documentation (if your are not reading it - right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks.

Author

Thibault Godouet <fcron@free.fr>


PrevHomeNext
Manual pages of fcronUpfcron.conf
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/fcron.conf.5.html b/fcron-3.2.0/doc/en/HTML/fcron.conf.5.html deleted file mode 100644 index d45b18c..0000000 --- a/fcron-3.2.0/doc/en/HTML/fcron.conf.5.html +++ /dev/null @@ -1,684 +0,0 @@ - -fcron.conf
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevNext

fcron.conf

Name

fcron.conf -- configuration file for fcron and fcrontab

Description

This page describes the syntax used for the configuration file -of fcrontab(1), fcrondyn(1) and fcron(8).

Blank lines, line beginning by a hash sign (#) (which are -considered comments), leading blanks and tabs are ignored. Each line in a -fcron.conf file is of the form -

name = value

where the blanks around equal-sign (=) are ignored and -optional. Trailing blanks are also ignored.

The following names are recognized (default value in parentheses): -

Valid variables in a fcron.conf file

fcrontabs=directory -(/usr/local/var/spool/fcron)

Fcron spool directory.

pidfile=file-path -(/usr/local/var/run/fcron.pid)

Location of fcron pid file (needed by fcrontab -to work properly).

fifofile=file-path -(/usr/local/var/run/fcron.fifo)

Location of fcron fifo file (needed by -fcrondyn to communicate with fcron).

fcronallow=file-path -(/usr/local/etc/fcron.allow)

Location of fcron.allow file.

fcrondeny=file-path -(/usr/local/etc/fcron.deny)

Location of fcron.deny file.

shell=file-path -(/bin/sh)

Location of default shell called by fcron when -running a job. When fcron runs a job, fcron uses the value of SHELL from the fcrontab if any, otherwise it uses the value from fcron.conf if any, or in last resort the value from /etc/passwd.

sendmail=file-path -(/usr/sbin/sendmail)

Location of mailer program called by fcron to -send job output.

editor=file-path -(/usr/bin/vi)

Location of default editor used when invoking -"fcrontab -e".

File-paths and directories are complete and absolute -(i.e. beginning by a "/").

To run several instances of fcron simultaneously on the same -system, you must use a different configuration file for each instance. Each -instance must have a different fcrontabs, -pidfile and fifofile. Then, use fcron(8)'s command line option --c to select which config file (so which instance) you -refer to.

Files

/usr/local/etc/fcron.conf

Configuration file for fcron, fcrontab and -fcrondyn: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See fcron.conf(5) for -more details.

/usr/local/etc/fcron.allow

Users allowed to use fcrontab and fcrondyn (one -name per line, special name "all" acts for everyone)

/usr/local/etc/fcron.deny

Users who are not allowed to use fcrontab and -fcrondyn (same format as allow file)

/usr/local/etc/pam.d/fcron (or -/usr/local/etc/pam.conf)

PAM configuration file for -fcron. Take a look at pam(8) for more details.

See also

fcrontab(1),
fcrondyn(1),
fcrontab(5),
fcron.conf(5),
fcron(8).
If you're learning how to use fcron from scratch, I suggest - that you read the HTML version of the documentation (if your are not reading it - right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks.

Author

Thibault Godouet <fcron@free.fr>


PrevHomeNext
fcronUpfcrontab
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/fcrondyn.1.html b/fcron-3.2.0/doc/en/HTML/fcrondyn.1.html deleted file mode 100644 index 0be6fe8..0000000 --- a/fcron-3.2.0/doc/en/HTML/fcrondyn.1.html +++ /dev/null @@ -1,1142 +0,0 @@ - -fcrondyn
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevNext

fcrondyn

Name

fcrondyn -- dialog dyn-amically with a running fcron daemon

Synopsis

fcrondyn [-c file] [-i]

fcrondyn [-c file] -x command

fcrondyn [-h]

Description

Fcrondyn is a user tool intended to interact with a running -fcron daemon. It can, for instance, list user's jobs loaded by fcron, run one of -them, renice a running job, send a signal to a running job, etc.

Options

-i

Run fcrondyn in interactive mode. fcrondyn is also - run in interactive mode when no option is given.

-x -command

Run command and returns -immediately. See below for syntax -and a list of commands.

-c file

Make fcrondyn use config file -file instead of default config file -/usr/local/etc/fcron.conf. To interact with a running -fcron process, fcrondyn must use the same config file as the process. That -way, several fcron processes can run simultaneously on an only system.

-d

Run in debug mode. In this mode, many informational -messages will be output in order to check if anything went wrong.

-h

Display a brief description of the options.

-V

Display an informational message about fcrondyn, -including its version and the license under which it is distributed.

Command description

Fcrondyn's command syntax is the following:

command arg1 -arg2 [...]

An argument of a fcrondyn command is of one of the following -type:

Argument types of fcrondyn's commands

user

A valid user name.

jobid

A job id given by one of fcrondyn's -ls* commands (i.e. an integer).

sig

A signal number, or its name (case does not matter). -For instance, "term" or "15".

niceval

A job priority value. A -niceval is an integer from -20 (highest -priority) to 19 (lowest) (only root is allowed to use a negative value with this -option).

Last, but not least, the following commands are recognized -(optional arguments are between []):

Valid fcrondyn's commands

help, h

Print an help message about fcrondyn's -commands.

quit, q

In interactive mode, quit fcrondyn.

ls -[user]

List all jobs of user. When ls is -run by root, all users are listed unless a user name is given as argument. See below for some explanations about the -fields used by ls* commands.

ls_lavgq -[user]

Same as ls, but list only the jobs -which are in the load-average queue (i.e. which are waiting for a lower load -average to be run).

ls_serialq -[user]

Same as ls, but list only the jobs - which are in the serial queue (i.e. which are waiting for - other jobs to be finished).

ls_exeq -[user]

Same as ls, but list only the jobs - which are running.

detail -jobid

Print details about a -job. jobid is the one given by -ls.

runnow -jobid

Instead of waiting for the next scheduled execution - time, run the job now. The next execution time is changed as - if the job had run on schedule.

run -jobid

Run the job now. Its next execution time is not changed.

kill -sig -jobid

Send a signal to a running job.

renice -niceval -jobid

Change the priority of a running job.

Fields used by detail and - ls* commands

ID

Job's unique identification number.

USER

User who owns this job.

PID

The pid of the running job.

INDEX

Index of the job in the serial queue (i.e. it will be run when all the jobs of an inferior index have been run)

R&Q

The job has this number instances of the given task which are either running or queued in the serial or lavg queue.

OPTIONS

List of main options which are set for the task. - L for the jobs which run only under a given system Load average (option lavg, lavg1, lavg5 and lavg15), LO (Load average Once) if only at most one instance of the task can be in the load average queue at a given time (option lavgonce), S for serialized jobs (option serial), SO for the jobs which will be serialized only for the next execution (Serial Once), and ES if several instances of the same job can run simultaneously (option exesev).

LAVG

3 values, corresponding to the 1, 5, and 15-minute (in - this order) system load average values below which the job - will be run, otherwise it will be queued until the system - load average is appropriate (see lavg option).

UNTIL

Field corresponding to the until option.

STRICT

Field corresponding to the strict option. Y for - yes, N for no.

SCHEDULE

Next run is scheduled at this time and date. Please note that fcrondyn prints the next execution time and date in the time zone of the system where fcron is running, and not the time zone which can be defined for using option timezone.

CMD

The command that will be executed.

Return values

Fcrondyn returns 0 on normal exit and 1 on -error.

Conforming to

Should be POSIX compliant.

Files

/usr/local/etc/fcron.conf

Configuration file for fcron, fcrontab and -fcrondyn: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See fcron.conf(5) -for more details.

/usr/local/etc/fcron.allow

Users allowed to use fcrontab and fcrondyn (one -name per line, special name "all" acts for everyone)

/usr/local/etc/fcron.deny

Users who are not allowed to use fcrontab and -fcrondyn (same format as allow file)

/usr/local/etc/pam.d/fcron (or -/usr/local/etc/pam.conf)

PAM configuration file for -fcron. Take a look at pam(8) for more details.

See also

fcrontab(1),
fcrondyn(1),
fcrontab(5),
fcron.conf(5),
fcron(8).
If you're learning how to use fcron from scratch, I suggest - that you read the HTML version of the documentation (if your are not reading it - right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks.

Author

Thibault Godouet <fcron@free.fr>


PrevHomeNext
fcrontabUpFrequently Asked Questions
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/fcrontab.1.html b/fcron-3.2.0/doc/en/HTML/fcrontab.1.html deleted file mode 100644 index dacd249..0000000 --- a/fcron-3.2.0/doc/en/HTML/fcrontab.1.html +++ /dev/null @@ -1,858 +0,0 @@ - -fcrontab
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevNext

fcrontab

Name

fcrontab -- manipulate per-user fcrontab - files

Synopsis

fcrontab [-c - file] [-n] file [user | -u - user]

fcrontab [-c - file] [-n] {-l | -r | -e | -z} [user | -u - user]

fcrontab [-h]

Description

Fcrontab is the program intended to - install, edit, list and remove the tables used by fcron(8) daemon. As fcron internally - uses a non-human readable format (this is needed because fcron - saves more informations than the user gives, for example the time - and date of next execution), the user cannot edit directly his - fcrontab (the one used by fcron).

When a user - installs a fcrontab, the source file is saved in the spool - directory (/usr/local/var/spool/fcron) to allow future - editions, and a formatted file is generated for the fcron daemon, - which is signaled once about ten seconds before the next minute for - all changes made previously. The daemon is not informed of the changes - immediately but at most once a minute - to keep ill disposed users from blocking the daemon by installing - fcrontabs over and over (ie. denial of service attack). We will call - "fcrontab" the source file of the fcrontab - in the following.

A user can install a fcrontab if - he is listed in the /usr/local/etc/fcron.allow and not - (unless by the keyword all) listed in - /usr/local/etc/fcron.deny (see section "files" below). If neither - fcron.allow nor fcron.deny - exist, all users are allowed. None of these files have to exist, but - if they do, the deny file takes precedence.

The first - form of the command is used to install a new fcrontab file, from - any named file or from standard input if the pseudo-filename "-" is - given, replacing the previous one (if any): each user can have only - one fcrontab.

For instance, root can create a - systemwide fcrontab file, say /etc/fcrontab, - and run "fcrontab - /etc/fcrontab" to install the new version after - each change of the file. Or (s)he can create a new fcrontab running - a simple "fcrontab", and then maintain it using - "fcrontab -e". Same - considerations apply to a non privileged user.

Options

-u user

Specify the user whose fcrontab will be managed, or - "systab" for the system fcrontab. Should only be - used by root. If not given, the fcrontab file of the - user invoking fcrontab will be handled. It may be useful - since the su(8) command may - confuse fcrontab.

Note: the - 'user' in the synopsys is equivalent - to a '-u - user'.

-l

List user's current fcrontab to standard - output.

-e

Edit user's current fcrontab using either the editor - specified by the environment variable - VISUAL, or EDITOR if - VISUAL is not set. If none or them are set, - /usr/bin/vi will be used.

-r

Remove user's fcrontab.

-z

Reinstall user's fcrontab from its source code. All - informations fcron may have kept in the binary - fcrontab (such as the last execution time and date) will - be forgotten (ie. lost).

-n

Ignore previous version. If this option is not given, - fcron will try to keep as much information as possible - between old and new version of the fcrontab (time and - date of next execution, if job is in serial queue, etc) if - the line hasn't been modified (same fields, same shell - command).

-c file

Make fcrontab use config file - file instead of default config - file /usr/local/etc/fcron.conf. To - interact with a running fcron process, fcrontab must - use the same config file as the process. That way, several - fcron processes can run simultaneously on an only - system.

-d

Run in debug mode. In this mode, many informational - messages will be output in order to check if anything went - wrong.

-h

Display a brief description of the options.

-V

Display an informational message about fcrontab, - including its version and the license under which it is - distributed.

Return values

Fcrontab returns 0 on - normal exit and 1 on error.

Conforming to

Should be POSIX compliant.

Files

/usr/local/etc/fcron.conf

Configuration file for fcron, fcrontab and - fcrondyn: contains paths (spool dir, pid file) and - default programs to use (editor, shell, etc). See fcron.conf(5) for more - details.

/usr/local/etc/fcron.allow

Users allowed to use fcrontab and fcrondyn (one name - per line, special name "all" acts for everyone)

/usr/local/etc/fcron.deny

Users who are not allowed to use fcrontab and - fcrondyn (same format as allow file)

/usr/local/etc/pam.d/fcron (or - /usr/local/etc/pam.conf)

PAM configuration file for - fcron. Take a look at pam(8) for more details.

See also

fcrontab(1),
fcrondyn(1),
fcrontab(5),
fcron.conf(5),
fcron(8).
If you're learning how to use fcron from scratch, I suggest - that you read the HTML version of the documentation (if your are not reading it - right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks.

Author

Thibault Godouet <fcron@free.fr>


PrevHomeNext
fcron.confUpfcrontab
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/fcrontab.5.html b/fcron-3.2.0/doc/en/HTML/fcrontab.5.html deleted file mode 100644 index 89eb007..0000000 --- a/fcron-3.2.0/doc/en/HTML/fcrontab.5.html +++ /dev/null @@ -1,3425 +0,0 @@ - -fcrontab
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevNext

fcrontab

Name

fcrontab -- tables for driving fcron

Description

A fcrontab is a file containing all tables used by the -fcron(8) daemon. In other words, it is the means for a user to tell the daemon -"execute this command at this moment". Each user has his own fcrontab, whose -commands are executed as his owner (only root can run a job as another using the -option runas (see below)).

Blank lines, line beginning by a hash sign (#) (which are -considered comments), leading blanks and tabs are ignored. Each line in a -fcrontab file can be either

  • an environment setting,

  • an option setting,

  • entries based on elapsed system up time,

  • entries based on absolute time (like normal crontab -entries), or

  • entries run periodically.

Any logical line (an entry or an assignment) can be divided into -several real lines (the lines which end by a newline character) by placing a -backslash (\) before the newline character (\n).

The environment settings

The environment settings are of the form

name = value

where the blanks around equal-sign (=) are ignored and -optional. Trailing blanks are also ignored, but you can place the value in -quotes (simple or double, but matching) to preserve any blanks in the -value.

When fcron executes a command, it always sets -USER, and HOME as defined in -/etc/passwd for the owner of the fcrontab from which the -command is extracted. TZ is also defined to the value of the option timezone when this option is used. It also defines SHELL to the value of the SHELL used to run the command. Fcron uses the value of SHELL from the fcrontab if any, otherwise it uses the value from fcron.conf if any, or in last resort the value from /etc/passwd. HOME and SHELL may be -overridden by settings in the fcrontab, but USER may not. -Every other environment assignments defined in the user fcrontab are then -made, and the command is executed.

By default, fcron will send emails using the email "Content-Type:" header of "text/plain" with the "charset=" parameter set to the charmap / codeset of the locale in which fcron(8) is started up - i.e. either the default system locale, if no LC_* environment variables are set, or the locale specified by the LC_* environment variables (see locale(7)). You can use different character encodings for emailed fcron job output by setting the CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in fcrontabs, to the correct values of the mail headers of those names.

Plus, the special variable MAILTO allows -you to tell fcron to whom it has to mail the command's output. Note that -MAILTO is in fact equivalent to a global declaration of the -option mailto (see below). It is only used for backward compatibility, so -you should use the option mailto directly.

Entries based on elapsed system up time

The entries of commands which have to be run once every m -minutes of fcron's execution (which is normally the same as m minutes of -system's execution) are of the form

@options frequency command

where frequency is a time value of the form -value*multiplier+value*multiplier+...+value-in-minutes as "12h02" or "3w2d5h1". -The first means "12 hours and 2 minutes of fcron execution" while the second -means "3 weeks, 2 days, 5 hours and 1 minute of fcron execution". The only valid -multipliers are:

Table 2-1. Valid time multipliers

meaning: multipliers:
months (4 weeks): m
weeks (7 days): w
days (24 hours): d
hours (60 minutes): h
seconds: s

In place of options, user can put a -time value: it will be interpreted as -@first(time). If first option is -not set, the value of "frequency" is used.

This kind of entry does not guarantee a time and date of -execution (as the job is delayed at each startup by the time elapsed since the -shutdown), but should be useful for jobs depending on the number of things done -by the users (for instance, the filesystem should better be checked after a -certain amount of use by the users rather than every x days, as the system may -run from 1 day to x days during that x days interval).

The time remaining before next execution is saved every 1800 -seconds (to limit damages caused by a crash) and when fcron exits after having -received a SIGTERM signal, i.e. when systems go down. Thus, -this kind of entries is particularly useful for systems that don't run -regularly. The syntax being very simple, it may also useful for tasks which -don't need to be run at a specific time and date.

See also: options first, mail, nolog, -serial, lavg, nice, runas (see below).

Example 2-1. Some examples of lines based on elapsed system up -time

# Get our mails every 30 minutes 
-@ 30 getmails -all 
-
-# make some security tests every 48 hours of system up time, 
-# force a mail to be sent to root even if there is no output 
-@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh

Entries based on time and date

The second type of fcrontab's entries begins by an optional -"&", which can be immediately followed by an optional number defining the -frequency of execution (this is equivalent to option runfreq) or a -declaration of options; it has five time and date fields, and a shell command -:

&options min hrs day-of-month month day-of-week command

Note that the shell command may be preceded by a user name, -which is equivalent to runas(user): as -it is only here for backward compatibility you should use option runas (see -below) instead. The frequency is interpreted as: "run this command after x -matches of time and date fields". The time and date fields are:

Table 2-2. Time and date fields

field: allowed values:
minute: 0-59
hour: 0-23
day of month: 1-31
month: 1-12 (or names, see below)
day of week: 0-7 (0 and 7 are both Sunday, or names)

A field is always filled by either an asterisk (*), which acts -as "first-last" range, a single number or a list.

List are numbers or range separated with commas (,). For -instance: "2,5,15,23".

Ranges of number are of the form -"begin-end", -where "begin" and "end" -are included. For example, "3-5" specifies the values 3, 4 and 5. You can also -add an optional "/number" to a range, where the -number specifies skips of the -number's value through the range. For example, -"0-23/2" can be used in the hours field to specify command execution every other -hour. Finally, one or several "~number" can be added -to turn off some specific values in a range. For example, "5-8~6~7" is equivalent to -"5,8". The final form of a field is:

a[-b[/c][~d][~e][...]][,f[-g[/h][~i][~j][...]]][,...]

where the letters are integers.

You can also use an asterisk (*) in a field. It acts for -"first-last". For example, a "*" in the field minute means all -minutes from minute 0 down to minute 59.

Ranges can be included in a list as a single number. For -instance: "2,5-10/2~6,15,20-25,30".

Names can also be used for the "month" and "day of week" -fields. To do so, use the first three letters of the particular day or month -(case doesn't matter). Please note that names are used exactly as numbers: you -can use them in a list or a range.

If a day of month and a day of week are given, the command -will execute only when both match with the current time and -date unless option dayor is set. For example, with the line -
5 10 31 * 7 echo ''
echo will only be executed -days which are a Sunday AND a 31th, at 10:05.

See also: options dayor, bootrun, runfreq, -mail, nolog, serial, lavg, nice, runas (see -below).

Example 2-2. Some examples of entries based on time and date

# run mycommand at 12:05, 12:35, 13:05, 13:35, 
-# 14:05 *and* 14:35 everyday 
-& 05,35 12-14 * * * mycommand -u me -o file 
-
-# get mails every hour past 20, 21, 22, and 24 minutes. 
-20-24~23 * * * * getmail 
-
-# save our work of the day every night at 03:45 with a low priority 
-# unless we are sunday, mail the output to jim and run that job 
-# at startup if computer was down at 03:45
-&nice(10),mailto(jim),bootrun 45 03 * * *~0 "save --our work" 

Entries run periodically

The third type of fcrontab's entries begin by a "%", -followed by a keyword from one of 3 different lists, and optional options.

*ly keywords

Those keywords are:

hourly , daily , monthly , weekly

Those keywords tell fcron to run the command -once from the beginning of the corresponding time interval to the end of that -time interval. A time interval is, for example, the time from Monday 16:20 to Wednesday 01h43. -For instance, the keyword weekly tells fcron -to run a command once between Monday and Sunday each week.

With this two kind of keywords, user must give the needed time -fields (as defined in "Entries based on time -and date" (see above)) to specify when the command should be run during -each time interval:

Table 2-3. Needed time fields for each keyword

Keywords: must be followed by the fields:
hourly, -midhourly: minutes.
daily, -middaily, nightly, -weekly, midweekly: minutes and hours.
monthly, -midmonthly: minutes, hours and days.

mid*ly keywords

They are similar to the "*ly" ones:

midhourly , middaily , nightly , midmonthly , midweekly

They work exactly has the "*ly" keywords, except -that the time intervals are defined from middle to middle of the corresponding -"*ly" intervals: midweekly will run a command once from -Thursday to Wednesday. Note that nightly is equivalent to -middaily.

For example: -

%nightly,mail(no) * 21-23,3-5 echo "a nigthly entry"

will run the command once each night either between 21:00 and -23:59, or between 3:00 and 5:59 (it will run as soon as possible. To change -that, use option random) and won't send mail (because option mail -is set to "no").

See also: options lavg, noticenotrun, strict, -mail, nolog, serial, nice, runas, random (see -below).

*s keywords

They are:

mins , hours , days , mons , dow

Those keywords act differently, as -follows:

run this command once during EACH time interval specified, ignoring -the fields below the keyword in the time interval definition (a -hours prevents the mins field to be considered as a time -interval, but it will be used to determine when the line should be run during an -interval: see the note below) (dow means "day of -week").

Such a keyword is followed by 5 time and date fields (the same -fields used for a line based on absolute -time (see above)). Furthermore, there must be some non-matching time and -dates in the lines with that kind of keyword (i.e. the following is not allowed -:
%hours * 0-23 * * * echo "INCORRECT line!"
-but
%hours * 0-22 * * * echo "Ok."
is -allowed).

Note: a single number in a field is considered as a time interval: -
%mins 15 2-4 * * * echo
will run at 2:15, 3:15 -AND 4:15 every day.

But all fields below the keywords are ignored in time -interval definition:
%hours 15 2-4 * * * echo
-will run only ONCE either at 2:15, 3:15 OR 4:15.

See also: option random (see below).

Vixie cron shortcuts

To ensure a good compatibility with Vixie cron, Vixie cron shortcuts are supported. Generally speaking their usage is not recommended as they lack some of the flexibility brought by fcron. Also where the precise time of execution is not critical, the use lines based on elapsed system up time is recommended instead.

A task using a Vixie cron shortcut is of the form:

shortcut command

Below is a list of available shortcuts with their fcron equivalent:

Table 2-4. Vixie cron shortcuts

shortcut: meaning: fcron equivalent: suggested alternative:
@reboot Run once, at startup @runatreboot,runonce(true) 
@yearly Run once a year 0 0 1 1 * @ 12m
@annually (same as @yearly) 0 0 1 1 * @ 12m
@monthly Run once a month 0 0 1 * * @ 1m
@weekly Run once a week 0 0 * * 0 @ 1w
@daily Run once a day 0 0 * * * @ 1d
@midnight (same as @daily) 0 0 * * *  
@hourly Run once an hour 0 * * * * @ 1h

A few examples:

# run check_laptop_logs.sh at the first minute of every hour:
-@hourly check_laptop_logs.sh
-# run check_web_server.sh and check_file_server.sh every day at exactly
-# midnight, both at the same time:
-@daily check_web_server.sh
-@daily check_file_server.sh
-# run compress_home_made_app_log_files.sh at exactly midnight
-# on the first day of every month:
-@monthly compress_home_made_app_log_files.sh

However you might want to replace those task definitions by something as:

# run check_laptop_logs.sh after every hour of system up time:
-@ 60 check_laptop_logs.sh
-# run check_web_server.sh and check_file_server.sh every night between midnight
-# and 3am, one by after the other:
-%nightly,serial * 0-3 check_web_server.sh
-%nightly,serial * 0-3 check_file_server.sh
-# Run compress_home_made_app_log_files.sh once a month, only at night
-# when the load is low:
-@monthly,lavg(0.5) * 21-23,0-5 * compress_home_made_app_log_files.sh

Last, but not least, it should be noted that tasks defined using a Vixie cron shortcut will only have the same behaviour as in Vixie cron if they are not modified by some earlier option definition. That will be the case if you import a Vixie cron crontab into fcron without modification, or if you precede the task definition by a reset, e.g.:

!serial
-@ 10 fcron_task_1
-@ 25 fcron_task_2
-!reset
-@reboot start_unprivileged_user_program
-@daily cleanup_tmp.sh

In the example above, serial would apply to the last two tasks if we hadn't used reset.

Options

The options can be set either for every line below the -declaration or for an individual line. In the first case, the setting is done on -a whole line immediately after an exclamation mark (!), while it is done after a -"&", a "%" or a "@" depending on the type of scheduling in the second case. Note -that an option declaration in a schedule overrides the global declaration of -that same option.

Options are separated by commas (,) and their arguments, if -any, are placed in parentheses ("(" and ")") and separated by commas. No space -or surrounding (double-)quote is allowed. A declaration of options is of the form

option[(arg1[,arg2][...])][,option[(arg1[...])]][...]

where option is either the name of an option or its -abbreviation. The options are (default value in parentheses):

Valid options in a fcrontab

bootrun, b

boolean(false)

Run an &-line at fcron's startup if it should -have run during system down time.

dayand

boolean(true)

Perform a logic AND between week and month -day.

See also: options dayor.

dayor

boolean(false)

Perform a logic OR between week and month -day.

See also: options dayand.

erroronlymail

boolean(false)

Mail output only if job exited with a non-zero status.

See also: options mail, mailto, -forcemail, nolog.

exesev

boolean(false)

Can a job be executed several times simultaneously -?

See also: options serialonce, -lavgonce.

first, f

time-value

Delay before first execution of a job based on -system up time ("@"-lines). Useful in the following case: you have several jobs -running, say, every hour. By setting different first value for each job, you can -avoid them to run simultaneously everytime. You can also set it to 0, which is -useful when used in conjunction with option volatile.

forcemail

boolean(false)

Mail output even if zero-length.

Setting this option to true will also set mail to true.

See also: options mail, mailto, -erroronlymail, nolog.

jitter

integer(0)

Run the task between 0 and jitter seconds later than it should have been run. This options only applies to &-lines and is intended for systems where many jobs are supposed to be started at the same minute: the jitter option will randomly spread the start of all those jobs across the first jitter seconds of the minute instead of starting all of them at the first second of the minute. The argument must be between 0 and 255 (inclusive).

See also: option random.

lavg

real(0) -real(0) -real(0)

Set the values of the 1, 5 and 15-minute (in this -order) system load average values below which the job should run. The values -have a maximum of 1 decimal (i.e. "2.3"): if there are more than 1 decimal, -the value will be round off. Set a value to 0 to ignore the corresponding -load average (or all of the values to run the job regardless of the load -average).

See also: options lavg1, lavg5, -lavg15, until, lavgonce, lavgor, lavgand, strict, -noticenotrun.

lavg1, lavg5, lavg15

real(0)

Set the threshold of, respectively, the 1, 5 or 15 -minutes system load average value. Set one of them to 0 to ignore the -corresponding load average.

See also: options lavg.

lavgand

boolean(true)

Perform a logic AND between the 1, 5 and 15 -minutes system load average values.

See also: options lavg, lavgor.

lavgonce

boolean(1)

Can a job be queued several times in lavg queue -simultaneously?

See also: options lavg.

lavgor

boolean(false)

Perform a logic OR between the 1, 5 and 15 minutes -system load average values.

See also: options lavg, lavgand.

mail, m

boolean(true)

Mail output (if any) or not.

Setting this option to false will also set forcemail to false.

See also: options mailto, forcemail, -erroronlymail, nolog.

mailto

email-address(name -of file's owner)

Mail output (if needed) to -"email-address". It can be either a single user-name -or a fully qualified email address. A mailto declared and empty (string -"") is equivalent to "mail(false)".

See also: options mail, forcemail, -erroronlymail, nolog.

nice, n

nice-value

Change job priority. A -nice-value is an integer from -20 (highest -priority) to 19 (lowest) (only root is allowed to use a negative value with this -option).

nolog

boolean(false)

If set to true, log only errors for the -corresponding job(s). May be useful for jobs running very often, and/or to -reduce disk access on a laptop.

See also: options mail, mailto, -erroronlymail, forcemail.

noticenotrun

boolean(false)

Should fcron mail user to report the -non-execution of a %-job or an &-job? (because of system down state for both or -a too high system load average for the latter)

See also: options lavg, strict.

random

boolean(false)

In a line run -periodically, this option answers the question: should this job be run -as soon as possible in its time interval of execution (safer), or should fcron set a -random time of execution in that time interval? Note that if this option is set, the -job may not run if fcron is not running during the whole -execution interval. Besides, you must know that the random scheme may be quite -easy to guess for skilled people: thus, you shouldn't rely on this option -to make important things secure. However, it shouldn't be a problem -for most uses.

See also: option jitter.

rebootreset

boolean(false)

When set to true, fcron will act as if the task was -a new one every time the OS reboots. This is very similar to the option volatile -but based on the OS reboots instead of fcron restarts. -You may also want to use option first if you use fcron that way.

See also: options first, volatile, runonce, runatreboot.

reset

boolean

Reset all the options to default.

runas

user-name

Run with "user-name" -permissions and environment (only root is allowed to use this option).

runatreboot

boolean(false)

If set to true, the task will be run at system startup (i.e. immediately after the --sleeptime delay -- by default, 20 seconds -- when the fcron daemon starts the first time after the OS has booted). This is in addition to the regular schedule which won't be modified by this option.

For instance, if a program should be started automatically and run from 7am to 6pm, you could use the following dfcrontab definitions:

&runatreboot 0 6 * * 1-5 start_my_program.sh
-& 0 7 * * 1-5 stop_my_program.sh

See also: options volatile, runonce, rebootreset.

runfreq, r

integer

Run every "runfreq" -matches of time and date. (this option is ignored for lines based on elapsed system up time).

runonce

boolean(false)

Do not re-schedule the task after it has run once, until the next OS reboot (if volatile is not set) or until the next fcron daemon restart (if volatile is set).

See also: options volatile, rebootreset, runatreboot.

serial, s

boolean(false)

Fcron runs at most 1 serial -jobs (ie. for which the option serial is set to true), and the same number of lavg serial jobs (ie. for which both option serial and lavg (or lavg1 or lavg5 or lavg15) are set to true) simultaneously. This value may be modified by fcron's option -m. This option is especially useful when used with big jobs in order to limit the system overload.

See also: options serialonce, -lavg.

serialonce

boolean(0)

Can a job be queued several times in serial queue -simultaneously?

See also: options exesev, -lavgonce.

stdout

boolean(false)

If fcron is running in the foreground, then also -let jobs print to stderr/stdout instead of mailing or discarding it.

See also: fcron's option --once -in fcron(8).

strict

boolean(true)

When a lavg %-job is at the end of a time interval of -execution, should it be removed from the lavg queue (strict(true), so the job is -not run) or be let there until the system load average allows its execution -(strict(false))?

See also: options lavg, -noticenotrun.

timezone

timezone-name(time zone of the system)

Run the job in the given time zone. timezone-name is a string which is valid for the environment variable TZ: see the documentation of your system for more details. For instance, "Europe/Paris" is valid on a Linux system. This option handles daylight saving time changes correctly. The TZ environment variable is set to the value of timezone when a job defining this option is run.

Please note that if you give an erroneous timezone-name argument, it will be SILENTLY ignored, and the job will run in the time zone of the system.

WARNING: do *not* use option timezone and option tzdiff simultaneously! There is no need to do so, and timezone is cleverer than tzdiff.

See also: options tzdiff.

tzdiff

integer(0)

WARNING: this option is deprecated: use option timezone instead!

Time zone difference (in hours, between -24 and -24) between the system time, and the local real time. This option allows a user -to define its & and %-lines in the local time. Note that this value is set for a -whole fcrontab file, and only the last definition is taken into account. tzdiff is quite stupid: it doesn't handle daylight saving changes, while option timezone does, so you should use the latter.

See also: options timezone.

until

time-value(0)

Set the timeout of the waiting of the wanted -system load average values. If the timeout is exceeded, the job runs no matter -the load average. Set until to 0 to remove the timeout.

See also: options lavg.

volatile

boolean(false)

When set to true, the job is based on a "volatile" -system up time, i.e. restart counting each time fcron is started, which is -useful when fcron is started by a script running only, for instance, during a -dialup connection: the "volatile" system up time then refers to the dialup -connection time. You may also want to use option first if you use fcron -that way.

See also: options first, stdout, rebootreset, -lines based on elapsed system up time, fcron's command line argument ---once in fcron(8).

A boolean argument can be non-existent, in which -case parentheses are not used and it means true; the string -"true", "yes" or 1 to mean true; and the string "false", -"no" or 0 to mean false. See above for explanations about -time value (section "entries based on elapsed system up -time").

Note that dayand and -dayor are in fact the same option: a false value to -dayand is equivalent to a true to dayor, -and reciprocally a false value to dayor is equivalent a true -value to dayand. It is the same for -lavgand and lavgor.

Note a special case to be handled: A job should be entered -into the serial queue, *but* the previous entry for this job has not been -completed yet, because of high system load or some external event. Option -serialonce answers the question: should the new entry of the -job be ignored? This way one can distinguish between jobs required to run a -certain number of times, preferably at specified times, and tasks to be -performed irrespective of their number (-> serialonce(true)), which make the -system respond faster.

The same considerations apply for the load average queue, and -can be expressed with option lavgonce.

Moreover, if the serial or the lavg queue contains -respectively more than 30 and 30 jobs, any new job is -refused and not run to avoid an overwhelming of system resources. In this case, -an error message is logged through syslog.

Finally, if jobs remain in the lavg or serial queues when -fcron stops, they will be put once in the corresponding queue on startup (their -order may not be conserved).

Example 2-3. An example of an option declaration:

!reset,serial(true),dayor,bootrun(0),mailto(root),lavg(.5,2,1.5)

Examples

Example 2-4. An example of a user fcrontab

# use /bin/bash to run commands, ignoring what /etc/passwd says 
-SHELL=/bin/bash
-
-# mail output to thib, no matter whose fcrontab this is 
-!mailto(thib) 
-
-# define a variable which is equivalent to " Hello thib and paul! " 
-# here the newline characters are escaped by a backslash (\) 
-# and quotes are used to force to keep leading and trailing blanks 
-TEXT= " Hello\
- thib and\
- paul! " 
-
-# we want to use serial but not bootrun: 
-!serial(true),b(0) 
-
-# run after five minutes of execution the first time, 
-# then run every hour 
-@first(5) 1h   echo "Run every hour" 
-
-# run every day 
-@ 1d echo "fcron daily" 
-
-# run once between in the morning and once in the afternoon 
-#  if systems is running at any moment of these time intervals
-%hours * 8-12,14-18 * * * echo "Hey boss, I'm working today!" 
-
-# run once a week during our lunch 
-%weekly * 12-13 echo "I left my system on at least once \
- at lunch time this week." 
-
-# run every Sunday and Saturday at 9:05
-5 9 * * sat,sun echo "Good morning Thibault!" 
-
-# run every even days of march at 18:00, except on 16th 
-0 18 2-30/2~16 Mar * echo "It's time to go back home!" 
-
-# the line above is equivalent to 
-& 0 18 2-30/2~16 Mar * echo "It's time to go back home!" 
-
-# reset options to default and set runfreq for lines below 
-!reset,runfreq(7) 
-
-# run once every 7 matches (thanks to the declaration above), 
-# so if system is running every day at 10:00, this will be 
-# run once a week 
-& 0 10 * * * echo "if you got this message last time 7 days ago,\
- this computer has been running every day at 10:00 last week.\
- If you got the message 8 days ago, then the system has been down \
- one day at 10:00 since you got it, etc" 
-
-# wait every hour for a 5 minutes load average under 0.9 
-@lavg5(0.9) 1h echo "The system load average is low" 
-
-# wait a maximum of 5 hours every day for a fall of the load average
-@lavgand,lavg(1,2.0,3.0),until(5h) 1d echo "Load average is going down" 
-
-# wait for the best moment to run a heavy job 
-@lavgor,lavg(0.8,1.2,1.5),nice(10) 1w echo "This is a heavy job" 
-
-# run once every night between either 21:00 and 23:00 or 
-#   between 3:00 and 6:00 
-%nightly,lavg(1.5,2,2) * 21-23,3-6 echo "It's time to retrieve \
- the latest release of Mozilla!"

Files

/usr/local/etc/fcron.conf

Configuration file for fcron, fcrontab and -fcrondyn: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See fcron.conf(5) for -more details.

/usr/local/etc/fcron.allow

Users allowed to use fcrontab and fcrondyn (one -name per line, special name "all" acts for everyone)

/usr/local/etc/fcron.deny

Users who are not allowed to use fcrontab and -fcrondyn (same format as allow file)

/usr/local/etc/pam.d/fcron (or -/usr/local/etc/pam.conf)

PAM configuration file for -fcron. Take a look at pam(8) for more details.

See also

fcrontab(1),
fcrondyn(1),
fcrontab(5),
fcron.conf(5),
fcron(8).
If you're learning how to use fcron from scratch, I suggest - that you read the HTML version of the documentation (if your are not reading it - right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks.

Author

Thibault Godouet <fcron@free.fr>


PrevHomeNext
fcrontabUpfcrondyn
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/fdl.html b/fcron-3.2.0/doc/en/HTML/fdl.html deleted file mode 100644 index 371447d..0000000 --- a/fcron-3.2.0/doc/en/HTML/fdl.html +++ /dev/null @@ -1,709 +0,0 @@ - -GNU Free Documentation License
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
Prev 

Appendix B. GNU Free Documentation License

Version 1.1, March 2000

Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and -distribute verbatim copies of this license document, but changing it is not -allowed.

0. PREAMBLE

The purpose of this License is to make a manual, textbook, or -other written document "free" in the sense of freedom: to assure everyone the -effective freedom to copy and redistribute it, with or without modifying it, -either commercially or noncommercially. Secondarily, this License preserves for -the author and publisher a way to get credit for their work, while not being -considered responsible for modifications made by others.

This License is a kind of "copyleft", which means that -derivative works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft license designed -for free software.

We have designed this License in order to use it for manuals -for free software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the software -does. But this License is not limited to software manuals; it can be used for -any textual work, regardless of subject matter or whether it is published as a -printed book. We recommend this License principally for works whose purpose is -instruction or reference.

1. APPLICABILITY AND DEFINITIONS

This License applies to any manual or other work that contains -a notice placed by the copyright holder saying it can be distributed under the -terms of this License. The "Document", below, refers to any such manual or -work. Any member of the public is a licensee, and is addressed as "you".

A "Modified Version" of the Document means any work containing -the Document or a portion of it, either copied verbatim, or with modifications -and/or translated into another language.

A "Secondary Section" is a named appendix or a front-matter -section of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject (or to -related matters) and contains nothing that could fall directly within that -overall subject. (For example, if the Document is in part a textbook of -mathematics, a Secondary Section may not explain any mathematics.) The -relationship could be a matter of historical connection with the subject or with -related matters, or of legal, commercial, philosophical, ethical or political -position regarding them.

The "Invariant Sections" are certain Secondary Sections whose -titles are designated, as being those of Invariant Sections, in the notice that -says that the Document is released under this License.

The "Cover Texts" are certain short passages of text that are -listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License.

A "Transparent" copy of the Document means a machine-readable -copy, represented in a format whose specification is available to the general -public, whose contents can be viewed and edited directly and straightforwardly -with generic text editors or (for images composed of pixels) generic paint -programs or (for drawings) some widely available drawing editor, and that is -suitable for input to text formatters or for automatic translation to a variety -of formats suitable for input to text formatters. A copy made in an otherwise -Transparent file format whose markup has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is not -"Transparent" is called "Opaque".

Examples of suitable formats for Transparent copies include -plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or -XML using a publicly available DTD, and standard-conforming simple HTML designed -for human modification. Opaque formats include PostScript, PDF, proprietary -formats that can be read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are not generally available, and -the machine-generated HTML produced by some word processors for output purposes -only.

The "Title Page" means, for a printed book, the title page -itself, plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in formats which do -not have any title page as such, "Title Page" means the text near the most -prominent appearance of the work's title, preceding the beginning of the body of -the text.

2. VERBATIM COPYING

You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the copyright -notices, and the license notice saying this License applies to the Document are -reproduced in all copies, and that you add no other conditions whatsoever to -those of this License. You may not use technical measures to obstruct or -control the reading or further copying of the copies you make or distribute. -However, you may accept compensation in exchange for copies. If you distribute -a large enough number of copies you must also follow the conditions in section -3.

You may also lend copies, under the same conditions stated -above, and you may publicly display copies.

3. COPYING IN QUANTITY

If you publish printed copies of the Document numbering more -than 100, and the Document's license notice requires Cover Texts, you must -enclose the copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back -cover. Both covers must also clearly and legibly identify you as the publisher -of these copies. The front cover must present the full title with all words of -the title equally prominent and visible. You may add other material on the -covers in addition. Copying with changes limited to the covers, as long as they -preserve the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects.

If the required texts for either cover are too voluminous to -fit legibly, you should put the first ones listed (as many as fit reasonably) on -the actual cover, and continue the rest onto adjacent pages.

If you publish or distribute Opaque copies of the Document -numbering more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy a -publicly-accessible computer-network location containing a complete Transparent -copy of the Document, free of added material, which the general network-using -public has access to download anonymously at no charge using public-standard -network protocols. If you use the latter option, you must take reasonably -prudent steps, when you begin distribution of Opaque copies in quantity, to -ensure that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an Opaque -copy (directly or through your agents or retailers) of that edition to the -public.

It is requested, but not required, that you contact the -authors of the Document well before redistributing any large number of copies, -to give them a chance to provide you with an updated version of the -Document.

4. MODIFICATIONS

You may copy and distribute a Modified Version of the Document -under the conditions of sections 2 and 3 above, provided that you release the -Modified Version under precisely this License, with the Modified Version filling -the role of the Document, thus licensing distribution and modification of the -Modified Version to whoever possesses a copy of it. In addition, you must do -these things in the Modified Version:

  1. Use in the Title Page (and on the covers, if -any) a title distinct from that of the Document, and from those of previous -versions (which should, if there were any, be listed in the History section of -the Document). You may use the same title as a previous version if the original -publisher of that version gives permission.

  2. List on the Title Page, as authors, one or more -persons or entities responsible for authorship of the modifications in the -Modified Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has less than five).

  3. State on the Title page the name of the -publisher of the Modified Version, as the publisher.

  4. Preserve all the copyright notices of the -Document.

  5. Add an appropriate copyright notice for your -modifications adjacent to the other copyright notices.

  6. Include, immediately after the copyright -notices, a license notice giving the public permission to use the Modified -Version under the terms of this License, in the form shown in the Addendum -below.

  7. Preserve in that license notice the full lists -of Invariant Sections and required Cover Texts given in the Document's license -notice.

  8. Include an unaltered copy of this -License.

  9. Preserve the section entitled "History", and its -title, and add to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If there is no -section entitled "History" in the Document, create one stating the title, year, -authors, and publisher of the Document as given on its Title Page, then add an -item describing the Modified Version as stated in the previous sentence.

  10. Preserve the network location, if any, given in -the Document for public access to a Transparent copy of the Document, and -likewise the network locations given in the Document for previous versions it -was based on. These may be placed in the "History" section. You may omit a -network location for a work that was published at least four years before the -Document itself, or if the original publisher of the version it refers to gives -permission.

  11. In any section entitled "Acknowledgements" or -"Dedications", preserve the section's title, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein.

  12. Preserve all the Invariant Sections of the -Document, unaltered in their text and in their titles. Section numbers or the -equivalent are not considered part of the section titles.

  13. Delete any section entitled "Endorsements". -Such a section may not be included in the Modified Version.

  14. Do not retitle any existing section as -"Endorsements" or to conflict in title with any Invariant Section.

If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material copied -from the Document, you may at your option designate some or all of these -sections as invariant. To do this, add their titles to the list of Invariant -Sections in the Modified Version's license notice. These titles must be -distinct from any other section titles.

You may add a section entitled "Endorsements", provided it -contains nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has been -approved by an organization as the authoritative definition of a -standard.

You may add a passage of up to five words as a Front-Cover -Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the -list of Cover Texts in the Modified Version. Only one passage of Front-Cover -Text and one of Back-Cover Text may be added by (or through arrangements made -by) any one entity. If the Document already includes a cover text for the same -cover, previously added by you or by arrangement made by the same entity you are -acting on behalf of, you may not add another; but you may replace the old one, -on explicit permission from the previous publisher that added the old -one.

The author(s) and publisher(s) of the Document do not by this -License give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version.

5. COMBINING DOCUMENTS

You may combine the Document with other documents released -under this License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the Invariant -Sections of all of the original documents, unmodified, and list them all as -Invariant Sections of your combined work in its license notice.

The combined work need only contain one copy of this License, -and multiple identical Invariant Sections may be replaced with a single copy. -If there are multiple Invariant Sections with the same name but different -contents, make the title of each such section unique by adding at the end of it, -in parentheses, the name of the original author or publisher of that section if -known, or else a unique number. Make the same adjustment to the section titles -in the list of Invariant Sections in the license notice of the combined -work.

In the combination, you must combine any sections entitled -"History" in the various original documents, forming one section entitled -"History"; likewise combine any sections entitled "Acknowledgements", and any -sections entitled "Dedications". You must delete all sections entitled -"Endorsements."

6. COLLECTIONS OF DOCUMENTS

You may make a collection consisting of the Document and other -documents released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in the -collection, provided that you follow the rules of this License for verbatim -copying of each of the documents in all other respects.

You may extract a single document from such a collection, and -distribute it individually under this License, provided you insert a copy of -this License into the extracted document, and follow this License in all other -respects regarding verbatim copying of that document.

7. AGGREGATION WITH INDEPENDENT WORKS

A compilation of the Document or its derivatives with other -separate and independent documents or works, in or on a volume of a storage or -distribution medium, does not as a whole count as a Modified Version of the -Document, provided no compilation copyright is claimed for the compilation. -Such a compilation is called an "aggregate", and this License does not apply to -the other self-contained works thus compiled with the Document, on account of -their being thus compiled, if they are not themselves derivative works of the -Document.

If the Cover Text requirement of section 3 is applicable to -these copies of the Document, then if the Document is less than one quarter of -the entire aggregate, the Document's Cover Texts may be placed on covers that -surround only the Document within the aggregate. Otherwise they must appear on -covers around the whole aggregate.

8. TRANSLATION

Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. Replacing -Invariant Sections with translations requires special permission from their -copyright holders, but you may include translations of some or all Invariant -Sections in addition to the original versions of these Invariant Sections. You -may include a translation of this License provided that you also include the -original English version of this License. In case of a disagreement between the -translation and the original English version of this License, the original -English version will prevail.

9. TERMINATION

You may not copy, modify, sublicense, or distribute the -Document except as expressly provided for under this License. Any other attempt -to copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, parties who -have received copies, or rights, from you under this License will not have their -licenses terminated so long as such parties remain in full compliance.

10. FUTURE REVISIONS OF THIS LICENSE

The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to address -new problems or concerns. See http://www.gnu.org/copyleft/.

Each version of the License is given a distinguishing version -number. If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of following -the terms and conditions either of that specified version or of any later -version that has been published (not as a draft) by the Free Software -Foundation. If the Document does not specify a version number of this License, -you may choose any version ever published (not as a draft) by the Free Software -Foundation.

How to use this License for your documents

To use this License in a document you have written, include a -copy of the License in the document and put the following copyright and license -notices just after the title page:

Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute -and/or modify this document under the terms of the GNU Free Documentation -License, Version 1.1 or any later version published by the Free Software -Foundation; with the Invariant Sections being LIST THEIR TITLES, with the -Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy -of the license is included in the section entitled "GNU Free Documentation -License".

If you have no Invariant Sections, write "with no Invariant -Sections" instead of saying which ones are invariant. If you have no -Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts -being LIST"; likewise for Back-Cover Texts.

If your document contains nontrivial examples of program code, -we recommend releasing these examples in parallel under your choice of free -software license, such as the GNU General Public License, to permit their use in -free software.


PrevHome 
GNU GENERAL PUBLIC LICENSE  
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/gpl.html b/fcron-3.2.0/doc/en/HTML/gpl.html deleted file mode 100644 index 463b33d..0000000 --- a/fcron-3.2.0/doc/en/HTML/gpl.html +++ /dev/null @@ -1,592 +0,0 @@ - -GNU GENERAL PUBLIC LICENSE
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevNext

Appendix A. GNU GENERAL PUBLIC LICENSE

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 -Temple Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to -copy and distribute verbatim copies of this license document, but changing it is -not allowed.

0. PREAMBLE

The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change free software--to make -sure the software is free for all its users. This General Public License applies -to most of the Free Software Foundation's software and to any other program -whose authors commit to using it. (Some other Free Software Foundation software -is covered by the GNU Library General Public License instead.) You can apply it -to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom to -distribute copies of free software (and charge for this service if you wish), -that you receive source code or can get it if you want it, that you can change -the software or use pieces of it in new free programs; and that you know you can -do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny -you these rights or to ask you to surrender the rights. These restrictions -translate to certain responsibilities for you if you distribute copies of the -software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a -fee, you must give the recipients all the rights that you have. You must make -sure that they, too, receive or can get the source code. And you must show them -these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer -you this license which gives you legal permission to copy, distribute and/or -modify the software.

Also, for each author's protection and ours, we want to make certain that -everyone understands that there is no warranty for this free software. If the -software is modified by someone else and passed on, we want its recipients to -know that what they have is not the original, so that any problems introduced by -others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish -to avoid the danger that redistributors of a free program will individually -obtain patent licenses, in effect making the program proprietary. To prevent -this, we have made it clear that any patent must be licensed for everyone's free -use or not licensed at all.

The precise terms and conditions for copying, distribution and modification -follow.

1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND -MODIFICATION

0. This License applies to any program or other work which -contains a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, refers to -any such program or work, and a "work based on the Program" means either the -Program or any derivative work under copyright law: that is to say, a work -containing the Program or a portion of it, either verbatim or with modifications -and/or translated into another language. (Hereinafter, translation is included -without limitation in the term "modification".) Each licensee is addressed as -"you".

Activities other than copying, distribution and modification are not covered by -this License; they are outside its scope. The act of running the Program is not -restricted, and the output from the Program is covered only if its contents -constitute a work based on the Program (independent of having been made by -running the Program). Whether that is true depends on what the Program -does.

1. You may copy and distribute verbatim copies of the Program's source code as -you receive it, in any medium, provided that you conspicuously and appropriately -publish on each copy an appropriate copyright notice and disclaimer of warranty; -keep intact all the notices that refer to this License and to the absence of any -warranty; and give any other recipients of the Program a copy of this License -along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at -your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion of it, thus -forming a work based on the Program, and copy and distribute such modifications -or work under the terms of Section 1 above, provided that you also meet all of -these conditions:

* a) You must cause the modified files to carry prominent notices stating -that you changed the files and the date of any change.

* b) You must cause any work that you distribute or publish, that in whole -or in part contains or is derived from the Program or any part thereof, to be -licensed as a whole at no charge to all third parties under the terms of this -License.

* c) If the modified program normally reads commands interactively when run, -you must cause it, when started running for such interactive use in the most -ordinary way, to print or display an announcement including an appropriate -copyright notice and a notice that there is no warranty (or else, saying that -you provide a warranty) and that users may redistribute the program under these -conditions, and telling the user how to view a copy of this License. (Exception: -if the Program itself is interactive but does not normally print such an -announcement, your work based on the Program is not required to print an -announcement.)

These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Program, and can be reasonably -considered independent and separate works in themselves, then this License, and -its terms, do not apply to those sections when you distribute them as separate -works. But when you distribute the same sections as part of a whole which is a -work based on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the entire whole, -and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise the -right to control the distribution of derivative or collective works based on the -Program.

In addition, mere aggregation of another work not based on the Program with the -Program (or with a work based on the Program) on a volume of a storage or -distribution medium does not bring the other work under the scope of this -License.

3. You may copy and distribute the Program (or a work based on it, under Section -2) in object code or executable form under the terms of Sections 1 and 2 above -provided that you also do one of the following:

* a) Accompany it with the complete corresponding machine-readable source -code, which must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange; or,

* b) Accompany it with a written offer, valid for at least three years, to -give any third party, for a charge no more than your cost of physically -performing source distribution, a complete machine-readable copy of the -corresponding source code, to be distributed under the terms of Sections 1 and 2 -above on a medium customarily used for software interchange; or,

* c) Accompany it with the information you received as to the offer to -distribute corresponding source code. (This alternative is allowed only for -noncommercial distribution and only if you received the program in object code -or executable form with such an offer, in accord with Subsection b -above.)

The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code means all the -source code for all modules it contains, plus any associated interface -definition files, plus the scripts used to control compilation and installation -of the executable. However, as a special exception, the source code distributed -need not include anything that is normally distributed (in either source or -binary form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component itself -accompanies the executable.

If distribution of executable or object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the source code -from the same place counts as distribution of the source code, even though third -parties are not compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program except as -expressly provided under this License. Any attempt otherwise to copy, modify, -sublicense or distribute the Program is void, and will automatically terminate -your rights under this License. However, parties who have received copies, or -rights, from you under this License will not have their licenses terminated so -long as such parties remain in full compliance.

5. You are not required to accept this License, since you have not signed it. -However, nothing else grants you permission to modify or distribute the Program -or its derivative works. These actions are prohibited by law if you do not -accept this License. Therefore, by modifying or distributing the Program (or any -work based on the Program), you indicate your acceptance of this License to do -so, and all its terms and conditions for copying, distributing or modifying the -Program or works based on it.

6. Each time you redistribute the Program (or any work based on the Program), -the recipient automatically receives a license from the original licensor to -copy, distribute or modify the Program subject to these terms and conditions. -You may not impose any further restrictions on the recipients' exercise of the -rights granted herein. You are not responsible for enforcing compliance by third -parties to this License.

7. If, as a consequence of a court judgment or allegation of patent infringement -or for any other reason (not limited to patent issues), conditions are imposed -on you (whether by court order, agreement or otherwise) that contradict the -conditions of this License, they do not excuse you from the conditions of this -License. If you cannot distribute so as to satisfy simultaneously your -obligations under this License and any other pertinent obligations, then as a -consequence you may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by all those -who receive copies directly or indirectly through you, then the only way you -could satisfy both it and this License would be to refrain entirely from -distribution of the Program.

If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply and the -section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or -other property right claims or to contest validity of any such claims; this -section has the sole purpose of protecting the integrity of the free software -distribution system, which is implemented by public license practices. Many -people have made generous contributions to the wide range of software -distributed through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing to -distribute software through any other system and a licensee cannot impose that -choice.

This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in certain -countries either by patents or by copyrighted interfaces, the original copyright -holder who places the Program under this License may add an explicit -geographical distribution limitation excluding those countries, so that -distribution is permitted only in or among countries not thus excluded. In such -case, this License incorporates the limitation as if written in the body of this -License.

9. The Free Software Foundation may publish revised and/or new versions of the -General Public License from time to time. Such new versions will be similar in -spirit to the present version, but may differ in detail to address new problems -or concerns.

Each version is given a distinguishing version number. If the Program specifies -a version number of this License which applies to it and "any later version", -you have the option of following the terms and conditions either of that version -or of any later version published by the Free Software Foundation. If the -Program does not specify a version number of this License, you may choose any -version ever published by the Free Software Foundation.

10. If you wish to incorporate parts of the Program into other free programs -whose distribution conditions are different, write to the author to ask for -permission. For software which is copyrighted by the Free Software Foundation, -write to the Free Software Foundation; we sometimes make exceptions for this. -Our decision will be guided by the two goals of preserving the free status of -all derivatives of our free software and of promoting the sharing and reuse of -software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE -PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED -IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS -IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT -NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL -ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE -PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, -SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY -TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF -THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER -PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to use this License for your documents

If you develop a new program, and you want it to be of the -greatest possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms.

To do so, attach the following notices to the program. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found.

one line to give the program's name and an idea of what it -does. Copyright (C) yyyy name of author -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; either version 2 of the License, or (at your option) any later -version. This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -details. You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., 59 -Temple Place - Suite 330, Boston, MA 02111-1307, USA.

Also add information on how to contact you by electronic and -paper mail.

If the program is interactive, make it output a short notice -like this when it starts in an interactive mode:

Gnomovision version 69, Copyright (C) year name of author
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.  This
-is free software, and you are welcome to redistribute it under certain
-conditions; type `show c' for details.

The hypothetical commands `show w' and -`show c' should show the appropriate parts of the General -Public License. Of course, the commands you use may be called something other -than `show w' and `show c'; they could -even be mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a -programmer) or your school, if any, to sign a "copyright disclaimer" for the -program, if necessary. Here is a sample; alter the names:

Yoyodyne, Inc., hereby disclaims all copyright interest in -the program `Gnomovision' (which makes passes at compilers) written by James -Hacker.

signature of Ty Coon, 1 April -1989 Ty Coon, President of Vice

This General Public License does not permit incorporating your -program into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General Public -License instead of this License.


PrevHomeNext
Frequently Asked Questions GNU Free Documentation License
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/how-and-why.html b/fcron-3.2.0/doc/en/HTML/how-and-why.html deleted file mode 100644 index 9a04104..0000000 --- a/fcron-3.2.0/doc/en/HTML/how-and-why.html +++ /dev/null @@ -1,286 +0,0 @@ - -Fcron: how and why?
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevNext

Chapter 1. Fcron: how and why?

This chapter will explain you what is fcron, why you should need -it, and how to install it.


PrevHomeNext
Fcron documentation About fcron
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/index.html b/fcron-3.2.0/doc/en/HTML/index.html deleted file mode 100644 index 5ef8d0d..0000000 --- a/fcron-3.2.0/doc/en/HTML/index.html +++ /dev/null @@ -1,489 +0,0 @@ - -Fcron documentation

Fcron documentation

Thibault Godouet

Copyright © 2000-2014 Thibault Godouet

Fcron is distributed under GPL license (please read the -license in Appendix A).

Project home page: http://fcron.free.fr

Author: Thibault GODOUET <fcron@free.fr>

You can get the latest HTML version of this document at: -http://fcron.free.fr/files/fcron-doc-html.tar.gz . The SGML DocBook sources are included with fcron packages.

Fcron 3.2.0

Table of Contents
1. Fcron: how and why?
1.1. About fcron
1.1.1. What is fcron?
1.1.2. License
1.1.3. Requirements
1.1.4. Compilation and installation
1.1.5. Configuration
1.1.6. Bug reports, corrections, propositions...
1.2. How to install fcron
1.2.1. Compilation requirements
1.2.2. Compilation and installation instructions
1.3. Changes
1.4. Release notes: fcron 3.2.0
1.5. Todo
1.5.1. High priority
1.5.2. Low priority
1.5.3. Ideas
1.6. Thanks
2. Using fcron ...
2.1. Manual pages of fcron
fcron -- daemon to execute scheduled tasks
fcron.conf -- configuration file for fcron and fcrontab
fcrontab -- manipulate per-user fcrontab - files
fcrontab -- tables for driving fcron
fcrondyn -- dialog dyn-amically with a running fcron daemon
2.2. Frequently Asked Questions
A. GNU GENERAL PUBLIC LICENSE
0. PREAMBLE
1. TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND -MODIFICATION
How to use this License for your documents
B. GNU Free Documentation License
0. PREAMBLE
1. APPLICABILITY AND DEFINITIONS
2. VERBATIM COPYING
3. COPYING IN QUANTITY
4. MODIFICATIONS
5. COMBINING DOCUMENTS
6. COLLECTIONS OF DOCUMENTS
7. AGGREGATION WITH INDEPENDENT WORKS
8. TRANSLATION
9. TERMINATION
10. FUTURE REVISIONS OF THIS LICENSE
How to use this License for your documents

  Next
  Fcron: how and why?
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/install.html b/fcron-3.2.0/doc/en/HTML/install.html deleted file mode 100644 index db1d25a..0000000 --- a/fcron-3.2.0/doc/en/HTML/install.html +++ /dev/null @@ -1,749 +0,0 @@ - -How to install fcron
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevChapter 1. Fcron: how and why?Next

1.2. How to install fcron

1.2.1. Compilation requirements

  • A C compiler (e.g. gcc)

  • (optional) readline development - library (e.g. libreadline-dev)

  • (optional) PAM development - library (e.g. libpam0g-dev)

  • (optional) SE Linux development library (e.g. libselinux1-dev)

  • (optional) Linux audit development library (e.g. libaudit-dev)

  • If compiling from git checkout (rather than a tarball), then no generated file will be included out of the box, so you will need more tools to generate them. In particular the ./configure script and the documentation will be generated from the sources.

    • git

    • autoconf

    • docbook

    • docbook-xsl

    • docbook-xml

    • docbook-util

    • manpages-dev

1.2.2. Compilation and installation instructions

  • uncompress the archive:

    bash$ tar -xzf fcron-X.Y.Z.src.tar.gz
  • cd to the archive directory

    bash$ cd fcron-X.Y.Z
  • run the configure script:

    bash$./configure

    • If you can't see a ./configure, then you probably checked out the files from git, in which case you need to run autoconf to generate the configure script.

    • If using PAM, beware that by default the PAM configuration will be installed in /usr/local/etc/. That most likely mean that your system won't use this config, and may ask you to type your password everytime you start fcrontab or fcrondyn.

      The simplest way to avoid this is to instruct configure to use /etc instead with:

      bash$ ./configure --sysconfdir=/etc
    • You may also want to change the place where -fcron will be installed: you can use the configure 's -option --prefix to do that. For instance: -

      bash$ ./configure --prefix=/usr--sysconfdir=/etc

      (default is prefix=/usr/local and sysconfdir=${prefix}/etc).

    • To disable the use of -PAM, SE Linux or fcrondyn, use configure's -option --with-pam=no, --with-selinux=no -and/or --with-fcrondyn=no.

    • The command make install asks -you by default some questions you have to answer. To avoid that (which can be -useful for automatic installers), you can use the -./configure's option --with-answer-all -and/or --with-boot-install (see "./configure ---help" for more details). -

    • To debug fcron, you should use -configure 's option --with-debug. -

    • You can get info on the others -configure 's options by running -"./configure --help". -

    -

    Warning

    • The configure script may not -define a correct directory for the man pages and the documentation on some -systems. You may check the values defined by configure and if -necessary force a value by the options --mandir and --with-docdir (see the help by running -"./configure --help"). -

    • If you get older fcron's man-pages with -man command after having upgraded, it's probably because -fcron has changed its default man directory: you should remove manually the -outdated man-pages. -

    • The Makefile has been -designed for GNU make. Some other version of -make may fail to use it. -

    -

  • (optional) check the file -config.h, and change it if necessary (the configurable part -is on the top of the file and clearly delimited).

  • compile:

    bash$ make
  • then install binaries as root:

    bash$ su root
    bash# make install

You can now run fcron and -fcrontab.

  • This is a POSIX conforming -software. You must have a POSIX compiler -(gcc for example) in order to compile it. -

  • This software has been written for -GNU/Linux systems. If you want to port it on an other -Unix platform (thank you if you do it), try to modify -- if possible - only the configure script. Please -send me any modifications at <fcron@free.fr> in order to include it in future releases. -


PrevHomeNext
About fcronUpChanges
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/manpages.html b/fcron-3.2.0/doc/en/HTML/manpages.html deleted file mode 100644 index 51495fb..0000000 --- a/fcron-3.2.0/doc/en/HTML/manpages.html +++ /dev/null @@ -1,219 +0,0 @@ - -Manual pages of fcron
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevChapter 2. Using fcron ...Next

2.1. Manual pages of fcron

Table of Contents
fcron -- daemon to execute scheduled tasks
fcron.conf -- configuration file for fcron and fcrontab
fcrontab -- manipulate per-user fcrontab - files
fcrontab -- tables for driving fcron
fcrondyn -- dialog dyn-amically with a running fcron daemon

This section contains the manual pages, which tell you how to use fcron.


PrevHomeNext
Using fcron ...Upfcron
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/readme.html b/fcron-3.2.0/doc/en/HTML/readme.html deleted file mode 100644 index 85d4fde..0000000 --- a/fcron-3.2.0/doc/en/HTML/readme.html +++ /dev/null @@ -1,602 +0,0 @@ - -About fcron
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevChapter 1. Fcron: how and why?Next

1.1. About fcron

1.1.1. What is fcron?

Fcron is a scheduler. It aims at replacing Vixie -Cron, so it implements most of its functionalities.

But contrary to Vixie Cron, fcron -does not need your system to be up 7 days a week, 24 hours a day: it also works -well with systems which are not running neither all the time nor regularly -(contrary to anacrontab).

In other words, fcron does both the job of Vixie -Cron and anacron, but does even more -and better :)) ...

To do so, fcron allows you to use the standard mode in which you -tell it to execute one command at a given date and hour and to make it run a -command according to its time of execution, which is normally the same as system -up time. For example: - -

Run the task 'save /home/ directory' every 3h15 of system -up time.

and, of course, in order to make it really useful, the -time remaining until next execution is saved each time the system is stopped. -You can also say: - -

run that command once between 2am and 5am

which will be done if the system is running at any -time in this interval.

Fcron also includes a useful system of options, which can be -applied either to every lines following the declaration or to a single line. -Some of the supported options permit to: -

  • run jobs one by one (fcrontab option -serial),

  • set the max system load average value under -which the job should be run (fcrontab option lavg),

  • set a nice value for a job (fcrontab option -nice),

  • run jobs at fcron's startup if they should -have been run during system down time (fcrontab option -bootrun),

  • mail user to tell him a job has not run and why -(fcrontab option noticenotrun),

  • a better management of the mailing of outputs -...

-

1.1.2. License

Fcron is distributed under GPL license (please read the license -in the gpl file).

1.1.3. Requirements

  • a Linux/Unix system

    Fcron should work on every -POSIX system, but it has been developed on -Mandrake Linux (so it should work without any -problems on Redhat).

    Fcron has been reported to work correctly on: -

    • Linux Mandrake -

    • Linux Debian 3.0 -

    • LFS

      (take a look at the Beyond - LFS book to find the installation - informations).

    • FreeBSD 4.2 -

    • OpenBSD 2.8 -

    • NetBSD 2.0 -

    • Darwin/MacOS-X

    • Solaris 8 -

    • AIX 4.3.3 -

    • HP-UX 11.11 -

    but fcron should work on other OS as well. Yet, - if you have troubles - making it work on a POSIX system, please - contact me at <fcron@free.fr>.

  • a running syslog (or you -won't have any log)

  • a running mail system ( -sendmail or postfix for -example) (or users will not able to read their jobs output) -

  • (optional) a PAM -library.

  • (optional) a system with a working SE Linux environment.

1.1.4. Compilation and installation

See the install file (either install.txt -or install.html).

1.1.6. Bug reports, corrections, propositions...

Please send me the description of any bug you happen to encounter -(with, even better, the corresponding patch -:) and any propositions, -congratulations or flames at <fcron@free.fr>

Please contact Russell Coker directly for problems about SE Linux support at <russell@coker.com.au>, since he maintains this part of the code.


PrevHomeNext
Fcron: how and why?UpHow to install fcron
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/relnotes.html b/fcron-3.2.0/doc/en/HTML/relnotes.html deleted file mode 100644 index 27f8ba6..0000000 --- a/fcron-3.2.0/doc/en/HTML/relnotes.html +++ /dev/null @@ -1,190 +0,0 @@ - -Release notes: fcron 3.2.0
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevChapter 1. Fcron: how and why?Next

1.4. Release notes: fcron 3.2.0

  • Nothing special to be aware of in this release.


PrevHomeNext
ChangesUpTodo
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/thanks.html b/fcron-3.2.0/doc/en/HTML/thanks.html deleted file mode 100644 index 379ed9a..0000000 --- a/fcron-3.2.0/doc/en/HTML/thanks.html +++ /dev/null @@ -1,330 +0,0 @@ - -Thanks
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevChapter 1. Fcron: how and why?Next

1.6. Thanks

Uwe Ohse <uwe@ohse.de>

Corrected a bug concerning the signals, has reported -security issues.

Max Heijndijk <cchq@wanadoo.nl>

Has made the rpm packages.

Gabor Z. Papp <gzp@papp.hu>

Helped to correct some bugs in installation process and -reported various bugs.

Clemens Fischer <rabat@web.de>

Proofread docs, reported bugs, and made some -propositions.

Henrique de Moraes Holschuh -<hmh@debian.org>

Has worked on fcron's integration in Linux Debian system, -reported bugs and corrected some of them, made some propositions.

Thomas Whateley <thomas@whateley.net>

Has done a big part of Solaris port, implemented the -fcron.conf file, and Vixie crontab format support.

Guy Geens <ggeens@iname.com>

Fixed a nasty bug in goto_non_matching() which caused an -endless loop (midmonthly jobs executed after the 15th of the month).

Patrick Ohly <Patrick.Ohly@gmx.de>

Added fcron's option -y, -o and -l, and fcrontab's stdout -and volatile, in order to run fcron from time to time in foreground, for -instance in a ppp-up script.

Russell Coker <russell@coker.com.au>

Helped me to secure fcron, make code clearer, -and he wrote the patch for SE Linux support.

Alain Portal

Initial French translation of the manual pages.


PrevHomeNext
TodoUpUsing fcron ...
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/todo.html b/fcron-3.2.0/doc/en/HTML/todo.html deleted file mode 100644 index ef8a55d..0000000 --- a/fcron-3.2.0/doc/en/HTML/todo.html +++ /dev/null @@ -1,350 +0,0 @@ - -Todo
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevChapter 1. Fcron: how and why?Next

1.5. Todo

Here are some things that should be done ... Note that some of these - entries are just some ideas, which may be done in - the long run.

If you see something you'd really like to see implemented here, feel - free to send me a mail: it may make me move it to the top of my to-do list ;) . -

If you plan to help me, please send a mail at <fcron@free.fr> to prevent two - people from doing the same thing. You can send me some propositions as - well, or ask me to move something to the top of the heap ;) .

1.5.1. High priority

  • Option to compile and install from git sources without generating the doc

  • register in OS suspend/hibernate mechanism to stop fcron when going to sleep and start it again when resuming from sleep (see FAQ entry).

1.5.2. Low priority

  • Add unit tests using some unit-test framework (turn the tests/* code into unit tests)

  • For environment settings, make a var substitution.

  • add a mailsubject option, for custom mail subjects (for instance, in case of a job containing something secret -- password, etc -- in the command line).

  • Use directory notifications (FAM) / inotify, and support a fcrontab - and a cron.d as Vixie cron does (directly included in fcron itself, not thanks to a script as now). - However the parsing work is done by fcrontab, and should probably keep on being done by fcrontab for - security and stability reasons: have fcron call fcrontab to do that job?

  • could be worth checking fcron for memory leaks using specialized library (just in case...)

  • option to put a maximum limit on the execution time of a task + terminate it if not finished yet + send email to let the user know

  • setting to limit the number of jobs of a single user in the serialq/lavgq to X jobs + make sure root always has Y slots that it can use in those queues (i.e. number of slots used by root + number of free slots >= Y)

  • Test (and use ?) docbook2x-man -- xlstproc ? cf http://antoine.ginies.free.fr/docbook/ch09.html

  • find way to have the non translated pages of the French translation be updated automatically (changes, todo, etc -> copied from the English doc)

  • add a return code for jobs which would mean that they - should not be run again (in case of an error, etc...).

  • PAM support (included in fcron, but needs more tests by - people using PAM - not implemented in fcrondyn: is it needed - in fcrondyn anyway?)

  • support for per user serial queue (especially for root)

1.5.3. Ideas

  • add a system of modules: at startup, fcron loads some - modules (.so files). Then, when fcron should run the job, it - calls a function of the module, and let it manage the job - (threads?). (do linux dlopen(), etc exist on other systems? - - yes: thanks Harring ;) dlopen exists on all POSIX system - - even windoze - abait it does not use the same insterface of - function calls. But it can be easily implemented to port to - another system.).

  • (related to the system of modules? create a kind of - dependencies?) Add a way to run a job only if a command - returns true. It would permit, for instance, to run some jobs - on a laptop only if it is on AC power.

    and depending on the return value of the command, cancel - the execution, or wait x seconds before trying again, etc. - In this case, needs change the way the jobs are queued?

  • add an option/module to prevent fcron from running a job if the - system is running on battery (anacron does it?)

  • Add a way to stop a job (SIGSTOP) if the lavg gets to high, - and restart it (SIGCONT) when the lavg has decreased.

  • Add a timeout for task completion: if a task takes more - than a specified timeout, then start another script with the - initial task PID as argument. That would allow a kill with - different signals (-HUP, -TERM -STOP, .... or any other action - like sending a mail to sysadmin to alert him/her that a task - is taking too much time and that he has to have a look at it.) - (add an option to specify the cmd, and combine w/ option until) -


PrevHomeNext
Release notes: fcron 3.2.0UpThanks
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/HTML/using-fcron.html b/fcron-3.2.0/doc/en/HTML/using-fcron.html deleted file mode 100644 index 6d70bb6..0000000 --- a/fcron-3.2.0/doc/en/HTML/using-fcron.html +++ /dev/null @@ -1,220 +0,0 @@ - -Using fcron ...
Copyright © 2000-2014 Thibault GodouetFcron 3.2.0 Web page : http://fcron.free.fr

Fcron documentation
PrevNext

Chapter 2. Using fcron ...

Table of Contents
2.1. Manual pages of fcron
fcron -- daemon to execute scheduled tasks
fcron.conf -- configuration file for fcron and fcrontab
fcrontab -- manipulate per-user fcrontab - files
fcrontab -- tables for driving fcron
fcrondyn -- dialog dyn-amically with a running fcron daemon
2.2. Frequently Asked Questions

PrevHomeNext
Thanks Manual pages of fcron
\ No newline at end of file diff --git a/fcron-3.2.0/doc/en/changes.sgml b/fcron-3.2.0/doc/en/changes.sgml deleted file mode 100644 index 0f78fe2..0000000 --- a/fcron-3.2.0/doc/en/changes.sgml +++ /dev/null @@ -1,1313 +0,0 @@ - - - - - Changes - - - From version 3.1.3 to 3.2.0 - - Print date as %Y-%m-%d (the ISO 8601 date format), to avoid being ambiguous in international context. Also always use the ':' as hour:minute separator (there was a couple of 'h' instead). - - - Don't fully disable a @-line when something goes wrong (e.g. fcron didn't shut down cleanly). The idea was to prevent infinite loops, but this was overkill. Instead set its next execution to now+frequency.` - - - Cosmetic changes in the log lines (quote the job shell commands) and fcrondyn (use the pipe char "|" as a column separator). - - - Fixed file descriptor leak when executing jobs in case of NSS failures (thanks Pavel Stano). - - - - - From version 3.1.2 to 3.1.3 - - Fixed compilation on Solaris 10, and fixed fcrondyn authentication without a password on that platform. - - - Fixed bug where LONG_MAX could potentially be used in functions like localtime(), which is too big for localtime(). This was unlikely to happen unless there was another problem in the first place. - - - fcrondyn -x no longer adds null characters at the end of the output. This would cause problems if the output was piped to something as grep. Thanks Dimitri Semitsoglou-Tsiapos for pointing this out. - - - Fixed minor bug in fcronsighup resulting in log errors about closing the signal file - - - fcrondyn no longer crashes when receiving an EOF when using readline (thanks Wade Carpenter for the patch) - - - fcrontab no longer crash if mailto is empty (thanks Olaf for reporting the issue) - - - Fixed SELinux issue with Linux user being used instead of the SELinux user (thanks Sven Vermeulen for the patch) - - - - - From version 3.1.1 to 3.1.2 - - bug fix: fixed fcron crash bug when using fcrondyn - - - bug fix: the configure option --without-sendmail was not working correctly. - - - bug fix: inline runas wouldn't work with Vixie-cron style shortcut lines. - - - bug fix: fixed bug in the code to log to a file. - - - systemd: fixed the installation on systems using systemd, and also don't kill jobs when killing fcron. - - - Made file closures more robust to prevent bugs difficult to troubleshoot to creep in. - - - - - From version 3.1.0 to 3.1.1 - - Added readline support for fcrondyn - - - tweaked 'make indent' options and applied - - - Fcron can now log to a file (without syslog) - thanks Matthew Signorini. - - - fixed fcrontab edition of *ly lines (hourly, daily, etc) - - - fixed fcron crashes when noticenotrun was triggered - - - - From version 3.0.6 to 3.1.0 - - Vixie cron compatibility: added options @reboot, @daily, @hourly, etc. Also added more generic options runatreboot, rebootreset and runonce. - - - Pass fcrondyn client credentials through the socket when possible so as the user doesn't need to type his password when using fcrondyn. - - - added audit (libaudit) support - - - Better validation of string arguments of fcrontab options. In particular for timezones, previously a space could be added at the beginning or the end of the timezone with no warning, and this led fcron to use an unexpected timezone, which could cause confusion. - - - Allow tasks to run every seconds - - - don't inherit fcron's environment when running a job but build the environment from scratch (cleaner, and this is what Vixie cron does) - - - fcron now sets the email headers X-Cron-Env and Auto-Submitted (as described in RFC 3834). - - - email encoding: fcron now sets the email headers Content-Type and Content-Transfer-Encoding. They can be controlled by setting the CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in fcrontabs. - - - Added systemd service definition (thank you Reiner) - - - Allow Makefile parallelism (e.g. make -j 4) - - - bug fix: fcrontab: don't alert about invalid character when correcting fcrontab twice - - - bug fix: fixed free_safe() function (replaced by macro). - - - bug fix: configure script: usage of sendmail couldn't be disabled - - - bug fix: fixed a potential (unlikely) 1 byte overflow in strncat() in socket.c - - - Quite a lot of code clean-up and refactoring -- e.g. implemented generic unordred list for lavgq / exeq. - - - - From version 3.0.5 to 3.0.6 - - Fixed bug preventing normal user from running fcrontab -l if fcron's uid!=gid - - - Fixed fcrontab's PAM initialization when working on the systab user. - - - Added check_system_crontabs.sh which is to replace the less portable check_system_crontabs.bash. - - - Added option -c to check_system_crontabs.sh to specify a fcron.conf file to use - - - Fixed Makefile bug preventing installation when building from a different folder than the sources (wrong fcron.conf path) - - - - - From version 3.0.4 to 3.0.5 - - Security issue: fixed security issue that allowed malicious user to read any file readable by group 'fcron' (in particular fcron's config files and the fcrontabs of non-root users). On systems without seteuid() (i.e. quite exotic systems) then the bug is harder to exploit but any file could be read. - - - Improved general security of fcrontab and fcrondyn by dropping more privileges. - - - Work on portability (aix, hpux, irix, tru64 unix, solaris). Thanks Peter O'Gorman for his patch! - - - Patched startup script to make it more compliant to the LSB. - - - Increased maximum number of fcrontab entries from 256 to 1024. - - - bug fix: if fcron could not fork() to run a job, then the job would still appear to be running until fcron is restarted (thanks Alexander Y. Fomichev for noticing this bug). - - - bug fix: fcrontab used to accept MAXENTRIES+1 fcrontab entries - - - chdir to /tmp before executing the editor (as some editor needs to be able to read information on the current folder). - - - - - From version 3.0.3 to 3.0.4 - - Initialize the random number generator with some values specific to the machine so as two fcron started exactly at the same time on two different machines run their random jobs at different time. This is useful for clusters for instance. - - - Added option erroronlymail so as the output of a job is emailed only when the job exited with a non-zero status. - - - Bug fix: in certain conditions, jobs could be executed outside their interval of execution when using option random on %-lines. - - - Fixed bug which prevented the pid of the job to be written to the (grand-)parent process. This was not a major issue but would prevent fcrondyn from working well with the concerned jobs. This bug was caused by a close() function applied twice on a file descriptor, which would trigger the bug in some rare occasions (only one affected linux system reported). - - - Fixed bug which would stop fcron from running any job any more on the affected system and until fcron was restarted if the bug above occured. - - - Cleaned-up the closures of file descriptors (check for errors, etc). - - - - - From version 3.0.3-rc1 to 3.0.3 - - The configure script now check that the make command is GNU make (which is required to build fcron). - Bug fix: better handling of getpwnam() errors (we cannot rely on errno to spot an error). This was causing problems for AIX for instance. - - - - - From version 3.0.2 to 3.0.3-rc1 - - New configure scripts, with more standard default values for paths, etc. This aims at simplifying the packaging of fcron. Thanks go to Patrice Dumas for his patch! - - - New make targets: perms and strip. This aims at simplifying the packaging of fcron. Thanks go to Patrice Dumas for his patch! - - - Set environment variable LOGNAME when running a job (as Vixie Cron does: thanks Martin McGreal for pointing that out). - - - Portability work for AIX 5.2 and Solaris 8 and 10 (thanks Martin McGreal). - - - Chmod()ed fcron's fifo file to 777. It was 666 previously, but the exec bit is needed for AIX and apparently ignored on other platforms, so we now set it to. - - - Set TZ environment variable for lines which uses fcron option timezone. - - - A file was closed twice by fcrontab: removed the duplicate close(). - - - Replaced include sys/termios.h by termios.h. - - - Fixed a fcrontab bug cause by an return value not handled and resulting in many useless (but pretty much harmless) iteration in a loop. - - - - - From version 3.0.1 to 3.0.2 - - Use sockaddr's field sa_len/sun_len on system defining it (BSD, ...). It should allow fcrondyn to connect to fcron on these systems. - - - Non-SELinux systems: run each job in a different session by calling setuid() for each one of them. This is to improve compatibility with Vixie cron. - - - Don't use the shell defined in /etc/passwd by default, but use the default value from fcron.conf instead. This is for compatibility with Vixie cron. - - - Use root name and group instead of root uid and gid. This seems more logical since the configure scripts asks for the name and group and not the uid and gid. - - - Added an init file for Suse in script/ (contribution from Alex: thanks!). - - - Minor spelling fixes in the French documentation. - - - - - From version 3.0.0 to 3.0.1 - - fcrontab: access user's directory with user's rights (necessary if user/group fcron has not the right to read the directory). - - - improvement in check_system_crontabs: more comments, added some help messages, added command line options, cleaner, safer code. - - - Improved English documentation: clarified some previously-unclear points. - - - Added French translation of the manual pages (thanks go to Alain Portal) - - - Removed old documentation from the package. - - - Better handling of the pipes in job.c: this should remove some problems encountered on BSD systems. - - - bug fix: do not use a tv_usec > 999999: should fix the problem encountered on BSD systems with select(). - - - bug fix: fixed a bug in make_msg(): the size of a string written to a buffer was not controlled correctly in some cases. This could result in buffer overflow and thus this was security problem. However the bug seems not exploitable as the part of the string which could overflow the buffer could not be freely defined by an attacker (it was either ": " or one of the strings returned by strerror()). - - - Bug fix: set the FDs correctly for select(). - - - - - From version 2.9.7 to 3.0.0 - - Added a missing entry in changelog (changes from 2.9.6 to 2.9.7, bug fix for NetBSD). - - - Merged a patch for the check_system_crontabs script (Security enhancements and cleanups). - - - - - From version 2.9.6 to 2.9.7 - - Added time zone support (option timezone). - - - Better support FreeBSD's users and groups modifications in - fcron's install scripts. - - - Fixed a bug which used to make fcron send empty mails on very - recent systems. - - - Fixed a bug which prevented fcrondyn to being used on NetBSD (thanks go to Gabor Z. Papp). - - - Added some casts in fileconf.c and save.c (to avoid some - warnings when compiling on HP-UX). - - - Added a FAQ entry on how to emulate an anacron entry. - - - - - From version 2.9.5.1 to 2.9.6 - - fixed the bug which made jobs run an hour too early after a - daylight saving time change. - Added detailed explanations about when a job will run when - there is a DST change in the FAQ. - - - fixed fcrondyn's "Unknown command" bug on x86_64 (thanks go to - Georgi Georgiev). - - - made fcrontab behave better when there is no space left in the - spool directory (used to truncate the fcrontab source file). - - - Added a script, check_system_crontabs, to emulate Vixie cron's - behavior about /etc/crontab and /etc/cron.d. Please have a look - at the top of script/check_system_crontabs for more information. - - - - HP-UX support (needs more tests). - - - bug fix: restore umask even if fcron runs - unprivileged. - - - - - From version 2.9.5 to 2.9.5.1 - - Fixed serious security vulnerabilities in fcronsighup, and - improved fcronsighup's overall security (drop privileges, better - check user inputs, etc). - - - Fixed several typos in the doc. - - - Updated debian package scripts (patch from debian - maintainer). - - - - - From version 2.9.4 to 2.9.5 - - Ported to HP-UX (thanks go to Scott Tinsley) - - - Implemented fcrondyn commands run and runnow. - - - Merged patch from Russell Coker for new SE Linux. - - - Merged debian/ dir for debian package. - - - Mail reports: put the same username in the To: field than the - one we give as recipient to the MTA. mailto can now also be a - fully qualified email address. - - - changed a log message: a job which has ended without error is - reported has "completed" (which is more appropriated than - "terminated"). - - - - Internal changes in log.c: code is more segmented, and code - has been added to be able to send log message to fcrondyn. Syslog - messages are now never longer than MAX_MSG (even with string from - strerror()). - - - Fixed a bug which happened on Daylight Saving Time change on - some systems. It would make fcron run into a nasty infinite loop. - Added a sanity check in set_nextexe() to avoid such - things. - - - Fixed a crash bug: in 2.9.4, if a user run ls_exeq when a job - is running and has been removed from its fcrontab, it makes fcron - crash. - - - Fixed a small bug: scripts were supposing perl was in - /usr/bin. - - - Fixed a bug which caused the pid of a child process to be - incorrectly read - - - fixed memory leak: some strings returned by log.c:make_msg() - weren't always free()d. - - - bug fix: fcrondyn commands renice and kill used not to handle - correctly the case where a job has several entries in exeq - (exesev jobs). - - - - - From version 2.9.3 to 2.9.4 - - Merged support for SE Linux (patch from Russell Coker: thanks!) - - - - Work on the documentation (fixed spelling mistakes, tried to - make things clearer in fcrontab.5) (thanks Bill Wohler for your - help!) - - - Changed the subject line of mail reports: it now contains the - subject line, and is very similar to vixie cron's one. - - - Added a sum-up at the end of ./configure. - - - bug fix: "makewhatis" bug is fixed -- at last! - In fact, the problems encountered were due to an abusively - ignored signal SIGPIPE. - - - bug fix: possible crash of fcron when trying to save a file - if there was no space left on device. - - - bug fix: we don't consider '-' and '_' as word delimiters for - a username before the command anymore, since many programs have - one of these characters in their name. - - - bug fix: option first was broken in fcron 2.9.3. - - - fixed a little typo in an error message - (could->couldn't) - - - bug fix: do not ignore the last line of a fcrontab if there - is no \n before the end of file. - - - fixed compile on SunOS 5.9 . - - - Fcron now compiles on MacOS X. - - - added some $srcdir to be able (again ;) ) to run configure - from another directory. - - - Perf improvement: use buffer for i/o in run_job(). - - - - - From version 2.9.2 to 2.9.3 - - security issue: fcron used not to check the fcrontabs - installed by root for a standard user. This could make an - inattentive superuser install a user job runas(root) - involontary. - - - Perf improvement: we now use buffers to write something to - disk (became necessary due to the use of O_SYNC). - - - To avoid loss of data in case of an hardware failure or a - system crash, fcron now saves files to a temporary name, and then - renames them to their definitive filename if everything's - ok. - - - The PID indicated by fcrondyn is now the pid of the job itself - (up to now, it was the one of the fcron process controlling the - job). - - - Implemented functions kill (send a signal to a running job) - and renice (change the priority of a running job) in - fcrondyn. - - - Added fcron's option -q to control the lavg and serial queue - sizes. - - - - Added some timeouts in fcron for fcrondyn clients. - - - Fcron is less restrictive concerning mailto addresses. In - particular, you can now use address like user@host. - - - bug fix: in 2.9.2, fcrontab and fcron did not set correctly - some file modes. - - - bug (introduced in 2.9.1): when a job stops with an non-zero - exit status or because it has been signaled, send a mail to its - owner to inform him (in 2.9.1 and 2.9.2, the mail was sent, but - contained nothing). - - - code clean: use the same scheme for all struct types, removed - some code redundancy (save to disk management). - - - - - From version 2.9.1 to 2.9.2 - - Added a system fcrontab. Root can access it with fcrontab by - using "-u systab". - - - fcrondyn's ls_lavgq, ls_serialq and ls_exeq are now - functional. - - - mailto can now be set to a non-real user (for ex., an - alias). - - - fcron now calls shutdown() when a connection from fcrondyn is - closed. Another change in the code should prevent fcrondyn from - not returning to the prompt after a command has been run. - - - use open() instead of fopen() to write files, for more - security. - - - fcrontab sets euid=uid before running the editor. This is - required by some programs (for instance, perl). - - - bug fix: using DESTDIR with make did not work with the - doc. - - - Code clean: changed macros to make parameters clearly - different from vars. - - - - - From version 2.9.0 to 2.9.1 - - fcron can now be run without root's privileges (see FAQ) - - - added configure's option --with-boot-install . - - - Minor change in the PAM code of fcron: may work better on - some systems. - - - configure script now uses getpwnam() and getgrnam() instead of - reading directly /etc/passwd and /etc/group: this makes easier - the use of NIS, LDAP, etc. - - - Bug fix: using some "cmd > /dev/stderr" (or stdout) in a - script used to make fcron send a bogus output mail. (rewrite of - the code managing the output of jobs) - - - Bug fix: typo error prevented fcrontab to be compiled on some - systems. - - - Minor bug fix about stdout option. - - - Minor bug fix: giving fcrontab's option -c a relative path - now works correctly. - - - - - From version 2.1.0 to 2.9.0 - - Added some new options to fcron: -y, -o, -l; and some - fcrontab options: stdout and volatile. All these permit to make - fcron run in foreground, execute all the pending jobs (mainly - %-jobs), and return. May be used, for instance, in a ppp-up - script with a dialup connection to update a software - regularly. - - - Added fcrondyn: this software allows users to dialog - dyn-amically with a running fcron daemon. Currently, it can list - jobs of the user running it (or all jobs for root). In the near - future, it should be able to run a job, change its next time and - date of execution, renice a running job, send a signal to a - running job, etc. - - - All the documentation has been ported to SGML DocBook. - It results on a much better HTML version, which I recommand - you use. It is installed by default in fcron documentation - directory (for instance, on my system: - /usr/share/doc/fcron-X.X.X/). - - - Fcrontab.5 has been updated and improved. Some examples have - been added and some possible use of the different lines and - options are mentioned. - - - Added option random, which allows an entry run periodically to - be run at a random time in its intervals of execution, instead of - being run as soon as possible. - - - added some more checks in fileconf.c: allow user to use - hours, days, hourly, daily, etc options only with %-lines: it is - ignored if set for a &-line, which is quite confusing for users - who may type, for instance "&hourly" instead of - "%hourly". - - - bug fixed: you can now use arguments in the var EDITOR and - VISUAL. - - - bug fixed: fcron used to call sometimes a sleep(-1), which - causes a freeze (no crash, but a very very long sleep :) ) under - system using LIBC5, and maybe on some non-linux systems. It was - not causing any problem under GLIBC2. Thanks go to Nick - Pasich. - - - - - From version 2.0.0 to 2.1.0 - - PAM support for fcron and fcrontab (need testing! - help - would be appreciated). - - - Fcron now send a mail if a job has noticenotrun set and could - not be run because of a queue full. - - - Fcron now compiles on AIX (thank you, John A. Parker!), and a - few AIX-only bugs have been fixed, but it may remain some - problems to correct. Please try, and tell me! - - - We now use constants ROOTUID and ROOTGID instead of some - hard-coded "0", and those constants are defined by the configure - script (we use the uid/gid of the name given with the option - "--with-root{name|group}"). It allows fcron to be run on system - on which root is not uid/gid 0/0. - - - code cleaning. - - - bug fixed: setting lavg to (0,0,0) used to make the line be - added in the lavg queue instead of the serial queue (but the - lavgs were ignored anyway). - - - bug fixed: fcrontab's "-z" option was not ignoring previous - user's fcrontab version. - - bug fixed: on systems using putenv(), the var HOME, USER and - SHELL wasn't correctly assigned. On system supporting setenv() - (which is the default), the problem did not occur. (thanks go to - Evan A. Zacks). - - - - - - From version 1.1.1 to 2.0.0 - - using SIGUSR2 on fcron makes it print its current schedule on - syslog and toggles on/off the printing of debug info on - syslog. - - - fcron behavior on serial and lavg queues overflow has changed: - in previous versions, it used to run a job to make room to put - a new one. As it may conduct to a overwhelming of system - resources, the new job is now refused (and not run). An error - message is also logged through syslog. - - - a mail is now sent if the job exited due to a signal, or if - exit status is non-zero. Read FAQ if you experience problems - about that. - - - added a FAQ. - - - bug fixed: a midmonthly job executed after the 15th of the - month used to cause an endless loop. Thanks go to Guy Geens - (thanks a lot!). - - - bug fixed: inserting a job in serial queue or running a job - not finished at startup was broken, unless the job was - strict(no). - - - bug fixed: some 1.1.1 changes used to make fcron impossible - to compile without sendmail (./configure's option - "--with-sendmail=no"). - - - bug fixed in sysV boot script: we know specify explicitly the - path to fcron. - - - bug fixed: unresolved error used to occur on some system not - defining getopt_long(). - - - - - From version 1.1.0 to 1.1.1 - - security fix: sym link attack against fcrontab. Any user - allowed to use fcrontab used to be able to remove any fcrontab, - and potentially to truncate any file to zero-length (under - certain conditions, anyway). - - - fcron and fcrontab now have a configuration file: fcron.conf. - It contains the default paths (spool dir, etc) and programs to - use (editor, shell, etc). Thanks to that file, several fcron - processes can run simultaneously if they have a different config - (different spool dir and pid file). - - - added fcron's option "-m" to control the number of serial jobs - which can be executed simultaneously. - - - added fcron's option "-n" to create a new spool dir. - - - command line syntax of fcrontab has changed: you can know use - "user" (after the file name if any) instead of "-u user". It - should make fcrontab a little more intuitive. - - - It is now possible to put a user name between the time/date - fields and the shell command of a fcrontab line (for Vixie cron - format compatibility): it is equivalent to runas(user). - - - support of Solaris (and SysV). - - - early support of OpenBSD. - - - the installation scripts now use nsswitch.conf to detect if a - user or a group exists on the system. That way, naming services - (NYS, ldap, etc) are supported. - - - the man page and doc is now installed by default in - $prefix/share/{man|doc} (instead of the previous - $prefix/{man|doc}) ($prefix is generally "/usr"). - - - bug corrected: fcron used not to add a serial_sev line to - serial/lavg queue if this line was running, saying "already in - serial queue". - - - - bug corrected: a "all" in fcron.allow with no fcron.deny file - was not considered as an allow rule. - - - - - From version 1.0.3 to 1.1.0 - - The binary format of the binary fcrontabs has changed: there - is now no more need to reinstall the fcrontabs when upgrading - fcron (but you need to convert your fcrontabs to the new format - once), and this format should allow extensions without losing any - information. - - - better management of the errors in load/save fcrontabs - functions. - - - the doc is a clearer about @-lines. - - - more security tests by fcrontab in the case it is suid root - (but, if possible, it should be suid fcron as it is far more - secure). - - - we now remove unwanted fcrontabs before loading them in memory: - well, it seems to be more logical like that :)) . - - - bug fix: using options first with a &-line may have led to - some problems during the first read by fcron (mail send - erroneously if noticenotrun was used, bad set of the first - execution's time and date or immediate execution if bootrun was - set: in fact, the line was not recognized as a new line). - - - bug fix: fcron used not to be able to be compiled from any - directory because of an absent -I. line option for the compiler - (the config.h file was not found). - - - - - From version 1.0.2 to 1.0.3 - - fcron can now be configured and compiled from any directory - (not only from the source dir). - - - bug fix: fcron now sets umask to the value it got at start - before running a job. - - - bug corrected: a bug used to make the "truncated" system not - to work correctly, so a too long log message used to make fcron - crash. - - - - - From version 1.0.1 to 1.0.2 - - the user for whom a job is run is now logged. - - - installation script is now more explicit about what it is - going to do. - - - a boolean value can now also be set by "yes" and "no". - - - bug corrected: bootrun option works again. - - - bug corrected: shell variable containing underscore (_) used - to be rejected. - - - bug corrected: installation script used not to check if user - fcron was in group fcron, in which case fcrontab doesn't work - correctly (it cannot, in that case, read the fcrontabs for - non-privileged users). - - - - - From version 1.0.0 to 1.0.1 - - security fix: a user used to be able to read a file owned by - root if root runs a "fcrontab -u user -e". - - - - - From version 0.9.5 to 1.0.0 - - added fcron's option "-s" to control the time between two - saves of the fcrontabs on disk. - - - installation scripts now support better FreeBSD and sh. - - - bug corrected: configure's options prefix and - without-sendmail used not to work. - - - bug corrected: installing an fcrontab by "fcrontab file" - wasn't working correctly with a relative path (a path not - beginning by a "/"). - - - - - From version 0.9.4 to 0.9.5 - - security fix: the jobs of a fcrontab reinstalled by root used - to be run as root (until the next action of the owner on the - fcrontab). - - - added options strict and noticenotrun to tell fcron - respectively if a job should be removed from lavg queue if its - execution interval is exceeded, and if fcron should mail user to - report the non-execution of a job. - - - added option nolog in order to log only errors (i.e. no - message like "job x started"). This can help to reduce the disk - access and save energy on a laptop, and make the log more - readable if some jobs are run very often. - - - better handle of changes of the uids of users in /etc/passwd - (no more need to reinstall the fcrontabs). - - - fcron.deny and fcron.allow files are now owned by root (they - used to be owned by user fcron). - - - added ./configure's option --with-answer-all to be able to use - "make install" in a non-interactive way (can be useful for - automatic installers). - - - added option --with-rootname and --with-rootgroup to - ./configure script for a better support of exotic systems. - - - bug corrected in make install (script user-group): the script - used not to handle correctly the absence of both useradd and - adduser commands. This script now checks and tries to add a - group fcron if necessary. - - - - - From version 0.9.3 to 0.9.4 - - security improvement: after the (horrible) root exploit found - in version 0.9.3, I decided to improve fcron/fcrontab's security. - I've included some strong (I hope :)) ) tests in fcron to ensure - that only root can run commands as superuser and use option - runas. Even an corrupted fcrontab should not be able to get - root's privileges. Pretty reassuring, isn't it? - - - runfreq(1) lines have been replaced and extended by a new kind - of line: the lines beginning by a "%". It's now possible to tell - fcron to run a command once an hour, a week, etc, but only at - some specified moments. For instance: '%weekly * 4-7 echo "foo"' - will run the command 'echo "foo"' once a week between 4 and 7 in - the morning. (see "man 5 fcrontab" for more details). - - - installation process improved: user is now consulted before - anything is done about installation in boot scripts, etc. The - default username of fcron is now ... fcron! (this is more secure - than daemon, which can be used by other programs). - - - fcron now adds the host name to the addresses of the mails it - sends. - - - fcrontab determines the identity of the running user by his - uid (it used to use the var USER). That way, fcrontab should act - as crontab under a "su". - - - bug fixed: a tmp file was not removed after a "fcron - -z" - - - bug fixed in fcrontab: an expression of the form "start-stop" - with start > stop used to be incorrectly managed by fcron. - - - bug fixed: when fcron and fcrontab were installed under a - non-privileged user rights, a normal user used to be not able to - use fcrontab. - - - bug fixed: while fcrontab was asking user if he would like to - correct an erroneous line, the answer was not correctly - handled. - - - - - From version 0.9.2.1 to 0.9.3 - - installation scripts improved. - - - added code to avoid infinite loops. - - - bugs corrected in the functions to set the time and date of - next execution. - - - bug corrected in the check for invalid lines. - - - - - From version 0.9.2 to 0.9.2.1 - - minor bug corrected in Makefile - - - - - From version 0.9.1 to 0.9.2 - - fcron now uses autoconf (the configure script), so it should - be easier to compile and install it and various systems. - - - support of lavg options for all systems where getloadavg() is - defined (BSD unix, etc) and on Linux systems with a proc - filesystem (fcron can use /proc/loadavg). - - - a job can now be executed several times simultaneously if - option exesev is set to 1. - - - user can determine if a job can be put several times in the - serial queue simultaneously thanks to option serialonce. - - - fcron does not wait anymore for the completion of all jobs of - a file before deleting it from memory. - - - fcron handles correctly the jobs which are both serial and - lavg. - - - fcron now runs under a specific user and group (other than - root) for basic security reasons. - - - bug corrected: fcron used to crash after a file was deleted - from memory in some conditions. - - - corrected the bug which used to appear when a line was put - several times in the serial queue: in this case, fcron used not - to count correctly the number of running serial jobs. - - - bug corrected: fcrontab used not to remove the temporary file - it creates if no modification where done to a file after an - edition using the -e option and on errors. - - - bug corrected: fcrontab now defines correctly the remain - value of a line based on time and date beginning with a "&" but - without runfreq definition. - - - bug corrected: fcron used to not install correctly a file - edited if a correction was made. - - - bug corrected: reset option was not working correctly when - set to a single line. - - - - - From version 0.9.0 to 0.9.1 - - support of the option mailto for each line (it used to be set - for the whole file). - - - the value of the runas and mailto options are now stored - internally as a uid number: you must reinstall all the system's - fcrontabs if you change the uid of a user. - - - Support of options "lavg*", in order to run a job under a - specific 1, 5 and/or 15 minutes system load average value(s). - When the job should be run, it is placed in a specific queue and - the load average is checked regularly until the right value(s) - is/are got. The options "lavgor" and "lavgand" permits users to - tell fcron if they prefer to perform a logic OR or AND between - the 1, 5 and 15 load average values. The option "until" can be - use to force the execution of a job after a determined timeout if - the right conditions to run the job are not filled. - - - fcron now uses putenv() in place of setenv() (setenv() is not - POSIX compliant). - - - a mailto option set to "" is now equivalent to - "mail(false)". - - - corrected the bug which used to make a bootrun and runfreq(1) - job executed twice when fcron's start occurs in an interval of - execution of the job. - - - corrected the bug which used to make fcron crash after - serial_array is resized. - - - - - From version 0.8.3 to 0.9.0 - - support of options in fcrontabs. Options can be specific to a - line or defined once for every line located after their - definition (a special option "reset" set all options to their - default). Some options also have too names: a long name and an - abbreviation. - - - jobs can now be run be run one after the other (option - "serial"): when the job should normally be run, it is added to a - queue, which entries are executed one by one. It permits to avoid - the use of a lot of system resources for a brief moment by the - simultaneous execution of several tasks. - - - jobs can be run at system start up if they should have been - run during system down time (option "bootrun"). - - - root can run jobs as an another user (option "runas") - - - user can set a nice value to a job, but only root can use a - negative value (a negative value will increase priority) - - - user can choose to perform a logic AND or a logic OR between - day of month and day of week (option "dayor" and "dayand") - - - user can choose to mail the output of jobs (option "mail") if - any, and can force fcron to send a mail even if output is - zero-length (option "forcemail"). - - - fixed the bug which used to make fcron run a job with a - runfreq set to 1 at a wrong time. - - - fixed a bug which used to make fcrontab crash after several - corrections in edit mode. - - - - - From version 0.8.2 to 0.8.3 - - (all this bugs appeared in version 0.8.2 :) - - - fixed the bug which used to make fcron crash after a - SIGHUP - - - fixed the bug which used to prevent fcron from running some - job based on time and date - - - fixed the bug which used to makes fcron run the jobs one - second too late - - - - - From version 0.8.1 to 0.8.2 - - code has been optimized: The jobs are now queued in order of - execution. It permits avoid useless tests of all jobs every time - fcron wakes up, speeds up the determination of the time fcron - should sleep, speeds up the processing after the end of a job, - etc. I don't know why I haven't made it before :-) ... - - - fcrontab has been improved: it is now more stable (many bugs - which used to make fcrontab crash in case of errors in the - fcrontab has been fixed). Plus, it now asks if you want to make - corrections if needed when editing. - - - - - From version 0.8.0 to 0.8.1 - - ported to FreeBSD 4.0 - - - - - From version 0.7.0 to 0.8.0 - - corrected the bug which keep normal users from listing and - editing their current configuration file with fcrontab -l or - -e. - - - corrected the bugs which used to block fcron when a task was - marked for execution but fcron stopped before it has been - launched, and when fcron stopped after the end of a job but - before the output has been mailed. - - - day of week 0 and 7 now both mean Sunday. - - - the abbreviations of months and day of week are not any more - case dependent. - - - months are now defined from 1 to 12 (and not from 0 to 11) (it - was a little bit illogical :-). - - - you can now force spaces in strings if you place them in - quotes. - - - I discovered ispell :-) ... - - - I've added a kind of signature in the formated configuration - files in order to keep the daemon from attempting to read an old - configuration file which doesn't use the same syntax. - - - You can now install a file with fcrontab from standard - input. - - - others minor adds and bug corrections. - - - - - - diff --git a/fcron-3.2.0/doc/en/faq.sgml b/fcron-3.2.0/doc/en/faq.sgml deleted file mode 100644 index 0639256..0000000 --- a/fcron-3.2.0/doc/en/faq.sgml +++ /dev/null @@ -1,397 +0,0 @@ - - - - - Frequently Asked Questions - This FAQ intends to complement the man pages by following a more -practical approach. - If you think a QA should be added, please mail me it! - - - - How does fcron handle system clock adjustments? - - - - First, you must understand that fcron determines, for each job, its next -time and date of execution. It then determines which of those jobs would be the -next to run and then, sleeps until that job should be run. In other words, fcron -doesn't wake up like Vixie cron each minute to check all job in case one should -be run ... and it avoids some problems associated with clock adjusts. - - This means that if the new time value is set into the past, fcron won't -run a particular job again. For instance, suppose the real time and system clock -are 3:00, so the next job cannot be scheduled to run before 3:00, as it would -have already been run and re-scheduled. - - First, suppose you set your system clock into the past, say to 2:00, -Presuming that the last run was shortly before 3:00. then fcron will sleep until -the next job should be executed. The execution time for a job is determined by -identifying the last time that the job ran and computing the next scheduled -time. This means that the next scheduled time must be on or after 3:01. -Therefore, in this example, fcron will not run a job for at least one -hour. - - Next, if you set the system time into the future, say to 4:00, fcron will -run every job scheduled between the old and the new time value once, regardless -of how many times it would have been scheduled. When fcron wakes up to run a job -after the time value has changed, it runs all the jobs which should have run -during the interval because they are scheduled to run in a past time. - - As special case is when "@xxx" style scheduling rules are involved, you -must consider the "adjustment-interval". The "adjustment-interval" is the time -difference between the original system time and the new system time. The concerned -jobs will run at "adjust-interval" too -early or too late depending of the nature of the adjust. - - To conclude, fcron behaves quite well for small clock adjusts. Each job -which should have run does so once, but not exactly at the correct time as if -the job were scheduled within the adjustment interval. But, if you have to make -a big change in the time and date, you should probably reset all the scheduled -"nextexe" by running "fcrontab -z" on all the fcrontabs. - - - - - How does fcron handle daylight saving time changes? - - - There are two types of daylight saving time change: -the remove-one-hour change (for instance, "at 3:00, it will be 2:00"), -and the add-one-hour one (for instance, "at 2:00, it will be 3:00"). -In both cases, fcron will run the job only once (more precisely, it won't -run the job twice as many as it should have). - In the first case, the official time changes as follow -(in order of real chronological time): [x, 2:00] -> i1: [2:00, 3:00] - -> i2: [2:00, 3:00] -> [3:00, y]. i1 and i2 are the names of the two -intervals [2:00, 3:00]. For this kind of DST change, a job which should -run between 2:00 and 3:00 will run either in i1 or in i2, but not both. -Consequently, a job scheduled to run every day at 2:30 (for instance) -will be run only once. There is no way for a user to know if the job will -be run in i1 or i2. - In the second case, there is a gap in time: -the official time changes as follow (in order of real chronological time): -[x, 2:00] -> [3:00, y]. A job scheduled between 2:00 and 3:00 will get -run once, and only once, even if it should have been run several times. -For instance, a job which should have run every 10 minutes will run only -once, not 6 times, between 1:59 and 3:01. A job scheduled to run at -2:xx will run at 3:xx. For instance, if a job is scheduled to run -every day at 2:30, it will run at 3:30 the day of this kind of DST change. - - - - - - What about fcron and software suspend - (aka. suspend to RAM, to disk)? - - - We suppose here that you are using swsusp and the hibernate - script to do a "suspend to disk", but it should be similar - with other methods. - When you switch on your computer after a suspend to disk, - the system time will be incorrect, and will then be corrected - by the hibernate script. Before it is corrected, fcron may - compute the time and date of the next execution of a job: - the computation would then be incorrect (please see the entry - about system clock adjustment in the present FAQ). - So you should have the hibernate script stop fcron before - the suspend, and then restart it when the system is switched on, - ie. put a line like "RestartServices fcron" in your hibernate.conf - file. That way, the system time will always be correct when - fcron runs (assuming that fcron is started after the system time - is corrected). - - - - - How can I prevent fcrontab from considering the first -"word" of my command line as a user name i.e. "runas(word)"? - - - - Suppose you have an user called "echo" (weird idea ... :)) ). If you use -the line '* * * * * echo "Hello!"' in root's fcrontab, "echo" will be -interpreted as "runas(echo)". - To avoid that, put your command in quotes: -* * * * * 'echo "Hello!"' will work as -expected as quotes are allowed for the shell command but not for the user -name. - - - - - - - I have a job which usually terminates with a non-zero status. When it -does, I receive a email with the exit status even if the command had no output. -How can I avoid the email? - - - - You could disable email entirely by setting the "mail" option to "no". But, -if you still want to receive the standard output as email, you can add an command -which always evaluates to 0, like "/bin/true", after your primary command. This -will not affect your job nor create additional output. For example: - -* * * * * /a/non/zero/status/job ; /bin/true - - - - - - What does "loadavg" mean anyway? - - - - The "/proc/loadavg" file provides loadavg values. These values are (in -order): the system load averages for the past 1, 5, and 15 minutes; a count of -the (active tasks/active processes); the pid of last process run; - - - The active task count includes those processes marked as running or -uninterruptable. A load average is an estimate of the average number of -processes running within a specified period. The load averages are computed from -active task count. They are updated each time active task counts are taken. - - - -The load average formula is: -loadavg(d,n) = active_task_cnt - (active_task_cnt - old_loadavg)*(1/exp(d/n) - -where: d is the time interval between active task count readings, typically every -5 seconds; n is the time over which the readings are averaged. - - - - - - - How can I use fcrontab in scripts? - - - - You can use pipes with "fcrontab -l" (list the -fcrontab) and "fcrontab -" (read the new fcrontab from -input). For example: - echo -e "`fcrontab -l | grep -v exim`\n0 * * * * /usr/sbin/exim -q" | fcrontab - - - can be used to add a line. Another way to do it would be to: -list the fcrontab settings into a temporary file ("fcrontab -l > -tmpfile"); modify the temporary file ("echo $LINE >> -tmpfile"); replace the original fcrontab by the temporary; and -finally, remove the temporary file ("fcrontab tmpfile ; rm -f -tmpfile"). - - - - - - - Can I use fcron from time to time, for instance in a -script? - - - Let's suppose you use fcron in your ppp-up script. Fcron -can permit you to run some jobs at connection startup, but not at each -connection, like it would be if the job was run directly by the ppp-up script: -for instance, only once every week. - - Using fcron in a script: running a job once -every day, week, etc, at dialup connection - You can use a script like: - -# A ppp-up script ... -# run the jobs pending, then returns: -fcron -f -y -o - - in conjunction with a fcrontab file like: - -# a fcrontab file ... -%random(no),weekly,stdout * * /a/command/to/download/latest/mozilla/release -%monthly,stdout * * * /update/junkbuster/config/files - - - You can also use fcron to run some jobs until the end of -the connection. For instance, you can make fetchmail retrieve emails more often -during connection: we suppose that it is configured to retrieve mails every -hour, which launches a dialup connection if necessary, and we want it to check -for mails every 5 minutes while connected. - - Using fcron in a script: running a job until the -end of the connection - ppp-up script: - -# A ppp-up script ... -# run fcron at the beginning of the connection: -fcron -b - - ppp-down script: - -# A ppp-down script ... -# stop fcron at the end of the connection: -# -- Warning: killall may have unwanted effect on non linux systems -- -killall -TERM fcron - - the fcrontab: - -# a fcrontab file ... -@volatile,first(0) 5 fetchmail - - - - If you run fcron in several scripts, or if you run fcron -as a daemon and want also to run fcron in scripts, then you should use fcron, -fcrontab and fcrondyn's . - For more details, see fcron's command line arguments -&argonce;, , -&argfirstsleep; and in &fcron;(8), and fcrontab's options &optvolatile;, -&optstdout;, &optfirst; in &fcrontab;(5) - - - - - - Can I run fcron without root's privileges? - - - Yes, you can. To do that, see the -following instructions, but please note that fcrondyn currently does *not* work -without root privileges. - - - First, create a directory where you'll install fcron, - and some subdirectories: - bash$ - mkdir /home/thib/fcron -bash$ cd /home/thib/fcron -bash$ mkdir doc man spool - - - Then, run configure with option -, set all user names and groups to yours, -and set appropriately the paths: - - This option allows a non privileged user to run - fcron. When used, fcron does not change its rights before running a job - (i.e., if joe runs fcron, every job will run as joe). It means that - YOU SHOULD NOT RUN FCRON AS A PRIVILEGED USER WHEN COMPILED - WITH THIS OPTION or you'll have a serious security - hole. - bash$ - ./configure --with-run-non-privileged --with-rootname=thib ---with-rootgroup=thib --with-username=thib --with-groupname=thib ---with-etcdir=/home/thib/fcron --with-piddir=/home/thib/fcron ---with-fifodir=/home/thib/fcron --with-spooldir=/home/thib/fcron/spool ---with-docdir=/home/thib/fcron/doc --prefix=/home/thib/fcron - - - The rest of the installation is described in the -install file. - - - - - - Has fcron some incompatibilities with Vixie cron? - - - As far as I know, fcron supports Vixie cron's crontab syntax - fully. You should be able to use a crontab - with fcron with no modification (if not please - contact me at &email;). - The main problem is about the management of the system (f)crontab. - Vixie cron monitors the changes on /etc/crontab every minute, - and automatically takes into account the changes if any. - As for now, fcron does not do that by itself. - Fcron does not support the - /etc/cron.d/ directory either, as it is just an extension to the /etc/crontab - file. - However /etc/cron.{daily,weekly,monthly} directories will work - in fcron just fine: they are supported through the run-parts program, just as Vixie cron). - So if you want to replace Vixie cron by fcron transparently, - all you have to do is create a /usr/bin/crontab link to - /usr/bin/fcrontab, and reinstall the system (f)crontab - with 'fcrontab /etc/crontab' every time you modify it - (if you needed some more work than that, please let me know!). - You can also use the script script/check_system_crontabs - to monitor for system (f)crontab changes, i.e. changes to /etc/(f)crontab - and /etc/cron.d/. When it detects a change, it will generate - a new system fcrontab, and install it automatically. - Should you choose to use that script, please take - a look at the beginning of the script: you will find insctructions - on how to use it -- and a few warnings you should pay attention to. - With this script, the fcron's behavior should be very similar - to Vixie cron regarding /etc/crontab and /etc/cron.d/. - - - - - - How can I emulate an anacron entry? - - - As anacron, fcron does not assume that the system runs permanently. - Thus, fcron features similar functionalities to anacron, but it - has different means to achieve it, in other words other ways to define - when a job should run. Fcron is in general much more flexible - than anacron. - The best thing to do is to have look at - &fcrontab;(5), and choose the - type of line which is the most appropriate for your needs (this is - likely to be a @-line or a %-line). - On a Debian/Ubuntu, the default /etc/anacrontab looks like: -1 5 cron.daily nice run-parts --report /etc/cron.daily -7 10 cron.weekly nice run-parts --report /etc/cron.weekly -@monthly 15 cron.monthly nice run-parts --report /etc/cron.monthly - - A close fcron equivalent would be (see &optserial;): -# Run once a day/week/month, and ensure only one of those tasks is run at a time: -!reset -!serial,nice(10) -%daily * * run-parts --report /etc/cron.daily -%weekly * * run-parts --report /etc/cron.weekly -%monthly * * * run-parts --report /etc/cron.monthly - Or you could go for something a bit more specific (see &optlavg;, &optnoticenotrun;): -# Only run the tasks out of office-hours when the system load is low -# and send an email to the user if fcron couldn't run the job: -!reset -!serial,lavg(0.5,1,1.5),noticenotrun,nice(10),mailto(admin@yourdomain.com) -%daily * 0-9,18-23 run-parts --report /etc/cron.daily -%weekly * 0-9,18-23 run-parts --report /etc/cron.weekly -%monthly * 0-9,18-23 * run-parts --report /etc/cron.monthly - Also, if you do want to emulate an anacron entry of the form: - 0 delay job-identity /your/command - then you can use something as: - @runonce delay /your/command - - - - - How can I emulate a Vixie cron @reboot entry? - - - No need to emulate any more, as - Vixie cron shortcuts, - including @reboot, are now supported by fcron! - - - - - - diff --git a/fcron-3.2.0/doc/en/fcron-doc.sgml b/fcron-3.2.0/doc/en/fcron-doc.sgml deleted file mode 100644 index 5b9ee4f..0000000 --- a/fcron-3.2.0/doc/en/fcron-doc.sgml +++ /dev/null @@ -1,108 +0,0 @@ - -%decl; - -]> - - - - - - - Fcron documentation - &date; - Fcron &version; development release)]]> - - - Thibault - Godouet - - - - ©rightdate; - Thibault Godouet - - - Fcron documentation Copyright © -©rightdate; Thibault Godouet, &email; - Permission is granted to copy, distribute and/or modify this -document under the terms of the GNU Free Documentation License, Version 1.1 or -any later version published by the Free Software Foundation; with the Back-Cover -Texts being Back Cover Text. A copy of the license is included in -. - - - - &Fcron; is distributed under GPL license (please read the -license in ). - Project home page: &webpage; - Author: Thibault GODOUET &email; - - - You can get the latest HTML version of this document at: -&docurlEN; . The SGML DocBook sources are included with fcron packages. - - - - - - This release (&version;) - as every version of the -form x.y.z where y is an odd number -, is a development -release, so it may contain more bugs (and uglier ones :)) ) than a stable -release. - - - - - ]]> - - - - Fcron: how and why? - This chapter will explain you what is &fcron;, why you should need -it, and how to install it. - &about; - &install; - &changes; - &relnotes; - &todo; - &thanks; - - - - Using fcron ... - - Manual pages of fcron - This section contains the manual pages, which tell you how to use &fcron;. - &fcron.8; - &fcron.conf.5; - &fcrontab.1; - &fcrontab.5; - &fcrondyn.1; - - &faq; - - - &gpl; - &fdl; - - - diff --git a/fcron-3.2.0/doc/en/fcron.8.sgml b/fcron-3.2.0/doc/en/fcron.8.sgml deleted file mode 100644 index e07c69b..0000000 --- a/fcron-3.2.0/doc/en/fcron.8.sgml +++ /dev/null @@ -1,317 +0,0 @@ - - - - - - fcron - 8 - Fcron &version; development release)]]> - &date; - - - fcron - daemon to execute scheduled tasks - - - - - fcron - -c file - -d - -b - -s time - -m num - -q num - - - fcron - -c file - -d - -f - -o - -y - -p file - -l time - - - fcron - -n dir - - - fcron - -h - - - fcron - -V - - - - - Description - -&Fcron; should be started from /etc/rc or -/etc/rc.local. Unless the (or -) option is given, it will return immediately, so -you don't need to start it with '&'. - -&Fcron; loads users &fcrontabf;s (see &fcrontab;(5)) files previously installed by -fcrontab (see &fcrontab;(1)). Then, &fcron; calculates the time -and date of each job's next execution, and determines how long it has to sleep, -and sleeps for this amount of time. When it wakes up, it checks all jobs loaded -and runs them if needed. When a job is executed, &fcron; forks, changes its user -and group permissions to match those of the user the job is being done for, -executes that job and mails the outputs to the user (this can be changed: see -&fcrontab;(5)). - -Informative message about what &fcron; is doing are sent to -syslogd(8) under facility cron, -priority notice. Warning and error messages are sent -respectively at priority warning and -error. - - -&fcron; sleeps at least &firstsleep; seconds after it has been started before -executing a job to avoid to use too much resources during system boot. - - - - - Options - - - - - - - Don't fork to the background. In this mode, &fcron; will -output informational message to standard error as well as to syslogd. - - - - - - - Force running in background, even if &fcron; has been -compiled to run in foreground as default. - - - - time - -time - - Save &fcrontabf;s on disk every - time sec (default is 1800). - - - - num - -num - - Set to num the maximum number - of serial jobs which can run simultaneously. By default, - this value is set to &serialmaxrunning;. - &seealso; option &optserial; in &fcrontab;(5). - - - - num - num - - Set to n the number of jobs the serial queue and -the lavg queue can contain. - - - - file - -file - - Make &fcron; use config file -file instead of default config file -&etc;/&fcron.conf.location;. To interact with that running -&fcron; process, &fcrontab; must use the same config file (which is defined by -&fcrontab;'s option ). That way, several &fcron; processes -can run simultaneously on an only system (but each &fcron; process *must* have a -different spool dir and pid file from the other processes). - - - - - - - Execute all jobs that need to be run at the time &fcron; -was started, wait for them, then return. Sets &argfirstsleep; to 0. -May be especially useful when used with options and - in a script run, for instance, at dialup connection. - &seealso; fcrontab's options &optvolatile;, -&optstdout;. - - - - - - - Don't log to syslog at all. May be useful when running -in foreground. - - - - file - -file - - If set, log to the file given as argument. &fcron; will - log to both that file and syslog in parallel unless - is also set. - - - - time - -time - - Sets the initial delay (in seconds) before any job is -executed, default to &firstsleep; seconds. - - - - dir - -dir - - Create dir as a new spool -directory for &fcron;. Set correctly its mode and owner. Then, exit. - - - - - - - Display a brief description of the options. - - - - - - - Display an informational message about &fcron;, -including its version and the license under which it is distributed. - - - - - - - Run in debug mode (more details on stderr -- if option - is set -- and in log file) - - - - - - - Return values - &Fcron; returns &exitok; on normal exit, and &exiterr; on -error. - - - - Signals - - - SIGTERM - - Save configuration (time remaining until next -execution, time and date of next execution, etc), wait for all running jobs and -exit. - - - - SIGUSR1 - - Force &fcron; to reload its configuration. - - - - SIGUSR2 - - Make &fcron; print its current schedule on syslog. It -also toggles on/off the printing on debug info on syslog. - - - - SIGHUP - - Tell &fcron; to check if there is any configuration -update (this signal is used by &fcrontab;(5)) - - - - - - - Conforming to - Should be POSIX compliant. - - - - Files - - - &etc;/&fcron.conf.location; - - Configuration file for &fcron;, &fcrontab; and -&fcrondyn;: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See &fcron.conf;(5) -for more details. - - - - &etc;/&fcron.allow; - - Users allowed to use &fcrontab; and &fcrondyn; (one -name per line, special name "all" acts for everyone) - - - - &etc;/&fcron.deny; - - Users who are not allowed to use &fcrontab; and -&fcrondyn; (same format as allow file) - - - - &etc;/pam.d/fcron (or -&etc;/pam.conf) - - PAM configuration file for -&fcron;. Take a look at &pam;(8) for more details. - - - - - - &manpage-foot; - - - - diff --git a/fcron-3.2.0/doc/en/fcron.conf.5.sgml b/fcron-3.2.0/doc/en/fcron.conf.5.sgml deleted file mode 100644 index 9a3ec04..0000000 --- a/fcron-3.2.0/doc/en/fcron.conf.5.sgml +++ /dev/null @@ -1,162 +0,0 @@ - - - - - - fcron.conf - 5 - Fcron &version; development release)]]> - &date; - - - fcron.conf - configuration file for fcron and fcrontab - - - - Description - - This page describes the syntax used for the configuration file -of &fcrontab;(1), &fcrondyn;(1) and &fcron;(8). - - Blank lines, line beginning by a hash sign (#) (which are -considered comments), leading blanks and tabs are ignored. Each line in a -&fcron.conf file is of the form -
- name = value -
where the blanks around equal-sign (=) are ignored and -optional. Trailing blanks are also ignored. -
- The following names are recognized (default value in parentheses): - - Valid variables in a fcron.conf file - - fcrontabs=directory -(&fcrontabsdir;) - - &Fcron; spool directory. - - - - pidfile=file-path -(&fcron.pid;) - - Location of &fcron; pid file (needed by &fcrontab; -to work properly). - - - - fifofile=file-path -(&fcron.fifo;) - - Location of &fcron; fifo file (needed by -&fcrondyn; to communicate with &fcron;). - - - - fcronallow=file-path -(&etc;/&fcron.allow;) - - Location of fcron.allow file. - - - - fcrondeny=file-path -(&etc;/&fcron.deny;) - - Location of fcron.deny file. - - - - shell=file-path -(&shell;) - - Location of default shell called by &fcron; when -running a job. When &fcron; runs a job, &fcron; uses the value of SHELL from the fcrontab if any, otherwise it uses the value from fcron.conf if any, or in last resort the value from /etc/passwd. - - - - sendmail=file-path -(&sendmail;) - - Location of mailer program called by &fcron; to -send job output. - - - - editor=file-path -(&editor;) - - Location of default editor used when invoking -"fcrontab -e". - - - File-paths and directories are complete and absolute -(i.e. beginning by a "/"). - To run several instances of &fcron; simultaneously on the same -system, you must use a different configuration file for each instance. Each -instance must have a different fcrontabs, -pidfile and fifofile. Then, use &fcron;(8)'s command line option --c to select which config file (so which instance) you -refer to. -
- - - Files - - - &etc;/&fcron.conf.location; - - Configuration file for &fcron;, &fcrontab and -&fcrondyn;: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See &fcron.conf(5) for -more details. - - - - &etc;/&fcron.allow; - - Users allowed to use &fcrontab; and &fcrondyn; (one -name per line, special name "all" acts for everyone) - - - - &etc;/&fcron.deny; - - Users who are not allowed to use &fcrontab; and -&fcrondyn; (same format as allow file) - - - - &etc;/pam.d/fcron (or -&etc;/pam.conf) - - PAM configuration file for -&fcron;. Take a look at &pam;(8) for more details. - - - - - - &manpage-foot; - -
- - diff --git a/fcron-3.2.0/doc/en/fcrondyn.1.sgml b/fcron-3.2.0/doc/en/fcrondyn.1.sgml deleted file mode 100644 index 62e5a99..0000000 --- a/fcron-3.2.0/doc/en/fcrondyn.1.sgml +++ /dev/null @@ -1,375 +0,0 @@ - - - - - - fcrondyn - 1 - Fcron &version; development release)]]> - &date; - - - fcrondyn - dialog dyn-amically with a running fcron daemon - - - - - fcrondyn - -c file - -i - - - fcrondyn - -c file - -x command - - - fcrondyn - -h - - - - - Description - &Fcrondyn; is a user tool intended to interact with a running -fcron daemon. It can, for instance, list user's jobs loaded by fcron, run one of -them, renice a running job, send a signal to a running job, etc. - - - - Options - - - - - Run &fcrondyn; in interactive mode. &fcrondyn; is also - run in interactive mode when no option is given. - - - - -command - - Run command and returns -immediately. See below for syntax -and a list of commands. - - - - file - - Make &fcrondyn; use config file -file instead of default config file -&etc;/&fcron.conf.location;. To interact with a running -&fcron; process, &fcrondyn; must use the same config file as the process. That -way, several &fcron; processes can run simultaneously on an only system. - - - - - - Run in debug mode. In this mode, many informational -messages will be output in order to check if anything went wrong. - - - - - - Display a brief description of the options. - - - - - - Display an informational message about &fcrondyn;, -including its version and the license under which it is distributed. - - - - - - - Command description - &Fcrondyn;'s command syntax is the following: -
- command arg1 -arg2 [...] -
- An argument of a &fcrondyn; command is of one of the following -type: - - Argument types of &fcrondyn;'s commands - - user - - A valid user name. - - - - jobid - - A job id given by one of &fcrondyn;'s -ls* commands (i.e. an integer). - - - - sig - - A signal number, or its name (case does not matter). -For instance, "term" or "15". - - - - niceval - - A job priority value. A -niceval is an integer from -20 (highest -priority) to 19 (lowest) (only root is allowed to use a negative value with this -option). - - - - Last, but not least, the following commands are recognized -(optional arguments are between []): - - Valid &fcrondyn;'s commands - - help - h - - Print an help message about fcrondyn's -commands. - - - - quit - q - - In interactive mode, quit fcrondyn. - - - - ls -[user] - - List all jobs of user. When ls is -run by root, all users are listed unless a user name is given as argument. See below for some explanations about the -fields used by ls* commands. - - - - ls_lavgq -[user] - - Same as ls, but list only the jobs -which are in the load-average queue (i.e. which are waiting for a lower load -average to be run). - - - - ls_serialq -[user] - - Same as ls, but list only the jobs - which are in the serial queue (i.e. which are waiting for - other jobs to be finished). - - - - ls_exeq -[user] - - Same as ls, but list only the jobs - which are running. - - - - detail -jobid - - Print details about a -job. jobid is the one given by -ls. - - - - runnow -jobid - - Instead of waiting for the next scheduled execution - time, run the job now. The next execution time is changed as - if the job had run on schedule. - - - - run -jobid - - Run the job now. Its next execution time is not changed. - - - - kill -sig -jobid - - Send a signal to a running job. - - - - renice -niceval -jobid - - Change the priority of a running job. - - - - - Fields used by <command>detail</command> and - <command>ls*</command> commands - - ID - - Job's unique identification number. - - - - USER - - User who owns this job. - - - - PID - - The pid of the running job. - - - - INDEX - - Index of the job in the serial queue (i.e. it will be run when all the jobs of an inferior index have been run) - - - - R&Q - - The job has this number instances of the given task which are either running or queued in the serial or lavg queue. - - - - OPTIONS - - List of main options which are set for the task. - L for the jobs which run only under a given system Load average (option &optlavg;, &optlavg1;, &optlavg5; and &optlavg15;), LO (Load average Once) if only at most one instance of the task can be in the load average queue at a given time (option &optlavgonce;), S for serialized jobs (option &optserial;), SO for the jobs which will be serialized only for the next execution (Serial Once), and ES if several instances of the same job can run simultaneously (option &optexesev;). - - - - LAVG - - 3 values, corresponding to the 1, 5, and 15-minute (in - this order) system load average values below which the job - will be run, otherwise it will be queued until the system - load average is appropriate (see &optlavg; option). - - - - UNTIL - - Field corresponding to the &optuntil; option. - - - - STRICT - - Field corresponding to the &optstrict; option. Y for - yes, N for no. - - - - SCHEDULE - - Next run is scheduled at this time and date. Please note that fcrondyn prints the next execution time and date in the time zone of the system where fcron is running, and not the time zone which can be defined for using option &opttimezone;. - - - - CMD - - The command that will be executed. - - - -
- - - - Return values - &Fcrondyn; returns &exitok; on normal exit and &exiterr; on -error. - - - - Conforming to - Should be POSIX compliant. - - - - Files - - - &etc;/&fcron.conf.location; - - Configuration file for &fcron;, &fcrontab; and -&fcrondyn;: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See &fcron.conf;(5) -for more details. - - - - &etc;/&fcron.allow; - - Users allowed to use &fcrontab; and &fcrondyn; (one -name per line, special name "all" acts for everyone) - - - - &etc;/&fcron.deny; - - Users who are not allowed to use &fcrontab; and -&fcrondyn; (same format as allow file) - - - - &etc;/pam.d/fcron (or -&etc;/pam.conf) - - PAM configuration file for -&fcron;. Take a look at pam(8) for more details. - - - - - - &manpage-foot; - -
- - - diff --git a/fcron-3.2.0/doc/en/fcrontab.1.sgml b/fcron-3.2.0/doc/en/fcrontab.1.sgml deleted file mode 100644 index ca1d662..0000000 --- a/fcron-3.2.0/doc/en/fcrontab.1.sgml +++ /dev/null @@ -1,242 +0,0 @@ - - - - - - fcrontab 1 - Fcron &version; development release)]]> - &date; - - - fcrontab manipulate per-user fcrontab - files - - - - - fcrontab -c - file -n file - - user -u - user - - - - fcrontab -c - file -n - - -l -r -e -z - - - user -u - user - - - - fcrontab -h - - - - - Description &Fcrontab; is the program intended to - install, edit, list and remove the tables used by &fcron;(8) daemon. As &fcron; internally - uses a non-human readable format (this is needed because &fcron; - saves more informations than the user gives, for example the time - and date of next execution), the user cannot edit directly his - &fcrontabf; (the one used by &fcron;). When a user - installs a &fcrontabf;, the source file is saved in the spool - directory (&fcrontabsdir;) to allow future - editions, and a formatted file is generated for the &fcron; daemon, - which is signaled once about ten seconds before the next minute for - all changes made previously. The daemon is not informed of the changes - immediately but at most once a minute - to keep ill disposed users from blocking the daemon by installing - &fcrontabf;s over and over (ie. denial of service attack). We will call - "fcrontab" the source file of the &fcrontabf; - in the following. A user can install a &fcrontabf; if - he is listed in the &etc;/&fcron.allow; and not - (unless by the keyword all) listed in - &etc;/&fcron.deny; (see section "files" below). If neither - fcron.allow nor fcron.deny - exist, all users are allowed. None of these files have to exist, but - if they do, the deny file takes precedence. The first - form of the command is used to install a new &fcrontabf; file, from - any named file or from standard input if the pseudo-filename "-" is - given, replacing the previous one (if any): each user can have only - one &fcrontabf;. For instance, root can create a - systemwide fcrontab file, say /etc/fcrontab, - and run "fcrontab - /etc/fcrontab" to install the new version after - each change of the file. Or (s)he can create a new fcrontab running - a simple "fcrontab", and then maintain it using - "fcrontab ". Same - considerations apply to a non privileged user. - - - - Options - - - user - - Specify the user whose &fcrontabf; will be managed, or - "&sysfcrontab;" for the system fcrontab. Should only be - used by root. If not given, the &fcrontabf; file of the - user invoking &fcrontab; will be handled. It may be useful - since the su(8) command may - confuse &fcrontab;. the - 'user' in the synopsys is equivalent - to a ' - user'. - - - - - - List user's current &fcrontabf; to standard - output. - - - - - - Edit user's current &fcrontabf; using either the editor - specified by the environment variable - VISUAL, or EDITOR if - VISUAL is not set. If none or them are set, - &editor; will be used. - - - - - - Remove user's &fcrontabf;. - - - - - - Reinstall user's &fcrontabf; from its source code. All - informations &fcron; may have kept in the binary - &fcrontabf; (such as the last execution time and date) will - be forgotten (ie. lost). - - - - - - Ignore previous version. If this option is not given, - &fcron; will try to keep as much information as possible - between old and new version of the &fcrontabf; (time and - date of next execution, if job is in serial queue, etc) if - the line hasn't been modified (same fields, same shell - command). - - - - file - - Make &fcrontab; use config file - file instead of default config - file &etc;/&fcron.conf.location;. To - interact with a running &fcron; process, &fcrontab; must - use the same config file as the process. That way, several - &fcron; processes can run simultaneously on an only - system. - - - - - - Run in debug mode. In this mode, many informational - messages will be output in order to check if anything went - wrong. - - - - - - Display a brief description of the options. - - - - - - Display an informational message about &fcrontab;, - including its version and the license under which it is - distributed. - - - - - - - Return values &Fcrontab; returns &exitok; on - normal exit and &exiterr; on error. - - - - Conforming to Should be POSIX compliant. - - - - Files - - - &etc;/&fcron.conf.location; - - Configuration file for &fcron;, &fcrontab; and - &fcrondyn;: contains paths (spool dir, pid file) and - default programs to use (editor, shell, etc). See &fcron.conf;(5) for more - details. - - - - &etc;/&fcron.allow; - - Users allowed to use &fcrontab; and &fcrondyn; (one name - per line, special name "all" acts for everyone) - - - - &etc;/&fcron.deny; - - Users who are not allowed to use &fcrontab; and - &fcrondyn; (same format as allow file) - - - - &etc;/pam.d/fcron (or - &etc;/pam.conf) - - PAM configuration file for - &fcron;. Take a look at pam(8) for more details. - - - - - - &manpage-foot; - - - - diff --git a/fcron-3.2.0/doc/en/fcrontab.5.sgml b/fcron-3.2.0/doc/en/fcrontab.5.sgml deleted file mode 100644 index d66b830..0000000 --- a/fcron-3.2.0/doc/en/fcrontab.5.sgml +++ /dev/null @@ -1,1052 +0,0 @@ - - - - - - fcrontab - 5 - Fcron &version; development release)]]> - &date; - - - fcrontab - tables for driving fcron - - - - Description - A &fcrontabf; is a file containing all tables used by the -&fcron;(8) daemon. In other words, it is the means for a user to tell the daemon -"execute this command at this moment". Each user has his own &fcrontabf;, whose -commands are executed as his owner (only root can run a job as another using the -option &optrunas; (see below)). - Blank lines, line beginning by a hash sign (#) (which are -considered comments), leading blanks and tabs are ignored. Each line in a -fcrontab file can be either - - - an environment setting, - - - an option setting, - - - entries based on elapsed system up time, - - - entries based on absolute time (like normal crontab -entries), or - - - entries run periodically. - - - Any logical line (an entry or an assignment) can be divided into -several real lines (the lines which end by a newline character) by placing a -backslash (\) before the newline character (\n). - - - The environment settings - The environment settings are of the form -
- name = value -
- where the blanks around equal-sign (=) are ignored and -optional. Trailing blanks are also ignored, but you can place the value in -quotes (simple or double, but matching) to preserve any blanks in the -value. - When &fcron; executes a command, it always sets -USER, and HOME as defined in -/etc/passwd for the owner of the &fcrontabf; from which the -command is extracted. TZ is also defined to the value of the option timezone when this option is used. It also defines SHELL to the value of the SHELL used to run the command. &Fcron; uses the value of SHELL from the fcrontab if any, otherwise it uses the value from fcron.conf if any, or in last resort the value from /etc/passwd. HOME and SHELL may be -overridden by settings in the &fcrontabf;, but USER may not. -Every other environment assignments defined in the user &fcrontabf; are then -made, and the command is executed. - By default, fcron will send emails using the email "Content-Type:" header of "text/plain" with the "charset=" parameter set to the charmap / codeset of the locale in which &fcron;(8) is started up - i.e. either the default system locale, if no LC_* environment variables are set, or the locale specified by the LC_* environment variables (see locale(7)). You can use different character encodings for emailed fcron job output by setting the CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in fcrontabs, to the correct values of the mail headers of those names. - Plus, the special variable MAILTO allows -you to tell &fcron; to whom it has to mail the command's output. Note that -MAILTO is in fact equivalent to a global declaration of the -option &optmailto; (see below). It is only used for backward compatibility, so -you should use the option &optmailto; directly. - -
- - - Entries based on elapsed system up time - The entries of commands which have to be run once every m -minutes of &fcron;'s execution (which is normally the same as m minutes of -system's execution) are of the form - @options frequency command - where frequency is a time value of the form -value*multiplier+value*multiplier+...+value-in-minutes as "12h02" or "3w2d5h1". -The first means "12 hours and 2 minutes of fcron execution" while the second -means "3 weeks, 2 days, 5 hours and 1 minute of fcron execution". The only valid -multipliers are: - - Valid time multipliers - - - - meaning: - multipliers: - - - - - months (4 weeks): - m - - - weeks (7 days): - w - - - days (24 hours): - d - - - hours (60 minutes): - h - - - seconds: - s - - - -
- - In place of options, user can put a -time value: it will be interpreted as -@first(time). If &optfirst; option is -not set, the value of "frequency" is used. - This kind of entry does not guarantee a time and date of -execution (as the job is delayed at each startup by the time elapsed since the -shutdown), but should be useful for jobs depending on the number of things done -by the users (for instance, the filesystem should better be checked after a -certain amount of use by the users rather than every x days, as the system may -run from 1 day to x days during that x days interval). - The time remaining before next execution is saved every &save; -seconds (to limit damages caused by a crash) and when &fcron; exits after having -received a SIGTERM signal, i.e. when systems go down. Thus, -this kind of entries is particularly useful for systems that don't run -regularly. The syntax being very simple, it may also useful for tasks which -don't need to be run at a specific time and date. - &seealso; options &optfirst;, &optmail;, &optnolog;, -&optserial;, &optlavg;, &optnice;, &optrunas; (see below). - - Some examples of lines based on elapsed system up -time - -# Get our mails every 30 minutes -@ 30 getmails -all - -# make some security tests every 48 hours of system up time, -# force a mail to be sent to root even if there is no output -@mailto(root),forcemail 2d /etc/security/msec/cron-sh/security.sh - - -
- - - Entries based on time and date - The second type of &fcrontabf;'s entries begins by an optional -"&", which can be immediately followed by an optional number defining the -frequency of execution (this is equivalent to option &optrunfreq;) or a -declaration of options; it has five time and date fields, and a shell command -: - -&options min hrs day-of-month month day-of-week command - - Note that the shell command may be preceded by a user name, -which is equivalent to runas(user): as -it is only here for backward compatibility you should use option &optrunas; (see -below) instead. The frequency is interpreted as: "run this command after x -matches of time and date fields". The time and date fields are: - - Time and date fields - - - - field: - allowed values: - - - - - minute: - 0-59 - - - hour: - 0-23 - - - day of month: - 1-31 - - - month: - 1-12 (or names, see below) - - - day of week: - 0-7 (0 and 7 are both Sunday, or names) - - - - -
- A field is always filled by either an asterisk (*), which acts -as "first-last" range, a single number or a list. - List are numbers or range separated with commas (,). For -instance: "2,5,15,23". - Ranges of number are of the form -"begin-end", -where "begin" and "end" -are included. For example, "3-5" specifies the values 3, 4 and 5. You can also -add an optional "/number" to a range, where the -number specifies skips of the -number's value through the range. For example, -"0-23/2" can be used in the hours field to specify command execution every other -hour. Finally, one or several "~number" can be added -to turn off some specific values in a range. For example, "5-8~6~7" is equivalent to -"5,8". The final form of a field is: -
- a[-b[/c][~d][~e][...]][,f[-g[/h][~i][~j][...]]][,...] -
- where the letters are integers. - You can also use an asterisk (*) in a field. It acts for -"first-last". For example, a "*" in the field minute means all -minutes from minute 0 down to minute 59. - Ranges can be included in a list as a single number. For -instance: "2,5-10/2~6,15,20-25,30". - Names can also be used for the "month" and "day of week" -fields. To do so, use the first three letters of the particular day or month -(case doesn't matter). Please note that names are used exactly as numbers: you -can use them in a list or a range. - If a day of month and a day of week are given, the command -will execute only when both match with the current time and -date unless option &optdayor; is set. For example, with the line -5 10 31 * 7 echo '' echo will only be executed -days which are a Sunday AND a 31th, at 10:05. - &seealso; options &optdayor;, &optbootrun;, &optrunfreq;, -&optmail;, &optnolog;, &optserial;, &optlavg;, &optnice;, &optrunas; (see -below). - - Some examples of entries based on time and date - -# run mycommand at 12:05, 12:35, 13:05, 13:35, -# 14:05 *and* 14:35 everyday -& 05,35 12-14 * * * mycommand -u me -o file - -# get mails every hour past 20, 21, 22, and 24 minutes. -20-24~23 * * * * getmail - -# save our work of the day every night at 03:45 with a low priority -# unless we are sunday, mail the output to jim and run that job -# at startup if computer was down at 03:45 -&nice(10),mailto(jim),bootrun 45 03 * * *~0 "save --our work" - - -
- - - Entries run periodically - The third type of &fcrontabf;'s entries begin by a "%", -followed by a keyword from one of 3 different lists, and optional options. - - *ly keywords - Those keywords are: - - hourly - daily - monthly - weekly - - Those keywords tell &fcron; to run the command -once from the beginning of the corresponding time interval to the end of that -time interval. A time interval is, for example, the time from Monday 16:20 to Wednesday 01h43. -For instance, the keyword weekly tells &fcron; -to run a command once between Monday and Sunday each week. - With this two kind of keywords, user must give the needed time -fields (as defined in "Entries based on time -and date" (see above)) to specify when the command should be run during -each time interval: - - - Needed time fields for each keyword - - - - Keywords: - must be followed by the fields: - - - - - hourly, -midhourly: - minutes. - - - daily, -middaily, nightly, -weekly, midweekly: - minutes and hours. - - - monthly, -midmonthly: - minutes, hours and days. - - - -
-
-
- - - mid*ly keywords - They are similar to the "*ly" ones: - - midhourly - middaily - nightly - midmonthly - midweekly - - They work exactly has the "*ly" keywords, except -that the time intervals are defined from middle to middle of the corresponding -"*ly" intervals: midweekly will run a command once from -Thursday to Wednesday. Note that nightly is equivalent to -middaily. - For example: - - -%nightly,mail(no) * 21-23,3-5 echo "a nigthly entry" - - - will run the command once each night either between 21:00 and -23:59, or between 3:00 and 5:59 (it will run as soon as possible. To change -that, use option &optrandom;) and won't send mail (because option &optmail; -is set to "no"). - &seealso; options &optlavg;, &optnoticenotrun;, &optstrict;, -&optmail;, &optnolog;, &optserial;, &optnice;, &optrunas;, &optrandom; (see -below). - - - - - *s keywords - They are: - - mins - hours - days - mons - dow - - Those keywords act differently, as -follows: - run this command once during EACH time interval specified, ignoring -the fields below the keyword in the time interval definition (a -hours prevents the mins field to be considered as a time -interval, but it will be used to determine when the line should be run during an -interval: see the note below) (dow means "day of -week"). - Such a keyword is followed by 5 time and date fields (the same -fields used for a line based on absolute -time (see above)). Furthermore, there must be some non-matching time and -dates in the lines with that kind of keyword (i.e. the following is not allowed -: %hours * 0-23 * * * echo "INCORRECT line!" -but %hours * 0-22 * * * echo "Ok." is -allowed). - - a single number in a field is considered as a time interval: -%mins 15 2-4 * * * echo will run at 2:15, 3:15 -AND 4:15 every day. - But all fields below the keywords are ignored in time -interval definition: %hours 15 2-4 * * * echo -will run only ONCE either at 2:15, 3:15 OR 4:15. - - &seealso; option &optrandom; (see below). - - - -
- - - Vixie cron shortcuts - To ensure a good compatibility with Vixie cron, Vixie cron shortcuts are supported. Generally speaking their usage is not recommended as they lack some of the flexibility brought by fcron. Also where the precise time of execution is not critical, the use lines based on elapsed system up time is recommended instead. - A task using a Vixie cron shortcut is of the form: - shortcut command - Below is a list of available shortcuts with their fcron equivalent: - - Vixie cron shortcuts - - - - shortcut: - meaning: - fcron equivalent: - suggested alternative: - - - - - @reboot - Run once, at startup - @runatreboot,runonce(true) - - - - @yearly - Run once a year - 0 0 1 1 * - @ 12m - - - @annually - (same as @yearly) - 0 0 1 1 * - @ 12m - - - @monthly - Run once a month - 0 0 1 * * - @ 1m - - - @weekly - Run once a week - 0 0 * * 0 - @ 1w - - - @daily - Run once a day - 0 0 * * * - @ 1d - - - @midnight - (same as @daily) - 0 0 * * * - - - - @hourly - Run once an hour - 0 * * * * - @ 1h - - - -
- - - A few examples: - # run check_laptop_logs.sh at the first minute of every hour: -@hourly check_laptop_logs.sh -# run check_web_server.sh and check_file_server.sh every day at exactly -# midnight, both at the same time: -@daily check_web_server.sh -@daily check_file_server.sh -# run compress_home_made_app_log_files.sh at exactly midnight -# on the first day of every month: -@monthly compress_home_made_app_log_files.sh - However you might want to replace those task definitions by something as: - # run check_laptop_logs.sh after every hour of system up time: -@ 60 check_laptop_logs.sh -# run check_web_server.sh and check_file_server.sh every night between midnight -# and 3am, one by after the other: -%nightly,serial * 0-3 check_web_server.sh -%nightly,serial * 0-3 check_file_server.sh -# Run compress_home_made_app_log_files.sh once a month, only at night -# when the load is low: -@monthly,lavg(0.5) * 21-23,0-5 * compress_home_made_app_log_files.sh - - - Last, but not least, it should be noted that tasks defined using a Vixie cron shortcut will only have the same behaviour as in Vixie cron if they are not modified by some earlier option definition. That will be the case if you import a Vixie cron crontab into fcron without modification, or if you precede the task definition by a &optreset;, e.g.: - !serial -@ 10 fcron_task_1 -@ 25 fcron_task_2 -!reset -@reboot start_unprivileged_user_program -@daily cleanup_tmp.sh - In the example above, &optserial; would apply to the last two tasks if we hadn't used &optreset;. -
- - - - - Options - The options can be set either for every line below the -declaration or for an individual line. In the first case, the setting is done on -a whole line immediately after an exclamation mark (!), while it is done after a -"&", a "%" or a "@" depending on the type of scheduling in the second case. Note -that an option declaration in a schedule overrides the global declaration of -that same option. - Options are separated by commas (,) and their arguments, if -any, are placed in parentheses ("(" and ")") and separated by commas. No space -or surrounding (double-)quote is allowed. A declaration of options is of the form -
- option[(arg1[,arg2][...])][,option[(arg1[...])]][...] -
- where option is either the name of an option or its -abbreviation. The options are (default value in parentheses): - - Valid options in a &fcrontabf; - - - bootrun - b - - boolean(false) - Run an &-line at &fcron;'s startup if it should -have run during system down time. - - - - - dayand - - boolean(true) - Perform a logic AND between week and month -day. - &seealso; options &optdayor;. - - - - - dayor - - boolean(false) - Perform a logic OR between week and month -day. - &seealso; options &optdayand;. - - - - - erroronlymail - - boolean(false) - Mail output only if job exited with a non-zero status. - &seealso; options &optmail;, &optmailto;, -&optforcemail;, &optnolog;. - - - - - exesev - - boolean(false) - Can a job be executed several times simultaneously -? - &seealso; options &optserialonce;, -&optlavgonce;. - - - - - first - f - - time-value - Delay before first execution of a job based on -system up time ("@"-lines). Useful in the following case: you have several jobs -running, say, every hour. By setting different first value for each job, you can -avoid them to run simultaneously everytime. You can also set it to 0, which is -useful when used in conjunction with option &optvolatile;. - - - - - forcemail - - boolean(false) - Mail output even if zero-length. - Setting this option to true will also set &optmail; to true. - &seealso; options &optmail;, &optmailto;, -&opterroronlymail;, &optnolog;. - - - - - jitter - - integer(0) - Run the task between 0 and jitter seconds later than it should have been run. This options only applies to &-lines and is intended for systems where many jobs are supposed to be started at the same minute: the jitter option will randomly spread the start of all those jobs across the first jitter seconds of the minute instead of starting all of them at the first second of the minute. The argument must be between 0 and 255 (inclusive). - &seealso; option &optrandom;. - - - - - lavg - - real(0) -real(0) -real(0) - Set the values of the 1, 5 and 15-minute (in this -order) system load average values below which the job should run. The values -have a maximum of 1 decimal (i.e. "2.3"): if there are more than 1 decimal, -the value will be round off. Set a value to 0 to ignore the corresponding -load average (or all of the values to run the job regardless of the load -average). - &seealso; options &optlavg1;, &optlavg5;, -&optlavg15;, &optuntil;, &optlavgonce;, &optlavgor;, &optlavgand;, &optstrict;, -&optnoticenotrun;. - - - - lavg1 - lavg5 - lavg15 - - real(0) - Set the threshold of, respectively, the 1, 5 or 15 -minutes system load average value. Set one of them to 0 to ignore the -corresponding load average. - &seealso; options &optlavg;. - - - - - lavgand - - boolean(true) - Perform a logic AND between the 1, 5 and 15 -minutes system load average values. - &seealso; options &optlavg;, &optlavgor;. - - - - - lavgonce - - boolean(&lavgoncedef;) - Can a job be queued several times in lavg queue -simultaneously? - &seealso; options &optlavg;. - - - - - lavgor - - boolean(false) - Perform a logic OR between the 1, 5 and 15 minutes -system load average values. - &seealso; options &optlavg;, &optlavgand;. - - - - - mail - m - - boolean(true) - Mail output (if any) or not. - Setting this option to false will also set &optforcemail; to false. - &seealso; options &optmailto;, &optforcemail;, -&opterroronlymail;, &optnolog;. - - - - - mailto - - email-address(name -of file's owner) - Mail output (if needed) to -"email-address". It can be either a single user-name -or a fully qualified email address. A &optmailto; declared and empty (string -"") is equivalent to "mail(false)". - &seealso; options &optmail;, &optforcemail;, -&opterroronlymail;, &optnolog;. - - - - - nice - n - - nice-value - Change job priority. A -nice-value is an integer from -20 (highest -priority) to 19 (lowest) (only root is allowed to use a negative value with this -option). - - - - - nolog - - boolean(false) - If set to true, log only errors for the -corresponding job(s). May be useful for jobs running very often, and/or to -reduce disk access on a laptop. - &seealso; options &optmail;, &optmailto;, -&opterroronlymail;, &optforcemail;. - - - - - noticenotrun - - boolean(false) - Should &fcron; mail user to report the -non-execution of a %-job or an &-job? (because of system down state for both or -a too high system load average for the latter) - &seealso; options &optlavg;, &optstrict;. - - - - - random - - boolean(false) - In a line run -periodically, this option answers the question: should this job be run -as soon as possible in its time interval of execution (safer), or should fcron set a -random time of execution in that time interval? Note that if this option is set, the -job may not run if fcron is not running during the whole -execution interval. Besides, you must know that the random scheme may be quite -easy to guess for skilled people: thus, you shouldn't rely on this option -to make important things secure. However, it shouldn't be a problem -for most uses. - &seealso; option &optjitter;. - - - - - rebootreset - - boolean(false) - When set to true, fcron will act as if the task was -a new one every time the OS reboots. This is very similar to the option &optvolatile; -but based on the OS reboots instead of fcron restarts. -You may also want to use option &optfirst; if you use fcron that way. - &seealso; options &optfirst;, &optvolatile;, &optrunonce;, &optrunatreboot;. - - - - - reset - - boolean - Reset all the options to default. - - - - - runas - - user-name - Run with "user-name" -permissions and environment (only root is allowed to use this option). - - - - - runatreboot - - boolean(false) - If set to true, the task will be run at system startup (i.e. immediately after the &argfirstsleep; delay -- by default, &firstsleep; seconds -- when the &fcron; daemon starts the first time after the OS has booted). This is in addition to the regular schedule which won't be modified by this option. - For instance, if a program should be started automatically and run from 7am to 6pm, you could use the following dfcrontab definitions: - &runatreboot 0 6 * * 1-5 start_my_program.sh -& 0 7 * * 1-5 stop_my_program.sh - &seealso; options &optvolatile;, &optrunonce;, &optrebootreset;. - - - - - runfreq - r - - integer - Run every "runfreq" -matches of time and date. (this option is ignored for lines based on elapsed system up time). - - - - - runonce - - boolean(false) - Do not re-schedule the task after it has run once, until the next OS reboot (if &optvolatile; is not set) or until the next &fcron; daemon restart (if &optvolatile; is set). - &seealso; options &optvolatile;, &optrebootreset;, &optrunatreboot;. - - - - - serial - s - - boolean(false) - &Fcron; runs at most &serialmaxrunning; serial -jobs (ie. for which the option serial is set to true), and the same number of lavg serial jobs (ie. for which both option serial and lavg (or lavg1 or lavg5 or lavg15) are set to true) simultaneously. This value may be modified by &fcron;'s option . This option is especially useful when used with big jobs in order to limit the system overload. - &seealso; options &optserialonce;, -&optlavg;. - - - - - serialonce - - boolean(&serialoncedef;) - Can a job be queued several times in serial queue -simultaneously? - &seealso; options &optexesev;, -&optlavgonce;. - - - - - stdout - - boolean(false) - If fcron is running in the foreground, then also -let jobs print to stderr/stdout instead of mailing or discarding it. - &seealso; fcron's option &argonce; -in &fcron;(8). - - - - - strict - - boolean(true) - When a lavg %-job is at the end of a time interval of -execution, should it be removed from the lavg queue (strict(true), so the job is -not run) or be let there until the system load average allows its execution -(strict(false))? - &seealso; options &optlavg;, -&optnoticenotrun;. - - - - - timezone - - timezone-name(time zone of the system) - Run the job in the given time zone. timezone-name is a string which is valid for the environment variable TZ: see the documentation of your system for more details. For instance, "Europe/Paris" is valid on a Linux system. This option handles daylight saving time changes correctly. The TZ environment variable is set to the value of timezone when a job defining this option is run. - Please note that if you give an erroneous timezone-name argument, it will be SILENTLY ignored, and the job will run in the time zone of the system. - WARNING: do *not* use option timezone and option tzdiff simultaneously! There is no need to do so, and timezone is cleverer than tzdiff. - &seealso; options &opttzdiff;. - - - - - - tzdiff - - integer(0) - WARNING: this option is deprecated: use option timezone instead! - Time zone difference (in hours, between -24 and -24) between the system time, and the local real time. This option allows a user -to define its & and %-lines in the local time. Note that this value is set for a -whole fcrontab file, and only the last definition is taken into account. tzdiff is quite stupid: it doesn't handle daylight saving changes, while option timezone does, so you should use the latter. - &seealso; options &opttimezone;. - - - - - until - - time-value(0) - Set the timeout of the waiting of the wanted -system load average values. If the timeout is exceeded, the job runs no matter -the load average. Set until to 0 to remove the timeout. - &seealso; options &optlavg;. - - - - - volatile - - boolean(false) - When set to true, the job is based on a "volatile" -system up time, i.e. restart counting each time &fcron; is started, which is -useful when &fcron; is started by a script running only, for instance, during a -dialup connection: the "volatile" system up time then refers to the dialup -connection time. You may also want to use option &optfirst; if you use fcron -that way. - &seealso; options &optfirst;, &optstdout;, &optrebootreset;, -lines based on elapsed system up time, fcron's command line argument -&argonce; in &fcron;(8). - - - - - A boolean argument can be non-existent, in which -case parentheses are not used and it means true; the string -"true", "yes" or 1 to mean true; and the string "false", -"no" or 0 to mean false. See above for explanations about -time value (section "entries based on elapsed system up -time"). - Note that dayand and -dayor are in fact the same option: a false value to -dayand is equivalent to a true to dayor, -and reciprocally a false value to dayor is equivalent a true -value to dayand. It is the same for -lavgand and lavgor. - Note a special case to be handled: A job should be entered -into the serial queue, *but* the previous entry for this job has not been -completed yet, because of high system load or some external event. Option -serialonce answers the question: should the new entry of the -job be ignored? This way one can distinguish between jobs required to run a -certain number of times, preferably at specified times, and tasks to be -performed irrespective of their number (-> serialonce(true)), which make the -system respond faster. - The same considerations apply for the load average queue, and -can be expressed with option lavgonce. - Moreover, if the serial or the lavg queue contains -respectively more than &serialqueuemax; and &lavgqueuemax; jobs, any new job is -refused and not run to avoid an overwhelming of system resources. In this case, -an error message is logged through syslog. - Finally, if jobs remain in the lavg or serial queues when -fcron stops, they will be put once in the corresponding queue on startup (their -order may not be conserved). - - An example of an option declaration: - !reset,serial(true),dayor,bootrun(0),mailto(root),lavg(.5,2,1.5) - -
- -
- - - Examples - - An example of a user fcrontab - -# use /bin/bash to run commands, ignoring what /etc/passwd says -SHELL=/bin/bash - -# mail output to thib, no matter whose fcrontab this is -!mailto(thib) - -# define a variable which is equivalent to " Hello thib and paul! " -# here the newline characters are escaped by a backslash (\) -# and quotes are used to force to keep leading and trailing blanks -TEXT= " Hello\ - thib and\ - paul! " - -# we want to use serial but not bootrun: -!serial(true),b(0) - -# run after five minutes of execution the first time, -# then run every hour -@first(5) 1h echo "Run every hour" - -# run every day -@ 1d echo "fcron daily" - -# run once between in the morning and once in the afternoon -# if systems is running at any moment of these time intervals -%hours * 8-12,14-18 * * * echo "Hey boss, I'm working today!" - -# run once a week during our lunch -%weekly * 12-13 echo "I left my system on at least once \ - at lunch time this week." - -# run every Sunday and Saturday at 9:05 -5 9 * * sat,sun echo "Good morning Thibault!" - -# run every even days of march at 18:00, except on 16th -0 18 2-30/2~16 Mar * echo "It's time to go back home!" - -# the line above is equivalent to -& 0 18 2-30/2~16 Mar * echo "It's time to go back home!" - -# reset options to default and set runfreq for lines below -!reset,runfreq(7) - -# run once every 7 matches (thanks to the declaration above), -# so if system is running every day at 10:00, this will be -# run once a week -& 0 10 * * * echo "if you got this message last time 7 days ago,\ - this computer has been running every day at 10:00 last week.\ - If you got the message 8 days ago, then the system has been down \ - one day at 10:00 since you got it, etc" - -# wait every hour for a 5 minutes load average under 0.9 -@lavg5(0.9) 1h echo "The system load average is low" - -# wait a maximum of 5 hours every day for a fall of the load average -@lavgand,lavg(1,2.0,3.0),until(5h) 1d echo "Load average is going down" - -# wait for the best moment to run a heavy job -@lavgor,lavg(0.8,1.2,1.5),nice(10) 1w echo "This is a heavy job" - -# run once every night between either 21:00 and 23:00 or -# between 3:00 and 6:00 -%nightly,lavg(1.5,2,2) * 21-23,3-6 echo "It's time to retrieve \ - the latest release of Mozilla!" - - - - - - Files - - - &etc;/&fcron.conf.location; - - Configuration file for &fcron;, &fcrontab; and -&fcrondyn;: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See &fcron.conf(5) for -more details. - - - - &etc;/&fcron.allow; - - Users allowed to use &fcrontab; and &fcrondyn; (one -name per line, special name "all" acts for everyone) - - - - &etc;/&fcron.deny; - - Users who are not allowed to use &fcrontab; and -&fcrondyn; (same format as allow file) - - - - &etc;/pam.d/fcron (or -&etc;/pam.conf) - - PAM configuration file for -&fcron;. Take a look at pam(8) for more details. - - - - - - &manpage-foot; - -
- - diff --git a/fcron-3.2.0/doc/en/fdl.sgml b/fcron-3.2.0/doc/en/fdl.sgml deleted file mode 100644 index fcd697b..0000000 --- a/fcron-3.2.0/doc/en/fdl.sgml +++ /dev/null @@ -1,409 +0,0 @@ - - GNU Free Documentation License - - - - - - - Version 1.1, March 2000 - -
- Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple -Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and -distribute verbatim copies of this license document, but changing it is not -allowed. -
- - - PREAMBLE - - The purpose of this License is to make a manual, textbook, or -other written document "free" in the sense of freedom: to assure everyone the -effective freedom to copy and redistribute it, with or without modifying it, -either commercially or noncommercially. Secondarily, this License preserves for -the author and publisher a way to get credit for their work, while not being -considered responsible for modifications made by others. - - This License is a kind of "copyleft", which means that -derivative works of the document must themselves be free in the same sense. It -complements the GNU General Public License, which is a copyleft license designed -for free software. - - We have designed this License in order to use it for manuals -for free software, because free software needs free documentation: a free -program should come with manuals providing the same freedoms that the software -does. But this License is not limited to software manuals; it can be used for -any textual work, regardless of subject matter or whether it is published as a -printed book. We recommend this License principally for works whose purpose is -instruction or reference. - - - - APPLICABILITY AND DEFINITIONS - - This License applies to any manual or other work that contains -a notice placed by the copyright holder saying it can be distributed under the -terms of this License. The "Document", below, refers to any such manual or -work. Any member of the public is a licensee, and is addressed as "you". - - A "Modified Version" of the Document means any work containing -the Document or a portion of it, either copied verbatim, or with modifications -and/or translated into another language. - - A "Secondary Section" is a named appendix or a front-matter -section of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall subject (or to -related matters) and contains nothing that could fall directly within that -overall subject. (For example, if the Document is in part a textbook of -mathematics, a Secondary Section may not explain any mathematics.) The -relationship could be a matter of historical connection with the subject or with -related matters, or of legal, commercial, philosophical, ethical or political -position regarding them. - - The "Invariant Sections" are certain Secondary Sections whose -titles are designated, as being those of Invariant Sections, in the notice that -says that the Document is released under this License. - - The "Cover Texts" are certain short passages of text that are -listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that -the Document is released under this License. - - A "Transparent" copy of the Document means a machine-readable -copy, represented in a format whose specification is available to the general -public, whose contents can be viewed and edited directly and straightforwardly -with generic text editors or (for images composed of pixels) generic paint -programs or (for drawings) some widely available drawing editor, and that is -suitable for input to text formatters or for automatic translation to a variety -of formats suitable for input to text formatters. A copy made in an otherwise -Transparent file format whose markup has been designed to thwart or discourage -subsequent modification by readers is not Transparent. A copy that is not -"Transparent" is called "Opaque". - - Examples of suitable formats for Transparent copies include -plain ASCII without markup, Texinfo input format, LaTeX input format, SGML or -XML using a publicly available DTD, and standard-conforming simple HTML designed -for human modification. Opaque formats include PostScript, PDF, proprietary -formats that can be read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are not generally available, and -the machine-generated HTML produced by some word processors for output purposes -only. - - The "Title Page" means, for a printed book, the title page -itself, plus such following pages as are needed to hold, legibly, the material -this License requires to appear in the title page. For works in formats which do -not have any title page as such, "Title Page" means the text near the most -prominent appearance of the work's title, preceding the beginning of the body of -the text. - - - - VERBATIM COPYING - - You may copy and distribute the Document in any medium, either -commercially or noncommercially, provided that this License, the copyright -notices, and the license notice saying this License applies to the Document are -reproduced in all copies, and that you add no other conditions whatsoever to -those of this License. You may not use technical measures to obstruct or -control the reading or further copying of the copies you make or distribute. -However, you may accept compensation in exchange for copies. If you distribute -a large enough number of copies you must also follow the conditions in section -3. - - You may also lend copies, under the same conditions stated -above, and you may publicly display copies. - - - - COPYING IN QUANTITY - - If you publish printed copies of the Document numbering more -than 100, and the Document's license notice requires Cover Texts, you must -enclose the copies in covers that carry, clearly and legibly, all these Cover -Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back -cover. Both covers must also clearly and legibly identify you as the publisher -of these copies. The front cover must present the full title with all words of -the title equally prominent and visible. You may add other material on the -covers in addition. Copying with changes limited to the covers, as long as they -preserve the title of the Document and satisfy these conditions, can be treated -as verbatim copying in other respects. - - If the required texts for either cover are too voluminous to -fit legibly, you should put the first ones listed (as many as fit reasonably) on -the actual cover, and continue the rest onto adjacent pages. - - If you publish or distribute Opaque copies of the Document -numbering more than 100, you must either include a machine-readable Transparent -copy along with each Opaque copy, or state in or with each Opaque copy a -publicly-accessible computer-network location containing a complete Transparent -copy of the Document, free of added material, which the general network-using -public has access to download anonymously at no charge using public-standard -network protocols. If you use the latter option, you must take reasonably -prudent steps, when you begin distribution of Opaque copies in quantity, to -ensure that this Transparent copy will remain thus accessible at the stated -location until at least one year after the last time you distribute an Opaque -copy (directly or through your agents or retailers) of that edition to the -public. - - It is requested, but not required, that you contact the -authors of the Document well before redistributing any large number of copies, -to give them a chance to provide you with an updated version of the -Document. - - - - MODIFICATIONS - - You may copy and distribute a Modified Version of the Document -under the conditions of sections 2 and 3 above, provided that you release the -Modified Version under precisely this License, with the Modified Version filling -the role of the Document, thus licensing distribution and modification of the -Modified Version to whoever possesses a copy of it. In addition, you must do -these things in the Modified Version: - - - Use in the Title Page (and on the covers, if -any) a title distinct from that of the Document, and from those of previous -versions (which should, if there were any, be listed in the History section of -the Document). You may use the same title as a previous version if the original -publisher of that version gives permission. - - - List on the Title Page, as authors, one or more -persons or entities responsible for authorship of the modifications in the -Modified Version, together with at least five of the principal authors of the -Document (all of its principal authors, if it has less than five). - - - State on the Title page the name of the -publisher of the Modified Version, as the publisher. - - - Preserve all the copyright notices of the -Document. - - - Add an appropriate copyright notice for your -modifications adjacent to the other copyright notices. - - - Include, immediately after the copyright -notices, a license notice giving the public permission to use the Modified -Version under the terms of this License, in the form shown in the Addendum -below. - - - Preserve in that license notice the full lists -of Invariant Sections and required Cover Texts given in the Document's license -notice. - - - Include an unaltered copy of this -License. - - - Preserve the section entitled "History", and its -title, and add to it an item stating at least the title, year, new authors, and -publisher of the Modified Version as given on the Title Page. If there is no -section entitled "History" in the Document, create one stating the title, year, -authors, and publisher of the Document as given on its Title Page, then add an -item describing the Modified Version as stated in the previous sentence. - - - Preserve the network location, if any, given in -the Document for public access to a Transparent copy of the Document, and -likewise the network locations given in the Document for previous versions it -was based on. These may be placed in the "History" section. You may omit a -network location for a work that was published at least four years before the -Document itself, or if the original publisher of the version it refers to gives -permission. - - - In any section entitled "Acknowledgements" or -"Dedications", preserve the section's title, and preserve in the section all the -substance and tone of each of the contributor acknowledgements and/or -dedications given therein. - - - Preserve all the Invariant Sections of the -Document, unaltered in their text and in their titles. Section numbers or the -equivalent are not considered part of the section titles. - - - Delete any section entitled "Endorsements". -Such a section may not be included in the Modified Version. - - - Do not retitle any existing section as -"Endorsements" or to conflict in title with any Invariant Section. - - - - If the Modified Version includes new front-matter sections or -appendices that qualify as Secondary Sections and contain no material copied -from the Document, you may at your option designate some or all of these -sections as invariant. To do this, add their titles to the list of Invariant -Sections in the Modified Version's license notice. These titles must be -distinct from any other section titles. - - You may add a section entitled "Endorsements", provided it -contains nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has been -approved by an organization as the authoritative definition of a -standard. - - You may add a passage of up to five words as a Front-Cover -Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the -list of Cover Texts in the Modified Version. Only one passage of Front-Cover -Text and one of Back-Cover Text may be added by (or through arrangements made -by) any one entity. If the Document already includes a cover text for the same -cover, previously added by you or by arrangement made by the same entity you are -acting on behalf of, you may not add another; but you may replace the old one, -on explicit permission from the previous publisher that added the old -one. - - The author(s) and publisher(s) of the Document do not by this -License give permission to use their names for publicity for or to assert or -imply endorsement of any Modified Version. - - - - COMBINING DOCUMENTS - - You may combine the Document with other documents released -under this License, under the terms defined in section 4 above for modified -versions, provided that you include in the combination all of the Invariant -Sections of all of the original documents, unmodified, and list them all as -Invariant Sections of your combined work in its license notice. - - The combined work need only contain one copy of this License, -and multiple identical Invariant Sections may be replaced with a single copy. -If there are multiple Invariant Sections with the same name but different -contents, make the title of each such section unique by adding at the end of it, -in parentheses, the name of the original author or publisher of that section if -known, or else a unique number. Make the same adjustment to the section titles -in the list of Invariant Sections in the license notice of the combined -work. - - In the combination, you must combine any sections entitled -"History" in the various original documents, forming one section entitled -"History"; likewise combine any sections entitled "Acknowledgements", and any -sections entitled "Dedications". You must delete all sections entitled -"Endorsements." - - - - COLLECTIONS OF DOCUMENTS - - You may make a collection consisting of the Document and other -documents released under this License, and replace the individual copies of this -License in the various documents with a single copy that is included in the -collection, provided that you follow the rules of this License for verbatim -copying of each of the documents in all other respects. - - You may extract a single document from such a collection, and -distribute it individually under this License, provided you insert a copy of -this License into the extracted document, and follow this License in all other -respects regarding verbatim copying of that document. - - - - AGGREGATION WITH INDEPENDENT WORKS - - A compilation of the Document or its derivatives with other -separate and independent documents or works, in or on a volume of a storage or -distribution medium, does not as a whole count as a Modified Version of the -Document, provided no compilation copyright is claimed for the compilation. -Such a compilation is called an "aggregate", and this License does not apply to -the other self-contained works thus compiled with the Document, on account of -their being thus compiled, if they are not themselves derivative works of the -Document. - - If the Cover Text requirement of section 3 is applicable to -these copies of the Document, then if the Document is less than one quarter of -the entire aggregate, the Document's Cover Texts may be placed on covers that -surround only the Document within the aggregate. Otherwise they must appear on -covers around the whole aggregate. - - - - TRANSLATION - - Translation is considered a kind of modification, so you may -distribute translations of the Document under the terms of section 4. Replacing -Invariant Sections with translations requires special permission from their -copyright holders, but you may include translations of some or all Invariant -Sections in addition to the original versions of these Invariant Sections. You -may include a translation of this License provided that you also include the -original English version of this License. In case of a disagreement between the -translation and the original English version of this License, the original -English version will prevail. - - - - TERMINATION - - You may not copy, modify, sublicense, or distribute the -Document except as expressly provided for under this License. Any other attempt -to copy, modify, sublicense or distribute the Document is void, and will -automatically terminate your rights under this License. However, parties who -have received copies, or rights, from you under this License will not have their -licenses terminated so long as such parties remain in full compliance. - - - - FUTURE REVISIONS OF THIS LICENSE - - The Free Software Foundation may publish new, revised versions -of the GNU Free Documentation License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to address -new problems or concerns. See http://www.gnu.org/copyleft/. - - Each version of the License is given a distinguishing version -number. If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of following -the terms and conditions either of that specified version or of any later -version that has been published (not as a draft) by the Free Software -Foundation. If the Document does not specify a version number of this License, -you may choose any version ever published (not as a draft) by the Free Software -Foundation. - - - - How to use this License for your documents - - To use this License in a document you have written, include a -copy of the License in the document and put the following copyright and license -notices just after the title page: - -
- Copyright (c) YEAR YOUR NAME. Permission is granted to copy, distribute -and/or modify this document under the terms of the GNU Free Documentation -License, Version 1.1 or any later version published by the Free Software -Foundation; with the Invariant Sections being LIST THEIR TITLES, with the -Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. A copy -of the license is included in the section entitled "GNU Free Documentation -License". -
- - If you have no Invariant Sections, write "with no Invariant -Sections" instead of saying which ones are invariant. If you have no -Front-Cover Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts -being LIST"; likewise for Back-Cover Texts. - - If your document contains nontrivial examples of program code, -we recommend releasing these examples in parallel under your choice of free -software license, such as the GNU General Public License, to permit their use in -free software. -
- -
- - diff --git a/fcron-3.2.0/doc/en/gpl.sgml b/fcron-3.2.0/doc/en/gpl.sgml deleted file mode 100644 index 8eaa223..0000000 --- a/fcron-3.2.0/doc/en/gpl.sgml +++ /dev/null @@ -1,339 +0,0 @@ - - GNU GENERAL PUBLIC LICENSE - - Version 2, June 1991 - -
- Copyright (C) 1989, 1991 Free Software Foundation, Inc. 59 -Temple Place - Suite 330, Boston, MA 02111-1307, USA Everyone is permitted to -copy and distribute verbatim copies of this license document, but changing it is -not allowed. -
- - - PREAMBLE - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public License is -intended to guarantee your freedom to share and change free software--to make -sure the software is free for all its users. This General Public License applies -to most of the Free Software Foundation's software and to any other program -whose authors commit to using it. (Some other Free Software Foundation software -is covered by the GNU Library General Public License instead.) You can apply it -to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our -General Public Licenses are designed to make sure that you have the freedom to -distribute copies of free software (and charge for this service if you wish), -that you receive source code or can get it if you want it, that you can change -the software or use pieces of it in new free programs; and that you know you can -do these things. - -To protect your rights, we need to make restrictions that forbid anyone to deny -you these rights or to ask you to surrender the rights. These restrictions -translate to certain responsibilities for you if you distribute copies of the -software, or if you modify it. - -For example, if you distribute copies of such a program, whether gratis or for a -fee, you must give the recipients all the rights that you have. You must make -sure that they, too, receive or can get the source code. And you must show them -these terms so they know their rights. - -We protect your rights with two steps: (1) copyright the software, and (2) offer -you this license which gives you legal permission to copy, distribute and/or -modify the software. - -Also, for each author's protection and ours, we want to make certain that -everyone understands that there is no warranty for this free software. If the -software is modified by someone else and passed on, we want its recipients to -know that what they have is not the original, so that any problems introduced by -others will not reflect on the original authors' reputations. - -Finally, any free program is threatened constantly by software patents. We wish -to avoid the danger that redistributors of a free program will individually -obtain patent licenses, in effect making the program proprietary. To prevent -this, we have made it clear that any patent must be licensed for everyone's free -use or not licensed at all. - -The precise terms and conditions for copying, distribution and modification -follow. - - - - - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND -MODIFICATION - - 0. This License applies to any program or other work which -contains a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, refers to -any such program or work, and a "work based on the Program" means either the -Program or any derivative work under copyright law: that is to say, a work -containing the Program or a portion of it, either verbatim or with modifications -and/or translated into another language. (Hereinafter, translation is included -without limitation in the term "modification".) Each licensee is addressed as -"you". - -Activities other than copying, distribution and modification are not covered by -this License; they are outside its scope. The act of running the Program is not -restricted, and the output from the Program is covered only if its contents -constitute a work based on the Program (independent of having been made by -running the Program). Whether that is true depends on what the Program -does. - -1. You may copy and distribute verbatim copies of the Program's source code as -you receive it, in any medium, provided that you conspicuously and appropriately -publish on each copy an appropriate copyright notice and disclaimer of warranty; -keep intact all the notices that refer to this License and to the absence of any -warranty; and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and you may at -your option offer warranty protection in exchange for a fee. - -2. You may modify your copy or copies of the Program or any portion of it, thus -forming a work based on the Program, and copy and distribute such modifications -or work under the terms of Section 1 above, provided that you also meet all of -these conditions: - - * a) You must cause the modified files to carry prominent notices stating -that you changed the files and the date of any change. - - * b) You must cause any work that you distribute or publish, that in whole -or in part contains or is derived from the Program or any part thereof, to be -licensed as a whole at no charge to all third parties under the terms of this -License. - - * c) If the modified program normally reads commands interactively when run, -you must cause it, when started running for such interactive use in the most -ordinary way, to print or display an announcement including an appropriate -copyright notice and a notice that there is no warranty (or else, saying that -you provide a warranty) and that users may redistribute the program under these -conditions, and telling the user how to view a copy of this License. (Exception: -if the Program itself is interactive but does not normally print such an -announcement, your work based on the Program is not required to print an -announcement.) - -These requirements apply to the modified work as a whole. If identifiable -sections of that work are not derived from the Program, and can be reasonably -considered independent and separate works in themselves, then this License, and -its terms, do not apply to those sections when you distribute them as separate -works. But when you distribute the same sections as part of a whole which is a -work based on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the entire whole, -and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest your -rights to work written entirely by you; rather, the intent is to exercise the -right to control the distribution of derivative or collective works based on the -Program. - -In addition, mere aggregation of another work not based on the Program with the -Program (or with a work based on the Program) on a volume of a storage or -distribution medium does not bring the other work under the scope of this -License. - -3. You may copy and distribute the Program (or a work based on it, under Section -2) in object code or executable form under the terms of Sections 1 and 2 above -provided that you also do one of the following: - - * a) Accompany it with the complete corresponding machine-readable source -code, which must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange; or, - - * b) Accompany it with a written offer, valid for at least three years, to -give any third party, for a charge no more than your cost of physically -performing source distribution, a complete machine-readable copy of the -corresponding source code, to be distributed under the terms of Sections 1 and 2 -above on a medium customarily used for software interchange; or, - - * c) Accompany it with the information you received as to the offer to -distribute corresponding source code. (This alternative is allowed only for -noncommercial distribution and only if you received the program in object code -or executable form with such an offer, in accord with Subsection b -above.) - -The source code for a work means the preferred form of the work for making -modifications to it. For an executable work, complete source code means all the -source code for all modules it contains, plus any associated interface -definition files, plus the scripts used to control compilation and installation -of the executable. However, as a special exception, the source code distributed -need not include anything that is normally distributed (in either source or -binary form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component itself -accompanies the executable. - -If distribution of executable or object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the source code -from the same place counts as distribution of the source code, even though third -parties are not compelled to copy the source along with the object code. - -4. You may not copy, modify, sublicense, or distribute the Program except as -expressly provided under this License. Any attempt otherwise to copy, modify, -sublicense or distribute the Program is void, and will automatically terminate -your rights under this License. However, parties who have received copies, or -rights, from you under this License will not have their licenses terminated so -long as such parties remain in full compliance. - -5. You are not required to accept this License, since you have not signed it. -However, nothing else grants you permission to modify or distribute the Program -or its derivative works. These actions are prohibited by law if you do not -accept this License. Therefore, by modifying or distributing the Program (or any -work based on the Program), you indicate your acceptance of this License to do -so, and all its terms and conditions for copying, distributing or modifying the -Program or works based on it. - -6. Each time you redistribute the Program (or any work based on the Program), -the recipient automatically receives a license from the original licensor to -copy, distribute or modify the Program subject to these terms and conditions. -You may not impose any further restrictions on the recipients' exercise of the -rights granted herein. You are not responsible for enforcing compliance by third -parties to this License. - -7. If, as a consequence of a court judgment or allegation of patent infringement -or for any other reason (not limited to patent issues), conditions are imposed -on you (whether by court order, agreement or otherwise) that contradict the -conditions of this License, they do not excuse you from the conditions of this -License. If you cannot distribute so as to satisfy simultaneously your -obligations under this License and any other pertinent obligations, then as a -consequence you may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by all those -who receive copies directly or indirectly through you, then the only way you -could satisfy both it and this License would be to refrain entirely from -distribution of the Program. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply and the -section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any patents or -other property right claims or to contest validity of any such claims; this -section has the sole purpose of protecting the integrity of the free software -distribution system, which is implemented by public license practices. Many -people have made generous contributions to the wide range of software -distributed through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing to -distribute software through any other system and a licensee cannot impose that -choice. - -This section is intended to make thoroughly clear what is believed to be a -consequence of the rest of this License. - -8. If the distribution and/or use of the Program is restricted in certain -countries either by patents or by copyrighted interfaces, the original copyright -holder who places the Program under this License may add an explicit -geographical distribution limitation excluding those countries, so that -distribution is permitted only in or among countries not thus excluded. In such -case, this License incorporates the limitation as if written in the body of this -License. - -9. The Free Software Foundation may publish revised and/or new versions of the -General Public License from time to time. Such new versions will be similar in -spirit to the present version, but may differ in detail to address new problems -or concerns. - -Each version is given a distinguishing version number. If the Program specifies -a version number of this License which applies to it and "any later version", -you have the option of following the terms and conditions either of that version -or of any later version published by the Free Software Foundation. If the -Program does not specify a version number of this License, you may choose any -version ever published by the Free Software Foundation. - -10. If you wish to incorporate parts of the Program into other free programs -whose distribution conditions are different, write to the author to ask for -permission. For software which is copyrighted by the Free Software Foundation, -write to the Free Software Foundation; we sometimes make exceptions for this. -Our decision will be guided by the two goals of preserving the free status of -all derivatives of our free software and of promoting the sharing and reuse of -software generally. - -NO WARRANTY - -11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE -PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED -IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS -IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT -NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A -PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF -ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL -ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE -PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, -SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY -TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF -THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER -PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - END OF TERMS AND CONDITIONS - - - - How to use this License for your documents - - If you develop a new program, and you want it to be of the -greatest possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these -terms. - To do so, attach the following notices to the program. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - -
-one line to give the program's name and an idea of what it -does. Copyright (C) yyyy name of author -This program is free software; you can redistribute it and/or modify it under -the terms of the GNU General Public License as published by the Free Software -Foundation; either version 2 of the License, or (at your option) any later -version. This program is distributed in the hope that it will be useful, but -WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -details. You should have received a copy of the GNU General Public License along -with this program; if not, write to the Free Software Foundation, Inc., 59 -Temple Place - Suite 330, Boston, MA 02111-1307, USA. -
- - Also add information on how to contact you by electronic and -paper mail. - - If the program is interactive, make it output a short notice -like this when it starts in an interactive mode: - Gnomovision version 69, Copyright (C) year name of author -Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This -is free software, and you are welcome to redistribute it under certain -conditions; type `show c' for details. - - The hypothetical commands `show w' and -`show c' should show the appropriate parts of the General -Public License. Of course, the commands you use may be called something other -than `show w' and `show c'; they could -even be mouse-clicks or menu items--whatever suits your program. - You should also get your employer (if you work as a -programmer) or your school, if any, to sign a "copyright disclaimer" for the -program, if necessary. Here is a sample; alter the names: -
- Yoyodyne, Inc., hereby disclaims all copyright interest in -the program `Gnomovision' (which makes passes at compilers) written by James -Hacker. - signature of Ty Coon, 1 April -1989 Ty Coon, President of Vice -
- - This General Public License does not permit incorporating your -program into proprietary programs. If your program is a subroutine library, you -may consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General Public -License instead of this License. - -
- -
- - diff --git a/fcron-3.2.0/doc/en/install.sgml b/fcron-3.2.0/doc/en/install.sgml deleted file mode 100644 index ca72be3..0000000 --- a/fcron-3.2.0/doc/en/install.sgml +++ /dev/null @@ -1,186 +0,0 @@ - - - - - How to install fcron - - Compilation requirements - - A C compiler (e.g. gcc) - (optional) readline development - library (e.g. libreadline-dev) - (optional) PAM development - library (e.g. libpam0g-dev) - (optional) SE Linux development library (e.g. libselinux1-dev) - (optional) Linux audit development library (e.g. libaudit-dev) - If compiling from git checkout (rather than a tarball), then no generated file will be included out of the box, so you will need more tools to generate them. In particular the ./configure script and the documentation will be generated from the sources. - - git - autoconf - docbook - docbook-xsl - docbook-xml - docbook-util - manpages-dev - - - - - - Compilation and installation instructions - - - - uncompress the archive: - bash$ -tar -xzf fcron-X.Y.Z.src.tar.gz - - - cd to the archive directory - bash$ cd fcron-X.Y.Z - - - run the configure script: - bash$ -./configure - - - - - - If you can't see a ./configure, then you probably checked out the files from git, in which case you need to run autoconf to generate the configure script. - - - - If using PAM, beware that by default the PAM configuration will be installed in /usr/local/etc/. That most likely mean that your system won't use this config, and may ask you to type your password everytime you start fcrontab or fcrondyn. - The simplest way to avoid this is to instruct configure to use /etc instead with: - bash$ ./configure --sysconfdir=/etc - - - - You may also want to change the place where -&fcron; will be installed: you can use the configure 's -option to do that. For instance: - -bash$ ./configure --prefix=/usr--sysconfdir=/etc -(default is and ). - - - - To disable the use of -PAM, SE Linux or &fcrondyn;, use configure's -option , -and/or . - - - - The command make install asks -you by default some questions you have to answer. To avoid that (which can be -useful for automatic installers), you can use the -./configure's option -and/or (see "./configure ---help" for more details). - - - - To debug &fcron;, you should use -configure 's option . - - - - - You can get info on the others -configure 's options by running -"./configure --help". - - - - - - - - - The configure script may not -define a correct directory for the man pages and the documentation on some -systems. You may check the values defined by configure and if -necessary force a value by the options and - (see the help by running -"./configure "). - - - - - If you get older &fcron;'s man-pages with -man command after having upgraded, it's probably because -&fcron; has changed its default man directory: you should remove manually the -outdated man-pages. - - - - - The Makefile has been -designed for GNU make. Some other version of -make may fail to use it. - - - - - - - - - (optional) check the file -config.h, and change it if necessary (the configurable part -is on the top of the file and clearly delimited). - - - - compile: - bash$ make - - - - then install binaries as root: - bash$ su root - bash# make install - - - You can now run fcron and -fcrontab. - - - - - This is a POSIX conforming -software. You must have a POSIX compiler -(gcc for example) in order to compile it. - - - - - This software has been written for -GNU/Linux systems. If you want to port it on an other -Unix platform (thank you if you do it), try to modify -- if possible - only the configure script. Please -send me any modifications at &email; in order to include it in future releases. - - - - - - - - diff --git a/fcron-3.2.0/doc/en/man/bitstring.3 b/fcron-3.2.0/doc/en/man/bitstring.3 deleted file mode 100644 index efe9ae3..0000000 --- a/fcron-3.2.0/doc/en/man/bitstring.3 +++ /dev/null @@ -1,168 +0,0 @@ -.\" Copyright (c) 1989 The Regents of the University of California. -.\" All rights reserved. -.\" -.\" This code is derived from software contributed to Berkeley by -.\" Paul Vixie. -.\" -.\" Redistribution and use in source and binary forms are permitted -.\" provided that the above copyright notice and this paragraph are -.\" duplicated in all such forms and that any documentation, -.\" advertising materials, and other materials related to such -.\" distribution and use acknowledge that the software was developed -.\" by the University of California, Berkeley. The name of the -.\" University may not be used to endorse or promote products derived -.\" from this software without specific prior written permission. -.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR -.\" IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED -.\" WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. -.\" -.\" @(#)bitstring.3 5.1 (Berkeley) 12/13/89 -.\" -.TH BITSTRING 3 "December 13, 1989" -.UC 4 -.SH NAME -bit_alloc, bit_clear, bit_decl, bit_ffs, bit_nclear, bit_nset, -bit_set, bitstr_size, bit_test \- bit-string manipulation macros -.SH SYNOPSIS -.ft B -.nf -#include - -name = bit_alloc(nbits) -bitstr_t *name; -int nbits; - -bit_decl(name, nbits) -bitstr_t name; -int nbits; - -bit_clear(name, bit) -bitstr_t name; -int bit; - -bit_ffc(name, nbits, value) -bitstr_t name; -int nbits, *value; - -bit_ffs(name, nbits, value) -bitstr_t name; -int nbits, *value; - -bit_nclear(name, start, stop) -bitstr_t name; -int start, stop; - -bit_nset(name, start, stop) -bitstr_t name; -int start, stop; - -bit_set(name, bit) -bitstr_t name; -int bit; - -bitstr_size(nbits) -int nbits; - -bit_test(name, bit) -bitstr_t name; -int bit; -.fi -.ft R -.SH DESCRIPTION -These macros operate on strings of bits. -.PP -.I Bit_alloc -returns a pointer of type -.I bitstr_t\ * -to sufficient space to store -.I nbits -bits, or NULL if no space is available. -.PP -.I Bit_decl -is a macro for allocating sufficient space to store -.I nbits -bits on the stack. -.PP -.I Bitstr_size -returns the number of elements of type -.I bitstr_t -necessary to store -.I nbits -bits. -This is useful for copying bit strings. -.PP -.I Bit_clear -and -.I bit_set -clear or set the zero-based numbered bit -.IR bit , -in the bit string -.IR name . -.PP -.I Bit_nset -and -.I bit_nclear -set or clear the zero-based numbered bits from -.I start -to -.I stop -in the bit string -.IR name . -.PP -.I Bit_test -evaluates to zero if the zero-based numbered bit -.I bit -of bit string -.I name -is set, and non-zero otherwise. -.PP -.I Bit_ffs -sets -.I *value -to the zero-based number of the first bit set in the array of -.I nbits -bits referenced by -.IR name . -If no bits are set, -.I *value -is set to -1. -.PP -.I Bit_ffc -sets -.I *value -to the zero-based number of the first bit not set in the array of -.I nbits -bits referenced by -.IR name . -If all bits are set, -.I value -is set to -1. -.SH EXAMPLE -.nf -.in +5 -#include -#include - -... -#define LPR_BUSY_BIT 0 -#define LPR_FORMAT_BIT 1 -#define LPR_DOWNLOAD_BIT 2 -... -#define LPR_AVAILABLE_BIT 9 -#define LPR_MAX_BITS 10 - -make_lpr_available() -{ - bitstr_t bit_decl(bitlist, LPR_MAX_BITS); - ... - bit_nclear(bitlist, 0, LPR_MAX_BITS - 1); - ... - if (!bit_test(bitlist, LPR_BUSY_BIT)) { - bit_clear(bitlist, LPR_FORMAT_BIT); - bit_clear(bitlist, LPR_DOWNLOAD_BIT); - bit_set(bitlist, LPR_AVAILABLE_BIT); - } -} -.fi -.SH "SEE ALSO" -malloc(3) diff --git a/fcron-3.2.0/doc/en/man/fcron.8 b/fcron-3.2.0/doc/en/man/fcron.8 deleted file mode 100644 index 8407316..0000000 --- a/fcron-3.2.0/doc/en/man/fcron.8 +++ /dev/null @@ -1,213 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "FCRON" "8" "06 July 2014" "07/06/2014" "" - -.SH NAME -fcron \- daemon to execute scheduled tasks -.SH SYNOPSIS - -\fBfcron\fR [ \fB-c \fIfile\fB\fR ] [ \fB-d\fR ] [ \fB-b\fR ] [ \fB-s \fItime\fB\fR ] [ \fB-m \fInum\fB\fR ] [ \fB-q \fInum\fB\fR ] - - -\fBfcron\fR [ \fB-c \fIfile\fB\fR ] [ \fB-d\fR ] [ \fB-f\fR ] [ \fB-o\fR ] [ \fB-y\fR ] [ \fB-p \fIfile\fB\fR ] [ \fB-l \fItime\fB\fR ] - - -\fBfcron\fR [ \fB-n \fIdir\fB\fR ] - - -\fBfcron\fR [ \fB-h\fR ] - - -\fBfcron\fR [ \fB-V\fR ] - -.SH "DESCRIPTION" -.PP -\fBFcron\fR should be started from \fI/etc/rc\fR or -\fI/etc/rc.local\fR\&. Unless the \fB-f\fR (or -\fB--foreground\fR) option is given, it will return immediately, so -you don't need to start it with '&'. -.PP -\fBFcron\fR loads users \fBfcrontab\fRs (see \fBfcrontab\fR(5)) files previously installed by -\fBfcrontab\fR (see \fBfcrontab\fR(1)). Then, \fBfcron\fR calculates the time -and date of each job's next execution, and determines how long it has to sleep, -and sleeps for this amount of time. When it wakes up, it checks all jobs loaded -and runs them if needed. When a job is executed, \fBfcron\fR forks, changes its user -and group permissions to match those of the user the job is being done for, -executes that job and mails the outputs to the user (this can be changed: see -\fBfcrontab\fR(5)). -.PP -Informative message about what \fBfcron\fR is doing are sent to -\fBsyslogd\fR(8) under facility \fBcron\fR, -priority \fBnotice\fR\&. Warning and error messages are sent -respectively at priority \fBwarning\fR and -\fBerror\fR\&. -.PP -.sp -.RS -.B "Note:" -\fBfcron\fR sleeps at least 20 seconds after it has been started before -executing a job to avoid to use too much resources during system boot. -.RE -.SH "OPTIONS" -.TP -\fB-f\fR -.TP -\fB--foreground\fR -Don't fork to the background. In this mode, \fBfcron\fR will -output informational message to standard error as well as to syslogd. -.TP -\fB-b\fR -.TP -\fB--background\fR -Force running in background, even if \fBfcron\fR has been -compiled to run in foreground as default. -.TP -\fB-s \fItime\fB\fR -.TP -\fB--savetime \fItime\fB\fR -Save \fBfcrontab\fRs on disk every -\fItime\fR sec (default is 1800). -.TP -\fB-m \fInum\fB\fR -.TP -\fB--maxserial \fInum\fB\fR -Set to \fInum\fR the maximum number -of serial jobs which can run simultaneously. By default, -this value is set to 1. - -\fBSee also\fR: option serial in \fBfcrontab\fR(5). -.TP -\fB-q \fInum\fB\fR -.TP -\fB--queuelen \fInum\fB\fR -Set to n the number of jobs the serial queue and -the lavg queue can contain. -.TP -\fB-c \fIfile\fB\fR -.TP -\fB--configfile \fIfile\fB\fR -Make \fBfcron\fR use config file -\fIfile\fR instead of default config file -\fI/usr/local/etc/fcron.conf\fR\&. To interact with that running -\fBfcron\fR process, \fBfcrontab\fR must use the same config file (which is defined by -\fBfcrontab\fR\&'s option \fB-c\fR). That way, several \fBfcron\fR processes -can run simultaneously on an only system (but each \fBfcron\fR process *must* have a -different spool dir and pid file from the other processes). -.TP -\fB-o\fR -.TP -\fB--once\fR -Execute all jobs that need to be run at the time \fBfcron\fR -was started, wait for them, then return. Sets --sleeptime to 0. -May be especially useful when used with options \fB-y\fR and -\fB-f\fR in a script run, for instance, at dialup connection. - -\fBSee also\fR: fcrontab's options volatile, -stdout\&. -.TP -\fB-y\fR -.TP -\fB--nosyslog\fR -Don't log to syslog at all. May be useful when running -in foreground. -.TP -\fB-p \fIfile\fB\fR -.TP -\fB--logfilepath \fIfile\fB\fR -If set, log to the file given as argument. \fBfcron\fR will -log to both that file and syslog in parallel unless -\fB-y\fR is also set. -.TP -\fB-l \fItime\fB\fR -.TP -\fB--firstsleep \fItime\fB\fR -Sets the initial delay (in seconds) before any job is -executed, default to 20 seconds. -.TP -\fB-n \fIdir\fB\fR -.TP -\fB--newspooldir \fIdir\fB\fR -Create \fIdir\fR as a new spool -directory for \fBfcron\fR\&. Set correctly its mode and owner. Then, exit. -.TP -\fB-h\fR -.TP -\fB--help\fR -Display a brief description of the options. -.TP -\fB-V\fR -.TP -\fB--version\fR -Display an informational message about \fBfcron\fR, -including its version and the license under which it is distributed. -.TP -\fB-d\fR -.TP -\fB--debug\fR -Run in debug mode (more details on stderr -- if option -\fB-f\fR is set -- and in log file) -.SH "RETURN VALUES" -.PP -\fBFcron\fR returns 0 on normal exit, and 1 on -error. -.SH "SIGNALS" -.TP -\fBSIGTERM\fR -Save configuration (time remaining until next -execution, time and date of next execution, etc), wait for all running jobs and -exit. -.TP -\fBSIGUSR1\fR -Force \fBfcron\fR to reload its configuration. -.TP -\fBSIGUSR2\fR -Make \fBfcron\fR print its current schedule on syslog. It -also toggles on/off the printing on debug info on syslog. -.TP -\fBSIGHUP\fR -Tell \fBfcron\fR to check if there is any configuration -update (this signal is used by \fBfcrontab\fR(5)) -.SH "CONFORMING TO" -.PP -Should be POSIX compliant. -.SH "FILES" -.TP -\fB\fI/usr/local/etc/fcron.conf\fB\fR -Configuration file for \fBfcron\fR, \fBfcrontab\fR and -\fBfcrondyn\fR: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See \fBfcron.conf\fR(5) -for more details. -.TP -\fB\fI/usr/local/etc/fcron.allow\fB\fR -Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one -name per line, special name "all" acts for everyone) -.TP -\fB\fI/usr/local/etc/fcron.deny\fB\fR -Users who are not allowed to use \fBfcrontab\fR and -\fBfcrondyn\fR (same format as allow file) -.TP -\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR -PAM configuration file for -\fBfcron\fR\&. Take a look at \fBpam\fR(8) for more details. -.SH "SEE ALSO" - -\fBfcrontab\fR(1), - -\fBfcrondyn\fR(1), - -\fBfcrontab\fR(5), - -\fBfcron.conf\fR(5), - -\fBfcron\fR(8). - -If you're learning how to use fcron from scratch, I suggest -that you read the HTML version of the documentation (if your are not reading it -right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks. -.SH "AUTHOR" -.PP -Thibault Godouet diff --git a/fcron-3.2.0/doc/en/man/fcron.conf.5 b/fcron-3.2.0/doc/en/man/fcron.conf.5 deleted file mode 100644 index 19638fb..0000000 --- a/fcron-3.2.0/doc/en/man/fcron.conf.5 +++ /dev/null @@ -1,104 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "FCRON.CONF" "5" "06 July 2014" "07/06/2014" "" - -.SH NAME -fcron.conf \- configuration file for fcron and fcrontab -.SH "DESCRIPTION" -.SS "ABSTRACT" -.PP -This page describes the syntax used for the configuration file -of \fBfcrontab\fR(1), \fBfcrondyn\fR(1) and \fBfcron\fR(8). -.PP -Blank lines, line beginning by a hash sign (#) (which are -considered comments), leading blanks and tabs are ignored. Each line in a -\fBfcron.conf\fR file is of the form -.sp -.RS -.PP -name = value -.RE -where the blanks around equal-sign (=) are ignored and -optional. Trailing blanks are also ignored. -.PP -The following names are recognized (default value in parentheses): -"VALID VARIABLES IN A FCRON.CONF FILE" -.TP -\fBfcrontabs=\fIdirectory\fB (\fI/usr/local/var/spool/fcron\fB)\fR -\fBFcron\fR spool directory. -.TP -\fBpidfile=\fIfile-path\fB (\fI/usr/local/var/run/fcron.pid\fB)\fR -Location of \fBfcron\fR pid file (needed by \fBfcrontab\fR -to work properly). -.TP -\fBfifofile=\fIfile-path\fB (\fI/usr/local/var/run/fcron.fifo\fB)\fR -Location of \fBfcron\fR fifo file (needed by -\fBfcrondyn\fR to communicate with \fBfcron\fR). -.TP -\fBfcronallow=\fIfile-path\fB (\fI/usr/local/etc/fcron.allow\fB)\fR -Location of fcron.allow file. -.TP -\fBfcrondeny=\fIfile-path\fB (\fI/usr/local/etc/fcron.deny\fB)\fR -Location of fcron.deny file. -.TP -\fBshell=\fIfile-path\fB (\fI/bin/sh\fB)\fR -Location of default shell called by \fBfcron\fR when -running a job. When \fBfcron\fR runs a job, \fBfcron\fR uses the value of \fBSHELL\fR from the fcrontab if any, otherwise it uses the value from \fIfcron.conf\fR if any, or in last resort the value from \fI/etc/passwd\fR\&. -.TP -\fBsendmail=\fIfile-path\fB (\fI/usr/sbin/sendmail\fB)\fR -Location of mailer program called by \fBfcron\fR to -send job output. -.TP -\fBeditor=\fIfile-path\fB (\fI/usr/bin/vi\fB)\fR -Location of default editor used when invoking -"fcrontab -e". -File-paths and directories are complete and absolute -(i.e. beginning by a "/"). -.PP -To run several instances of \fBfcron\fR simultaneously on the same -system, you must use a different configuration file for each instance. Each -instance must have a different fcrontabs, -pidfile and fifofile\&. Then, use \fBfcron\fR(8)'s command line option -\fI-c\fR to select which config file (so which instance) you -refer to. -.SH "FILES" -.TP -\fB\fI/usr/local/etc/fcron.conf\fB\fR -Configuration file for \fBfcron\fR, \fBfcrontab\fR and -\fBfcrondyn\fR: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See \fBfcron.conf\fR(5) for -more details. -.TP -\fB\fI/usr/local/etc/fcron.allow\fB\fR -Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one -name per line, special name "all" acts for everyone) -.TP -\fB\fI/usr/local/etc/fcron.deny\fB\fR -Users who are not allowed to use \fBfcrontab\fR and -\fBfcrondyn\fR (same format as allow file) -.TP -\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR -PAM configuration file for -\fBfcron\fR\&. Take a look at \fBpam\fR(8) for more details. -.SH "SEE ALSO" - -\fBfcrontab\fR(1), - -\fBfcrondyn\fR(1), - -\fBfcrontab\fR(5), - -\fBfcron.conf\fR(5), - -\fBfcron\fR(8). - -If you're learning how to use fcron from scratch, I suggest -that you read the HTML version of the documentation (if your are not reading it -right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks. -.SH "AUTHOR" -.PP -Thibault Godouet diff --git a/fcron-3.2.0/doc/en/man/fcrondyn.1 b/fcron-3.2.0/doc/en/man/fcrondyn.1 deleted file mode 100644 index 59a237d..0000000 --- a/fcron-3.2.0/doc/en/man/fcrondyn.1 +++ /dev/null @@ -1,219 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "FCRONDYN" "1" "06 July 2014" "07/06/2014" "" - -.SH NAME -fcrondyn \- dialog dyn-amically with a running fcron daemon -.SH SYNOPSIS - -\fBfcrondyn\fR [ \fB-c \fIfile\fB\fR ] [ \fB-i\fR ] - - -\fBfcrondyn\fR [ \fB-c \fIfile\fB\fR ] \fB-x \fIcommand\fB\fR - - -\fBfcrondyn\fR [ \fB-h\fR ] - -.SH "DESCRIPTION" -.PP -\fBFcrondyn\fR is a user tool intended to interact with a running -fcron daemon. It can, for instance, list user's jobs loaded by fcron, run one of -them, renice a running job, send a signal to a running job, etc. -.SH "OPTIONS" -.TP -\fB-i\fR -Run \fBfcrondyn\fR in interactive mode. \fBfcrondyn\fR is also -run in interactive mode when no option is given. -.TP -\fB-x \fIcommand\fB\fR -Run \fIcommand\fR and returns -immediately. See below for syntax -and a list of commands. -.TP -\fB-c \fIfile\fB\fR -Make \fBfcrondyn\fR use config file -\fIfile\fR instead of default config file -\fI/usr/local/etc/fcron.conf\fR\&. To interact with a running -\fBfcron\fR process, \fBfcrondyn\fR must use the same config file as the process. That -way, several \fBfcron\fR processes can run simultaneously on an only system. -.TP -\fB-d\fR -Run in debug mode. In this mode, many informational -messages will be output in order to check if anything went wrong. -.TP -\fB-h\fR -Display a brief description of the options. -.TP -\fB-V\fR -Display an informational message about \fBfcrondyn\fR, -including its version and the license under which it is distributed. -.SH "COMMAND DESCRIPTION" -.PP -\fBFcrondyn\fR\&'s command syntax is the following: -.sp -.RS -.PP -\fBcommand\fR \fIarg1\fR -\fIarg2\fR [...] -.RE -.PP -An argument of a \fBfcrondyn\fR command is of one of the following -type: -"ARGUMENT TYPES OF FCRONDYN'S COMMANDS" -.TP -\fBuser\fR -A valid user name. -.TP -\fBjobid\fR -A job id given by one of \fBfcrondyn\fR\&'s -\fBls*\fR commands (i.e. an integer). -.TP -\fBsig\fR -A signal number, or its name (case does not matter). -For instance, "term" or "15". -.TP -\fBniceval\fR -A job priority value. A -\fBniceval\fR is an integer from -20 (highest -priority) to 19 (lowest) (only root is allowed to use a negative value with this -option). -.PP -Last, but not least, the following commands are recognized -(optional arguments are between []): -"VALID FCRONDYN'S COMMANDS" -.TP -\fBhelp\fR -.TP -\fBh\fR -Print an help message about fcrondyn's -commands. -.TP -\fBquit\fR -.TP -\fBq\fR -In interactive mode, quit fcrondyn. -.TP -\fBls [user]\fR -List all jobs of user. When \fBls\fR is -run by root, all users are listed unless a user name is given as argument. See below for some explanations about the -fields used by \fBls*\fR commands. -.TP -\fBls_lavgq [user]\fR -Same as \fBls\fR, but list only the jobs -which are in the load-average queue (i.e. which are waiting for a lower load -average to be run). -.TP -\fBls_serialq [user]\fR -Same as \fBls\fR, but list only the jobs -which are in the serial queue (i.e. which are waiting for -other jobs to be finished). -.TP -\fBls_exeq [user]\fR -Same as \fBls\fR, but list only the jobs -which are running. -.TP -\fBdetail jobid\fR -Print details about a -job. \fBjobid\fR is the one given by -\fBls\fR\&. -.TP -\fBrunnow jobid\fR -Instead of waiting for the next scheduled execution -time, run the job now. The next execution time is changed as -if the job had run on schedule. -.TP -\fBrun jobid\fR -Run the job now. Its next execution time is not changed. -.TP -\fBkill sig jobid\fR -Send a signal to a running job. -.TP -\fBrenice niceval jobid\fR -Change the priority of a running job. -"FIELDS USED BY DETAIL AND LS* COMMANDS" -.TP -\fBID\fR -Job's unique identification number. -.TP -\fBUSER\fR -User who owns this job. -.TP -\fBPID\fR -The pid of the running job. -.TP -\fBINDEX\fR -Index of the job in the serial queue (i.e. it will be run when all the jobs of an inferior index have been run) -.TP -\fBR&Q\fR -The job has this number instances of the given task which are either running or queued in the serial or lavg queue. -.TP -\fBOPTIONS\fR -List of main options which are set for the task. -L for the jobs which run only under a given system Load average (option lavg, lavg1, lavg5 and lavg15), LO (Load average Once) if only at most one instance of the task can be in the load average queue at a given time (option lavgonce), S for serialized jobs (option serial), SO for the jobs which will be serialized only for the next execution (Serial Once), and ES if several instances of the same job can run simultaneously (option exesev). -.TP -\fBLAVG\fR -3 values, corresponding to the 1, 5, and 15-minute (in -this order) system load average values below which the job -will be run, otherwise it will be queued until the system -load average is appropriate (see lavg option). -.TP -\fBUNTIL\fR -Field corresponding to the until option. -.TP -\fBSTRICT\fR -Field corresponding to the strict option. Y for -yes, N for no. -.TP -\fBSCHEDULE\fR -Next run is scheduled at this time and date. Please note that fcrondyn prints the next execution time and date in the time zone of the system where fcron is running, and not the time zone which can be defined for using option timezone\&. -.TP -\fBCMD\fR -The command that will be executed. -.SH "RETURN VALUES" -.PP -\fBFcrondyn\fR returns 0 on normal exit and 1 on -error. -.SH "CONFORMING TO" -.PP -Should be POSIX compliant. -.SH "FILES" -.TP -\fB\fI/usr/local/etc/fcron.conf\fB\fR -Configuration file for \fBfcron\fR, \fBfcrontab\fR and -\fBfcrondyn\fR: contains paths (spool dir, pid file) and default programs to use -(editor, shell, etc). See \fBfcron.conf\fR(5) -for more details. -.TP -\fB\fI/usr/local/etc/fcron.allow\fB\fR -Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one -name per line, special name "all" acts for everyone) -.TP -\fB\fI/usr/local/etc/fcron.deny\fB\fR -Users who are not allowed to use \fBfcrontab\fR and -\fBfcrondyn\fR (same format as allow file) -.TP -\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR -PAM configuration file for -\fBfcron\fR\&. Take a look at pam(8) for more details. -.SH "SEE ALSO" - -\fBfcrontab\fR(1), - -\fBfcrondyn\fR(1), - -\fBfcrontab\fR(5), - -\fBfcron.conf\fR(5), - -\fBfcron\fR(8). - -If you're learning how to use fcron from scratch, I suggest -that you read the HTML version of the documentation (if your are not reading it -right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks. -.SH "AUTHOR" -.PP -Thibault Godouet diff --git a/fcron-3.2.0/doc/en/man/fcrontab.1 b/fcron-3.2.0/doc/en/man/fcrontab.1 deleted file mode 100644 index 54c4f7a..0000000 --- a/fcron-3.2.0/doc/en/man/fcrontab.1 +++ /dev/null @@ -1,178 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "FCRONTAB" "1" "06 July 2014" "07/06/2014" "" - -.SH NAME -fcrontab \- manipulate per-user fcrontab files -.SH SYNOPSIS - -\fBfcrontab\fR [ \fB-c -\fIfile\fB\fR ] [ \fB-n\fR ] \fB\fIfile\fB\fR [ \fB\fIuser\fB\fR | \fB-u -\fIuser\fB\fR ] - - -\fBfcrontab\fR [ \fB-c -\fIfile\fB\fR ] [ \fB-n\fR ] { \fB-l\fR | \fB-r\fR | \fB-e\fR | \fB-z\fR } [ \fB\fIuser\fB\fR | \fB-u -\fIuser\fB\fR ] - - -\fBfcrontab\fR [ \fB-h\fR ] - -.SH "DESCRIPTION" -.PP -\fBFcrontab\fR is the program intended to -install, edit, list and remove the tables used by \fBfcron\fR(8) daemon. As \fBfcron\fR internally -uses a non-human readable format (this is needed because \fBfcron\fR -saves more informations than the user gives, for example the time -and date of next execution), the user cannot edit directly his -\fBfcrontab\fR (the one used by \fBfcron\fR). -.PP -When a user -installs a \fBfcrontab\fR, the source file is saved in the spool -directory (\fI/usr/local/var/spool/fcron\fR) to allow future -editions, and a formatted file is generated for the \fBfcron\fR daemon, -which is signaled once about ten seconds before the next minute for -all changes made previously. The daemon is not informed of the changes -immediately but at most once a minute -to keep ill disposed users from blocking the daemon by installing -\fBfcrontab\fRs over and over (ie. denial of service attack). We will call -"\fBfcrontab\fR" the source file of the \fBfcrontab\fR -in the following. -.PP -A user can install a \fBfcrontab\fR if -he is listed in the \fI/usr/local/etc/fcron.allow\fR and not -(unless by the keyword all) listed in -\fI/usr/local/etc/fcron.deny\fR (see section "files" below). If neither -\fIfcron.allow\fR nor \fIfcron.deny\fR -exist, all users are allowed. None of these files have to exist, but -if they do, the deny file takes precedence. -.PP -The first -form of the command is used to install a new \fBfcrontab\fR file, from -any named file or from standard input if the pseudo-filename "-" is -given, replacing the previous one (if any): each user can have only -one \fBfcrontab\fR\&. -.PP -For instance, root can create a -systemwide fcrontab file, say \fI/etc/fcrontab\fR, -and run "\fBfcrontab\fR -\fI/etc/fcrontab\fR" to install the new version after -each change of the file. Or (s)he can create a new fcrontab running -a simple "\fBfcrontab\fR", and then maintain it using -"\fBfcrontab\fR \fB-e\fR". Same -considerations apply to a non privileged user. -.SH "OPTIONS" -.TP -\fB-u \fIuser\fB\fR -Specify the user whose \fBfcrontab\fR will be managed, or -"systab" for the system fcrontab. Should only be -used by root. If not given, the \fBfcrontab\fR file of the -user invoking \fBfcrontab\fR will be handled. It may be useful -since the \fBsu\fR(8) command may -confuse \fBfcrontab\fR\&. -.sp -.RS -.B "Note:" -the -\&'\fIuser\fR\&' in the synopsys is equivalent -to a '\fB-u\fR -\fIuser\fR\&'. -.RE -.TP -\fB-l\fR -List user's current \fBfcrontab\fR to standard -output. -.TP -\fB-e\fR -Edit user's current \fBfcrontab\fR using either the editor -specified by the environment variable -\fBVISUAL\fR, or \fBEDITOR\fR if -\fBVISUAL\fR is not set. If none or them are set, -\fB/usr/bin/vi\fR will be used. -.TP -\fB-r\fR -Remove user's \fBfcrontab\fR\&. -.TP -\fB-z\fR -Reinstall user's \fBfcrontab\fR from its source code. All -informations \fBfcron\fR may have kept in the binary -\fBfcrontab\fR (such as the last execution time and date) will -be forgotten (ie. lost). -.TP -\fB-n\fR -Ignore previous version. If this option is not given, -\fBfcron\fR will try to keep as much information as possible -between old and new version of the \fBfcrontab\fR (time and -date of next execution, if job is in serial queue, etc) if -the line hasn't been modified (same fields, same shell -command). -.TP -\fB-c \fIfile\fB\fR -Make \fBfcrontab\fR use config file -\fIfile\fR instead of default config -file \fI/usr/local/etc/fcron.conf\fR\&. To -interact with a running \fBfcron\fR process, \fBfcrontab\fR must -use the same config file as the process. That way, several -\fBfcron\fR processes can run simultaneously on an only -system. -.TP -\fB-d\fR -Run in debug mode. In this mode, many informational -messages will be output in order to check if anything went -wrong. -.TP -\fB-h\fR -Display a brief description of the options. -.TP -\fB-V\fR -Display an informational message about \fBfcrontab\fR, -including its version and the license under which it is -distributed. -.SH "RETURN VALUES" -.PP -\fBFcrontab\fR returns 0 on -normal exit and 1 on error. -.SH "CONFORMING TO" -.PP -Should be POSIX compliant. -.SH "FILES" -.TP -\fB\fI/usr/local/etc/fcron.conf\fB\fR -Configuration file for \fBfcron\fR, \fBfcrontab\fR and -\fBfcrondyn\fR: contains paths (spool dir, pid file) and -default programs to use (editor, shell, etc). See \fBfcron.conf\fR(5) for more -details. -.TP -\fB\fI/usr/local/etc/fcron.allow\fB\fR -Users allowed to use \fBfcrontab\fR and \fBfcrondyn\fR (one name -per line, special name "all" acts for everyone) -.TP -\fB\fI/usr/local/etc/fcron.deny\fB\fR -Users who are not allowed to use \fBfcrontab\fR and -\fBfcrondyn\fR (same format as allow file) -.TP -\fB\fI/usr/local/etc/pam.d/fcron\fB (or \fI/usr/local/etc/pam.conf\fB)\fR -PAM configuration file for -\fBfcron\fR\&. Take a look at pam(8) for more details. -.SH "SEE ALSO" - -\fBfcrontab\fR(1), - -\fBfcrondyn\fR(1), - -\fBfcrontab\fR(5), - -\fBfcron.conf\fR(5), - -\fBfcron\fR(8). - -If you're learning how to use fcron from scratch, I suggest -that you read the HTML version of the documentation (if your are not reading it -right now! :) ): the content is the same, but it is easier to navigate thanks -to the hyperlinks. -.SH "AUTHOR" -.PP -Thibault Godouet diff --git a/fcron-3.2.0/doc/en/man/fcrontab.5 b/fcron-3.2.0/doc/en/man/fcrontab.5 deleted file mode 100644 index 10a3ac4..0000000 --- a/fcron-3.2.0/doc/en/man/fcrontab.5 +++ /dev/null @@ -1,863 +0,0 @@ -.\" This manpage has been automatically generated by docbook2man -.\" from a DocBook document. This tool can be found at: -.\" -.\" Please send any bug reports, improvements, comments, patches, -.\" etc. to Steve Cheng . -.TH "FCRONTAB" "5" "06 July 2014" "07/06/2014" "" - -.SH NAME -fcrontab \- tables for driving fcron -.SH "DESCRIPTION" -.PP -A \fBfcrontab\fR is a file containing all tables used by the -\fBfcron\fR(8) daemon. In other words, it is the means for a user to tell the daemon -"execute this command at this moment". Each user has his own \fBfcrontab\fR, whose -commands are executed as his owner (only root can run a job as another using the -option runas (see below)). -.PP -Blank lines, line beginning by a hash sign (#) (which are -considered comments), leading blanks and tabs are ignored. Each line in a -fcrontab file can be either -.TP 0.2i -\(bu -an environment setting, -.TP 0.2i -\(bu -an option setting, -.TP 0.2i -\(bu -entries based on elapsed system up time, -.TP 0.2i -\(bu -entries based on absolute time (like normal crontab -entries), or -.TP 0.2i -\(bu -entries run periodically. -.PP -Any logical line (an entry or an assignment) can be divided into -several real lines (the lines which end by a newline character) by placing a -backslash (\\) before the newline character (\\n). -.SS "THE ENVIRONMENT SETTINGS" -.PP -The environment settings are of the form -.sp -.RS -.PP -name = value -.RE -.PP -where the blanks around equal-sign (=) are ignored and -optional. Trailing blanks are also ignored, but you can place the value in -quotes (simple or double, but matching) to preserve any blanks in the -value. -.PP -When \fBfcron\fR executes a command, it always sets -\fBUSER\fR, and \fBHOME\fR as defined in -\fI/etc/passwd\fR for the owner of the \fBfcrontab\fR from which the -command is extracted. TZ is also defined to the value of the option timezone when this option is used. It also defines \fBSHELL\fR to the value of the SHELL used to run the command. \fBFcron\fR uses the value of \fBSHELL\fR from the fcrontab if any, otherwise it uses the value from \fIfcron.conf\fR if any, or in last resort the value from \fI/etc/passwd\fR\&. \fBHOME\fR and \fBSHELL\fR may be -overridden by settings in the \fBfcrontab\fR, but \fBUSER\fR may not. -Every other environment assignments defined in the user \fBfcrontab\fR are then -made, and the command is executed. -.PP -By default, fcron will send emails using the email "Content-Type:" header of "text/plain" with the "charset=" parameter set to the charmap / codeset of the locale in which \fBfcron\fR(8) is started up - i.e. either the default system locale, if no LC_* environment variables are set, or the locale specified by the LC_* environment variables (see locale(7)). You can use different character encodings for emailed fcron job output by setting the CONTENT_TYPE and CONTENT_TRANSFER_ENCODING variables in fcrontabs, to the correct values of the mail headers of those names. -.PP -Plus, the special variable MAILTO allows -you to tell \fBfcron\fR to whom it has to mail the command's output. Note that -MAILTO is in fact equivalent to a global declaration of the -option mailto (see below). It is only used for backward compatibility, so -you should use the option mailto directly. -.SS "ENTRIES BASED ON ELAPSED SYSTEM UP TIME" -.PP -The entries of commands which have to be run once every m -minutes of \fBfcron\fR\&'s execution (which is normally the same as m minutes of -system's execution) are of the form - -.nf -@options frequency command -.fi -.PP -where frequency is a time value of the form -value*multiplier+value*multiplier+...+value-in-minutes as "12h02" or "3w2d5h1". -The first means "12 hours and 2 minutes of fcron execution" while the second -means "3 weeks, 2 days, 5 hours and 1 minute of fcron execution". The only valid -multipliers are: -"VALID TIME MULTIPLIERS" -meaning: multipliers: months (4 weeks): m weeks (7 days): w days (24 hours): d hours (60 minutes): h seconds: s -.PP -In place of \fIoptions\fR, user can put a -time value: it will be interpreted as -@first(\fI