From 2859f93882c63b580eed8925f91dbc2816339915 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 7 Nov 2025 11:31:06 +0000 Subject: [PATCH] commit --- CHANGES | 7829 +++++++++++++++++ CONTRIBUTORS | 9 + COPYRIGHT | 22 + LICENSE | 339 + Makefile | 801 ++ Makefile.am | 24 + Makefile.in | 801 ++ README.md | 36 + TODO | 54 + VERSION | 1 + aclocal.m4 | 927 ++ autom4te.cache/output.0 | 4837 ++++++++++ autom4te.cache/output.1 | 4836 ++++++++++ autom4te.cache/output.2 | 4837 ++++++++++ autom4te.cache/requests | 242 + autom4te.cache/traces.0 | 1038 +++ autom4te.cache/traces.1 | 353 + autom4te.cache/traces.2 | 353 + bin/Makefile | 508 ++ bin/Makefile.am | 24 + bin/Makefile.in | 508 ++ bin/smokeinfo | 143 + bin/smokeping | 184 + bin/smokeping_cgi | 94 + bin/tSmoke | 570 ++ config.log | 324 + config.status | 948 ++ configure | 4837 ++++++++++ configure.ac | 162 + conftools/install-sh | 541 ++ conftools/missing | 236 + cpanfile | 24 + .../dh_installchangelogs.dch.trimmed | 89 + .../dh_installchangelogs.news.trimmed | 0 .../smokeping/installed-by-dh_installdocs | 1 + .../smokeping/installed-by-dh_installexamples | 9 + .../smokeping/installed-by-dh_installman | 0 .../generated/smokeping/postinst.service | 43 + .../generated/smokeping/postrm.service | 8 + .../generated/smokeping/preinst.service | 5 + .../generated/smokeping/prerm.service | 10 + debian/NEWS | 77 + debian/README.Debian | 22 + debian/README.source | 9 + debian/TODO | 12 + debian/autoreconf.after | 142 + debian/autoreconf.before | 124 + debian/changelog | 998 +++ debian/control | 72 + debian/copyright | 156 + debian/debhelper-build-stamp | 1 + debian/default-config | 7 + debian/dirs | 9 + debian/docs | 1 + debian/examples | 4 + debian/files | 2 + debian/init.d | 196 + debian/lighttpd_45-smokeping.conf | 22 + debian/patches/asset_path_changes | 39 + .../patches/dont_build_third_party_js.patch | 32 + debian/patches/fix-conf-paths | 54 + debian/patches/fix-paths-inside-executables | 173 + debian/patches/fix-perl-lib | 14 + debian/patches/fix_curl_probe.patch | 22 + debian/patches/proper-sample-conf | 72 + debian/patches/series | 7 + debian/postinst | 69 + debian/postrm | 61 + debian/preinst | 49 + debian/rules | 63 + debian/smokeping.apache2 | 1 + debian/smokeping.cgi | 3 + debian/smokeping.conf | 9 + debian/smokeping.debhelper.log | 1 + debian/smokeping.default | 16 + debian/smokeping.dirs | 0 debian/smokeping.links | 4 + debian/smokeping.maintscript | 1 + debian/smokeping.postinst.debhelper | 13 + debian/smokeping.postrm.debhelper | 28 + debian/smokeping.preinst.debhelper | 3 + debian/smokeping.prerm.debhelper | 16 + debian/smokeping.service | 24 + debian/smokeping.substvars | 4 + debian/smokeping/DEBIAN/conffiles | 16 + debian/smokeping/DEBIAN/control | 20 + debian/smokeping/DEBIAN/md5sums | 171 + debian/smokeping/DEBIAN/postinst | 125 + debian/smokeping/DEBIAN/postrm | 97 + debian/smokeping/DEBIAN/preinst | 57 + debian/smokeping/DEBIAN/prerm | 28 + .../etc/apache2/conf-available/smokeping.conf | 9 + debian/smokeping/etc/default/smokeping | 16 + debian/smokeping/etc/init.d/smokeping | 196 + debian/smokeping/etc/smokeping/basepage.html | 65 + debian/smokeping/etc/smokeping/config | 7 + .../smokeping/etc/smokeping/config.d/Alerts | 10 + .../smokeping/etc/smokeping/config.d/Database | 15 + .../smokeping/etc/smokeping/config.d/General | 16 + .../etc/smokeping/config.d/Presentation | 60 + .../smokeping/etc/smokeping/config.d/Probes | 6 + .../smokeping/etc/smokeping/config.d/Slaves | 10 + .../smokeping/etc/smokeping/config.d/Targets | 26 + .../etc/smokeping/config.d/pathnames | 8 + debian/smokeping/etc/smokeping/smokemail | 65 + .../smokeping/etc/smokeping/smokeping_secrets | 3 + debian/smokeping/etc/smokeping/tmail | 132 + debian/smokeping/usr/lib/BER.pm | 913 ++ debian/smokeping/usr/lib/SNMP_Session.pm | 1123 +++ debian/smokeping/usr/lib/SNMP_util.pm | 1321 +++ .../smokeping/usr/lib/cgi-bin/smokeping.cgi | 3 + .../usr/lib/systemd/system/smokeping.service | 24 + debian/smokeping/usr/sbin/smokeinfo | 143 + debian/smokeping/usr/sbin/smokeping | 184 + debian/smokeping/usr/sbin/tSmoke | 570 ++ .../usr/share/doc/smokeping/README.Debian | 22 + .../usr/share/doc/smokeping/README.md | 36 + .../usr/share/doc/smokeping/TODO.Debian | 12 + .../share/doc/smokeping/changelog.Debian.gz | Bin 0 -> 1678 bytes .../usr/share/doc/smokeping/changelog.gz | Bin 0 -> 69175 bytes .../usr/share/doc/smokeping/copyright | 156 + .../doc/smokeping/examples/config.echoping | 241 + .../smokeping/examples/config.fping-instances | 185 + .../smokeping/examples/config.multiple-probes | 189 + .../doc/smokeping/examples/config.simple | 156 + .../examples/config.targetvars-with-Curl | 210 + .../doc/smokeping/examples/config.template | 168 + .../examples/lighttpd_45-smokeping.conf | 22 + .../smokeping/examples/smokeping_secrets.dist | 3 + .../examples/systemd/slave_mode.conf | 11 + .../usr/share/man/man1/smokeinfo.1.gz | Bin 0 -> 1908 bytes .../usr/share/man/man1/smokeping.1.gz | Bin 0 -> 3171 bytes .../usr/share/man/man1/smokeping_cgi.1.gz | Bin 0 -> 2003 bytes .../smokeping/usr/share/man/man1/tSmoke.1.gz | Bin 0 -> 2340 bytes .../man/man3/Smokeping_matchers_Avgratio.3.gz | Bin 0 -> 1948 bytes .../man3/Smokeping_matchers_CheckLatency.3.gz | Bin 0 -> 1527 bytes .../man3/Smokeping_matchers_CheckLoss.3.gz | Bin 0 -> 1525 bytes .../Smokeping_matchers_ConsecutiveLoss.3.gz | Bin 0 -> 1947 bytes .../man/man3/Smokeping_matchers_ExpLoss.3.gz | Bin 0 -> 1911 bytes .../man/man3/Smokeping_matchers_Median.3.gz | Bin 0 -> 1640 bytes .../man/man3/Smokeping_matchers_Medratio.3.gz | Bin 0 -> 2013 bytes .../man/man3/Smokeping_matchers_base.3.gz | Bin 0 -> 2090 bytes .../man3/Smokeping_probes_AnotherCurl.3.gz | Bin 0 -> 3623 bytes .../man/man3/Smokeping_probes_AnotherDNS.3.gz | Bin 0 -> 2914 bytes .../man/man3/Smokeping_probes_AnotherSSH.3.gz | Bin 0 -> 2400 bytes .../man3/Smokeping_probes_CiscoRTTMonDNS.3.gz | Bin 0 -> 3193 bytes .../Smokeping_probes_CiscoRTTMonEchoICMP.3.gz | Bin 0 -> 3814 bytes ...mokeping_probes_CiscoRTTMonTcpConnect.3.gz | Bin 0 -> 3499 bytes .../share/man/man3/Smokeping_probes_Curl.3.gz | Bin 0 -> 3557 bytes .../share/man/man3/Smokeping_probes_DNS.3.gz | Bin 0 -> 2295 bytes .../man/man3/Smokeping_probes_DismanPing.3.gz | Bin 0 -> 3044 bytes .../man/man3/Smokeping_probes_EchoPing.3.gz | Bin 0 -> 2567 bytes .../Smokeping_probes_EchoPingChargen.3.gz | Bin 0 -> 2287 bytes .../man3/Smokeping_probes_EchoPingDNS.3.gz | Bin 0 -> 2708 bytes .../Smokeping_probes_EchoPingDiscard.3.gz | Bin 0 -> 2315 bytes .../man3/Smokeping_probes_EchoPingHttp.3.gz | Bin 0 -> 2724 bytes .../man3/Smokeping_probes_EchoPingHttps.3.gz | Bin 0 -> 2760 bytes .../man3/Smokeping_probes_EchoPingIcp.3.gz | Bin 0 -> 2361 bytes .../man3/Smokeping_probes_EchoPingLDAP.3.gz | Bin 0 -> 2663 bytes .../man3/Smokeping_probes_EchoPingPlugin.3.gz | Bin 0 -> 2589 bytes .../man3/Smokeping_probes_EchoPingSmtp.3.gz | Bin 0 -> 2259 bytes .../man3/Smokeping_probes_EchoPingWhois.3.gz | Bin 0 -> 2574 bytes .../man/man3/Smokeping_probes_FPing.3.gz | Bin 0 -> 2976 bytes .../man/man3/Smokeping_probes_FPing6.3.gz | Bin 0 -> 2605 bytes .../Smokeping_probes_FPingContinuous.3.gz | Bin 0 -> 2718 bytes .../man3/Smokeping_probes_FTPtransfer.3.gz | Bin 0 -> 3519 bytes .../man/man3/Smokeping_probes_IOSPing.3.gz | Bin 0 -> 3039 bytes .../share/man/man3/Smokeping_probes_IRTT.3.gz | Bin 0 -> 5031 bytes .../share/man/man3/Smokeping_probes_LDAP.3.gz | Bin 0 -> 3142 bytes .../man/man3/Smokeping_probes_NFSping.3.gz | Bin 0 -> 2258 bytes .../man3/Smokeping_probes_OpenSSHEOSPing.3.gz | Bin 0 -> 2955 bytes .../Smokeping_probes_OpenSSHJunOSPing.3.gz | Bin 0 -> 2901 bytes .../man/man3/Smokeping_probes_Qstat.3.gz | Bin 0 -> 2409 bytes .../man/man3/Smokeping_probes_Radius.3.gz | Bin 0 -> 2918 bytes .../man3/Smokeping_probes_RemoteFPing.3.gz | Bin 0 -> 3273 bytes .../share/man/man3/Smokeping_probes_SSH.3.gz | Bin 0 -> 2565 bytes .../man/man3/Smokeping_probes_SendEmail.3.gz | Bin 0 -> 2234 bytes .../man/man3/Smokeping_probes_SipSak.3.gz | Bin 0 -> 2393 bytes .../man/man3/Smokeping_probes_TCPPing.3.gz | Bin 0 -> 2684 bytes .../man/man3/Smokeping_probes_TacacsPlus.3.gz | Bin 0 -> 2842 bytes .../man3/Smokeping_probes_TelnetIOSPing.3.gz | Bin 0 -> 3699 bytes .../Smokeping_probes_TelnetJunOSPing.3.gz | Bin 0 -> 3622 bytes .../man3/Smokeping_probes_TraceroutePing.3.gz | Bin 0 -> 3380 bytes .../man3/Smokeping_probes_WebProxyFilter.3.gz | Bin 0 -> 2928 bytes .../share/man/man3/Smokeping_probes_base.3.gz | Bin 0 -> 1720 bytes .../man/man3/Smokeping_probes_basefork.3.gz | Bin 0 -> 2676 bytes .../man/man3/Smokeping_probes_basevars.3.gz | Bin 0 -> 2005 bytes .../Smokeping_probes_passwordchecker.3.gz | Bin 0 -> 2702 bytes .../share/man/man3/Smokeping_probes_skel.3.gz | Bin 0 -> 1977 bytes .../man/man3/Smokeping_sorters_Loss.3.gz | Bin 0 -> 1470 bytes .../share/man/man3/Smokeping_sorters_Max.3.gz | Bin 0 -> 1487 bytes .../man/man3/Smokeping_sorters_Median.3.gz | Bin 0 -> 1487 bytes .../man/man3/Smokeping_sorters_StdDev.3.gz | Bin 0 -> 1516 bytes .../man/man3/Smokeping_sorters_base.3.gz | Bin 0 -> 2352 bytes .../usr/share/man/man5/smokeping_config.5.gz | Bin 0 -> 23220 bytes .../share/man/man5/smokeping_examples.5.gz | Bin 0 -> 5368 bytes .../usr/share/man/man7/smokeping_extend.7.gz | Bin 0 -> 4929 bytes .../usr/share/man/man7/smokeping_install.7.gz | Bin 0 -> 3306 bytes .../man/man7/smokeping_master_slave.7.gz | Bin 0 -> 3462 bytes .../usr/share/man/man7/smokeping_upgrade.7.gz | Bin 0 -> 6637 bytes debian/smokeping/usr/share/perl5/Smokeping.pm | 5169 +++++++++++ .../usr/share/perl5/Smokeping/Colorspace.pm | 152 + .../usr/share/perl5/Smokeping/Config.pm | 15 + .../usr/share/perl5/Smokeping/Examples.pm | 678 ++ .../usr/share/perl5/Smokeping/Graphs.pm | 403 + .../usr/share/perl5/Smokeping/Info.pm | 204 + .../usr/share/perl5/Smokeping/Master.pm | 339 + .../usr/share/perl5/Smokeping/RRDhelpers.pm | 92 + .../usr/share/perl5/Smokeping/RRDtools.pm | 225 + .../usr/share/perl5/Smokeping/Slave.pm | 167 + .../share/perl5/Smokeping/ciscoRttMonMIB.pm | 111 + .../perl5/Smokeping/matchers/Avgratio.pm | 148 + .../perl5/Smokeping/matchers/CheckLatency.pm | 102 + .../perl5/Smokeping/matchers/CheckLoss.pm | 100 + .../Smokeping/matchers/ConsecutiveLoss.pm | 158 + .../share/perl5/Smokeping/matchers/ExpLoss.pm | 152 + .../share/perl5/Smokeping/matchers/Median.pm | 101 + .../perl5/Smokeping/matchers/Medratio.pm | 118 + .../share/perl5/Smokeping/matchers/base.pm | 135 + .../usr/share/perl5/Smokeping/pingMIB.pm | 80 + .../perl5/Smokeping/probes/AnotherCurl.pm | 357 + .../perl5/Smokeping/probes/AnotherDNS.pm | 247 + .../perl5/Smokeping/probes/AnotherSSH.pm | 238 + .../perl5/Smokeping/probes/CiscoRTTMonDNS.pm | 300 + .../Smokeping/probes/CiscoRTTMonEchoICMP.pm | 334 + .../Smokeping/probes/CiscoRTTMonTcpConnect.pm | 311 + .../usr/share/perl5/Smokeping/probes/Curl.pm | 352 + .../usr/share/perl5/Smokeping/probes/DNS.pm | 142 + .../perl5/Smokeping/probes/DismanPing.pm | 451 + .../share/perl5/Smokeping/probes/EchoPing.pm | 276 + .../perl5/Smokeping/probes/EchoPingChargen.pm | 56 + .../perl5/Smokeping/probes/EchoPingDNS.pm | 95 + .../perl5/Smokeping/probes/EchoPingDiscard.pm | 50 + .../perl5/Smokeping/probes/EchoPingHttp.pm | 146 + .../perl5/Smokeping/probes/EchoPingHttps.pm | 66 + .../perl5/Smokeping/probes/EchoPingIcp.pm | 79 + .../perl5/Smokeping/probes/EchoPingLDAP.pm | 99 + .../perl5/Smokeping/probes/EchoPingPlugin.pm | 108 + .../perl5/Smokeping/probes/EchoPingSmtp.pm | 66 + .../perl5/Smokeping/probes/EchoPingWhois.pm | 78 + .../usr/share/perl5/Smokeping/probes/FPing.pm | 286 + .../share/perl5/Smokeping/probes/FPing6.pm | 62 + .../perl5/Smokeping/probes/FPingContinuous.pm | 447 + .../perl5/Smokeping/probes/FTPtransfer.pm | 240 + .../share/perl5/Smokeping/probes/IOSPing.pm | 264 + .../usr/share/perl5/Smokeping/probes/IRTT.pm | 512 ++ .../usr/share/perl5/Smokeping/probes/LDAP.pm | 281 + .../share/perl5/Smokeping/probes/NFSping.pm | 203 + .../perl5/Smokeping/probes/OpenSSHEOSPing.pm | 206 + .../Smokeping/probes/OpenSSHJunOSPing.pm | 207 + .../usr/share/perl5/Smokeping/probes/Qstat.pm | 203 + .../share/perl5/Smokeping/probes/Radius.pm | 264 + .../perl5/Smokeping/probes/RemoteFPing.pm | 130 + .../usr/share/perl5/Smokeping/probes/SSH.pm | 173 + .../share/perl5/Smokeping/probes/SendEmail.pm | 178 + .../share/perl5/Smokeping/probes/SipSak.pm | 148 + .../share/perl5/Smokeping/probes/TCPPing.pm | 169 + .../perl5/Smokeping/probes/TacacsPlus.pm | 256 + .../perl5/Smokeping/probes/TelnetIOSPing.pm | 294 + .../perl5/Smokeping/probes/TelnetJunOSPing.pm | 250 + .../perl5/Smokeping/probes/TraceroutePing.pm | 335 + .../perl5/Smokeping/probes/WebProxyFilter.pm | 171 + .../usr/share/perl5/Smokeping/probes/base.pm | 455 + .../share/perl5/Smokeping/probes/basefork.pm | 278 + .../share/perl5/Smokeping/probes/basevars.pm | 105 + .../perl5/Smokeping/probes/passwordchecker.pm | 148 + .../usr/share/perl5/Smokeping/probes/skel.pm | 134 + .../usr/share/perl5/Smokeping/sorters/Loss.pm | 82 + .../usr/share/perl5/Smokeping/sorters/Max.pm | 81 + .../share/perl5/Smokeping/sorters/Median.pm | 83 + .../share/perl5/Smokeping/sorters/StdDev.pm | 92 + .../usr/share/perl5/Smokeping/sorters/base.pm | 149 + .../usr/share/smokeping/smokeping.cgi | 94 + .../smokeping/www/css/smokeping-print.css | 16 + .../smokeping/www/css/smokeping-screen.css | 286 + .../smokeping/usr/share/smokeping/www/images | 1 + .../usr/share/smokeping/www/js/cropper | 1 + .../usr/share/smokeping/www/js/prototype | 1 + .../usr/share/smokeping/www/js/prototype.js | 12 + .../usr/share/smokeping/www/js/scriptaculous | 1 + .../usr/share/smokeping/www/js/smokeping.js | 171 + .../share/smokeping/www/smokeping.fcgi.dist | 2 + debian/source/format | 1 + debian/split_config | 22 + debian/systemd/slave_mode.conf | 11 + debian/upstream/metadata | 5 + debian/watch | 3 + doc/Makefile | 668 ++ doc/Makefile.am | 124 + doc/Makefile.in | 668 ++ doc/smokeping_extend.pod | 263 + doc/smokeping_install.pod | 188 + doc/smokeping_install.txt | 166 + doc/smokeping_master_slave.pod | 171 + doc/smokeping_upgrade.pod | 419 + etc/Makefile | 490 ++ etc/Makefile.am | 21 + etc/Makefile.in | 490 ++ etc/basepage.html.dist | 65 + etc/config.dist | 150 + etc/config.dist.in | 150 + etc/smokemail.dist | 65 + etc/smokeping_secrets.dist | 3 + etc/tmail.dist | 132 + htdocs/Makefile | 517 ++ htdocs/Makefile.am | 46 + htdocs/Makefile.in | 517 ++ htdocs/css/smokeping-print.css | 16 + htdocs/css/smokeping-screen.css | 286 + htdocs/js/cropper/cropper.css | 185 + htdocs/js/cropper/cropper.js | 1 + htdocs/js/cropper/cropper.uncompressed.js | 1369 +++ htdocs/js/cropper/licence.txt | 11 + htdocs/js/cropper/marqueeHoriz.gif | Bin 0 -> 1125 bytes htdocs/js/cropper/marqueeVert.gif | Bin 0 -> 1141 bytes htdocs/js/prototype.js | 12 + htdocs/js/scriptaculous/builder.js | 1 + htdocs/js/scriptaculous/controls.js | 1 + htdocs/js/scriptaculous/dragdrop.js | 1 + htdocs/js/scriptaculous/effects.js | 1 + htdocs/js/scriptaculous/scriptaculous.js | 1 + htdocs/js/scriptaculous/slider.js | 1 + htdocs/js/scriptaculous/sound.js | 1 + htdocs/js/scriptaculous/unittest.js | 1 + htdocs/js/smokeping.js | 171 + lib/BER.pm | 913 ++ lib/Makefile | 500 ++ lib/Makefile.am | 35 + lib/Makefile.in | 500 ++ lib/SNMP_Session.pm | 1123 +++ lib/SNMP_util.pm | 1321 +++ lib/Smokeping.pm | 5169 +++++++++++ lib/Smokeping/Colorspace.pm | 152 + lib/Smokeping/Config.pm | 15 + lib/Smokeping/Examples.pm | 678 ++ lib/Smokeping/Graphs.pm | 403 + lib/Smokeping/Info.pm | 204 + lib/Smokeping/Master.pm | 339 + lib/Smokeping/RRDhelpers.pm | 92 + lib/Smokeping/RRDtools.pm | 225 + lib/Smokeping/Slave.pm | 167 + lib/Smokeping/ciscoRttMonMIB.pm | 111 + lib/Smokeping/matchers/Avgratio.pm | 148 + lib/Smokeping/matchers/CheckLatency.pm | 102 + lib/Smokeping/matchers/CheckLoss.pm | 100 + lib/Smokeping/matchers/ConsecutiveLoss.pm | 158 + lib/Smokeping/matchers/ExpLoss.pm | 152 + lib/Smokeping/matchers/Median.pm | 101 + lib/Smokeping/matchers/Medratio.pm | 118 + lib/Smokeping/matchers/base.pm | 135 + lib/Smokeping/pingMIB.pm | 80 + lib/Smokeping/probes/AnotherCurl.pm | 357 + lib/Smokeping/probes/AnotherDNS.pm | 247 + lib/Smokeping/probes/AnotherSSH.pm | 238 + lib/Smokeping/probes/CiscoRTTMonDNS.pm | 300 + lib/Smokeping/probes/CiscoRTTMonEchoICMP.pm | 334 + lib/Smokeping/probes/CiscoRTTMonTcpConnect.pm | 311 + lib/Smokeping/probes/Curl.pm | 352 + lib/Smokeping/probes/DNS.pm | 142 + lib/Smokeping/probes/DismanPing.pm | 451 + lib/Smokeping/probes/EchoPing.pm | 276 + lib/Smokeping/probes/EchoPingChargen.pm | 56 + lib/Smokeping/probes/EchoPingDNS.pm | 95 + lib/Smokeping/probes/EchoPingDiscard.pm | 50 + lib/Smokeping/probes/EchoPingHttp.pm | 146 + lib/Smokeping/probes/EchoPingHttps.pm | 66 + lib/Smokeping/probes/EchoPingIcp.pm | 79 + lib/Smokeping/probes/EchoPingLDAP.pm | 99 + lib/Smokeping/probes/EchoPingPlugin.pm | 108 + lib/Smokeping/probes/EchoPingSmtp.pm | 66 + lib/Smokeping/probes/EchoPingWhois.pm | 78 + lib/Smokeping/probes/FPing.pm | 286 + lib/Smokeping/probes/FPing6.pm | 62 + lib/Smokeping/probes/FPingContinuous.pm | 447 + lib/Smokeping/probes/FTPtransfer.pm | 240 + lib/Smokeping/probes/IOSPing.pm | 264 + lib/Smokeping/probes/IRTT.pm | 512 ++ lib/Smokeping/probes/LDAP.pm | 281 + lib/Smokeping/probes/NFSping.pm | 203 + lib/Smokeping/probes/OpenSSHEOSPing.pm | 206 + lib/Smokeping/probes/OpenSSHJunOSPing.pm | 207 + lib/Smokeping/probes/Qstat.pm | 203 + lib/Smokeping/probes/Radius.pm | 264 + lib/Smokeping/probes/RemoteFPing.pm | 130 + lib/Smokeping/probes/SSH.pm | 173 + lib/Smokeping/probes/SendEmail.pm | 178 + lib/Smokeping/probes/SipSak.pm | 148 + lib/Smokeping/probes/TCPPing.pm | 169 + lib/Smokeping/probes/TacacsPlus.pm | 256 + lib/Smokeping/probes/TelnetIOSPing.pm | 294 + lib/Smokeping/probes/TelnetJunOSPing.pm | 250 + lib/Smokeping/probes/TraceroutePing.pm | 335 + lib/Smokeping/probes/WebProxyFilter.pm | 171 + lib/Smokeping/probes/base.pm | 455 + lib/Smokeping/probes/basefork.pm | 278 + lib/Smokeping/probes/basevars.pm | 105 + lib/Smokeping/probes/passwordchecker.pm | 148 + lib/Smokeping/probes/skel.pm | 134 + lib/Smokeping/sorters/Loss.pm | 82 + lib/Smokeping/sorters/Max.pm | 81 + lib/Smokeping/sorters/Median.pm | 83 + lib/Smokeping/sorters/StdDev.pm | 92 + lib/Smokeping/sorters/base.pm | 149 + thirdparty/Makefile | 466 + thirdparty/Makefile.am | 50 + thirdparty/Makefile.in | 466 + thirdparty/cpanfile-5.38.snapshot | 1535 ++++ 407 files changed, 99769 insertions(+) create mode 100644 CHANGES create mode 100644 CONTRIBUTORS create mode 100644 COPYRIGHT create mode 100644 LICENSE create mode 100644 Makefile create mode 100644 Makefile.am create mode 100644 Makefile.in create mode 100644 README.md create mode 100644 TODO create mode 100644 VERSION create mode 100644 aclocal.m4 create mode 100644 autom4te.cache/output.0 create mode 100644 autom4te.cache/output.1 create mode 100644 autom4te.cache/output.2 create mode 100644 autom4te.cache/requests create mode 100644 autom4te.cache/traces.0 create mode 100644 autom4te.cache/traces.1 create mode 100644 autom4te.cache/traces.2 create mode 100644 bin/Makefile create mode 100644 bin/Makefile.am create mode 100644 bin/Makefile.in create mode 100755 bin/smokeinfo create mode 100755 bin/smokeping create mode 100755 bin/smokeping_cgi create mode 100755 bin/tSmoke create mode 100644 config.log create mode 100755 config.status create mode 100755 configure create mode 100644 configure.ac create mode 100755 conftools/install-sh create mode 100755 conftools/missing create mode 100644 cpanfile create mode 100644 debian/.debhelper/generated/smokeping/dh_installchangelogs.dch.trimmed create mode 100644 debian/.debhelper/generated/smokeping/dh_installchangelogs.news.trimmed create mode 100644 debian/.debhelper/generated/smokeping/installed-by-dh_installdocs create mode 100644 debian/.debhelper/generated/smokeping/installed-by-dh_installexamples create mode 100644 debian/.debhelper/generated/smokeping/installed-by-dh_installman create mode 100644 debian/.debhelper/generated/smokeping/postinst.service create mode 100644 debian/.debhelper/generated/smokeping/postrm.service create mode 100644 debian/.debhelper/generated/smokeping/preinst.service create mode 100644 debian/.debhelper/generated/smokeping/prerm.service create mode 100644 debian/NEWS create mode 100644 debian/README.Debian create mode 100644 debian/README.source create mode 100644 debian/TODO create mode 100644 debian/autoreconf.after create mode 100644 debian/autoreconf.before create mode 100644 debian/changelog create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/debhelper-build-stamp create mode 100644 debian/default-config create mode 100644 debian/dirs create mode 100644 debian/docs create mode 100644 debian/examples create mode 100644 debian/files create mode 100644 debian/init.d create mode 100644 debian/lighttpd_45-smokeping.conf create mode 100644 debian/patches/asset_path_changes create mode 100644 debian/patches/dont_build_third_party_js.patch create mode 100644 debian/patches/fix-conf-paths create mode 100644 debian/patches/fix-paths-inside-executables create mode 100644 debian/patches/fix-perl-lib create mode 100644 debian/patches/fix_curl_probe.patch create mode 100644 debian/patches/proper-sample-conf create mode 100644 debian/patches/series create mode 100644 debian/postinst create mode 100644 debian/postrm create mode 100644 debian/preinst create mode 100755 debian/rules create mode 100644 debian/smokeping.apache2 create mode 100644 debian/smokeping.cgi create mode 100644 debian/smokeping.conf create mode 100644 debian/smokeping.debhelper.log create mode 100644 debian/smokeping.default create mode 100644 debian/smokeping.dirs create mode 100644 debian/smokeping.links create mode 100644 debian/smokeping.maintscript create mode 100644 debian/smokeping.postinst.debhelper create mode 100644 debian/smokeping.postrm.debhelper create mode 100644 debian/smokeping.preinst.debhelper create mode 100644 debian/smokeping.prerm.debhelper create mode 100644 debian/smokeping.service create mode 100644 debian/smokeping.substvars create mode 100644 debian/smokeping/DEBIAN/conffiles create mode 100644 debian/smokeping/DEBIAN/control create mode 100644 debian/smokeping/DEBIAN/md5sums create mode 100755 debian/smokeping/DEBIAN/postinst create mode 100755 debian/smokeping/DEBIAN/postrm create mode 100755 debian/smokeping/DEBIAN/preinst create mode 100755 debian/smokeping/DEBIAN/prerm create mode 100644 debian/smokeping/etc/apache2/conf-available/smokeping.conf create mode 100644 debian/smokeping/etc/default/smokeping create mode 100755 debian/smokeping/etc/init.d/smokeping create mode 100644 debian/smokeping/etc/smokeping/basepage.html create mode 100644 debian/smokeping/etc/smokeping/config create mode 100644 debian/smokeping/etc/smokeping/config.d/Alerts create mode 100644 debian/smokeping/etc/smokeping/config.d/Database create mode 100644 debian/smokeping/etc/smokeping/config.d/General create mode 100644 debian/smokeping/etc/smokeping/config.d/Presentation create mode 100644 debian/smokeping/etc/smokeping/config.d/Probes create mode 100644 debian/smokeping/etc/smokeping/config.d/Slaves create mode 100644 debian/smokeping/etc/smokeping/config.d/Targets create mode 100644 debian/smokeping/etc/smokeping/config.d/pathnames create mode 100644 debian/smokeping/etc/smokeping/smokemail create mode 100644 debian/smokeping/etc/smokeping/smokeping_secrets create mode 100644 debian/smokeping/etc/smokeping/tmail create mode 100644 debian/smokeping/usr/lib/BER.pm create mode 100644 debian/smokeping/usr/lib/SNMP_Session.pm create mode 100644 debian/smokeping/usr/lib/SNMP_util.pm create mode 100755 debian/smokeping/usr/lib/cgi-bin/smokeping.cgi create mode 100644 debian/smokeping/usr/lib/systemd/system/smokeping.service create mode 100755 debian/smokeping/usr/sbin/smokeinfo create mode 100755 debian/smokeping/usr/sbin/smokeping create mode 100755 debian/smokeping/usr/sbin/tSmoke create mode 100644 debian/smokeping/usr/share/doc/smokeping/README.Debian create mode 100644 debian/smokeping/usr/share/doc/smokeping/README.md create mode 100644 debian/smokeping/usr/share/doc/smokeping/TODO.Debian create mode 100644 debian/smokeping/usr/share/doc/smokeping/changelog.Debian.gz create mode 100644 debian/smokeping/usr/share/doc/smokeping/changelog.gz create mode 100644 debian/smokeping/usr/share/doc/smokeping/copyright create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/config.echoping create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/config.fping-instances create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/config.multiple-probes create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/config.simple create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/config.targetvars-with-Curl create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/config.template create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/lighttpd_45-smokeping.conf create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/smokeping_secrets.dist create mode 100644 debian/smokeping/usr/share/doc/smokeping/examples/systemd/slave_mode.conf create mode 100644 debian/smokeping/usr/share/man/man1/smokeinfo.1.gz create mode 100644 debian/smokeping/usr/share/man/man1/smokeping.1.gz create mode 100644 debian/smokeping/usr/share/man/man1/smokeping_cgi.1.gz create mode 100644 debian/smokeping/usr/share/man/man1/tSmoke.1.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_matchers_Avgratio.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_matchers_CheckLatency.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_matchers_CheckLoss.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_matchers_ConsecutiveLoss.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_matchers_ExpLoss.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_matchers_Median.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_matchers_Medratio.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_matchers_base.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_AnotherCurl.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_AnotherDNS.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_AnotherSSH.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonDNS.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonEchoICMP.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonTcpConnect.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_Curl.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_DNS.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_DismanPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingChargen.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingDNS.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingDiscard.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingHttp.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingHttps.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingIcp.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingLDAP.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingPlugin.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingSmtp.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingWhois.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_FPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_FPing6.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_FPingContinuous.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_FTPtransfer.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_IOSPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_IRTT.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_LDAP.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_NFSping.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_OpenSSHEOSPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_OpenSSHJunOSPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_Qstat.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_Radius.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_RemoteFPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_SSH.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_SendEmail.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_SipSak.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_TCPPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_TacacsPlus.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_TelnetIOSPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_TelnetJunOSPing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_TraceroutePing.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_WebProxyFilter.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_base.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_basefork.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_basevars.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_passwordchecker.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_probes_skel.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_sorters_Loss.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_sorters_Max.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_sorters_Median.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_sorters_StdDev.3.gz create mode 100644 debian/smokeping/usr/share/man/man3/Smokeping_sorters_base.3.gz create mode 100644 debian/smokeping/usr/share/man/man5/smokeping_config.5.gz create mode 100644 debian/smokeping/usr/share/man/man5/smokeping_examples.5.gz create mode 100644 debian/smokeping/usr/share/man/man7/smokeping_extend.7.gz create mode 100644 debian/smokeping/usr/share/man/man7/smokeping_install.7.gz create mode 100644 debian/smokeping/usr/share/man/man7/smokeping_master_slave.7.gz create mode 100644 debian/smokeping/usr/share/man/man7/smokeping_upgrade.7.gz create mode 100644 debian/smokeping/usr/share/perl5/Smokeping.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/Colorspace.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/Config.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/Examples.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/Graphs.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/Info.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/Master.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/RRDhelpers.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/RRDtools.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/Slave.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/ciscoRttMonMIB.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/matchers/Avgratio.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/matchers/CheckLatency.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/matchers/CheckLoss.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/matchers/ConsecutiveLoss.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/matchers/ExpLoss.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/matchers/Median.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/matchers/Medratio.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/matchers/base.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/pingMIB.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/AnotherCurl.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/AnotherDNS.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/AnotherSSH.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/CiscoRTTMonDNS.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/CiscoRTTMonEchoICMP.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/CiscoRTTMonTcpConnect.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/Curl.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/DNS.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/DismanPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingChargen.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingDNS.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingDiscard.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingHttp.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingHttps.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingIcp.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingLDAP.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingPlugin.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingSmtp.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/EchoPingWhois.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/FPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/FPing6.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/FPingContinuous.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/FTPtransfer.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/IOSPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/IRTT.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/LDAP.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/NFSping.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/OpenSSHEOSPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/OpenSSHJunOSPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/Qstat.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/Radius.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/RemoteFPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/SSH.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/SendEmail.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/SipSak.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/TCPPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/TacacsPlus.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/TelnetIOSPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/TelnetJunOSPing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/TraceroutePing.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/WebProxyFilter.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/base.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/basefork.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/basevars.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/passwordchecker.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/probes/skel.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/sorters/Loss.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/sorters/Max.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/sorters/Median.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/sorters/StdDev.pm create mode 100644 debian/smokeping/usr/share/perl5/Smokeping/sorters/base.pm create mode 100755 debian/smokeping/usr/share/smokeping/smokeping.cgi create mode 100644 debian/smokeping/usr/share/smokeping/www/css/smokeping-print.css create mode 100644 debian/smokeping/usr/share/smokeping/www/css/smokeping-screen.css create mode 120000 debian/smokeping/usr/share/smokeping/www/images create mode 120000 debian/smokeping/usr/share/smokeping/www/js/cropper create mode 120000 debian/smokeping/usr/share/smokeping/www/js/prototype create mode 100644 debian/smokeping/usr/share/smokeping/www/js/prototype.js create mode 120000 debian/smokeping/usr/share/smokeping/www/js/scriptaculous create mode 100644 debian/smokeping/usr/share/smokeping/www/js/smokeping.js create mode 100755 debian/smokeping/usr/share/smokeping/www/smokeping.fcgi.dist create mode 100644 debian/source/format create mode 100755 debian/split_config create mode 100644 debian/systemd/slave_mode.conf create mode 100644 debian/upstream/metadata create mode 100644 debian/watch create mode 100644 doc/Makefile create mode 100644 doc/Makefile.am create mode 100644 doc/Makefile.in create mode 100644 doc/smokeping_extend.pod create mode 100644 doc/smokeping_install.pod create mode 100644 doc/smokeping_install.txt create mode 100644 doc/smokeping_master_slave.pod create mode 100644 doc/smokeping_upgrade.pod create mode 100644 etc/Makefile create mode 100644 etc/Makefile.am create mode 100644 etc/Makefile.in create mode 100644 etc/basepage.html.dist create mode 100644 etc/config.dist create mode 100644 etc/config.dist.in create mode 100644 etc/smokemail.dist create mode 100644 etc/smokeping_secrets.dist create mode 100644 etc/tmail.dist create mode 100644 htdocs/Makefile create mode 100644 htdocs/Makefile.am create mode 100644 htdocs/Makefile.in create mode 100644 htdocs/css/smokeping-print.css create mode 100644 htdocs/css/smokeping-screen.css create mode 100644 htdocs/js/cropper/cropper.css create mode 100644 htdocs/js/cropper/cropper.js create mode 100644 htdocs/js/cropper/cropper.uncompressed.js create mode 100644 htdocs/js/cropper/licence.txt create mode 100644 htdocs/js/cropper/marqueeHoriz.gif create mode 100644 htdocs/js/cropper/marqueeVert.gif create mode 100644 htdocs/js/prototype.js create mode 100644 htdocs/js/scriptaculous/builder.js create mode 100644 htdocs/js/scriptaculous/controls.js create mode 100644 htdocs/js/scriptaculous/dragdrop.js create mode 100644 htdocs/js/scriptaculous/effects.js create mode 100644 htdocs/js/scriptaculous/scriptaculous.js create mode 100644 htdocs/js/scriptaculous/slider.js create mode 100644 htdocs/js/scriptaculous/sound.js create mode 100644 htdocs/js/scriptaculous/unittest.js create mode 100644 htdocs/js/smokeping.js create mode 100644 lib/BER.pm create mode 100644 lib/Makefile create mode 100644 lib/Makefile.am create mode 100644 lib/Makefile.in create mode 100644 lib/SNMP_Session.pm create mode 100644 lib/SNMP_util.pm create mode 100644 lib/Smokeping.pm create mode 100644 lib/Smokeping/Colorspace.pm create mode 100644 lib/Smokeping/Config.pm create mode 100644 lib/Smokeping/Examples.pm create mode 100644 lib/Smokeping/Graphs.pm create mode 100644 lib/Smokeping/Info.pm create mode 100644 lib/Smokeping/Master.pm create mode 100644 lib/Smokeping/RRDhelpers.pm create mode 100644 lib/Smokeping/RRDtools.pm create mode 100644 lib/Smokeping/Slave.pm create mode 100644 lib/Smokeping/ciscoRttMonMIB.pm create mode 100644 lib/Smokeping/matchers/Avgratio.pm create mode 100644 lib/Smokeping/matchers/CheckLatency.pm create mode 100644 lib/Smokeping/matchers/CheckLoss.pm create mode 100644 lib/Smokeping/matchers/ConsecutiveLoss.pm create mode 100644 lib/Smokeping/matchers/ExpLoss.pm create mode 100644 lib/Smokeping/matchers/Median.pm create mode 100644 lib/Smokeping/matchers/Medratio.pm create mode 100644 lib/Smokeping/matchers/base.pm create mode 100644 lib/Smokeping/pingMIB.pm create mode 100644 lib/Smokeping/probes/AnotherCurl.pm create mode 100644 lib/Smokeping/probes/AnotherDNS.pm create mode 100644 lib/Smokeping/probes/AnotherSSH.pm create mode 100644 lib/Smokeping/probes/CiscoRTTMonDNS.pm create mode 100644 lib/Smokeping/probes/CiscoRTTMonEchoICMP.pm create mode 100644 lib/Smokeping/probes/CiscoRTTMonTcpConnect.pm create mode 100644 lib/Smokeping/probes/Curl.pm create mode 100644 lib/Smokeping/probes/DNS.pm create mode 100644 lib/Smokeping/probes/DismanPing.pm create mode 100644 lib/Smokeping/probes/EchoPing.pm create mode 100644 lib/Smokeping/probes/EchoPingChargen.pm create mode 100644 lib/Smokeping/probes/EchoPingDNS.pm create mode 100644 lib/Smokeping/probes/EchoPingDiscard.pm create mode 100644 lib/Smokeping/probes/EchoPingHttp.pm create mode 100644 lib/Smokeping/probes/EchoPingHttps.pm create mode 100644 lib/Smokeping/probes/EchoPingIcp.pm create mode 100644 lib/Smokeping/probes/EchoPingLDAP.pm create mode 100644 lib/Smokeping/probes/EchoPingPlugin.pm create mode 100644 lib/Smokeping/probes/EchoPingSmtp.pm create mode 100644 lib/Smokeping/probes/EchoPingWhois.pm create mode 100644 lib/Smokeping/probes/FPing.pm create mode 100644 lib/Smokeping/probes/FPing6.pm create mode 100644 lib/Smokeping/probes/FPingContinuous.pm create mode 100644 lib/Smokeping/probes/FTPtransfer.pm create mode 100644 lib/Smokeping/probes/IOSPing.pm create mode 100644 lib/Smokeping/probes/IRTT.pm create mode 100644 lib/Smokeping/probes/LDAP.pm create mode 100644 lib/Smokeping/probes/NFSping.pm create mode 100644 lib/Smokeping/probes/OpenSSHEOSPing.pm create mode 100644 lib/Smokeping/probes/OpenSSHJunOSPing.pm create mode 100644 lib/Smokeping/probes/Qstat.pm create mode 100644 lib/Smokeping/probes/Radius.pm create mode 100644 lib/Smokeping/probes/RemoteFPing.pm create mode 100644 lib/Smokeping/probes/SSH.pm create mode 100644 lib/Smokeping/probes/SendEmail.pm create mode 100644 lib/Smokeping/probes/SipSak.pm create mode 100644 lib/Smokeping/probes/TCPPing.pm create mode 100644 lib/Smokeping/probes/TacacsPlus.pm create mode 100644 lib/Smokeping/probes/TelnetIOSPing.pm create mode 100644 lib/Smokeping/probes/TelnetJunOSPing.pm create mode 100644 lib/Smokeping/probes/TraceroutePing.pm create mode 100644 lib/Smokeping/probes/WebProxyFilter.pm create mode 100644 lib/Smokeping/probes/base.pm create mode 100644 lib/Smokeping/probes/basefork.pm create mode 100644 lib/Smokeping/probes/basevars.pm create mode 100644 lib/Smokeping/probes/passwordchecker.pm create mode 100644 lib/Smokeping/probes/skel.pm create mode 100644 lib/Smokeping/sorters/Loss.pm create mode 100644 lib/Smokeping/sorters/Max.pm create mode 100644 lib/Smokeping/sorters/Median.pm create mode 100644 lib/Smokeping/sorters/StdDev.pm create mode 100644 lib/Smokeping/sorters/base.pm create mode 100644 thirdparty/Makefile create mode 100644 thirdparty/Makefile.am create mode 100644 thirdparty/Makefile.in create mode 100644 thirdparty/cpanfile-5.38.snapshot diff --git a/CHANGES b/CHANGES new file mode 100644 index 0000000..4365eff --- /dev/null +++ b/CHANGES @@ -0,0 +1,7829 @@ +2025-02-19 14:07:15 +0100 Tobias Oetiker + + - Enhancements to SSH.pm probe for #431, allowing configurable start-up test host and doc improvements + - fix error when toggling autorefresh @jlu5 + - Support parsing IPv6 output in OpenSSHJunOSPing Plugin @zimage + - Enhancement to SSHProbe allows specification of IPv4 vs IPv6 transport, #385 + - InfluxDB 2.x v1 (compatibility) api doesn't set the "WWW-Authenticate" header (violating rfc7235). + Work around this issue by manually setting the Authorization header @HandyMenny + - use actual link for form submission @michaelharo + - allow to enable/disable autorefresh from ui @Fantros + - make image responsive @HinataKato + - add fix for #209 - auto create 'dyndir' structure when saving slave updates @simfishing + - add favicon (bas64) to basepage.html @rezzorix + - add "Home"-Link to basepage.html @rezzorix + - remove --insecure from curl (wget does not have it!) in configure.ac @Gunni + - add fix for curl feature checking introduced in curl 7.74 and later @matellis + - enhancement to extend color handling, making dark templates easier to do @matellis + - enhancement to remove more borders with graphborders set to no @matellis + - add "literalsearch" option to filter targets using literal strings instead + of regex @jlu5 + - OpenSSH 9.8 compatibility for SSH Plugin @ermuller + +2021-08-13 08:12:06 +0200 Tobias Oetiker + + - release 2.8.2 + - fix spelling issues in FTPtransfer.pm + - add missing README.md to the release archive + +2021-08-11 17:12:22 +0200 Tobias Oetiker + + - release 2.8.1 + - fix regression with 'use FindBin' missing from the installed scripts + +2021-08-06 15:46:22 +0200 Tobias Oetiker + + - release 2.8.0 + - support for influxdb @mad-ady + - AnotherDNS update @parseword + - new matcher ConsecutiveLoss @rborgmaster + - lots of spelling fixes @jsoref + - update FPing commandline @lelutin + - better handling of return codes from probe binaries @lelutin + - manual page for smokeinfo @lelutin + - drop SSHv1 and rsa1 from SSH.pm @Strykar + - disable page refresh while zooming @n0rc + - overflow scrollbar @bevhost + - update url in zoom mode @dekenberg + - allow relative time entry for cropper @dekenberg + - fix config reload for slaves @stromnet + - improved template layout @bevhost + - fix edgetrigger functionality @oetiker + - fping protocol parameter optional @AID + - exploss matcher fixes @dfrli + - interface parameter for fping probe @saaly182 + - pass 6th argument to edgetrigger external alerts @Ryan Rawdon + - red background for 100% loss @dagelf + - probe target in graph title @Daxtorim + - make loss colors more distinctive @Daxtorim + - calculate loss buckets based on number of 'pings' @Daxtorim + +commit 0992229546c3732d12ac5af348672c58b6ad8e74 +Author: Tobias Oetiker +Date: Thu Dec 20 11:23:55 2018 +0100 + + release 2.7.3 + +commit 3eb7434cecc23df3cb7dd23d1fc97a41d206102d +Author: Pete Heist +Date: Wed Dec 19 10:56:55 2018 +0100 + + Add optional require_zero_status parameter (closes oetiker/SmokePing#142). + +commit 2ab17461671cba0c740326882f970d5da299d0e7 +Author: Pete Heist +Date: Wed Dec 19 10:07:13 2018 +0100 + + Update email address. + +commit cb9b9b146d7d7c7d79829913c2300fa2ab1c055f +Author: Tobias Oetiker +Date: Fri Nov 30 22:47:05 2018 +0100 + + fix cpanmin.us url + +commit 7d2260ec2a2d4eec2544555a54049bb9a10b2b58 +Author: Alexander Koch +Date: Tue Oct 9 12:54:27 2018 +0200 + + Do not show whole page if in ajax display mode + + After sending the PNG file in get_detail the returned + undef was not honored. Now checks for undef and will + return also. + +commit a2948059960f06fdc8b0060bbeb7b39708574eac +Author: Tobias Oetiker +Date: Tue Oct 2 11:49:30 2018 +0200 + + fix cpanmin.us url ... resolves #127 + +commit b5741263093e13d7970c64e7dbc96e1926eea105 +Author: Pete Heist +Date: Wed Sep 5 20:01:17 2018 +0200 + + Remove unnecessary use Switch. + +commit 681457d0872057f79e2b2f97fa6ff8b6b415b48c +Author: Gabriel Filion +Date: Wed Aug 29 04:09:04 2018 -0400 + + FPing: create new parameter to force using IPv4 or IPv6 fixes#95 (#125) + + * FPing: create new parameter to force using IPv4 or IPv6 fixes#95 + + Starting with FPing 3.16, the IPv6 functionality was merged in the main + binary and fping now respects the system-wide setting for address + resolution. This means that when we add a target that has both an A + record and a AAAA record, the probe tests the IPv6 address by default. + + This breaks the expectation that the FPing probe tests IPv4 and that the + FPing6 probe checks IPv6. + + To restore this, we can now add a parameter to the probes to force the + protocol version to be 4 or 6. + + * FPing: set default value for protocol + + This ensures we have a meaningful default value. It was suggested by + Tobias Oetiker. + +commit c1bcf1f9077b1ef1c3baedefb355c9fdb7db2f2b +Author: diorgesl +Date: Thu Jul 19 02:29:02 2018 -0400 + + Added rport option (#121) + + Added the option to specify the port of the remote host + +commit 8a528b13d85414eb9162bc045c0e222049a721bd +Author: Tobias Oetiker +Date: Fri Apr 13 14:07:47 2018 +0200 + + release 2.7.2 + +commit 7cc29e42ebe5a11c2d58f39b93a6365a2c5bb1b4 +Author: Tobias Oetiker +Date: Fri Apr 13 14:06:52 2018 +0200 + + fix syntax + +commit 435d3d575603d1e8c156776b41f4bdc0b63f515e +Author: Pete Heist +Date: Mon Mar 5 08:12:11 2018 +0100 + + Improve handling of one-way delay and documentation (#111) + + * Initial revision of IRTT probe. + + * Return 0 values for negative one-way delays. Improve documentation + and fix some white space issues. + + * Add Path::Tiny to PERL_MODULES and update IRTT probe doc. + ew. + +commit b926090aabcb6d0fd9e57e91d81949ec8b2a1192 +Merge: 7820885 2552386 +Author: Tobias Oetiker +Date: Sun Feb 25 22:07:42 2018 +0100 + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit 78208854ec68363ee43bacfce804c9991b9216ca +Author: Tobias Oetiker +Date: Sun Feb 25 22:07:34 2018 +0100 + + let sidebar scroll ... + +commit 2552386ec4ef0097622d45ca435d337d4ebd6a03 +Author: Pete Heist +Date: Sun Feb 18 10:39:52 2018 +0100 + + Initial revision of IRTT probe. (#110) + +commit b29242fdd1bf931511be52507ce1c09966802dff +Author: Tobias Oetiker +Date: Sun Feb 4 14:35:27 2018 +0100 + + update release script + +commit 6afb2f2ac97a718821c0d2368094d68370e79658 +Author: Tobias Oetiker +Date: Sun Feb 4 14:26:55 2018 +0100 + + fix referer + +commit bd38d05b856d2310032ac56c06454b91a345dc02 +Author: Tobias Oetiker +Date: Sun Feb 4 14:26:39 2018 +0100 + + going https! + +commit 9b2ecb96c69b0b0ec294fb858c878327b96ed293 +Author: Tobias Oetiker +Date: Fri Feb 2 22:14:55 2018 +0100 + + release 2.7.0 + +commit bf2e13afb06387d54faba62a2a2cbf38abafa3d1 +Author: Tobias Oetiker +Date: Fri Feb 2 22:08:49 2018 +0100 + + add note on pressing return + +commit 8c7fb0aaebf6ad425fef0052419ec41c5b0269e9 +Author: Tobias Oetiker +Date: Tue Jan 30 21:43:12 2018 +0100 + + update release script + +commit 31969f3156479061ce7d1487c72a4dcbb5e800ab +Author: Tobias Oetiker +Date: Tue Jan 30 21:40:29 2018 +0100 + + update install instructions + +commit dcc17c1ce60504d8052ea639354b5660f598768a +Author: Tobias Oetiker +Date: Tue Jan 30 21:10:00 2018 +0100 + + rebuilt build system + +commit 62a588d379f1ca7177faf448a377a27acfa2dace +Author: Louis Sautier +Date: Fri Jan 19 10:45:53 2018 +0100 + + Fix typo in doc (#106) + +commit fc24b7ca86bd7e0d9c07b66805c115b49cc82fa1 +Author: Rick van der Zwet +Date: Fri Jan 19 10:45:26 2018 +0100 + + Fix ipv6 in multigraph (#108) + + * Fix rendering multigraph with host ipv6 address + + A host IPv6 adress in [RFC5952] representation contains colons which + should be escaped in legends since colons are part of rddtool syntax. + + [RFC5952]: https://tools.ietf.org/html/rfc5952 + + * Fix rendering minigrah with host ipv6 address + +commit 44682b6d3aec8d2063adae4dca1ce251c44e2fed +Author: Rick van der Zwet +Date: Wed Dec 6 11:17:42 2017 +0100 + + Fix typo in WHAT description text (#102) + +commit 2e4f6fb7cbf6458a8634092ed00c1b892ca77e6b +Author: diegospd +Date: Wed Dec 6 02:17:12 2017 -0600 + + Fix typo: prolem -> problem (#98) + +commit 72ed1570fbb4ae0b90846625e1a3bd5d2bade531 +Author: Tobias Oetiker +Date: Sun Jun 25 20:19:47 2017 +0200 + + fing compatibility update. fix for #90 + +commit 30d3032b5a8fc529c09bcdc31d9a4baf2bfecd66 +Author: Nick +Date: Thu Jun 22 08:35:33 2017 +0200 + + Improve mobile support (#89) + + * Move javascript under the fold. + + Render speed optimization. + + * Move css to separate file. + + Becomes a bit too much in the basepage and since js is + included as well, this should be just fine. + + * Make the site work a lot better on mobile devices + + Set viewport, auto hide sidemenu and some margin changes + to make it a bit nicer.. + + * Remove the no-cache pragma's. + + Not valid html anymore, instead this should be in the header + so in the smokeping config for nginx/apache. + + * Add css for printing pages. + + * Fix typo in css. + + * Use utf-8 charset by default. + + Recommended by w3.org. + + * Remove border=0 and add alt="" + + An attempt to make everything html complaint... + + * Use cgiurl in hswitch form. + + Action was empty, which is not valid, use the absolute path + to the site here. + + * Uptimize the cropper.js file. + + * Add panel for navigator graph. + +commit 38bd70634c960c76203c30e58e55825fe080d809 +Author: Nick +Date: Wed Jun 21 11:54:09 2017 +0200 + + Nick (#88) + + * Add panel block around zoom image. + + * Update basebase to hide menu and make it more spaceious + + Add navbar and move stuff around a bit to give it some + more free space for the menu and contents. + + Use the prototype framework to toggle the sidebar. + + * Move javascript files around + + Mv files so we actully know which file belongs + to what library. + + * Update js prototype to 1.7.3. + + * Update js script.aculo.us to 1.9.0. + + * Update js cropper to 1.2.2. + + * Add option graphborders + + If option is set to 'no' borders will be hidden and + background and canvas will be transparent. + + Use central function for this, so all generated + pngs look identical. + + * Add new options to config.dist. + + * Fix compiler warnings. + + Apparently Switch adviced not to be used... + +commit 0088c1b4fef363b09ff992223a4c50f32e4067ea +Author: Martin DiViaio +Date: Fri Jun 16 03:40:33 2017 -0400 + + Fix unitialized value warnings when rrd returns undef. Add slave support (#42) + + Got rid of the warning that happens when RRD returns 'undef' in the math on line 125. + + Added support for slave rrd files using a cli option. If option exists all slaves are used. If a csv list of slaves is submitted with the option then only those slaves are used. Exact name match is required. + + Added regex substitution for a '~' in the rrd name to make it readable as 'host from server' in morning email. + + Added support for 'nomasterpoll' but only if processing for slaves. Having 'nomasterpoll' set for a host and no slaves configured for it is technically a configuration error, isn't it? If so, then this will show up as a 'down host' in the morning email this way. + +commit afb95d5dd350c7dddbcf2fce5a31f970ebe26304 +Author: Nick +Date: Fri Jun 16 09:38:12 2017 +0200 + + Improve smokeping dashboard (#87) + + * Generate unordered list for menu html + + List are much easier to style with css + + * Add div blocks around images in html layout + +
+
+

Title

+
+
+ IMG or content +
+
+ + * Add config option htmltitle to render in div headings + + If the option is set to yes; the title is not rendered in + the rrd image, but added to the html panel as a h2 heading. + + * Update filter html + + Use a label instead of a div and use classes since this is a + bit more obvious for styling. + + * Use label for hierarchy popup + + And add classes for consistency. + + * Properly close the div tag + + Fix for previous commit + + * Add alt to rddtool and smokeping logos + + 2 errors less in html validator... + + * Initial commit of new basepage + + * Smaller smokeping and rrdtool logos. + + Update the rrdlogo to the one currently used on + the website (with background that matches the + sidebar) and make both 100x30px. + + * Complete sidebar css. + +commit 48eb6391d95f0ddc53d632729f998dcec6edd472 +Author: Ivan Zahariev +Date: Mon May 22 17:41:37 2017 +0300 + + Display the master host "display_name" in the chart title (#85) + + When having multiple slaves, and in general, it is more clear if all chart titles contain an explicit "from XYZ" label where XYZ is either the master host name or the slave's name. This gives us an immediate insight for source of the ping check. Otherwise we need to remember that if "from" is missing, then this comes from the master host. This brings inconsistency in the user experience. + + You can also consider the case when the CGI is behind a web reverse proxy. The user opens "https://web-proxy-server/smokeping.cgi?target=dc1.myhost" but the chart titles don't show a "from". In such a case, the user must know which is the actual master host which did the ping check. This could become even harder to remember if we have multiple instances of SmokePing. + +commit 5ce690e3aaece79a57404f73a47caa62c4f9cbb4 +Author: Daniel NĂ©ri +Date: Mon May 1 17:36:58 2017 +0200 + + Download cpanminus securely (#83) + +commit fff19a73e0058e56b07834b37bf56b5b787681f0 +Author: Simon Arlott +Date: Tue Apr 18 15:53:43 2017 +0100 + + Call RRDs::fetch() with a zero length time period (#81) + + The default fetch time period (1 day) can be very slow when the RRD + file is not in the filesystem cache. + + The info2create function doesn't even use the data, it's just trying + to get the DS definition. + + Specify a start and time of 0 so that no data is retrieved. + +commit 4ea88bc384f6852fba891b62973286df67189dec +Author: 有张纸 +Date: Mon Apr 3 22:11:08 2017 +0800 + + Update Smokeping.pm (#76) + + * Update Smokeping.pm + + add support for smtp authentication + + * Update Smokeping.pm + + add doc for username and userpass + +commit 21f4715f6f06c5165bf3e46b5731f34edab67db6 +Author: runout-at +Date: Mon Apr 3 15:20:52 2017 +0200 + + add xmpp/jabber alerts (#78) + + * add xmpp alerts + + lets have alerts sent to xmpp/jabber servers/accounts/chatrooms + needs sendxmpp installed. (it's similar to sendmail) + + Example for the Alerts config: + to = xmpp:-t -u -j -p @ + + * bugfix + + * more lines where xmpp: is needed + + fix using xmpp: in alertee,... + +commit f993798d1597a0302c13ed972c7a7855068e85d9 +Merge: ed7f7ec 7fa1612 +Author: Tobias Oetiker +Date: Wed Mar 8 06:06:52 2017 +0100 + + Merge pull request #75 from bobbwest/master + + Fix white-on-white CSS bug with filter + +commit 7fa161250dbb3cedb2a65c139ce50355705f3865 +Author: Bob West +Date: Wed Mar 8 11:51:44 2017 +1100 + + Fix white-on-white CSS bug with filter + +commit ed7f7ec1c512a1876b2474dc2485b4ba98b098d5 +Merge: 88c7360 77253c3 +Author: Tobias Oetiker +Date: Thu Jan 5 02:52:21 2017 -0500 + + Merge pull request #70 from rborgmaster/patch-1 + + Update CheckLoss.pm + +commit 88c736037559772e1623a46d6946f94d50678542 +Merge: 3479284 716ffcf +Author: Tobias Oetiker +Date: Thu Jan 5 02:51:58 2017 -0500 + + Merge pull request #71 from rborgmaster/patch-2 + + Update CheckLatency.pm + +commit 716ffcf3abfc90350203f525ebc090dba2687fd0 +Author: rborgmaster +Date: Wed Jan 4 20:49:38 2017 +0100 + + Update CheckLatency.pm + + Address issue #69 + +commit 77253c3c3cf158cabb1a0503dec1186c6fd49ff1 +Author: rborgmaster +Date: Wed Jan 4 20:42:17 2017 +0100 + + Update CheckLoss.pm + + Adress issuse #69 + +commit 3479284f786fb7683ef6dab442447903f42a10a0 +Author: Tobias Oetiker +Date: Wed Aug 31 21:45:27 2016 +0200 + + properly check alertee + +commit 2b1dbf9c3d1347e21933d6bdc62de8f954a50b21 +Merge: 5ac48fa 8334e15 +Author: Tobias Oetiker +Date: Sat Jul 23 09:02:27 2016 +0200 + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit 5ac48fab69cfb674b0e43153e70444f1caff1a50 +Author: Tobias Oetiker +Date: Sat Jul 23 09:02:18 2016 +0200 + + fix for #65 + +commit 8334e159d8bec5ca66317b7f29323ab5b8220d7d +Merge: 7ca84ed e260302 +Author: Tobias Oetiker +Date: Thu May 12 10:59:12 2016 +0200 + + Merge pull request #59 from fgtb/master + + re: issue #58 + +commit e260302502f7ac8be18a7007b4b33ca9e1bdb371 +Merge: 7ca84ed 52976ea +Author: fgtb +Date: Mon May 9 17:31:50 2016 +0100 + + Merge pull request #1 from fgtb/fgtb-patch-1 + + Update OpenSSHJunOSPing.pm + +commit 52976eaedbaa64a22685d28668b260507c2e52ff +Author: fgtb +Date: Mon May 9 17:29:40 2016 +0100 + + Update OpenSSHJunOSPing.pm + +commit 7ca84ed877bc761759473a80e471b87948bfb3da +Merge: f3d2aee 7870ad8 +Author: Tobias Oetiker +Date: Thu Apr 28 11:34:13 2016 +0200 + + Merge pull request #54 from dne/auth-dns + + Add support for probing authoritative nameservers to AnotherDNS + +commit f3d2aee6f8dfdcf152756cc555a9b47106ba853d +Merge: 962f3f4 e4c34a2 +Author: Tobias Oetiker +Date: Wed Apr 13 17:20:03 2016 +0200 + + Merge pull request #57 from mpawlik/master + + Add support for ldaps in LDAP probe. + +commit e4c34a2b4949bf80167e8f26283e61540c63d479 +Author: Maciej Pawlik +Date: Wed Apr 13 17:07:23 2016 +0200 + + Add support to ldaps in LDAP probe. + +commit 962f3f458a11bc4bdd5a2ceebd3be7f4a1e7d204 +Merge: de9fb3b cf8d202 +Author: Tobias Oetiker +Date: Sat Apr 2 09:09:22 2016 +0200 + + Merge pull request #56 from NickHibma/master + + More details on mailtemplate + +commit cf8d202ef5315bc6920f4be8ba0df9e6208274c2 +Author: Nick Hibma +Date: Fri Apr 1 22:40:25 2016 +0200 + + More details on mailtemplate + +commit 7870ad812ac0f0b1650a683e1dc0dfa5332eec17 +Author: Daniel NĂ©ri +Date: Sat Feb 20 18:12:10 2016 +0100 + + AnotherDNS: Add 'authoritative' option + + When enabled, send non-recursive queries (RD=0) and require + authoritative answers (AA=1). + +commit f24b83651d2eebc258036668ea0b9c39e7813fa9 +Author: Daniel NĂ©ri +Date: Sat Feb 20 02:29:01 2016 +0100 + + AnotherDNS: Avoid reusing query IDs for each run and match responses with queries + +commit de9fb3bc9fcdf7f690524ef3aec494a5edc0eda9 +Merge: 4a10386 f9ba643 +Author: Tobias Oetiker +Date: Mon Feb 8 10:56:42 2016 +0100 + + Merge pull request #52 from mdiehm/patch-1 + + Add even a little more valuable data to the syslog + +commit f9ba6432cf0d73832e77931d47cf231fa5083f3f +Author: mdiehm +Date: Fri Jan 29 10:38:00 2016 +0100 + + Add even a little more valuable data to the syslog + + Maybe some of this data is also wanted in the mail - esp. ratio number and prevmatch? + +commit 4a103866e3e7df3d09185df397d13d4f9cde44af +Merge: 6e8fcc8 361c017 +Author: Tobias Oetiker +Date: Thu Jan 28 09:53:05 2016 +0100 + + Merge pull request #51 from mdiehm/patch-1 + + Little more verbose syslog-message in Smokeping.pm + +commit 361c0179c60de6c05c5ba5231a7d5b82cdda3f38 +Author: mdiehm +Date: Wed Jan 27 18:18:25 2016 +0100 + + Update Smokeping.pm + +commit 6e8fcc8bb9dcb944e2efc832c27ecc6909d81b31 +Author: Tobias Oetiker +Date: Mon Jan 25 14:03:10 2016 +0100 + + added timeout to sipsak + +commit 2ed0b369276f188544edbadd81e505520522c816 +Merge: 8c67c29 3a8546b +Author: Tobias Oetiker +Date: Tue Dec 22 13:20:34 2015 +0100 + + Merge pull request #49 from mmazur/high_precision_sleep_timer + + Add high precision timer for sleeps between steps + +commit 3a8546ba52448c54ca522027a599fb05039c19af +Author: Mariusz Mazur +Date: Tue Dec 22 12:08:52 2015 +0100 + + Add high precision timer for sleeps between steps + + This code does two things: + 1. Calculates sleep time till next step start as a float instead of an + integer, so next probe starts much more precisely when it should instead + of up to 0.9999 seconds later. + 2. Adds a fail safe in which if the current step is overdue by less than + 300ms, it is not skipped. In other words: + - let's have step 60s + - probe took 60.1s + - old code would sleep for 60s (and skip a step) + - new code notices it's only 100ms overdue, so it runs the probe anyway. + + This patch allows me to run fping every minute (step 60) with each run + taking almost a minute (120 pings total, one every 500ms) for constant + link monitoring. + +commit 8c67c298cf2c19be0c9b6cde58964d02c64da9a4 +Merge: 6547500 707a9ca +Author: Tobias Oetiker +Date: Fri Nov 27 08:37:18 2015 +0100 + + Merge pull request #47 from eskyuu/master + + - Add the FPingContinuous probe + +commit 707a9ca656bb75e15c84baf056d82b58fff43651 +Author: Steven Wilton +Date: Wed Nov 25 16:30:55 2015 +0800 + + - Add the FPingContinuous probe + +commit 65475007b7879132b3cbc6565d6c11cdc907ee33 +Author: Tobias Oetiker +Date: Thu Sep 24 16:32:10 2015 +0200 + + add support for -T option from gurhan.ozen@gmail.com + +commit 4c6dec645583a8ddeea73335ed5abc0a0ed0813f +Merge: a8c3b00 cd0879a +Author: Tobias Oetiker +Date: Fri Jul 3 09:28:40 2015 +0200 + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit a8c3b00dff57a3b62a6b4dc92d6d2c9ca02617a7 +Author: Tobias Oetiker +Date: Fri Jul 3 09:28:23 2015 +0200 + + fix echoping location + +commit cd0879a24707cc4ec30182c71205359e86bc3374 +Merge: 943f986 6041983 +Author: Tobias Oetiker +Date: Thu Jun 11 23:56:36 2015 +0200 + + Merge pull request #39 from mad-ady/master + + Remove RRD max limit of 180 - so that the RRD can store values larger… + +commit 60419834f224a0735094fd4ad0aac8eac3b15289 +Author: Adrian Popa +Date: Thu Jun 11 10:35:20 2015 +0300 + + Remove RRD max limit of 180 - so that the RRD can store values larger than 180 (e.g. for non-time data). + +commit 943f98660f16be1a7370f44efa656895b6090b57 +Merge: 0e2179c 6622ee2 +Author: Tobias Oetiker +Date: Thu Apr 30 06:00:55 2015 +0200 + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit 0e2179cbb917c15539a90a8d88866f06a3d1e93e +Author: Tobias Oetiker +Date: Thu Apr 30 05:59:56 2015 +0200 + + the tcpping script does not support the -e switch ... fix for #37 + +commit 6622ee22785c1ccd1543392605f28ee2d36e2e02 +Merge: ac57e1d 367e874 +Author: Tobias Oetiker +Date: Fri Apr 3 01:58:14 2015 +0200 + + Merge pull request #35 from fenner/master + + Minor markup fixes. + +commit 367e874034d424171ee1b6b11644fddbf52f0fa0 +Merge: ad76d30 ac57e1d +Author: Bill Fenner +Date: Thu Apr 2 09:08:50 2015 -0700 + + Merge remote-tracking branch 'upstream/master' + +commit ad76d3052ed1d830083b0f413568c27b190c5e0d +Author: Bill Fenner +Date: Thu Apr 2 09:08:32 2015 -0700 + + Minor markup fixes. + +commit ac57e1d3ac69d20533d6cb6215247a89b6887967 +Merge: 258a010 003ad71 +Author: Tobias Oetiker +Date: Wed Mar 4 10:55:16 2015 +0100 + + Merge pull request #34 from slesru/patch-1 + + Update TelnetIOSPing.pm + +commit 003ad71f44772265732374a9c66974f75c6f13a0 +Author: slesru +Date: Wed Mar 4 13:32:48 2015 +0400 + + Update TelnetIOSPing.pm + + added VRF support + +commit 258a01011604dd3d65d6be4148cdbb745ccbbf0b +Author: Tobias Oetiker +Date: Wed Feb 25 14:47:17 2015 +0100 + + TOS can be 0-255 fix for #33 + +commit ca230332389b3402484791eae0d826cf6d4b223e +Author: Tobias Oetiker +Date: Wed Feb 25 14:46:46 2015 +0100 + + TOS can be 0-255 fix for #33 + +commit 08fa8bb3313ce9e085945e5c100c811154832a4f +Author: Tobias Oetiker +Date: Mon Feb 16 17:45:17 2015 +0100 + + allow more precise waittime fix for #31 + +commit 8c641451e5a79ce64391c2d5d531bbae1b1a2832 +Merge: 34a95b6 a4ab7d7 +Author: Tobias Oetiker +Date: Mon Feb 16 17:42:52 2015 +0100 + + Merge pull request #28 from SaaldjorMike/fix-typo + + Fixed typo in comment + +commit 34a95b6c5d745ee53d4671911fbeba07d7696bc4 +Merge: 6920029 2a3947f +Author: Tobias Oetiker +Date: Mon Feb 16 17:42:37 2015 +0100 + + Merge pull request #27 from cgull/traceroute_ping + + New TraceroutePing probe module + +commit 692002997e1ba98601c977a4050f31440793c8d7 +Author: Tobias Oetiker +Date: Sun Jan 11 22:58:10 2015 +0100 + + must be tos not packetsize + +commit 9afefe173b0ab08240336258e12cc17f151bf0a9 +Author: Tobias Oetiker +Date: Wed Jan 7 08:01:55 2015 +0100 + + add support for tos configuration + +commit 2a3947f500dfd810182d4b0c4cff6b85d43f3265 +Author: John Hood +Date: Sat Dec 27 00:51:40 2014 -0500 + + Fix bugs. Make IPv6 work on FreeBSD and Linux. Improve docs. + +commit f3c7e385e61192851739e7f5c66110d77a1f7de8 +Author: John Hood +Date: Sun Nov 23 20:11:40 2014 -0500 + + fix variable renaming + +commit c990501fcd19ed1c2d8a752419ac856311a0e182 +Author: John Hood +Date: Sun Nov 23 19:38:12 2014 -0500 + + New TraceroutePing probe module + +commit a4ab7d7368e05b06302501dceece400f7a456493 +Author: Mike Rostermund +Date: Mon Dec 8 20:15:20 2014 +0100 + + Fixed typo in comment + +commit 85050b8e0d0810dc934d44c13e68ce362f40da2a +Merge: d035e91 5aa35dd +Author: Tobias Oetiker +Date: Mon Dec 8 17:10:35 2014 +0100 + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit d035e91affa33615a074bbfce79e6de67dee7c07 +Author: Tobias Oetiker +Date: Mon Dec 8 17:10:06 2014 +0100 + + added word of caution regarding the cgi file + +commit 5aa35dd768af3a28c622dcd88d63baddf210f850 +Merge: 9e8c570 a72d1b7 +Author: Tobias Oetiker +Date: Tue Nov 18 11:39:15 2014 -0800 + + Merge pull request #24 from jbfavre/feat_add_custom_curl_probe + + Add a custom Curl probe. + +commit 9e8c5705c5cf4cbdf179e8630019b15e4f3a5fd1 +Merge: 14301f3 56f9e7d +Author: Tobias Oetiker +Date: Tue Nov 18 11:38:13 2014 -0800 + + Merge pull request #26 from skoef/master + + bugfixed AnotherDNS + +commit 56f9e7d452a770405b13cee1c70b9309a46fcb5a +Author: Reinier Schoof +Date: Tue Nov 18 20:29:59 2014 +0100 + + cleaned handling defaults + +commit f0866c5f6fe68fd5834b8c488d7d25ee5b4c5e51 +Author: Reinier Schoof +Date: Tue Nov 18 20:26:44 2014 +0100 + + fixed protocol and ipversion support + +commit 14301f3377d4bc1351d8090e4c5b340612cc9e7b +Author: Tobias Oetiker +Date: Tue Nov 4 23:55:19 2014 +0100 + + updated changes + +commit 9395d663c2675a2073658e5e8114e7722dbc25aa +Author: Tobias Oetiker +Date: Tue Nov 4 23:50:28 2014 +0100 + + add missing PERL_MODULES file + +commit bd46feebee11262d37cf5e4743a6ebd607786354 +Author: Tobias Oetiker +Date: Wed Oct 29 10:07:08 2014 +0100 + + getting ready for 2.6.10 + +commit 52001917bd5f635e5118a0503e242ebbce76e5a4 +Author: Tobias Oetiker +Date: Wed Oct 29 09:35:03 2014 +0100 + + ready for 2.6.10 + +commit b48e6b51a43e09170d164d67539788bd05663076 +Merge: 57b3aa5 7467c47 +Author: Tobias Oetiker +Date: Wed Oct 29 09:03:10 2014 +0100 + + suync up + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit 57b3aa5b4c863417b720413c76eb26c6b03fd2bc +Author: Tobias Oetiker +Date: Wed Oct 29 09:02:40 2014 +0100 + + actually override defaults + +commit 60be7048597cbc3b4239ed18df24f56fa2648e82 +Author: Tobias Oetiker +Date: Wed Oct 29 09:02:35 2014 +0100 + + have 443 as default port + +commit a72d1b7585859ed9d9f84701e7589139edd27552 +Author: Jean Baptiste Favre +Date: Tue Oct 14 11:34:20 2014 +0200 + + Add a custom Curl probe. + + Update curl output to support all timers (see bellow). + + Add new configuration option 'write_out'. + This option designate which timer information we want to get from curl output. + + 'write_out' can take one of the following values: + + * time_namelookup + * time_redirect + * time_connect + * time_appconnect + * time_pretransfer + * time_starttransfer + * time_total + + Default behaviour is the same than current Curl probe: total - DNS + +commit 7467c476624b666bfbe752801af5d86a22c7ae15 +Merge: a3e3e36 0672331 +Author: Tobias Oetiker +Date: Fri Aug 1 11:44:56 2014 +0200 + + Merge pull request #22 from felderado/master + + Support Net::DNS 0.75+ + +commit 0672331840d935b3a03d75b6cb0af5f7ed818a32 +Author: felderado +Date: Mon Jul 14 09:58:10 2014 -0500 + + Update AnotherDNS.pm + + &Net::DNS::PACKETSZ has been removed from Net::DNS and was not officially part of the API. Set packet size to 512, which was default value for &Net::DNS::PACKETSZ anyway. + +commit a3e3e36f7c41171b1a437cb2d47fa05785e36c2c +Merge: f36b413 e4f9b60 +Author: Tobias Oetiker +Date: Mon Feb 17 00:17:31 2014 +0100 + + Merge pull request #18 from jimpop-at-gmail-dot-com/master + + Added IPv6 (ipversion) and TCP (protocol) support + +commit e4f9b6093694f76b55fa2cecc9499977b98e3db4 +Author: jimpop-at-gmail-dot-com +Date: Sat Feb 15 18:53:38 2014 -0500 + + Added IPv6 (ipversion) and TCP (protocol) support + +commit f36b413bb8c5f287c205b64b743973065157c5d2 +Merge: 3e1e3cc 34af662 +Author: Tobias Oetiker +Date: Thu Nov 14 21:16:21 2013 -0800 + + Merge pull request #15 from fenner/master + + DismanPing updates: don't return stale data, log more helpful errors, and rename weird variable + +commit 3e1e3cc5ac714f6193336d35297dbb3fa54b5c89 +Merge: b23d5ad d0f28aa +Author: Tobias Oetiker +Date: Thu Nov 14 21:13:19 2013 -0800 + + Merge pull request #17 from hufman/feature-qstat + + Adds a Qstat probe plugin + +commit d0f28aaa3c1c691dde4d5656c7727d538bd64f50 +Author: Walter Huf +Date: Thu Nov 14 19:30:16 2013 -0600 + + Fixes up parameter passing to qstat + +commit ccb33eab568a971e953e76db92b4bcb8983827b3 +Author: Walter Huf +Date: Thu Nov 14 18:20:55 2013 -0600 + + Cleans out remnants of Fping plugin + +commit fa098cb2302da3ddcd528e43d7d985dc9d41e00b +Author: Walter Huf +Date: Thu Nov 14 17:02:02 2013 -0600 + + Adds a Qstat probe plugin + +commit b23d5ad4b24ee26393585fd069261f0fb2263b18 +Author: Tobias Oetiker +Date: Thu Nov 14 10:43:05 2013 +0100 + + fix fping + +commit 51aa7f39f221a55cd39d4664c3748a2d17f7ecc0 +Author: Tobias Oetiker +Date: Thu Oct 24 09:14:16 2013 +0200 + + make sure locale settings are now screwing with the creation of the rfc2822 timestamp + +commit f043ccf9587e429bfea382872e4260357ec388f8 +Merge: 8cdd000 8024031 +Author: Tobias Oetiker +Date: Wed Oct 23 16:26:14 2013 +0200 + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit 8cdd0005f737c9cff83c31a8d33b1342b47ba061 +Author: Tobias Oetiker +Date: Wed Oct 23 16:26:02 2013 +0200 + + PERL5LIB is : separated while use lib expects an Array + +commit 80240313453e1f302f1ad8bff64c7c5eb4a98966 +Merge: b388be2 ebf63a9 +Author: Tobias Oetiker +Date: Wed Sep 4 11:46:30 2013 -0700 + + Merge pull request #16 from Bluewind/working + + Misc fixes + +commit ebf63a98adae5ea84d044b73a03612a9fd75af26 +Author: Florian Pritz +Date: Wed Sep 4 19:20:06 2013 +0200 + + Fix wrong hardcoded path in fcgi example file + + Signed-off-by: Florian Pritz + +commit fec626d9e26dbdce91db6eed42d898eb671a7906 +Author: Florian Pritz +Date: Wed Sep 4 19:19:28 2013 +0200 + + Fix syntax error in POD + + Possible perl 5.18 related, I didn't look into that. + + Signed-off-by: Florian Pritz + +commit 34af662d2dfe8be1cc433a2395186dc20c25d9cf +Author: Bill Fenner +Date: Tue Apr 23 19:28:58 2013 -0700 + + Better error logging, and support unpriv'd accounts + +commit 3bdee9c96d27a65836b6ef3ba018d3d437699ad3 +Author: Bill Fenner +Date: Tue Apr 16 07:44:45 2013 -0700 + + A probe to use the EOS "ping" cli command + + Based on OpenSSHJunOSPing, this probe ssh's to a + device and uses the EOS "ping" command to collect + data. + +commit b388be244855778ff87899b040ac0c565b4dc456 +Author: Tobias Oetiker +Date: Thu Mar 21 22:55:32 2013 +0100 + + remove duplicate entries + +commit bad9f9c28f0939b269f90072aa4cf41f20f15563 +Author: Tobias Oetiker +Date: Sun Mar 17 13:11:10 2013 +0100 + + xss fix from Steven Chamberlain + +commit af24c7886e48d97bc226a123d12e6b15cd089b51 +Author: Tobias Oetiker +Date: Mon Mar 4 14:07:39 2013 +0100 + + update release number + +commit 6085244986b5f6d76c824553c166d8fee13f9d9a +Author: Tobias Oetiker +Date: Mon Mar 4 14:04:22 2013 +0100 + + updated changes log + +commit 01eb8afb8030f9c0fe1316e4558023f37dd710e4 +Author: Tobias Oetiker +Date: Mon Mar 4 13:54:29 2013 +0100 + + be more careful about preventing xss attacks, re http://bugs.debian.org/659899 + +commit fd1067f6ac2733818f00909c161b6e084e97ebf9 +Author: Tobias Oetiker +Date: Wed Feb 27 16:10:48 2013 +0100 + + provide more configurable replacements for remocular integration + +commit d8b0a0001fa8945e93cac5e4f1294272848c9576 +Author: Bill Fenner +Date: Tue Feb 5 09:48:49 2013 -0800 + + Improved logging from SNMP errors. + +commit 704fa685408de843e7d0a9e13aa75524ce0bb502 +Author: Bill Fenner +Date: Tue Feb 5 08:53:34 2013 -0800 + + Don't reuse $t, even if perl scoping rules allow it. + + Reusing $t to iterate over the ping results is just confusing, + especially since one line later we assign to the other $t. + Use a new locally-scoped $result variable instead. + +commit 8b1020fe6a877eee16fdbdcb873b95b0368b14c7 +Author: Bill Fenner +Date: Tue Feb 5 07:00:26 2013 -0800 + + Empty out any RTTs from the last round. + + If we don't empty the hash before starting this round, then if we get + an SNMP error for a target, we'll report his results from the + previous round. + +commit efcd36cf069f51f52fdd9c6b4f433fc979d93e23 +Merge: 7dac529 7719ba5 +Author: Tobias Oetiker +Date: Thu Nov 8 00:03:34 2012 -0800 + + Merge pull request #9 from couloum/master + + new probe SendEmail + +commit 7719ba573effcbd0ac35203c0c6f5ebf79921ee6 +Author: Florian Coulmier +Date: Wed Nov 7 22:13:42 2012 +0100 + + Added new probe SendEmail + +commit 7dac5296d1e490adf5fcbfa8de0c398e1a5cf55a +Merge: ef24bb2 70b3337 +Author: Tobias Oetiker +Date: Wed Oct 24 21:06:10 2012 +0200 + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit ef24bb21f91c066129d1fbb4fb72493029a17c6a +Author: Niko Tyni +Date: Wed Oct 24 21:04:53 2012 +0200 + + As spotted by Gert Doering, rand() gives the same results in each + pinger subprocess. This is because they all inherit the same RNG state + from their parent. + + Fix this undesired behaviour by reseeding the RNG with the current time + and the process ID. + + The argument of srand() shouldn't really matter much on modern Perls, + but we're not very concerned about the quality of the random numbers + either, and time()+$$ should make sure it's different for each process. + +commit 70b3337a26a5cf8e3a4ef49f3491017715bf212b +Merge: 49572f3 75dcab2 +Author: Tobias Oetiker +Date: Wed Sep 12 22:02:34 2012 -0700 + + Merge pull request #8 from jweather/master + + add "expect" parameter to Curl.pm + +commit 75dcab25f99f7f074514e9d184c6de268fd18601 +Author: Jeremy Weatherford +Date: Wed Sep 12 08:36:16 2012 -0700 + + fix stray spaces + +commit 7d68f748c5fdb8e1fe8d5daeb1deda2b9dafa435 +Author: Jeremy Weatherford +Date: Wed Sep 12 08:34:35 2012 -0700 + + add expect parameter to Curl.pm + +commit 49572f3da6f0e62adbcb3d326c698fad941164f4 +Author: Tobias Oetiker +Date: Wed Aug 29 11:01:18 2012 +0200 + + fix regression - added missing ) + +commit 491498b57a427230069604d10b68073c0f6f5e33 +Author: Tobias Oetiker +Date: Wed Aug 29 09:49:57 2012 +0200 + + allow to configure FPing probe to read fping output form stdout instead of stderr + +commit 7e4c58744dc9f8b8656f88612fd58f54b7e522e4 +Author: Tobias Oetiker +Date: Fri Jul 13 09:34:59 2012 +0200 + + allow title to be defined via cgi parameter when calling navigator interface directly + +commit c15e166eb9b2331348f7729c394e37a7e88c1870 +Author: Tobias Oetiker +Date: Mon Jul 9 11:46:19 2012 +0200 + + it's milliseconds not miliseconds, thanks frank habicht + +commit 372a20962b00cf3974e8530eb3ee981df11caba4 +Author: Tobias Oetiker +Date: Fri Jul 6 09:06:30 2012 +0200 + + respect the probe timeout -- Dmitry Melekhov + +commit dde47e5461dbbe07ce5653971f98912625ea233e +Author: Tobias Oetiker +Date: Tue Jul 3 22:37:14 2012 +0200 + + set a default for end too + +commit 689cbec359940d2eead85d9567a4b3be530507af +Author: Tobias Oetiker +Date: Tue Jul 3 21:09:48 2012 +0200 + + fix smokeinfo to actually consider --start and --end + +commit 972673d1c94305ad6631e15b3b4213a0b4aef728 +Author: Tobias Oetiker +Date: Wed May 23 18:02:27 2012 +0200 + + exec the cgi to make sure fastcgi is tracking the right process - Eric Searcy + +commit e145ab1abf091802da4aad8e9106d2c234f9251e +Author: Tobias Oetiker +Date: Wed May 23 09:33:59 2012 +0200 + + must provide the actual width when finding max or consolidation will cause problems - thanks david for the hint! + +commit 11838ebc2ae0661130544c383643046803d8d45b +Merge: 8837a8d 6fae074 +Author: Tobias Oetiker +Date: Mon Apr 2 09:20:35 2012 +0200 + + Merge branch 'master' of github.com:oetiker/SmokePing + +commit 8837a8d3a033a124644d6085555d70afa1372a30 +Author: Tobias Oetiker +Date: Mon Apr 2 09:20:07 2012 +0200 + + wait for the first gen child to terminate + +commit 6fae074f1a8a305b0a8361626902110e7351a65b +Merge: 79b6c93 11cf1d9 +Author: Tobias Oetiker +Date: Sat Mar 24 13:00:28 2012 -0700 + + Merge pull request #6 from mcdarren/integration + + HTTP auth user template support + +commit 11cf1d954dc92e4d4f2a8dc8fed729f0ef04bf7a +Merge: 8e9692b 79b6c93 +Author: Darren Murphy +Date: Fri Mar 23 13:25:28 2012 +0800 + + Merge remote branch 'tobi/master' into integration + +commit 8e9692b5f8a39eea12521f7ae9ad9b62c28ae6f5 +Author: Darren Murphy +Date: Fri Mar 23 13:10:55 2012 +0800 + + Template support for HTTP auth user + + * Updated doc + * Added section to basepage.html.dist + +commit 79b6c9346c950d0b3e22dc9ba337bbcdcbed052e +Author: Tobias Oetiker +Date: Thu Mar 22 23:01:14 2012 +0100 + + fork alert handlers, so that smokeping does not block + +commit 82162859fa9bc528fedf284e5bf6618ae98f1a7d +Author: Tobias Oetiker +Date: Thu Mar 22 23:00:25 2012 +0100 + + fork alert handlers, so that smokeping does not block + +commit c3539403a5ba22a633488764a68200a06aa3ba95 +Author: Tobias Oetiker +Date: Mon Feb 13 06:53:21 2012 +0100 + + added hacking notes + +commit 872cadbfdf1ee27db786389c941671a2e0df1b4f +Author: Tobias Oetiker +Date: Tue Feb 7 07:00:56 2012 +0100 + + added release + +commit cb1c7d001fd4a410e50112585f03694edf4a1474 +Author: Tobias Oetiker +Date: Tue Feb 7 06:43:36 2012 +0100 + + update RRD location + +commit 9672c02ac02b2a152dc786b57053cc93d4f510fe +Author: Tobias Oetiker +Date: Mon Feb 6 23:18:25 2012 +0100 + + update for release + +commit 589ea56efaa087811c2bf0cf37781843f9992c51 +Author: Tobias Oetiker +Date: Mon Feb 6 23:17:32 2012 +0100 + + make SipSak work with sip servers implementing OPTIONS + +commit 50333cf052a6fc2ed29f16639ac1d0c891978b38 +Author: Darren Murphy +Date: Mon Feb 6 20:25:06 2012 +0800 + + Add template support for http auth user + +commit 8c8ed47542783991ed4639783607334f2e52bb70 +Author: Tobias Oetiker +Date: Thu Feb 2 23:34:38 2012 +0100 + + fix documentation + +commit f18024c3a610238aaf7d7101308367f72bc75e7d +Author: Tobias Oetiker +Date: Thu Feb 2 23:21:31 2012 +0100 + + handle servers actually implementing OPTIONS + +commit f4f50a94f1beacfea12b3b1f1eb06251909cccc5 +Author: Tobias Oetiker +Date: Wed Jan 11 10:01:44 2012 +0100 + + add relese date to changes file + +commit 4b1cc570fe684968f7afee3c39dfb69791c969be +Author: Tobias Oetiker +Date: Wed Jan 11 09:27:18 2012 +0100 + + prep for release + +commit ea18202ce6ecd0ff619f7fbc7c2329db3bd3d086 +Author: Tobias Oetiker +Date: Wed Jan 11 09:26:18 2012 +0100 + + be more careful in handling input from the web to prevent xss. Thanks to + Russ McRee for pointing this out. + +commit 0c43c8b653065862d6dd10ffd6789b168c138b21 +Author: Tobias Oetiker +Date: Tue Dec 20 07:37:33 2011 +0100 + + integrated NFSping probe by Matt Provost - https://github.com/mprovost/NFSping + +commit cda6cb8ef889fd0d7f08848025ea4687b41b2c1d +Author: Tobias Oetiker +Date: Sat Dec 3 12:58:33 2011 +0100 + + From: Chris Wilson + Date: Fri, 2 Dec 2011 20:38:26 +0000 (GMT) + + I tried to use the tcpping probe but it didn't work for me (centos 5). It seems + that the tcptraceroute output format has changed or there is a problem with the + script's ability to parse options. It also doesn't report tcptraceroute errors + properly or have much in the way of debugging support. And it required + smokeping to be run as root. + + I think I have fixed these issues, and posted updated versions here: + + https://github.com/aptivate/network-scripts/blob/master/TCPPing.pm + https://github.com/aptivate/network-scripts/blob/master/tcpping + + I hope that you will consider these for inclusion in your projects. Richard, + are you still maintaining tcpping? If not, is it worth merging this + functionality into the TCPPing module? + + (integrated the TCPPing.pm for now -- tobi) + +commit 0f421fbf603b2427a6c010cdd375bf40b3aacabb +Author: Tobias Oetiker +Date: Thu Nov 24 11:28:52 2011 +0100 + + use max index instead of count ... then it all works nicely + +commit 77890232a5020dc5caf034da9a2d1bc1392b1a3b +Author: Tobias Oetiker +Date: Thu Nov 24 11:25:53 2011 +0100 + + fixed off by 1 error + +commit c332d31fbf2f398455c4a7dfc8f9eec19943fed0 +Author: Tobias Oetiker +Date: Wed Nov 23 22:42:08 2011 +0100 + + added ken + +commit 8bb8c6817b082fd11ece24119064607bc287dfec +Author: Tobias Oetiker +Date: Wed Nov 23 14:14:01 2011 +0100 + + add missing } ... syntax error + +commit 91d090167d30c90a7f4daff1e468ad7d0f717049 +Author: Tobias Oetiker +Date: Wed Nov 23 07:05:03 2011 +0100 + + make sure we stay within the bounds of the array + +commit 3c1ce9f1d0ca20479d10d5d18d66a2af416ad42a +Author: Tobias Oetiker +Date: Tue Nov 22 09:26:13 2011 +0100 + + make Median matcher work fine on startup and when unknown values are in the stream + +commit 1c6f909c977061ace3e5bc00af8adc8b1b8b84ab +Author: Tobias Oetiker +Date: Tue Nov 22 09:25:02 2011 +0100 + + make Median matcher work fine on startup and when unknown values are in the stream + +commit 1e9842ca33991ba4c395ed1a457866c7189d8aa6 +Author: Tobias Oetiker +Date: Sat Nov 12 11:57:32 2011 +0100 + + prep for 2.6.6 release + +commit 7cef01f0089476f9b39e28cda0871c2a5ced72d9 +Author: Tobias Oetiker +Date: Sat Nov 12 11:56:27 2011 +0100 + + fix version patching + +commit 913c728d0d06bd67d5e9db29de8794ee596a347f +Author: Tobias Oetiker +Date: Sun Oct 30 11:36:09 2011 +0100 + + updated changes for 2.6.5 release + +commit e6332c5a1a098fbf6d5a44795d96d26dcc099e5c +Author: Tobias Oetiker +Date: Sun Oct 30 11:35:45 2011 +0100 + + updated changes for 2.6.5 release + +commit b061046f26e01821761ce7381f5782bc629dda17 +Merge: 677f0b4 89f91c4 +Author: Tobias Oetiker +Date: Sun Oct 30 03:32:45 2011 -0700 + + Merge pull request #4 from twilde/master + + Automatically configure config.dist paths + +commit 89f91c4e71fa85bc992cabe001da01d762770fdd +Author: Tim Wilde +Date: Sun Oct 30 01:16:35 2011 +0000 + + Update gitignore for auto generation of config.dist + +commit a40ae75d8c76fe578f54cd5afd879de4ae0b744f +Author: Tim Wilde +Date: Sun Oct 30 00:54:08 2011 +0000 + + Automatically configure etc/config.dist paths + +commit 677f0b4d837b4b040d085aedce6f09120a912cdf +Merge: 81d0718 c72affb +Author: Tobias Oetiker +Date: Sat Oct 29 16:11:04 2011 -0700 + + Merge pull request #3 from twilde/master + + Make $prefix available for HTDOCSDIR + +commit c72affb3a8387d606eb837bd9b47e238aa6edec3 +Author: Tim Wilde +Date: Sat Oct 29 22:08:51 2011 +0000 + + Make $prefix available for HTDOCSDIR + + Code lifted from the Tor Project's configure.in + +commit 81d0718bbb09fbf098a84f16278d51d9058e63ec +Author: Tobias Oetiker +Date: Sat Oct 29 01:43:17 2011 +0200 + + properly version sync + +commit e1cf85743f68c43d0eb2476b22d5747bd28a58c5 +Author: Tobias Oetiker +Date: Fri Oct 21 14:26:08 2011 +0200 + + prep for release 2.6.4 + +commit c2907861471223bc08c2d68ea3ac7f0e8cf6b179 +Author: Tobias Oetiker +Date: Fri Oct 21 14:24:40 2011 +0200 + + one more naked gettimeofday eliminated + +commit c6f817fcb7e49495de647e43729c910223468ba7 +Author: Tobias Oetiker +Date: Thu Oct 20 09:28:27 2011 +0200 + + allow for conftools to exist + +commit 4658580d38d6866dcd4d6a7b1822de8ce7ec2057 +Author: Tobias Oetiker +Date: Thu Oct 20 09:27:29 2011 +0200 + + added ignore file + +commit d093ababdb99883921f5855c46989ed782438f9d +Author: Tobias Oetiker +Date: Thu Oct 20 09:25:07 2011 +0200 + + prep for 2.6.3 release + +commit ccd03bfead2c62f3541a6ee944270789f18b8f38 +Author: Tobias Oetiker +Date: Thu Oct 20 09:24:17 2011 +0200 + + it seems some version of perl bulk at gettimeofday without () + +commit 4b4dc3a97a0b77a12ac036b4a1985f083ae11cdb +Author: Tobias Oetiker +Date: Tue Oct 11 09:12:04 2011 +0200 + + ready for 2.6.2 + +commit bbba546ca670562a0d2aa2dd5e98d61c2b0d516e +Author: Tobias Oetiker +Date: Thu Oct 6 09:34:26 2011 +0200 + + fix helptext formatting + +commit 30d4bb237aa397bb407d90680657a445a50e2f02 +Author: Tobias Oetiker +Date: Thu Oct 6 09:34:10 2011 +0200 + + help rebuilding autoconf + +commit d7a08344bb0c229d9133f688ac45cac4e5c7b889 +Merge: e3c26a5 8643c2f +Author: Tobias Oetiker +Date: Wed Oct 5 22:58:18 2011 -0700 + + Merge pull request #2 from twilde/master + + Minor documentation nit-pickery + +commit 8643c2fa2b5955ffda759d0fbf735a84e68d2da8 +Author: Tim Wilde +Date: Thu Oct 6 00:27:03 2011 +0000 + + Minor documentation nit-pickery + +commit e3c26a55acf046586bd94219f6873a8734c0c66e +Author: Tobias Oetiker +Date: Wed Oct 5 23:44:07 2011 +0200 + + include more files into distribution + +commit 8b2e076704cd3cd249ea4054ef741cd42dd58f75 +Merge: 0a83e73 34d6cd6 +Author: Tobias Oetiker +Date: Wed Oct 5 13:10:03 2011 -0700 + + Merge pull request #1 from mcdarren/34d6cd69e4b075ba732c44ebdad25cf4db744e7b + + Some minor document fixes + +commit 34d6cd69e4b075ba732c44ebdad25cf4db744e7b +Author: Darren Murphy +Date: Wed Oct 5 23:09:44 2011 +0800 + + Innocuous first commit - corrected a few typos in the docs + +commit 0a83e73c871b94d2c8df4abe18034ab1fd41e202 +Author: Tobias Oetiker +Date: Wed Oct 5 12:09:40 2011 +0200 + + no need to mention DESTDIR in normal Makefile.am use ... only in command options. Thanks to Jeff Bilyk for tha patch. + +commit f1601f6f97589e5011f10ff1b528606903dd8c62 +Author: Tobi Oetiker +Date: Thu Sep 29 11:53:30 2011 +0000 + + wait before syncing + +commit 7937c1a3a41a477aede9325476a71cd253853c06 +Author: Tobi Oetiker +Date: Thu Sep 29 11:47:42 2011 +0000 + + do not distribute non existing files + +commit bc78b2af7c82cced422e4dc424b8ae45589be2fd +Author: Tobi Oetiker +Date: Thu Sep 29 11:44:31 2011 +0000 + + create htdocs dor + +commit 1930d47ac9b2635b610a74ea1e4302731fe7be20 +Author: Tobi Oetiker +Date: Thu Sep 29 11:37:28 2011 +0000 + + better install system + +commit 4ab769579b0aeafd81878ddb332b726c44dc2ffc +Author: Tobi Oetiker +Date: Thu Sep 29 11:36:39 2011 +0000 + + improve webserver docu and sample script + +commit d6136cf5bb98c3b52d54f9b0c9042a54169bfb5b +Author: Tobi Oetiker +Date: Thu Sep 29 07:18:33 2011 +0000 + + improve release system + +commit dce506ebf931914e915cde7c7ec5c8be51b516df +Author: Tobi Oetiker +Date: Thu Sep 29 07:16:13 2011 +0000 + + improve release sytem + +commit 90ea2254d53adbf61bfa62c573f0fae1958a7f0d +Author: Tobi Oetiker +Date: Thu Sep 29 07:11:41 2011 +0000 + + add missing js file + +commit 0f4f0f82bdbd329b93b5598fa6b59b50d6e1e9a7 +Author: Tobi Oetiker +Date: Thu Sep 29 07:06:21 2011 +0000 + + add missing js file + +commit df41fd1716a16baa47b388c588eb572be1bcdb30 +Author: Tobi Oetiker +Date: Thu Sep 29 07:02:41 2011 +0000 + + improve release system + +commit 58ae5f7ec98bf360ab5cc9a2aeab7d4349083de7 +Author: Tobi Oetiker +Date: Thu Sep 29 06:54:51 2011 +0000 + + improve release system + +commit 2d52bd6a6ac81b6cb5c75a93f28a6c2ba6e2743b +Author: Tobi Oetiker +Date: Thu Sep 29 06:54:10 2011 +0000 + + improve release system + +commit ba384d7679698812140a3ef3dd92c12b30816dfd +Author: Tobi Oetiker +Date: Thu Sep 29 06:52:21 2011 +0000 + + improve release mechanism and add DESTDIR to binary paching + +commit d0444c7bd2713466995b986c8d47fb467f79a458 +Author: Tobi Oetiker +Date: Thu Sep 29 06:38:28 2011 +0000 + + include thirdparty libs when building docs + +commit 15273596f42e24f86d48b502f48414714ee4971c +Author: Tobi Oetiker +Date: Thu Sep 29 06:34:04 2011 +0000 + + preparing for the release of smokeping- + +commit 43cfbeb810d245bb4095f1bea4f917557cb14175 +Author: Tobi Oetiker +Date: Thu Sep 29 06:33:00 2011 +0000 + + deal with missing variables + +commit a39594e10328d8acd06f113282d081cde5d3f72b +Author: Tobi Oetiker +Date: Thu Sep 29 06:31:30 2011 +0000 + + preparing for the release of smokeping- + +commit a93be0e71209b34d6c371e3d4876846975fcd812 +Author: Tobi Oetiker +Date: Thu Sep 29 06:30:54 2011 +0000 + + include conftools + +commit 45eaeac285e281d808ac45e6a736628765e6c55a +Author: Tobi Oetiker +Date: Thu Sep 29 06:30:14 2011 +0000 + + preparing for the release of smokeping- + +commit 6ffd03fa16badf0d5454ea2cfbf47796b9d5643c +Author: Tobi Oetiker +Date: Thu Sep 29 06:21:08 2011 +0000 + + make sure version if Smokeping.pm is synced on distbuild + +commit eb2af9461f2a1282701a68505b1ba00eddd99adf +Author: Tobi Oetiker +Date: Thu Sep 29 06:06:26 2011 +0000 + + update install documentation + +commit 3acd454b9c2d9c5e2f6255c5c6472a99b2d0f1dc +Author: Tobi Oetiker +Date: Thu Sep 29 04:49:59 2011 +0000 + + check for gnumake in configure + +commit bac2ea4e099770cdf3074e093da085769f97a04f +Author: Tobi Oetiker +Date: Wed Sep 28 23:20:03 2011 +0000 + + tweak build rules + +commit 261f28813c8154a70349d4fdbf51645cd509906c +Author: Tobi Oetiker +Date: Wed Sep 28 23:07:55 2011 +0000 + + add note about building missing modules to configure + +commit f05d11a794291157f39778907c698c9008cd7edf +Author: Tobi Oetiker +Date: Wed Sep 28 22:34:38 2011 +0000 + + * silent build + * add perl and library path to the scripts on install + +commit a0d01155dc7b2774435721aa319625c9c42d9e59 +Author: Tobi Oetiker +Date: Wed Sep 28 21:32:22 2011 +0000 + + make install destination configurable + +commit 109efdb60386dbabd451162f3f3145a1eaf47f5e +Author: Tobi Oetiker +Date: Wed Sep 28 21:19:38 2011 +0000 + + remove some old un-used directories + +commit 5fae780ff1fe39322a370957bb004f8046faeafb +Author: Tobi Oetiker +Date: Wed Sep 28 21:18:47 2011 +0000 + + start modifying + +commit c7fd04defd13eb3d962156292bf6abaaa893619d +Author: Tobi Oetiker +Date: Wed Sep 28 21:18:01 2011 +0000 + + fix to work with new automake build + +commit 4b3cafae64c7c562cbec2231488f63d912f269ca +Author: Tobi Oetiker +Date: Wed Sep 28 21:17:26 2011 +0000 + + added automake support + +commit 039861d743c2993959aca1a3e52045e8f6073d0a +Author: Tobi Oetiker +Date: Wed Sep 28 19:45:11 2011 +0000 + + standard modules from CPAN ... get them there + +commit c8936eaeaf0d642d66b48cd1cf126924725a8f48 +Author: Tobi Oetiker +Date: Wed Sep 28 19:44:42 2011 +0000 + + add missing POSIX prefix + +commit b3c0fa34dd27dbe1fd89bc8dfd63705c5ea4e927 +Author: Tobi Oetiker +Date: Mon Sep 26 12:52:29 2011 +0000 + + prepare for the release of smokeping-2.5.1 + +commit f638a6d39525dded01b5bcde64bd65e47ec10110 +Author: Tobi Oetiker +Date: Sun Sep 25 21:04:58 2011 +0000 + + fix pod + +commit 2e72f71bcbb2e50a5e74557c0707774153e6ccb0 +Author: Tobi Oetiker +Date: Sun Sep 25 19:56:53 2011 +0000 + + prepare for the release of smokeping-2.5.0 + +commit 4197b239883707b5f40433f39c4796e886beaa9b +Author: Tobi Oetiker +Date: Sun Sep 25 19:56:34 2011 +0000 + + sync version + +commit b34700bd5c300dcf5326871c2b490b3ad8e267ee +Author: Tobi Oetiker +Date: Sun Sep 25 16:08:07 2011 +0000 + + do not exit in zoom ajax mode + +commit 5d9cbae7cb53a12719f7bc649f7d3c11bbf7d412 +Author: Tobi Oetiker +Date: Sun Sep 25 15:50:18 2011 +0000 + + fix makefile + +commit 07104cc21206d40ce7d212133733d8ec99adacde +Author: Tobi Oetiker +Date: Sun Sep 25 15:48:47 2011 +0000 + + fix tagging + +commit 2e7e8a27536ad204ec4b6d60a6a2e75cd35245ad +Author: Tobi Oetiker +Date: Sun Sep 25 15:45:03 2011 +0000 + + sample scripts + +commit 6735adcb1d8a03b3d6e3309233335b32c9b9404c +Author: Tobi Oetiker +Date: Sun Sep 25 15:44:45 2011 +0000 + + initial + +commit 595d31e93b261519631191330c9bde764064ede1 +Author: Tobi Oetiker +Date: Sun Sep 25 15:39:36 2011 +0000 + + added sample scripts + +commit 7e6820cc9127828f84640831852f6a5badc784dc +Author: Tobi Oetiker +Date: Sun Sep 25 15:18:57 2011 +0000 + + prepare for the release of smokeping-2.5.0 + +commit e63c27dac0ca039b67e284235df8238bd0012cfc +Author: Tobi Oetiker +Date: Wed Sep 21 16:18:29 2011 +0000 + + * switch from speedy to fastcgi + * improved installation, no file editing required anymore + * update installation instructions + +commit 11d1224adf4208f5122c2e87bb18007e95443490 +Author: Tobi Oetiker +Date: Mon Sep 12 19:41:55 2011 +0000 + + fixed alert pattern parser for range alerts + +commit 28c1837b9b13debd296cfee32426584505b28e66 +Author: Tobi Oetiker +Date: Sun Sep 11 10:13:37 2011 +0000 + + track changes + +commit 791c6625f49ff446fcca3e403cc00bc630fb99eb +Author: Tobi Oetiker +Date: Sun Sep 11 10:13:25 2011 +0000 + + track changes + +commit 2a854c9b0fd0742fdd5a05c9bcce27da7bf35f82 +Author: Tobi Oetiker +Date: Sun Sep 11 10:12:28 2011 +0000 + + fixed name JunoOS -> JunOS + +commit 6d003965b51b8b20aec52c320ae215ad3b0caf6e +Author: Tobi Oetiker +Date: Sun Sep 11 10:10:05 2011 +0000 + + added not on connecting by hand once + +commit 4f079b6837b7698dc92fadebd92dd90dd55ea443 +Author: Tobi Oetiker +Date: Sun Sep 11 10:05:31 2011 +0000 + + initial junos probe + +commit 664349b51b620cee8afbbd94dff00f8998f86014 +Author: Tobi Oetiker +Date: Sun Sep 11 10:04:53 2011 +0000 + + added scripts to build required perl modules + +commit 5e4b9fe9ed3975e519e317e07288fcee1a2180a3 +Author: Tobi Oetiker +Date: Sun Sep 11 10:03:03 2011 +0000 + + fix library paths and start perl via env, following todays custom + +commit 72898b7566ea545be6ee94a91a5ec29ef9bf0aa0 +Author: Tobi Oetiker +Date: Tue Aug 23 16:18:52 2011 +0000 + + disman integration looks good now + +commit d2815512ed313bf5ce7800c8b84e61aa173566df +Author: Tobi Oetiker +Date: Tue Aug 23 16:14:20 2011 +0000 + + alter probe names to be based on local hostname AND target host + +commit 55490b1bfb539386b63e25a8fd90e56c0200c1e8 +Author: Tobi Oetiker +Date: Tue Aug 23 13:59:15 2011 +0000 + + clean out smoketrace + +commit a1fbf832f9f0ba3043c3300aa0ca3a3d841ce41c +Author: Tobi Oetiker +Date: Tue Aug 23 13:58:56 2011 +0000 + + started integration of DismanPing support with modules from Bill Fenners: Bill's Permanently Unfinished but Potentially Useful scripts + http://code.google.com/p/pupu/ --- thanks bill! + +commit 7bcda72c21f3d1d28760427455b3b1c9b2f48b44 +Author: Tobi Oetiker +Date: Tue Aug 23 13:53:40 2011 +0000 + + updated to SNMP_Session 1.13 + +commit 454e8ff564da151b1ad8bb56140a582ea827a4f9 +Author: Tobi Oetiker +Date: Tue Jun 7 06:47:51 2011 +0000 + + updated the download link + +commit 5108700d36b8c565c01301795bbacc4827bac0c2 +Author: Tobi Oetiker +Date: Fri Feb 18 13:26:01 2011 +0000 + + suggest to get a copy of fping from here ... + +commit 1aa624d182cdec1d1f5caa69f814df29947a76f0 +Author: Tobi Oetiker +Date: Sat Aug 28 07:59:55 2010 +0000 + + I run smokeping on many boxes and and my Gentoo/Funtoo boxes frequently run + into localization setup issues which will bomb out Smokeping's web + interface. It works fine invoked from the shell. I use the attached patch + to help me diagnose the server setup problem. The behavior is identical to + current Smokeping in that it logs a message and throws a HTTP 500 error. + The basic Smokeping localization sanity check has uncovered "insane" setups + where the PERL %ENV environment variables are being ignored by "setlocale" + on several of my boxes for unknown reasons. Obviously, smokeping should + quit, which it does... -- Lee Thompson stagr.lee gmail.com + +commit 3f7adcc5b693de323fd921cf34678e41bbf6d154 +Author: Tobi Oetiker +Date: Sun Mar 14 11:31:13 2010 +0000 + + added SipSak probe for SIP ping testing + +commit bf2a5c2c1de2a1b20348bfb6c1f49b850f0db4f6 +Author: Tobi Oetiker +Date: Wed Mar 10 05:53:36 2010 +0000 + + port the timeout fix from CiscoRTTMon ICMPPing to DNS and TcpConnect versions + +commit 98421ee8ba3adf8545f4a35e673ff8ef6881b65e +Author: Tobi Oetiker +Date: Tue Mar 9 08:19:12 2010 +0000 + + raise timeout to 5s and twist basefork.pm into allowing this by providing a higher _default timeout for the probe. + +commit ccac2c707170b3e4ccb8c3f714abcaf9e1ceb962 +Author: Tobi Oetiker +Date: Fri Feb 19 13:57:43 2010 +0000 + + fix spaceing in alert from slave + +commit 9eb3e9ccd4d3d9fa6494a4e543d2948ceacf3639 +Author: Tobi Oetiker +Date: Wed Dec 30 16:04:14 2009 +0000 + + add support for TOS setting in fping + +commit 892f12c656500ae9460250db5337cb12eb70ffe2 +Author: Tobi Oetiker +Date: Wed Dec 16 07:23:51 2009 +0000 + + fix 'bad' link + +commit decdf04f8089301848801650957b951c85a9cb91 +Author: Niko Tyni +Date: Sun Dec 13 12:01:07 2009 +0000 + + make the build system compatible with HTML::Parser >= 3.64 + + reported as Debian bug #560562 + +commit 0763259d1aeab109b9396e486ff2e106147174e1 +Author: Tobi Oetiker +Date: Sat Aug 8 11:51:32 2009 +0000 + + updated to lates prototype and scriptaculous libraries + +commit 150e62aad688c3143a1a9c2c4c890dd81b91cc54 +Author: Tobi Oetiker +Date: Wed Jun 24 20:15:53 2009 +0000 + + improved docs, added me to the author and copyright list + +commit 80c593387051f0a7c72e44dc855d8ca5459a73b9 +Author: Tobi Oetiker +Date: Mon Jun 15 05:38:14 2009 +0000 + + fix url in alert emails for alerts triggered by slaves + +commit a4b49e45557677dd854bc84cb38bed952fd9588d +Author: Tobi Oetiker +Date: Thu Apr 16 21:19:41 2009 +0000 + + lowercase charset + +commit b697133c514e296cc47904cb7c8403095a7b34c6 +Author: Tobi Oetiker +Date: Thu Apr 16 20:42:41 2009 +0000 + + * improved documentation + * made location of service modules configurable + * made method prefix configurable + +commit 16f3a3e84d2c25073d7ac1c40bf42852421ef5cc +Author: Niko Tyni +Date: Fri Feb 13 14:23:53 2009 +0000 + + fix a typo in configuration example 4, spotted by Guglielmo Bondioni + +commit 3c2ad106f30d111731d460b5274471d7cafe5cf8 +Author: Niko Tyni +Date: Fri Feb 13 07:46:16 2009 +0000 + + From: Jeremy Laidman + + > Please consider including the patch below. It allows specifying a parameter + > of "allowreject" in the Radius probe configuration. When allowreject=true, + > rejected RADIUS authentications are treated as OK. This means I can test + > the RTT of a RADIUS request without using a valid account. As long as the + > RADIUS secret is correct, the timings should be reasonable. The default is + > "false". + +commit d27bd1a9015c9c1e9fe2d862d136e96e8a80f706 +Author: Tobi Oetiker +Date: Fri Jan 30 17:21:52 2009 +0000 + + fix for static implementation + +commit d3a10222b0262b103d1fc6ad855a81017f4943a2 +Author: Tobi Oetiker +Date: Tue Jan 27 15:13:49 2009 +0000 + + no filter gets us all + +commit 8380a62bdbecb16f6623afff21059e914d09364b +Author: Tobi Oetiker +Date: Tue Jan 27 14:25:08 2009 +0000 + + we want pattern to be called filter ... really ! + +commit 76b82782a9ecf7c4066399703c4f7e1a9fe975b3 +Author: Tobi Oetiker +Date: Sun Jan 25 15:38:30 2009 +0000 + + added updates accorrding to arnas suggestions + +commit 4e6be34511159935b2f2f833961265743c3a827a +Author: Tobi Oetiker +Date: Fri Jan 23 13:37:16 2009 +0000 + + disable __DIE__ inside eval + +commit 111f2f3d4f584eed8ecbf902d4770dceaab2390c +Author: Tobi Oetiker +Date: Wed Jan 21 06:51:14 2009 +0000 + + fix broken error message in spdomed + +commit bd1904210d02ff63b4c6ccc8775e901d6663e49c +Author: Tobi Oetiker +Date: Thu Jan 15 10:28:10 2009 +0000 + + * make it work with missing rrd files + * make it work correctly for nomasterpoll option + +commit 428b580ac543bef7c96899dd1e30ffae46a6ea3e +Author: Tobi Oetiker +Date: Mon Jan 5 17:28:52 2009 +0000 + + added some examples + +commit efdba627ad20b396b7c9ce080200ee62bd066f84 +Author: Tobi Oetiker +Date: Mon Jan 5 17:25:57 2009 +0000 + + initial checkin + +commit 64ad4077fc99a8476a27ad61c243db1077300286 +Author: Tobi Oetiker +Date: Mon Jan 5 07:52:50 2009 +0000 + + minor qooxdoo updates + +commit 2a08e0d8ca5f3e2f64ca2771e20764a953515d2f +Author: Tobi Oetiker +Date: Mon Dec 22 12:55:28 2008 +0000 + + minor fixes + +commit 9389d56b0f20bd7e35d0f181259fc6906e258e7c +Author: Tobi Oetiker +Date: Mon Dec 15 18:35:51 2008 +0000 + + ExpLoss.pm matcher produces an exponential weighted average and supports + RMON-like thresholds to obtain stable node status detection. -- Veniamin Konoplev. + +commit f9d6f26cbf330d3c951a8801f963e685f64cc39c +Author: Tobi Oetiker +Date: Mon Nov 17 08:56:24 2008 +0000 + + added initial 0.8 port ... not quite working yet + +commit d8b465e26599268b8eded0732e8f29062556997e +Author: Tobi Oetiker +Date: Thu Nov 6 14:40:55 2008 +0000 + + initial commit + +commit 996d9e92e597bc462d874b335865ff7844e2d332 +Author: Tobi Oetiker +Date: Tue Nov 4 10:14:06 2008 +0000 + + added 0.8 port + +commit 2bb54a7dd3145c431b0e63cfd83df37f9a4b40d4 +Author: Tobi Oetiker +Date: Mon Nov 3 12:22:05 2008 +0000 + + fixed normans address + +commit 50f3fd2f1cc7312ef548c3682f9af978b18e1dcd +Author: Tobi Oetiker +Date: Sun Sep 14 20:49:09 2008 +0000 + + make this work even when ipv6 addresses are around -- Olaf Jaehrling + +commit 68d0715bf459cba1e94cdb8644d6f44036fe5694 +Author: Tobi Oetiker +Date: Tue Sep 9 05:30:26 2008 +0000 + + updated snmp session to 1.12 + +commit 09a4089d927f4c63fdab1b8bded2a73ac398d412 +Author: Tobi Oetiker +Date: Sat Aug 30 13:09:37 2008 +0000 + + properly fix the handling of multiple writes to the cache file + +commit ae5a24062aec7a5eeb2e984989dc3a9ba84e5560 +Author: Tobi Oetiker +Date: Sat Aug 30 09:46:28 2008 +0000 + + track smokeping changes + +commit a05629a54acff49c918859b01d6a4bf177af9051 +Author: Tobi Oetiker +Date: Sat Aug 30 09:38:41 2008 +0000 + + seek to start of the file prior to storing + +commit 3e3de0ed8ad6b87df4b2409373ebb6708e55f9c3 +Author: Tobi Oetiker +Date: Sat Aug 30 08:56:38 2008 +0000 + + order updates to slavecash to minimize writing + +commit aa0e0cf4c72d609899932e85d33e983dc0b25792 +Author: Tobi Oetiker +Date: Wed Aug 27 17:16:23 2008 +0000 + + fixed numbering + +commit 388f957a3615c5b52ebf52e16462bf693700a0b7 +Author: Tobi Oetiker +Date: Wed Aug 27 16:41:01 2008 +0000 + + fixed install instructions + +commit a325ac6b477255914f016da340e1bfe1ae833fd0 +Author: Tobi Oetiker +Date: Thu Aug 21 20:38:12 2008 +0000 + + fix speedy settings + +commit 69b86b80304329c14b225613609847922f34ebd7 +Author: Tobi Oetiker +Date: Thu Aug 21 20:37:59 2008 +0000 + + be a bit smarter about handling updates comming in from a client by doing all updates to a name in a single round. + +commit f160d040a25f4bc6c33787326b581a49c2e38cce +Author: Tobi Oetiker +Date: Wed Aug 13 20:13:37 2008 +0000 + + In cgi mode, do NOT reload the cfg file since this can cause a storm on the webserver. Die instead AFTER working through the current request. + +commit 31ee5f8285215545e9de4c5cc0ea169832b5390e +Author: Tobi Oetiker +Date: Fri Jul 25 05:56:46 2008 +0000 + + autoreap zombies + +commit cad5654594f4ff6865795809376d19e15272cd5b +Author: Tobi Oetiker +Date: Thu Jul 24 18:24:37 2008 +0000 + + prepare for the release of smokeping-2.4.2 + +commit 8c3005527f64d656e4d9321116fd893525a150da +Author: Tobi Oetiker +Date: Thu Jul 24 17:37:05 2008 +0000 + + prepare for the release of smokeping-2.4.2 + +commit 6f4833870c8de9fbcc0fa96f87c783fa9e280b5e +Author: Tobi Oetiker +Date: Thu Jul 24 17:36:57 2008 +0000 + + * added strict and warnings to the cgi and the daemon wrappers ... + * fixed regression introduced while fixing taint issues + +commit 11299344ee659123b8fe18794da4e7a7b24c6e5c +Author: Tobi Oetiker +Date: Mon Jun 30 20:55:50 2008 +0000 + + improved documentation for master/slave + fixed taint error in Smokeping.pm + +commit fae328cd534c1f700cdf8576cd370f68d62d585a +Author: Tobi Oetiker +Date: Sun Jun 29 15:09:46 2008 +0000 + + do some more checking on the slave name we get from the cgi + +commit f28283f29111269f6de963411f80748692186153 +Author: Tobi Oetiker +Date: Wed Jun 18 13:52:42 2008 +0000 + + stop loading sys_wait_h in Tr.cgi + +commit 184fb3f6fc4f71cef2a417d117f2fc0c1c4d979a +Author: Tobi Oetiker +Date: Fri Jun 13 22:01:24 2008 +0000 + + prepare for the release of smokeping-2.4.1 + +commit 7106bff788bb0193045c9eef4fba8dd6d675abf4 +Author: Tobi Oetiker +Date: Fri Jun 13 21:55:35 2008 +0000 + + prepare for the release of smokeping-2.4.1 + +commit c004881d0261bbe21d1fed756f08f8f00aadf00d +Author: Tobi Oetiker +Date: Fri Jun 13 21:54:05 2008 +0000 + + initial + +commit f658d2b70e0f2b1a89fbef367ad3f06e50d3f4e2 +Author: Tobi Oetiker +Date: Fri Jun 13 21:44:56 2008 +0000 + + explain about the purpose of this tree + +commit ee4a5b6562a3bc371459a701afc99e5d9c7d8ef0 +Author: Tobi Oetiker +Date: Fri Jun 13 21:42:34 2008 +0000 + + added footer + +commit 4ac6bf769b09ba7bd39778297f0e9699ee263256 +Author: Tobi Oetiker +Date: Fri Jun 13 21:34:28 2008 +0000 + + prepare for the release of smokeping-2.4.1 + +commit 64d0fc90d7df5a188a5ce9ed9cd562f76d7b139f +Author: Tobi Oetiker +Date: Fri Jun 13 18:43:25 2008 +0000 + + prepare for the release of smokeping-2.4.1 + +commit bd16c367fc755f976fa9c0febca9ede065b61f2f +Author: Tobi Oetiker +Date: Fri Jun 13 12:38:07 2008 +0000 + + fixed messages + +commit 84a43df0c40d9e384c99f58ebec6751f26184f69 +Author: Tobi Oetiker +Date: Fri Jun 13 12:01:50 2008 +0000 + + fixed version string creation in javascript output + +commit a5e329fddd18ad7ed43edbcd37f0979a189c6979 +Author: Tobi Oetiker +Date: Tue Jun 10 16:12:25 2008 +0000 + + fix install instructions + +commit 9dd3d5370282a4ef62977d33ebb7ecda4efe7a91 +Author: Tobi Oetiker +Date: Tue Jun 10 15:31:53 2008 +0000 + + prepare for the release of smokeping-2.4.0 + +commit 32d5832640525150ef005ec7dc755507051291cd +Author: Tobi Oetiker +Date: Tue Jun 10 15:23:29 2008 +0000 + + prepare for the release of smokeping-2.4.0 + +commit c3fad903ed660295184a59c627726c6eb52bf497 +Author: Tobi Oetiker +Date: Tue Jun 10 13:37:37 2008 +0000 + + prepare for the release of smokeping-2.4.0 + +commit 67081a4ef640897e45ec459162b4911b9270d68a +Author: Tobi Oetiker +Date: Tue Jun 10 13:29:06 2008 +0000 + + prepare for the release of smokeping-2.4.0 + +commit 437c288690b3a0db6957edf06e5b4f5e7eb07e72 +Author: Tobi Oetiker +Date: Tue Jun 10 13:20:41 2008 +0000 + + prepare for the release of smokeping-2.4.0 + +commit 3e3229ba507fed2d6b2a48a4cb999a73e35ee433 +Author: Tobi Oetiker +Date: Tue Jun 10 13:17:45 2008 +0000 + + prepare for the release of smokeping-2.4.0 + +commit b35df772b8bf6a12fba237557c65e5be9740cd14 +Author: Tobi Oetiker +Date: Tue Jun 10 13:16:13 2008 +0000 + + prepare for the release of smokeping-2.4.0 + +commit 424e08410b2cdbf963c07cca0834ba66a541b703 +Author: Tobi Oetiker +Date: Tue Jun 10 13:08:07 2008 +0000 + + prepare for the release of smokeping-2.4.0 + +commit 8d5f45365467584b313528c60c6f3a902e02c1a4 +Author: Tobi Oetiker +Date: Tue Jun 10 13:01:02 2008 +0000 + + removed another debug print + +commit 761d11b28863424cc69f853dce7db9dbadfadba9 +Author: Tobi Oetiker +Date: Tue Jun 10 06:33:56 2008 +0000 + + updated translation + +commit d946daa0b527161ca5334d907e6db3055c549781 +Author: Tobi Oetiker +Date: Tue Jun 10 06:29:53 2008 +0000 + + we call it smoke trace now + +commit 0ac7fb08ce9b39e0ff02435bb413720050021569 +Author: Tobi Oetiker +Date: Mon Jun 9 21:57:38 2008 +0000 + + let the server only return if he has something to say. + +commit 129d59bc63a690e750a0e4f55ee8389495e2882a +Author: Tobi Oetiker +Date: Mon Jun 9 05:20:13 2008 +0000 + + added dummy script_name methode + +commit 156fc3d2ef35ff525d13ee3d693728596a62ab82 +Author: Tobi Oetiker +Date: Sun Jun 8 22:22:03 2008 +0000 + + fix the name and reduce the spacing + +commit 45f079de478517c0e4d3dd47d0c5566a000a1db0 +Author: Tobi Oetiker +Date: Sun Jun 8 22:21:01 2008 +0000 + + added notes on smoketrace install + +commit 79bd2e62e2ba21294f40b9814661dbfe2ee9e2ee +Author: Tobi Oetiker +Date: Sun Jun 8 22:14:29 2008 +0000 + + added smokeping traceroute doc + +commit 30e99f32be378fd13ceb9d70b905b9b53f92d919 +Author: Tobi Oetiker +Date: Sun Jun 8 21:49:42 2008 +0000 + + added blazemode to fping probe + +commit 55a86f815d5f60e4d734be4f67d7968eb1a67281 +Author: Tobi Oetiker +Date: Sun Jun 8 21:41:37 2008 +0000 + + fixed telnetJunOSPing + +commit 400065442d62705a6cebcf6f5c5aa53a3bccf34f +Author: Tobi Oetiker +Date: Sun Jun 8 21:37:10 2008 +0000 + + fixed regression from r680 which broken old fping detection + +commit 9a6c0d09fb7ac906607f5fd2f4ec18d126ee5b72 +Author: Tobi Oetiker +Date: Thu Jun 5 16:17:11 2008 +0000 + + sleep properly inbetween checks + +commit f7c8c95ddc80c3b26f0d7978b776e02bc950a9fa +Author: Tobi Oetiker +Date: Thu Jun 5 15:36:43 2008 +0000 + + improved handling of non responsive hosts + routes flapping + hosts with multiple ip addresses + +commit 6650ea2659e4817aedfe5e634afebfe487e83175 +Author: Tobi Oetiker +Date: Thu Jun 5 07:29:51 2008 +0000 + + tr must quit after run + +commit c5d21994f26ffee7ebd80fc226220152d3d48ce5 +Author: Tobi Oetiker +Date: Thu Jun 5 07:13:36 2008 +0000 + + use menuclass and not just class for menuextra {CLASS} + +commit 3fabc095b23f030883bbfc613b7ae423c71a3054 +Author: Tobi Oetiker +Date: Thu Jun 5 07:10:36 2008 +0000 + + disable sleep code for now + +commit cfccce8a1c63ecf5b3233259d012f9ac8a426550 +Author: Tobi Oetiker +Date: Thu Jun 5 07:04:16 2008 +0000 + + added missing } + +commit fc9d545ce142680a5fb1fedfd0286c0acd0e1ebe +Author: Tobi Oetiker +Date: Thu Jun 5 06:56:06 2008 +0000 + + add the hash to the hostname + +commit 5c8d6da392323b37fd85a398b2a493034635c65e +Author: Tobi Oetiker +Date: Thu Jun 5 06:43:21 2008 +0000 + + let the webif sleep between runs (cut the comets tail) + replace {CLASS} too + +commit a26e2b5d5d5634e4653c7081dd3dd5a94fdcbb8f +Author: Tobi Oetiker +Date: Wed Jun 4 23:43:32 2008 +0000 + + working version + +commit fd6ba4e8d6e87f1c7c43527ecf9ad4c06893551e +Author: Tobi Oetiker +Date: Wed Jun 4 23:20:58 2008 +0000 + + more nameing fixes + +commit 967063d2a1aa032eecede67b4f1d891bd1964a15 +Author: Tobi Oetiker +Date: Wed Jun 4 23:00:32 2008 +0000 + + working version + +commit 18ad1210282362b6ab636ccbd58a86bbf210ac19 +Author: Tobi Oetiker +Date: Wed Jun 4 21:35:35 2008 +0000 + + rename Mtr service to Tr service as well + +commit 983c2446c51db710e482bdbfd86e0a94723f76d8 +Author: Tobi Oetiker +Date: Wed Jun 4 21:35:07 2008 +0000 + + rename Mtr service to Tr service as well + +commit 8364e6bbedf919008da50cc1b54dbb8a49dee88d +Author: Tobi Oetiker +Date: Wed Jun 4 21:33:02 2008 +0000 + + alter name to Tr since we do not use mtr anmore + +commit 4940f51d54f1f4b994c02138defbcd8ff36a95ec +Author: Tobi Oetiker +Date: Wed Jun 4 21:08:59 2008 +0000 + + converted everything to traceroute propper ... much better + +commit 1ede2f2620e6d40f0cadc2b196324e9de9bcd1ce +Author: Tobi Oetiker +Date: Tue Jun 3 22:46:38 2008 +0000 + + prepping for traceroute switch + +commit 9c59d668c6d0611f1ea611ca0e9ea5a5954eaa20 +Author: Tobi Oetiker +Date: Tue Jun 3 13:16:17 2008 +0000 + + fixed extrahost integration + +commit 39eded37581cfe09d85d1225355fd1e22264cbf3 +Author: Tobi Oetiker +Date: Mon Jun 2 20:52:26 2008 +0000 + + mtr integration + +commit 45e158a30e69573f044605e74d65c9f283d89569 +Author: Tobi Oetiker +Date: Mon Jun 2 20:03:45 2008 +0000 + + mtr integration + +commit 8793d83042d5cf388a30ee5f8637fa6554334aa6 +Author: Tobi Oetiker +Date: Mon Jun 2 20:03:33 2008 +0000 + + initial support for mrt integration + +commit 6b239270a134ef8f26d59a7ab9b35eeeeceb9c47 +Author: Tobi Oetiker +Date: Sun May 18 13:30:34 2008 +0000 + + fixed rawlog name + +commit bfa39ae5e98f3d18f43b95a80a0d4315c795e0db +Author: Tobi Oetiker +Date: Mon May 12 23:35:12 2008 +0000 + + make sure target sections have no dots + +commit c9b5c598e4f74e00713a11c2ca47c6226c965821 +Author: Tobi Oetiker +Date: Sat Apr 26 13:02:18 2008 +0000 + + prepare for the release of smokeping-2.3.6 + +commit b1b170a129e0a7ff1fdbca3d0f2138d8d6291acb +Author: Tobi Oetiker +Date: Sat Apr 26 13:00:16 2008 +0000 + + set hovercolor to balck + +commit ad4960d32b3d5bc6d8ee58dc5cb0f6553a36f21d +Author: Tobi Oetiker +Date: Sat Apr 26 12:56:56 2008 +0000 + + integrated menuactive patch + +commit e1aa9c368e3ad73b576d4410ffc937d1d03c50f1 +Author: Niko Tyni +Date: Fri Apr 25 18:34:31 2008 +0000 + + honour the 'linkstyle' variable when zooming + +commit e942ada8af8b54bb34b9a5a3a7ab34e7ae7ca347 +Author: Tobi Oetiker +Date: Wed Apr 16 21:20:48 2008 +0000 + + complain properly when the secrets file can not be read + +commit 4654618b5ca4b8c6b3bfb4d508eb1da8c47eddec +Author: Tobi Oetiker +Date: Thu Apr 3 14:37:35 2008 +0000 + + display all the smoke even when the graph is limited in height + +commit d6ea346a961f7579627bb789f875219ae10c8592 +Author: Niko Tyni +Date: Sat Mar 29 19:00:06 2008 +0000 + + bah, missed one + +commit d3f95bc4662de8aed1fe8a22cfc6bdddbd31be71 +Author: Niko Tyni +Date: Sat Mar 29 18:54:21 2008 +0000 + + add a target to recreate the docdirs just in case a "git clean -d -f" removed them... + +commit be80594b5a59c846d5fa601f2b9144d39f03b60c +Author: Tobi Oetiker +Date: Sat Mar 29 07:47:19 2008 +0000 + + prepare for the release of smokeping-2.3.5 + +commit 631517a8504550d44c6b7de348ebcddf0486c8b2 +Author: Niko Tyni +Date: Fri Mar 28 22:58:55 2008 +0000 + + * make slaves kill their old children off before forking new ones when + the configuration changes. Reported by David Behr. --niko + +commit b65e64cb134d2c44ed85dbcbd755f3fba0e1cf4e +Author: Tobi Oetiker +Date: Fri Mar 28 00:13:51 2008 +0000 + + prepare for the release of smokeping-2.3.4 + +commit e3fc044125095d397693cc4f34105beb5423bdc6 +Author: Niko Tyni +Date: Thu Mar 27 21:01:28 2008 +0000 + + another typo fix + +commit 8dac72c2ba0a24a27886c7f4544cf01f7efd14d8 +Author: Niko Tyni +Date: Thu Mar 27 20:54:09 2008 +0000 + + properly initialize the target count + +commit 01c57c9c97359fd531896c10baff94c2010dd609 +Author: Niko Tyni +Date: Thu Mar 27 20:51:23 2008 +0000 + + fix a typo + +commit cd27423857677170b3a8d8305115e81495b1b094 +Author: Niko Tyni +Date: Thu Mar 27 06:05:37 2008 +0000 + + * fix 'loss_background' documentation. Reported by David Tomic. --niko + +commit 4a2ee52a92ce7a2f4f62ff039bddeaaa7080309c +Author: Tobi Oetiker +Date: Wed Mar 19 21:40:22 2008 +0000 + + added nikos fixes for nomasterpoll + +commit b6edbe8a83658ca1b35e502e6353e9b3d3762073 +Author: Niko Tyni +Date: Wed Mar 19 18:22:55 2008 +0000 + + undo the previous change: it is arguably cleaner to send+expect the protocol number only with signed data + +commit 53c31b5e314f2717f730969974cd6ef36d9fe76c +Author: Niko Tyni +Date: Wed Mar 19 15:29:04 2008 +0000 + + send the protocol number with OK too, the slave is expecting it + +commit bac48a06638f1e8dfdc23980c3cea2fa30ae16e8 +Author: Niko Tyni +Date: Wed Mar 19 12:57:03 2008 +0000 + + revisit the locking error paths a bit + +commit 2944cb07be67d87e1a93ca6abf058dd6ce23d276 +Author: Niko Tyni +Date: Wed Mar 19 12:36:25 2008 +0000 + + unrevert the locking change, LOCK_SH should work + +commit 3ed78f950e7bf1c1af00ab497fbf8da1959848e2 +Author: Tobi Oetiker +Date: Tue Mar 18 22:55:01 2008 +0000 + + fixed spelling of protocol + +commit 43e65375aa5d23b7cbee07996a5e10c2b95b0ffd +Author: Tobi Oetiker +Date: Tue Mar 18 22:54:03 2008 +0000 + + added protocol level checks and upgrade notes + +commit e06a42e7920eb3ad2cafc62b5db21746126ce37c +Author: Tobi Oetiker +Date: Tue Mar 18 22:21:33 2008 +0000 + + fix order for non ordered entries + +commit 877ac7fb8e93efcf0d7b547168749984bd4aa99d +Author: Niko Tyni +Date: Tue Mar 18 16:25:29 2008 +0000 + + bail out if the master/slave shared secret file is world-readable or writable + +commit c11e056ea3338b001a78f37a257db6fe3554b0d9 +Author: Niko Tyni +Date: Tue Mar 18 16:20:35 2008 +0000 + + fix a syntax error + +commit 8227b83b7337c57d9c8a5820792626ab5c196426 +Author: Niko Tyni +Date: Tue Mar 18 16:12:13 2008 +0000 + + add some security notes to the master/slave documentation --niko + +commit ce9013c52ea8299c608d9cdf3f3697454057a5d4 +Author: Niko Tyni +Date: Tue Mar 18 12:26:12 2008 +0000 + + add Digest-HMAC license information + +commit a002bbdae7018d7c23f857780074ef00e3e6f31e +Author: Tobi Oetiker +Date: Tue Mar 18 08:10:40 2008 +0000 + + switch to HMAC digest to avert extension attack + +commit efe9d8dafd6a8bc5845eae3b4dbc172ad68aa187 +Author: Niko Tyni +Date: Tue Mar 18 06:46:15 2008 +0000 + + revert the locking change in r951 for portability reasons + +commit 6b3f4223b367af243c978815ac46cb344a2a0777 +Author: Tobi Oetiker +Date: Mon Mar 17 23:19:26 2008 +0000 + + added changelog entry for sortercache load fileter + +commit fdf500019c8c0a7a589c54f78ff0b9a293790e84 +Author: Tobi Oetiker +Date: Mon Mar 17 23:18:05 2008 +0000 + + just to be on the save side, make sure when loading the sortercache that we only load info about graphs presently in the config. --tobi + +commit 340239dd0fdf7e8a63ebaae809e548df3cda105b +Author: Niko Tyni +Date: Mon Mar 17 19:56:48 2008 +0000 + + * optionally precreate the directory structure under 'dyndir' if + 'precreateperms' is set --niko + +commit 2fc87dbdce71a29396ad0236edc044f27596bdc0 +Author: Niko Tyni +Date: Mon Mar 17 19:55:33 2008 +0000 + + * store the slave updates in dyndir, defaulting to datadir --niko + +commit 1d4de6409ce490f5b33b2187372de7ea9c9ed307 +Author: Niko Tyni +Date: Mon Mar 17 19:53:09 2008 +0000 + + * change the slave update locking code so that reading works without + write access to the temporary storage file --niko + +commit 3236c4eea1ba9de7e1dc0d2cdf232d6c9c9c728f +Author: Tobi Oetiker +Date: Fri Mar 14 16:19:39 2008 +0000 + + added rsa1 patch + +commit 6735939fcebafa14b2ce6918f086ca0da3c898c3 +Author: Tobi Oetiker +Date: Thu Mar 13 14:50:50 2008 +0000 + + make ajax zooming take time ranges 'time range' fields into consideration + +commit 3c5735fa2eda3ddc65e639a73a0956bfb7af608d +Author: Tobi Oetiker +Date: Thu Mar 13 14:09:38 2008 +0000 + + switch range form to POST + +commit bc3c6e5b5c482a2003772d9e4bf5c2a878c5fcae +Author: Tobi Oetiker +Date: Mon Mar 10 10:55:20 2008 +0000 + + prepare for the release of smokeping-2.3.3 + +commit 73fb8150992d02888d083581e86b83002e0050c8 +Author: Tobi Oetiker +Date: Thu Mar 6 06:21:12 2008 +0000 + + fix retrun value processing (regression from last patch) + +commit 6c15f78cac4a0b94907352c4184d6d7d5ca87164 +Author: Tobi Oetiker +Date: Wed Mar 5 23:13:24 2008 +0000 + + longer timeout for slaves and separate cache files per slave for improved scaling -- Phillip Moore + +commit 31e4fcaa45fb5dca6018a1ef70b71bdfbbac4965 +Author: Niko Tyni +Date: Tue Mar 4 21:57:30 2008 +0000 + + * add an optional --pid-dir option to specify the pid directory + when running as a slave. --niko + +commit 06144c93db3c0cc7bc5434740a76b9eac6c23ee4 +Author: Tobi Oetiker +Date: Mon Feb 25 23:29:31 2008 +0000 + + added log entry for nomasterpoll fix + +commit b3e2473cc1a5d1dcf84632758741f6e4f7933c55 +Author: Tobi Oetiker +Date: Mon Feb 25 23:29:14 2008 +0000 + + cosmetic fix .. + +commit 30f47a24f4ee7cd5f825ae9e14891920a6cd8bca +Author: Tobi Oetiker +Date: Mon Feb 25 23:18:52 2008 +0000 + + slaves must poll even with nomasterpoll + +commit 296d9bf573e5981407c85d35bc9e339d777321cb +Author: Tobi Oetiker +Date: Mon Feb 25 10:24:40 2008 +0000 + + prepare for the release of smokeping-2.3.2 + +commit 0ec3c991d771c0856a39f60824849f58680987c0 +Author: Tobi Oetiker +Date: Mon Feb 25 10:23:24 2008 +0000 + + make navigator work for nomaster poll + +commit bc22f15ad9322086da631f7bb0854c2a0d2e5424 +Author: Tobi Oetiker +Date: Mon Feb 25 10:08:02 2008 +0000 + + do not use key '' for the default hierarchy + +commit 4ddd6688d16443d84aabd6ce5d0d540f71b9b4b5 +Author: Tobi Oetiker +Date: Mon Feb 25 09:53:02 2008 +0000 + + nomasterpoll does not get a default value automatically ... so lets check for nothing as well + +commit 0c1233317fb699e800d109160a11ff79b3d07dfc +Author: Tobi Oetiker +Date: Fri Feb 22 17:15:01 2008 +0000 + + fixed ordering overview vs menu + +commit 3e576f158fc4a0dda23a872d9ef8d69dfad7c8e2 +Author: Tobi Oetiker +Date: Fri Feb 22 06:55:36 2008 +0000 + + fixed section title spelling + +commit d181a809046d4f59be93e447b33ccf71e5edaf8f +Author: Tobi Oetiker +Date: Sun Feb 17 10:29:13 2008 +0000 + + prepare for the release of smokeping-2.3.1 + +commit b9e4dcf06ed56ddbb0ee0f6a040142e21ab2f4a9 +Author: Tobi Oetiker +Date: Thu Feb 14 12:36:33 2008 +0000 + + added nomasterpoll note + +commit 0db9048eb16ac58d9298fea62830a0ac1c4a4ce8 +Author: Tobi Oetiker +Date: Thu Feb 14 12:35:55 2008 +0000 + + ignore master for alerts if nomasterpoll is set + +commit c3e144bdb68b7dbee7b1b6249453a1c61dc18497 +Author: Tobi Oetiker +Date: Tue Feb 12 10:04:06 2008 +0000 + + mkae errors with missing hide values go away + +commit b9828ab2e237efd59e662b4305e866a33519a9a4 +Author: Tobi Oetiker +Date: Mon Feb 4 17:00:46 2008 +0000 + + fixed html syntax issues + fixed spelling of standard deviation + +commit 74783005860524bbdf1be4fe0ec2924e650c1652 +Author: Tobi Oetiker +Date: Wed Jan 30 17:02:27 2008 +0000 + + updated ... working + +commit 0e6c3c629a18c9989e4cd8b9d3cd2f7cf7da4aef +Author: Tobi Oetiker +Date: Wed Jan 23 21:11:11 2008 +0000 + + added 2.3.0 notes + +commit 90bcb19f4df9fa7c022a30b346d7c7f56c9c669f +Author: Tobi Oetiker +Date: Wed Jan 23 16:50:54 2008 +0000 + + prepare for the release of smokeping-2.3.0 + +commit 69390f906f4ea56781db63a68ddb416e8d42009b +Author: Tobi Oetiker +Date: Wed Jan 23 16:26:07 2008 +0000 + + prepare for the release of smokeping-2.3.0 + +commit 8f75cc658717b4409d2eb3c37f6704c7f9d84e59 +Author: Tobi Oetiker +Date: Wed Jan 23 15:07:05 2008 +0000 + + prepare for the release of smokeping-2.3.0 + +commit d7ef1c5cc614185fe2e9dd83442edb824620335c +Author: Tobi Oetiker +Date: Wed Jan 23 15:06:23 2008 +0000 + + prepare for the release of smokeping-2.3.0 + +commit d39831a3c4296fe4f56bf9b7e48bb443ad9239fc +Author: Tobi Oetiker +Date: Wed Jan 23 15:05:19 2008 +0000 + + allow empty slaves list to remove inherited slave list + +commit 95a4c5498b09ed883af512142c860c57bc65d0c0 +Author: Tobi Oetiker +Date: Wed Jan 23 13:08:20 2008 +0000 + + added tcpping probe + +commit 3809f4928c67b774515d0cbd6dfcbb0587ec4dd1 +Author: Tobi Oetiker +Date: Wed Jan 23 12:56:35 2008 +0000 + + added new hide and noserverpoll properties to target configuration + +commit aeb75494086a98101cdf22ba3dc6767cb03939a5 +Author: Tobi Oetiker +Date: Tue Jan 22 15:46:41 2008 +0000 + + ignore case when searching + +commit 044a430a2c453780113aec59e37ee5160d777b0a +Author: Tobi Oetiker +Date: Tue Jan 22 15:06:16 2008 +0000 + + interated filter function to interface + +commit 1c86305fb4234cf4e8d81c461dc515ef1db6ec06 +Author: Tobi Oetiker +Date: Tue Jan 22 06:47:05 2008 +0000 + + fix hierarchy property problem introduced in previouse patch + +commit 88c73fdb0c653f6366a06c21aa9c055245b8641a +Author: Tobi Oetiker +Date: Mon Jan 21 22:18:48 2008 +0000 + + added alternate presentation hierarchies. Configure via Presentation->hierarchies and + Targets ... -> parents -- tobi + +commit f0d944ab93f7603843ba3a8ec825261d339c7eef +Author: Tobi Oetiker +Date: Mon Jan 21 14:02:04 2008 +0000 + + add support for alternate hierarchies + +commit f0f6e11c69efa0d8703557a19c14c15d3ed34c9b +Author: Tobi Oetiker +Date: Sat Dec 22 23:47:37 2007 +0000 + + not change on javascript + +commit 4f4795e90f9b6e6029c31ee01ed325016161d6e8 +Author: Tobi Oetiker +Date: Sat Dec 22 23:41:41 2007 +0000 + + test if zoom is here + +commit 17a23d3e899c888d28d85c1884cb6cd2f8e1120c +Author: Tobi Oetiker +Date: Fri Dec 21 10:48:54 2007 +0000 + + missing my added + +commit 8722b99cc4b3a4f264c757f22c10c485e1ee0dc4 +Author: Tobi Oetiker +Date: Fri Dec 21 10:48:04 2007 +0000 + + fixed sample configs + +commit 441d1fe53008898441eddc9289b2e0148bf351d1 +Author: Tobi Oetiker +Date: Thu Dec 20 23:25:04 2007 +0000 + + make this work even when no initial file is here + +commit 0898e91fb2a96607fe3919fc2330092a6c63a367 +Author: Tobi Oetiker +Date: Thu Dec 20 20:41:42 2007 +0000 + + remove check for timeredirects since this does not work without manual + +commit e5090ee1fc507ac3ad5943b7d323b198bd4710d0 +Author: Tobi Oetiker +Date: Thu Dec 20 20:40:06 2007 +0000 + + use --help instead of --manual since manual is not compiled everywere + +commit 7091adae1bc9aac0e8b363d320e3efdcfd84e71f +Author: Tobi Oetiker +Date: Thu Dec 20 20:28:08 2007 +0000 + + portability fix for %.1f + +commit 68ea224e043c83de1d185cb6fa329997a34ec74d +Author: Tobi Oetiker +Date: Thu Dec 13 20:46:27 2007 +0000 + + working towards fixing the master config + +commit 1f7c876a44f4bcb28affa098c283979b2bc08f32 +Author: Tobi Oetiker +Date: Thu Dec 13 20:43:15 2007 +0000 + + use different syntax to open and lock client cache + +commit 41a1b1a239810f5d06e286331f8a7dd607224cfe +Author: Niko Tyni +Date: Thu Dec 13 11:50:06 2007 +0000 + + clean the last remains of echoping live test code + +commit f3e27df9021d2ba92b54cb9e8a82c66336a477e8 +Author: Niko Tyni +Date: Thu Dec 13 11:48:09 2007 +0000 + + EchoPingHttp: add the 'accept_redirects' option + +commit 7362792c380114c774fd01120c978360e81360d3 +Author: Tobi Oetiker +Date: Sun Dec 9 22:24:30 2007 +0000 + + initial + +commit 05eb797de4c547890e373587d768b88335d37c44 +Author: Tobi Oetiker +Date: Thu Dec 6 20:37:37 2007 +0000 + + added note + +commit a4496fa65282fd3e618e15bc7619beb59b1783a1 +Author: Tobi Oetiker +Date: Wed Dec 5 21:33:55 2007 +0000 + + update the locking code. Try updating the file multiple times if lockig fails the first time round ... + also open the file with +< for reading, since solaris will not grant us a writelock unless we are opening the file read/write. + +commit daeb391ff2c9e47f656a8089b326625d43ffc5a3 +Author: Tobi Oetiker +Date: Mon Dec 3 23:38:23 2007 +0000 + + removed excess ) + +commit 9edc0ff6eaa82d51970299a76106952e9bc4ac2a +Author: Tobi Oetiker +Date: Mon Dec 3 23:36:50 2007 +0000 + + trying to make slave reload realy work + +commit c81ee6051263e7039bff5125b6732905ba6a5ba3 +Author: Niko Tyni +Date: Sat Dec 1 13:56:18 2007 +0000 + + remove a leftover 'use HTTP::Request' from Smokeping::Master -- niko + +commit d00f1075a67fbf2be46e6114848eec5cefbf6684 +Author: Niko Tyni +Date: Sat Dec 1 13:55:09 2007 +0000 + + document the LWP dependency of the Smokeping::Slave module -- niko + +commit 2c5ebb1437447dbc653881dbf1269784517b9b4e +Author: Tobi Oetiker +Date: Sat Dec 1 11:44:38 2007 +0000 + + document what I changed in the change log + +commit 1eeea07d34fec85eb09fbc5504b588f7ee9bfcd4 +Author: Tobi Oetiker +Date: Sat Dec 1 11:31:33 2007 +0000 + + fix restart behaviour of slaves + +commit 610bab43a1ddd085a1c272c5cf6aaf4a85ed8fee +Author: Tobi Oetiker +Date: Wed Nov 21 23:41:39 2007 +0000 + + introduction of Shadow graph causes step back ... + +commit 6dbc90c295cb0fbf895ac259dabf9dfa22cbe803 +Author: Tobi Oetiker +Date: Wed Nov 21 19:14:50 2007 +0000 + + jres2007 work + +commit 97e7c02aa1ba779325072cdb8dba96f3454de584 +Author: Tobi Oetiker +Date: Tue Nov 20 07:36:56 2007 +0000 + + latest updates + +commit 3d2d01044276848e16d61550e090d1e5001be7de +Author: Tobi Oetiker +Date: Sun Nov 18 22:16:29 2007 +0000 + + removed useless debug messages + +commit 7b131fd1e445b836af83a4dbeb79dd91be06bbdb +Author: Tobi Oetiker +Date: Sun Nov 18 22:10:09 2007 +0000 + + added some more documentation + +commit 2f05acc547db3624a75e37522ba5dabe394dae11 +Author: Tobi Oetiker +Date: Sun Nov 18 22:06:48 2007 +0000 + + added flipping zoom mode + +commit c075aed46ee0dceb6bf3a3569da67daf0a50bdde +Author: Tobi Oetiker +Date: Sun Nov 18 15:04:33 2007 +0000 + + working version ... schluss fuer den moment + +commit 7bc9f4e73f3893735b96e48bb2664f7c2b5b0a68 +Author: Tobi Oetiker +Date: Sun Nov 18 12:40:41 2007 +0000 + + added grapher to distro + +commit d0b4894f58ca17de2b434d37ce4c070cf4cd7515 +Author: Tobi Oetiker +Date: Sun Nov 18 12:39:21 2007 +0000 + + added grapher + +commit 823d40c77053c8fb30359de896d7e30b85de2a3a +Author: Tobi Oetiker +Date: Sun Nov 18 12:04:33 2007 +0000 + + more updates + +commit 688bea6958d0f12613fab7bfefe5f94e831ce05f +Author: Tobi Oetiker +Date: Sat Nov 17 16:36:30 2007 +0000 + + new classes + +commit 1620cd2abeb29cd7cd24e1258f6398053a4234f7 +Author: Tobi Oetiker +Date: Sat Nov 17 16:35:53 2007 +0000 + + script is generated this does not belong here + +commit 11d3b5e19d271f50ecea15d68dc51828e7b24f49 +Author: Tobi Oetiker +Date: Sat Nov 17 16:35:20 2007 +0000 + + ui cleaned up + +commit 6d0c470a6bbc643438243d1aecd0415a0b793373 +Author: Tobi Oetiker +Date: Sat Nov 17 03:13:07 2007 +0000 + + added windows + +commit c8daf4f31084534e58dd90ccdfa88ba2285ec324 +Author: Tobi Oetiker +Date: Fri Nov 16 21:34:40 2007 +0000 + + added more sample data + +commit 5d13d53762933c306e595079efd1f69b1807fb1a +Author: Tobi Oetiker +Date: Fri Nov 16 20:05:00 2007 +0000 + + working version + +commit c34f404e3fe41e7ca3890fa66a8b4625ee3269ac +Author: Tobi Oetiker +Date: Thu Nov 15 06:22:46 2007 +0000 + + added a missing file + +commit 77709fd6296cf90f93dd62ad3fc2b7b0303f7884 +Author: Tobi Oetiker +Date: Thu Nov 15 06:22:21 2007 +0000 + + more woring cooxdoo code + +commit 1470bd43a79a679132d6523e92e99f81e2892119 +Author: Tobi Oetiker +Date: Wed Nov 14 17:33:46 2007 +0000 + + updated message file + +commit ff7b9de82908baf1d5f9af71e35dad2369bfdc2f +Author: Tobi Oetiker +Date: Wed Nov 14 17:33:19 2007 +0000 + + initial qooxdoo drop for smokeping + +commit d546419d19b89633f8ac3c461eb900f4c4f29b90 +Author: Tobi Oetiker +Date: Tue Nov 6 07:41:28 2007 +0000 + + make sure tsmoke sends mime conformant mails + +commit 2fe8ba68414b66a7f68f4876916ba3a98648858d +Author: Tobi Oetiker +Date: Mon Nov 5 21:59:38 2007 +0000 + + prepare for the release of smokeping-2.2.7 + +commit 65ae52a910578163e0b5e821fb75fc3cf5d28528 +Author: Tobi Oetiker +Date: Mon Nov 5 07:02:39 2007 +0000 + + make tsmoke work with multihost targets + +commit 485377cf03560635c8590f5f053752b805e5f2fa +Author: Tobi Oetiker +Date: Sat Nov 3 01:06:27 2007 +0000 + + fixed slave check + +commit 35490069d03df22ec290f707eba31d7b26e8517d +Author: Tobi Oetiker +Date: Fri Nov 2 22:04:36 2007 +0000 + + added slaves consistancy test + +commit fbcdaf2188f3dfa5d74beade8ab3e8d7390402e9 +Author: Tobi Oetiker +Date: Fri Nov 2 21:49:51 2007 +0000 + + don't reload the pages more frequently than every 2 minutes + +commit ec431db3b0948bb8f4400d611325ce0b0495a3ad +Author: Tobi Oetiker +Date: Sun Oct 28 23:23:17 2007 +0000 + + make sure we got the changes in + +commit bf38cbffc3460a4dd1a0a9c411c9aba421e99e1d +Author: Tobi Oetiker +Date: Sun Oct 28 23:17:14 2007 +0000 + + prepare for the release of smokeping-2.2.6 + +commit 07608687a2dac998c782608cf230f0b019c8f8e9 +Author: Tobi Oetiker +Date: Sun Oct 28 12:15:52 2007 +0000 + + prepare for the release of smokeping-2.2.6 + +commit 9f82cdecb8422667ca6477c4776a7a050e2c06ff +Author: Tobi Oetiker +Date: Sun Oct 28 12:14:06 2007 +0000 + + prepare for the release of smokeping-2.2.6 + +commit 05deed3f20a37849eddb1805a39a1c9730eead52 +Author: Tobi Oetiker +Date: Sun Oct 28 12:13:24 2007 +0000 + + prepare for the release of smokeping-2.2.6 + +commit ac20fec31573327eb7269a8a76e5a55459285256 +Author: Tobi Oetiker +Date: Sun Oct 28 12:12:59 2007 +0000 + + prepare for the release of smokeping-2.2.6 + +commit e2c7e39802934501cb2f01b864b5fa1f52cc969f +Author: Tobi Oetiker +Date: Sun Oct 28 12:12:32 2007 +0000 + + prepare for the release of smokeping-2.2.6 + +commit 0cd23826de9b7549c845f7e44203ae037a1c44c1 +Author: Tobi Oetiker +Date: Sun Oct 28 12:09:35 2007 +0000 + + prepare for the release of smokeping-2.2.6 + +commit cf006837234c697cb37bd1d2acb6955ac34d513e +Author: Tobi Oetiker +Date: Sun Oct 28 12:06:23 2007 +0000 + + prepare for the release of smokeping-2.2.5 + +commit 306b180bcc0469dbafa9ebe27ad517aaf533a1c0 +Author: Tobi Oetiker +Date: Sun Oct 28 12:05:03 2007 +0000 + + prepare for the release of smokeping-2.2.5 + +commit c000f6f0d252f523897bb70eab4f3b102d0b7428 +Author: Tobi Oetiker +Date: Sun Oct 28 12:03:36 2007 +0000 + + prepare for the release of smokeping-2.2.5 + +commit 73ee67ababcf2e418d6da2800ebe248dc28ed59f +Author: Tobi Oetiker +Date: Sat Oct 27 16:00:10 2007 +0000 + + fixed makefile + +commit 6e6af23e38283f334414a9d11261ec4e496977dc +Author: Tobi Oetiker +Date: Sat Oct 27 15:58:42 2007 +0000 + + prepare for the release of smokeping-2.2.5 + +commit b49d3eb65f65aaa75219d9754b1b137f46c82d0e +Author: Tobi Oetiker +Date: Sat Oct 27 15:55:42 2007 +0000 + + rmove -S warning unless sourceaddressing is used + +commit b2974cc84cbbefb8d117765acb7230530963aa5c +Author: Niko Tyni +Date: Sat Oct 27 13:00:42 2007 +0000 + + * removed all the 'live' tests from the echoping probes --niko + + * log a warning message on the first 'round' of pinging if curl or + echoping exits with non-zero status --niko + +commit 51243891b9e493882c59e582c5188f48e1127bed +Author: Niko Tyni +Date: Sat Oct 27 12:05:57 2007 +0000 + + count the rounds when pinging, needed for smarter logging + +commit 15ce7b9d28dda1afb6b892c1e2a34e057f3fdb60 +Author: Tobi Oetiker +Date: Mon Oct 15 07:49:18 2007 +0000 + + * fixed parsing of slaves statements in config file, broeken since I seemingly relaxed the hostname constraints. + * removed all online testing from Curl and EchoPing probes + +commit 03d504e82b3e6c77c0b59af415ff740de1b483f3 +Author: Tobi Oetiker +Date: Mon Oct 15 07:44:40 2007 +0000 + + I wonder how it did work at all like this + +commit ee70defccd3a3f4d9a7830ba2783c145a8c215ae +Author: Tobi Oetiker +Date: Sat Sep 29 14:51:47 2007 +0000 + + allow rightclicks in the legend area + +commit 8d9ecb5de29a91d0fa71c889516ec557508616fd +Author: Tobi Oetiker +Date: Sat Sep 29 14:30:24 2007 +0000 + + disable right click + +commit 2b09417b8ca76689f147f1097806af9820cfc9b8 +Author: Tobi Oetiker +Date: Fri Sep 28 21:42:45 2007 +0000 + + the \ must stay in the string! + +commit 397a932de585aa078c5c2a1fceae10c3e85093ee +Author: Tobi Oetiker +Date: Fri Sep 28 17:58:32 2007 +0000 + + * allow the slave name to be configured + * be more liberal in what is allowed for slave names + * allow port configuration in the SSH probe + +commit e8783b5de226f8c5e338e04c38aa4b692c986fd8 +Author: Tobi Oetiker +Date: Wed Sep 26 09:07:57 2007 +0000 + + integrated real config grammar 1.10 + +commit 57c07d927088455b47ad42d2d49b1ddb8bf324f7 +Author: Tobi Oetiker +Date: Tue Sep 25 22:15:20 2007 +0000 + + added notes on hostname to master slave doc + +commit 4e23d2b3b310038131e8952aef1150c392b4f448 +Author: Tobi Oetiker +Date: Tue Sep 25 12:29:53 2007 +0000 + + updated to config grammar 1.10 + +commit 7b910a7d34a768f75e03ce357a0e8446e3237677 +Author: Tobi Oetiker +Date: Fri Sep 21 17:11:35 2007 +0000 + + force a config reread on reload_config + +commit 306508c440ba0717e63b94511bf4ea3414def403 +Author: Tobi Oetiker +Date: Mon Sep 17 20:46:04 2007 +0000 + + make the smokeping zoomer calc a little simpler + +commit 6a75268cbeb2297729926bcf6041188f2b758cae +Author: Tobi Oetiker +Date: Mon Sep 17 20:43:11 2007 +0000 + +commit d6a366a132c133b90705e56aace2d24f6e735d7b +Author: Tobi Oetiker +Date: Mon Sep 17 20:30:49 2007 +0000 + + added changenote on cropper zoom out + +commit 72de4410e1c8d2d79384dce8eabe884252f0290c +Author: Tobi Oetiker +Date: Mon Sep 17 20:30:14 2007 +0000 + + when selecting something outside the graph, multiply by 10. Use this to zoom out + +commit 3ab95c6f225b3cc697e0431ec5e23c782279acf9 +Author: Tobi Oetiker +Date: Sun Sep 16 18:48:36 2007 +0000 + + prepare for the release of smokeping-2.2.4 + +commit 13122a1eb2aa80ffe830fddf256e7557048fda8d +Author: Tobi Oetiker +Date: Sun Sep 16 18:45:51 2007 +0000 + + added id target to target + +commit cf08931e47349f96a5793124a5b939ff607a3cd9 +Author: Tobi Oetiker +Date: Sun Sep 16 18:41:08 2007 +0000 + + added missing form id to zoom mode form + +commit 303af5df15b6fabfb56cfb12482fef9809873f09 +Author: Tobi Oetiker +Date: Sun Sep 16 18:38:36 2007 +0000 + + added missing hidden fields to zooming graph + +commit 823350a44e048d358bb7545eca95d2c43b447105 +Author: Tobi Oetiker +Date: Sun Sep 16 18:17:49 2007 +0000 + + tell theuser thatsmokeping is taking 80% of the time available to complete its polling cycle -- tobi + +commit cc8921fdf54244edad3895514a3c9c80ca2f563f +Author: Tobi Oetiker +Date: Sun Sep 16 15:24:22 2007 +0000 + + oops the tree points right at the node and not at its parent ... -- tobi + +commit b5b7c0f2dc7420cb4c322f571ae16743bd621b39 +Author: Tobi Oetiker +Date: Sun Sep 16 15:12:25 2007 +0000 + + * don't complain when there is no data in a graph yet while calculation stddev -- tobi + * in a multihost graph take the number of pings for each component into consideration -- tobi + +commit 246f2b329811de06711d2c60c1010106034a7eec +Author: Niko Tyni +Date: Fri Sep 14 12:41:46 2007 +0000 + + * fix Smokeping.pm POD documentation -- niko + +commit 7200da12e6f38bc18d0b32f71bb3557eed442b90 +Author: Niko Tyni +Date: Thu Sep 13 20:43:39 2007 +0000 + + * include the prototype.js license for completeness -- niko + + [ apologies for the license nitpicking; Debian requires that all the + applicable licenses are included instead of referrals to their possibly + volatile locations on the web, and I think the requirement makes sense. ] + +commit 7176812d4b8f8520557aab44c3ac7378374b676b +Author: Tobi Oetiker +Date: Wed Sep 12 21:35:13 2007 +0000 + + should not have my mail address in the config example + +commit 3586889c03cae00263de98129b1662e9abc7b14a +Author: Tobi Oetiker +Date: Tue Sep 11 06:12:01 2007 +0000 + + rounding error fix for sqrt + +commit fa5abd5d25b193c47400f116c852c0a0b176322a +Author: Tobi Oetiker +Date: Thu Sep 6 15:43:45 2007 +0000 + + prepare for the release of smokeping-2.2.3 + +commit 36ab642eaaa3a27e346659bef7fff07b3733ca30 +Author: Tobi Oetiker +Date: Thu Sep 6 15:42:52 2007 +0000 + + fixed timezone issues in zoomer + +commit 07465f9e04a8b0c92e047365971957b7250d9433 +Author: Tobi Oetiker +Date: Thu Sep 6 12:24:54 2007 +0000 + + remove iso date stuff and go for real time only + +commit 4410709a93b9c8d0f464f52b793966a3af573eb7 +Author: Tobi Oetiker +Date: Wed Sep 5 22:49:38 2007 +0000 + + we need rrdtool 1.2 now + +commit 84c432fa1e16ccb3173101d0b7dea811f2363ac3 +Author: Tobi Oetiker +Date: Wed Sep 5 22:44:08 2007 +0000 + + added js min/max check to cropper + +commit 7a16ae0476245170acf984676aa8c093af430c9e +Author: Tobi Oetiker +Date: Wed Sep 5 22:33:34 2007 +0000 + + mode docs on multihost + +commit 9e8f6c24f74b110febe27ebc2343c28fbe40c22e +Author: Tobi Oetiker +Date: Wed Sep 5 18:00:19 2007 +0000 + + js is cropper now + +commit 25d4c21620dd04ce9c472ec5141560cefdf9ae29 +Author: Tobi Oetiker +Date: Wed Sep 5 06:13:24 2007 +0000 + + * fixes for pod generation + * skip multi target hosts for slaves + * report content-lengh in header + +commit 4280c7413ee558d1e19f993a85b675d3c4598a05 +Author: Niko Tyni +Date: Mon Sep 3 11:21:58 2007 +0000 + + typo fixes + +commit a930766439a857d04be7c248ea6b934d50f57424 +Author: Tobi Oetiker +Date: Thu Aug 30 12:21:34 2007 +0000 + + prepare for the release of smokeping-2.2.2 + +commit b5e24ab91e1d66459e12bb8f25ef411f95fe9de8 +Author: Tobi Oetiker +Date: Thu Aug 30 12:17:42 2007 +0000 + + adding 1.5 for max is too much + +commit 2151f50214096be6983e7e3e7215bf87e635cd07 +Author: Tobi Oetiker +Date: Thu Aug 30 12:12:34 2007 +0000 + + reserver space for sd + +commit 8de423b57ed5265fe7a2681cd581a0b30261a5e6 +Author: Tobi Oetiker +Date: Thu Aug 30 12:07:23 2007 +0000 + + links in chart mode to slaves were wrong + +commit af82e636a8f3a83fd22f475fefdf5f98d9be8a9c +Author: Tobi Oetiker +Date: Thu Aug 30 09:49:08 2007 +0000 + + prepare for the release of smokeping-2.2.1 + +commit 109d05affef8762a0d27fb956f27d8762e0a22d8 +Author: Tobi Oetiker +Date: Thu Aug 30 09:46:30 2007 +0000 + + prepare for the release of smokeping-2.2.0 + +commit e262eac461d5b037b20ff7446c6c99137d7e2e2e +Author: Tobi Oetiker +Date: Thu Aug 30 09:45:38 2007 +0000 + + get ready for 2.2.0 dist + +commit 371043ac25913355a7239ccbe35f341ab65d800a +Author: Tobi Oetiker +Date: Thu Aug 30 09:43:28 2007 +0000 + + fixes after testing + +commit 66e499975a20daf698545dcadd80a572a1df0eb9 +Author: Tobi Oetiker +Date: Thu Aug 30 07:54:51 2007 +0000 + + do not start when we get no config + +commit fec4230894e1c24460031f4ac3ae7f10ed1cf815 +Author: Tobi Oetiker +Date: Thu Aug 30 07:49:16 2007 +0000 + + some fixes after intitial slave testing + +commit 044798e9867a8d20319f8714e43090fe2bc85979 +Author: Tobi Oetiker +Date: Thu Aug 30 07:07:08 2007 +0000 + + added missing graph module .. + +commit a7bd89a24de51921637ce3f297be362ad17d65ab +Author: Tobi Oetiker +Date: Thu Aug 30 06:55:46 2007 +0000 + + integrated multi-host feature + +commit 923cb59acf4245c851093b4fe465a62f97e1543d +Author: Tobi Oetiker +Date: Tue Aug 28 20:39:55 2007 +0000 + + try to kill split warning + +commit 25e6ce94b50e5f2fdc9e0c4d708d5660083c4a71 +Author: Tobi Oetiker +Date: Mon Aug 27 20:46:14 2007 +0000 + + implemented working multihost graphs + +commit 080753b7ed8f31d314210e4f85024da90a9471b2 +Author: Tobi Oetiker +Date: Mon Aug 27 20:23:32 2007 +0000 + + integrated multihost overview + +commit 0f345b5386ba78d2aaeaffae975b666f7e9034c9 +Author: Tobi Oetiker +Date: Mon Aug 27 18:25:19 2007 +0000 + + added new hostsyntax + +commit d6c26eba5bc06be2952265881e4666a159a91dfb +Author: Tobi Oetiker +Date: Sat Aug 25 22:21:33 2007 +0000 + + use the safe module in the slave part of smokeping to reduce the problems we + may run into due to using eval on the input from the master. + +commit 0eb5011f946b9e9e9ff2315a710730003ae5bf76 +Author: Tobi Oetiker +Date: Fri Aug 24 12:36:51 2007 +0000 + + two more var statements added to js code + +commit e6124dcdd53763c601f6c2f6186abae59c45237c +Author: Tobi Oetiker +Date: Fri Aug 24 12:34:49 2007 +0000 + + fixed unknonwn variables + +commit 3f641e37b99d5aa18ecf2f58364696ac17f859d2 +Author: Tobi Oetiker +Date: Thu Aug 23 20:58:01 2007 +0000 + + * improved handling of slave updates + * added median/sdev to graphs + +commit ed8e591272fa1c7ca012db03b45568ec81ff9cfd +Author: Tobi Oetiker +Date: Tue Aug 21 19:41:56 2007 +0000 + + * add notes about new target-path hosts for multi source graphs + * fix slave zoom graph (we were showing the non slave graph with the slave title) + * better error messages form rrd update + +commit d011593577316a9782b6dca8cc4d09dc0b98aba3 +Author: Tobi Oetiker +Date: Tue Aug 21 19:40:36 2007 +0000 + + improve handling of storable for for communication between cgi and daemon + +commit ba4e1c581d671ca47bed2ba19bae37849c27a935 +Author: Tobi Oetiker +Date: Tue Aug 21 19:38:19 2007 +0000 + + fix cache handling + +commit a7516a949c37dca39141dee7baeb72b01f262b29 +Author: Tobi Oetiker +Date: Tue Aug 21 19:36:35 2007 +0000 + + remove cache after reading it + +commit 4909ade650a31797ee4d305565a91061e8a5b812 +Author: Tobi Oetiker +Date: Tue Aug 21 14:39:54 2007 +0000 + + added some extra vars + +commit ebe189c85bfedaaf70e5657c8334bf7e0b750a99 +Author: Tobi Oetiker +Date: Tue Aug 21 08:39:36 2007 +0000 + + * add ms unit to stddev + * set date for graph according to last displayed time + +commit c8a54c6943d42a23d54d25b18a5724fab7a6f996 +Author: Tobi Oetiker +Date: Tue Aug 21 08:39:01 2007 +0000 + + * do not select '0' + * more flexible date parsing + +commit 4a54b26849a3edd2dcdfcfbb76310887a8bb44d0 +Author: Tobi Oetiker +Date: Mon Aug 20 21:12:45 2007 +0000 + + replaed jquery stuff with cropper script + +commit c2701cd9f6ce10f7b92a997559e64ca7c516cd8c +Author: Tobi Oetiker +Date: Mon Aug 20 15:54:05 2007 +0000 + + execute js code only if there is a #zoom image + +commit 16b678a3b085fea2b60aceb6c489439b4eba0a4b +Author: Tobi Oetiker +Date: Mon Aug 20 15:43:56 2007 +0000 + + made chars mode work + +commit f6760febddac8e72743e6b3fc592ec3992461d78 +Author: Tobi Oetiker +Date: Mon Aug 20 15:12:40 2007 +0000 + + fixed color in slave detail graph + fixed max setting in charts module + +commit eacecb176b5f4d4cdfdb80808f2a24384960846e +Author: Tobi Oetiker +Date: Mon Aug 20 14:44:22 2007 +0000 + + more zoom fixes + +commit c410011f2d8102ae927bda7f5223471ce387c9fc +Author: Tobi Oetiker +Date: Mon Aug 20 14:42:26 2007 +0000 + + integrate helper and updated changelog + +commit f0b493945725fef85bfe2dc110ad37388e36aa58 +Author: Tobi Oetiker +Date: Mon Aug 20 14:36:13 2007 +0000 + + fixed broken slave split + +commit 1aff1fefe02d169f24b49be8775b77237dd25fcd +Author: Tobi Oetiker +Date: Mon Aug 20 14:32:12 2007 +0000 + + interoduced std dev + +commit 201c1d43ebf73e70032309978a0704a29e3537fd +Author: Tobi Oetiker +Date: Mon Aug 20 12:16:11 2007 +0000 + + make navigator work for slave graphs + +commit 80e63dbd61a1d431e4a338316a14a099cdea434b +Author: Tobi Oetiker +Date: Mon Aug 20 05:59:44 2007 +0000 + + finally working code on ie (although it looks quite bad) and firefox + +commit 3999a99132f2bc44c5e532dae3a89225944ca746 +Author: Tobi Oetiker +Date: Sun Aug 19 20:25:59 2007 +0000 + + added slave mode support to details graph + +commit e4e484588e384e9572123b7d21900f6257be8147 +Author: Tobi Oetiker +Date: Sun Aug 19 19:47:46 2007 +0000 + + integrated navigator graph + +commit 081d224c879e6851712a950768d5173afbfbb82d +Author: Tobi Oetiker +Date: Thu Aug 16 14:36:17 2007 +0000 + + * in ajax mode return graph and do not guess imagepath + * im overview page display standard deviation of pings in graph + +commit 38ae209aa0461d2c7aca1af9d805e78389011a62 +Author: Tobi Oetiker +Date: Thu Aug 16 12:17:10 2007 +0000 + + introduce slave color + +commit 67f512ec9cd208c05a6a37599f0073fcba266999 +Author: Tobi Oetiker +Date: Thu Aug 16 11:34:39 2007 +0000 + + we are only dealing with uri componentes, so decode everything ... + +commit a7db0e688693f175f4812da932aea2598fa9af60 +Author: Tobi Oetiker +Date: Thu Aug 16 11:25:36 2007 +0000 + + split uri on & and ; + +commit 0d36f50e05d91267ed72dbe7236c5d09d14764bc +Author: Tobi Oetiker +Date: Thu Aug 16 10:02:17 2007 +0000 + + Interactive (Ajax) Zooming of Graphs -- Roman Plessl + +commit dedbd98b8522b7da27dcae51cd7b50d6c5ff1c8d +Author: Tobi Oetiker +Date: Thu Aug 16 09:17:49 2007 +0000 + + fix smokeping pid configurable + +commit b62fb4f30a53a932d9b760ea119f830d63b828a7 +Author: Tobi Oetiker +Date: Mon Aug 13 16:54:45 2007 +0000 + + make master code work + +commit 61689a58908b4741f83b4aa2f9faf676bcecf163 +Author: Tobi Oetiker +Date: Mon Aug 13 16:54:30 2007 +0000 + + make slave code work + +commit a178628cbb7364319cf7c27bc0270545015be5ea +Author: Tobi Oetiker +Date: Mon Aug 13 12:25:55 2007 +0000 + + only push data when there is data + +commit 23af83eeef3d6a307034291ac72d30418e987137 +Author: Tobi Oetiker +Date: Mon Aug 13 12:25:12 2007 +0000 + + removed excell function call arguments + +commit 6d1e217ce8d598b81b54a934c6ae8f7217445818 +Author: Tobi Oetiker +Date: Mon Aug 13 12:21:07 2007 +0000 + + add all arguments to slave config call + +commit 1c948851e2075ec02d48ac30ebfd4efe9efb8453 +Author: Tobi Oetiker +Date: Mon Aug 13 10:04:40 2007 +0000 + + another variable name fixed + +commit b72d4f8b4febf466c16d1d6775e4e4ba8746db83 +Author: Tobi Oetiker +Date: Mon Aug 13 10:03:25 2007 +0000 + + fix some missing variable declarations + +commit c98e512bc9dd3f93eed5cad53476cc8b4fd803fd +Author: Tobi Oetiker +Date: Mon Aug 13 09:49:27 2007 +0000 + + master slave code drop to start debugging + +commit 546c89ee565a0cd905053f5e7edb6d50655a486f +Author: Tobi Oetiker +Date: Sun Aug 12 16:37:41 2007 +0000 + + added pointer to debian package + +commit 1fcc211ee9ad24d6e00776e6482d86c08b004b5a +Author: Tobi Oetiker +Date: Sun Aug 12 16:32:07 2007 +0000 + + only mention fping reporting resolution if abnormal + +commit 4b147a40568beb0fb8ae6cfb8e5e1c024d669cd0 +Author: Tobi Oetiker +Date: Fri Jul 27 19:54:11 2007 +0000 + + * completed master/slave infrastructure ... + * updated documentation + * presentation is pending + +commit 6f6466013b64af7e906dc12b5a49a39c127f0ac5 +Author: Tobi Oetiker +Date: Fri Jul 27 10:12:41 2007 +0000 + + more changes on the road to the master/slave setup + +commit 6daef9205280f61b5830c13836b849eb11462471 +Author: Tobi Oetiker +Date: Wed Jul 25 22:14:53 2007 +0000 + + for retreive the network byteorder gets detected automagically + +commit d6b423034c57cdaf2181216ad46afdc4cfbcbe10 +Author: Tobi Oetiker +Date: Wed Jul 25 20:19:57 2007 +0000 + + this is nfreeze not freesze + +commit ee4a86c7e444cd51e0914227087582ac1b87c82e +Author: Tobi Oetiker +Date: Tue Jul 24 21:47:24 2007 +0000 + + master slave changes ... + +commit 335b83906ffdcc67dc8e835a1f7e01c2c2212ab5 +Author: Tobi Oetiker +Date: Sun Jul 22 08:53:11 2007 +0000 + + further simplified communication concept ... slaves call the master + +commit a0641940e2bc3a1b0490529d37212f98204042b8 +Author: Niko Tyni +Date: Tue Jul 17 10:44:51 2007 +0000 + + fix uses of uninitialized value in the loss_background code + +commit 4f7bb7081fa7abb24508df16b2f25db369c55df7 +Author: Tobi Oetiker +Date: Fri Jul 13 22:32:28 2007 +0000 + + added some missing curlies back in + +commit b1d582fbc5d72229be60160fda13f9e92e6f50ca +Author: Tobi Oetiker +Date: Mon Jul 9 20:27:48 2007 +0000 + + initial master slave modules + +commit 700759a76d39dc1cfd729414508f542fd37f66ed +Author: Tobi Oetiker +Date: Mon Jul 9 19:31:54 2007 +0000 + + added override section + +commit ff0a9573f019d834a3fa1525ab27ff0fc2e5f474 +Author: Tobi Oetiker +Date: Mon Jul 9 15:27:58 2007 +0000 + + prepare for master/slave implementation + +commit 1bdc6ae9270bf77bc983ef661142c89e12464466 +Author: Tobi Oetiker +Date: Wed May 30 12:34:09 2007 +0000 + + draw smoke properly even when there is a lot of loss + +commit 72804714f5a4a15706215c0ea3f0b4a288b3428f +Author: Tobi Oetiker +Date: Mon May 28 15:23:51 2007 +0000 + + do not test echoping and curl functionality with 127.0.0.1 since there may be someone behind this address + +commit d13567a129969c4c3ca0548d08a0d34473aca66d +Author: Niko Tyni +Date: Fri May 11 18:03:52 2007 +0000 + + revert the previous Curl change, it doesn't even work... + +commit 82050d908e18016a65a9573fcfb8025d4bca4bcf +Author: Niko Tyni +Date: Thu May 10 19:32:57 2007 +0000 + + fix Curl usage regexp that would match webpage contents too easily + https://bugs.launchpad.net/ubuntu/+bug/73437 + hopefully this is just a temporary fix until we start checking the + return code instead + +commit bac139a24caca3f26a55968b4f9a9db333411ce5 +Author: Niko Tyni +Date: Thu May 10 19:27:08 2007 +0000 + + fix lost smoke (Debian #412826) + +commit 7bc36ce39e814253406d6a045e567065026ba7f4 +Author: Niko Tyni +Date: Mon May 7 11:27:57 2007 +0000 + + ignore svn-commit.tmp when releasing + +commit b8ebbe2adad757a0592d6d02ec71f6bf196c0e1b +Author: Tobi Oetiker +Date: Wed May 2 18:17:48 2007 +0000 + + fixed spelling + +commit ad473a60116fb231b2c5232cc914c28fb1af4fea +Author: Tobi Oetiker +Date: Wed May 2 16:16:07 2007 +0000 + + prepare for the release of smokeping-2.1.1 + +commit 7e10ce2db865158e1c3216214ff18c2997160345 +Author: Tobi Oetiker +Date: Wed May 2 16:14:07 2007 +0000 + + fix scaling of detail graphs + +commit d5b4a21e9ee46a1a4ebe39f2d2d507961506a910 +Author: Tobi Oetiker +Date: Mon Apr 30 22:07:36 2007 +0000 + + fixed spelling + +commit 96c0901c6922d814d4c8f061e8c60c8380988f7e +Author: Tobi Oetiker +Date: Sun Apr 29 10:42:50 2007 +0000 + + prepare for the release of smokeping-2.1.0 + +commit e9c56f1259a5b0fa9706a9244fca23bb9cd069ab +Author: Tobi Oetiker +Date: Sun Apr 29 10:42:01 2007 +0000 + + prepare for the release of smokeping-2.1.0 + +commit 0d7856c86555136c1b1d9bbd1cb5c84e6833fcf7 +Author: Tobi Oetiker +Date: Sun Apr 29 10:40:31 2007 +0000 + + prepare for the release of smokeping-2.1.0 + +commit e02bd6d388dcd4898ed5d14af97c7f02f78355f0 +Author: Niko Tyni +Date: Sun Apr 15 11:59:27 2007 +0000 + + add links + +commit aebb3fb352f326c0f72967ed24e3255ee677f9e2 +Author: Niko Tyni +Date: Sun Apr 15 11:55:07 2007 +0000 + + add comment + +commit 68256963c77579525aca2cba503072ae4dd26e28 +Author: Niko Tyni +Date: Sun Apr 15 11:53:41 2007 +0000 + + improve the echoping 6 note + +commit 098e051a4475708a48f589cdf24f78beef23c926 +Author: Niko Tyni +Date: Sun Apr 15 11:48:17 2007 +0000 + + r1065@rispa: niko | 2007-04-15 14:44:20 +0300 + add comments + +commit aea0aa3fdfaf06c2093363d690ce8c6738c1b6e4 +Author: Niko Tyni +Date: Sun Apr 15 11:48:14 2007 +0000 + + r1064@rispa: niko | 2007-04-15 14:39:57 +0300 + add examples + +commit b0a8245fe56e8fb1ace0dc2524ce7b1ca6f694a1 +Author: Niko Tyni +Date: Sat Apr 14 20:46:55 2007 +0000 + + r1061@rispa: niko | 2007-04-14 23:46:31 +0300 + smokeping_upgrade echoping6 entry + +commit a2e1e5362389bc23f8b3826de3034feda5a10793 +Author: Niko Tyni +Date: Sat Apr 14 20:46:52 2007 +0000 + + r1060@rispa: niko | 2007-04-14 21:51:42 +0300 + add EchoPingWhois + +commit 58f0290fdd16e480c42c558bc4a2a8c19a56215a +Author: Niko Tyni +Date: Sat Apr 14 18:11:56 2007 +0000 + + r1049@rispa: niko | 2007-04-14 21:11:21 +0300 + changelog entry + +commit ee9fe37aa2e14a2dcb7e12c773a45ac7d8033616 +Author: Niko Tyni +Date: Sat Apr 14 18:11:54 2007 +0000 + + r1048@rispa: niko | 2007-04-14 21:01:51 +0300 + add echoping ldap probe + +commit b3a821582cc383947831954f9c562f8e8dddffd8 +Author: Niko Tyni +Date: Sat Apr 14 18:11:52 2007 +0000 + + r1047@rispa: niko | 2007-04-14 12:15:40 +0300 + don't test for the plugin, since the user may have overridden it + +commit ed89ca2a7173da7ec19f207be121e40df14f051b +Author: Niko Tyni +Date: Sat Apr 14 18:11:50 2007 +0000 + + r1046@rispa: niko | 2007-04-14 11:44:40 +0300 + fix documentation + +commit a014a07efb6b9ec156de0e8d49b9630c08ac6bc7 +Author: Niko Tyni +Date: Sat Apr 14 18:11:48 2007 +0000 + + r1045@rispa: niko | 2007-04-14 11:26:44 +0300 + fix post_args + +commit e4e9810641b2804bdf25b5adf824e41bf90625e7 +Author: Niko Tyni +Date: Sat Apr 14 18:11:46 2007 +0000 + + r1044@rispa: niko | 2007-04-14 10:55:19 +0300 + r1043@rispa (orig r713): ntyni | 2007-04-14 10:55:07 +0300 + don't test usage if running as CGI + +commit 71ced95ec446391172c5f84be3950498a2a0a728 +Author: Niko Tyni +Date: Sat Apr 14 18:11:44 2007 +0000 + + r1042@rispa: niko | 2007-04-14 08:24:57 +0300 + post args + +commit ee78a2434ef77fdce97546aca173ebbd0391676a +Author: Niko Tyni +Date: Sat Apr 14 18:11:42 2007 +0000 + + r1041@rispa: niko | 2007-04-14 08:14:10 +0300 + targetvars skeleton + +commit c3c3661714df4dd4eaefd4c8bb9573f873d78461 +Author: Niko Tyni +Date: Sat Apr 14 18:11:40 2007 +0000 + + r1040@rispa: niko | 2007-04-13 22:50:40 +0300 + documentation + +commit e8f080ca27f06e945747201fbd7a941e859bb4f0 +Author: Niko Tyni +Date: Sat Apr 14 18:11:37 2007 +0000 + + r1039@rispa: niko | 2007-04-13 21:57:43 +0300 + initial version for a base plugin module + +commit aeb0b49ee5c442ce66e675c83dadf44ee0ea8bbf +Author: Niko Tyni +Date: Sat Apr 14 07:55:07 2007 +0000 + + don't test usage if running as CGI + +commit e940342e10e11fdc8142e18bc64f31494c1268d3 +Author: Tobi Oetiker +Date: Sun Mar 11 12:40:13 2007 +0000 + + if max_rtt is set, use it! http://bugs.debian.org/412826 + +commit f791cc4b4470c90ac8b4fd2205a840d0f222513e +Author: Niko Tyni +Date: Sat Mar 10 18:40:25 2007 +0000 + + bail out at startup with an error message if LC_ALL is set + +commit 77692aa0168d42f9db7bcef9c40ee1cb4dbf5734 +Author: Tobi Oetiker +Date: Mon Jan 15 23:11:11 2007 +0000 + + fixed some bugs that only showed when releasing ... + +commit 7ec773d7d21690744619f364855dd02e04949d4d +Author: Tobi Oetiker +Date: Mon Jan 15 16:25:13 2007 +0000 + + smokeping charts added -- first drop + +commit c13a80d2aa273f42d6c3f67f384ed3c7fd1d969a +Author: Tobi Oetiker +Date: Sun Jan 14 20:27:50 2007 +0000 + + improve -S note when launching FPing probe + +commit fb2b5def3024bc60f82e2d976a26b3b7a7ba36ab +Author: Tobi Oetiker +Date: Sat Jan 13 17:39:57 2007 +0000 + + median was lacking a new method ... + +commit 6c0ca319ff8ae3a2b4c518e61225a87ccc514228 +Author: Tobi Oetiker +Date: Thu Dec 14 08:41:21 2006 +0000 + + make the error more friently ... + +commit b95c089ddd3a2123b27e47ce21ab35e1819c38a7 +Author: Tobi Oetiker +Date: Tue Dec 12 07:22:12 2006 +0000 + + new beta release for virtela + +commit 1ee77b9f56eb1d450c8bedc6e43037d7d5b632c9 +Author: Tobi Oetiker +Date: Tue Dec 12 07:14:34 2006 +0000 + + added new Median ratio matcher - comparing two medians + fixed classic Median matcher + +commit 6a6ad273bb1d9e53835c045ff09fa222bfd9c0a8 +Author: Niko Tyni +Date: Thu Oct 26 12:03:35 2006 +0000 + + * make the CGI not croak if a password file is not readable. -- niko + +commit 7c6e090f868e6f750c24ca4da3d31c69a8bdd99d +Author: Niko Tyni +Date: Wed Oct 25 21:24:04 2006 +0000 + + r402@rebekka: niko | 2006-10-26 00:26:37 +0300 + add better ipv6 source address example + +commit f917ffe38c78c224952b87aa833d059f7f030101 +Author: Niko Tyni +Date: Wed Oct 25 20:11:18 2006 +0000 + + r378@rebekka: niko | 2006-10-25 23:13:14 +0300 + don't complain about '-S' missing if it isn't. + +commit 11f5b17c55654c838a2aa1ad5842224b541a2424 +Author: Niko Tyni +Date: Wed Oct 25 20:11:16 2006 +0000 + + r377@rebekka: niko | 2006-10-25 23:12:34 +0300 + don't die at startup if syslogd is missing, just warn. + +commit 556a41ddf75f302643b9f81c344ffb731a5d0093 +Author: Tobi Oetiker +Date: Wed Oct 25 19:59:22 2006 +0000 + + lets be less extreem with regexps ... :-) + +commit 48ac00bb2d537725a61fde25ad37c61035bf2d5f +Author: Tobi Oetiker +Date: Wed Oct 25 17:50:21 2006 +0000 + + add missing if statement ... + +commit 16c2d510b85f036fd411d05ef27f665170ed9413 +Author: Niko Tyni +Date: Tue Oct 24 21:38:11 2006 +0000 + + fix typo + +commit 84c23d3be428bb2b2dc1d572e664b228b790dd3f +Author: Niko Tyni +Date: Tue Oct 24 19:04:12 2006 +0000 + + handle a dead syslogd (Debian bug #395056) + +commit 242cc6534d04d0b226219f0cd0674b03a92b4816 +Author: Tobi Oetiker +Date: Tue Oct 24 05:45:29 2006 +0000 + + added link to -S patch in debian bugs + +commit 2308a4663349102ad0f00989da53b0b0f2e89586 +Author: Tobi Oetiker +Date: Tue Oct 24 05:43:58 2006 +0000 + + added source address patch with -S check ... + updated version numbers in files ... + +commit c975730e045c5b32944cb6756e8091519ec65d0c +Author: Tobi Oetiker +Date: Sun Oct 22 22:13:59 2006 +0000 + + use only the base name not the path of the src file for the destionation + +commit 4afa8d737f18a3a1241a8b71f96d28b7fdb1ffa5 +Author: Tobi Oetiker +Date: Sun Oct 22 22:13:11 2006 +0000 + + allow . in section names + +commit 1f1f9c50e4b18d9bdbe0a90874d9f92fa9c1e3ae +Author: Tobi Oetiker +Date: Sun Oct 22 22:11:43 2006 +0000 + + add propper pod NAME section + +commit cef00a141fcccd95c3eaaac5e05d1b2aead6b49f +Author: Tobi Oetiker +Date: Wed Sep 20 19:16:30 2006 +0000 + + fixed FTPtransfer probe to use srcfile as default for destfile. + +commit d9d02e26fe34b577f5b2dab1d654a3da49190449 +Author: Tobi Oetiker +Date: Fri Sep 8 13:01:16 2006 +0000 + + updated version strings + intergrated fixes for alert priority settings + +commit 1947fa82b24b9f5d526f5909454c8c7168ce3bd4 +Author: Tobi Oetiker +Date: Fri Sep 8 09:31:35 2006 +0000 + + added alert priority to _vars array to make the parser recognize it. + +commit 9778fbf78c1db9f5c77f8e82cbb0ada29f6f3913 +Author: Tobi Oetiker +Date: Thu Sep 7 22:06:21 2006 +0000 + + fix name of FTPtransfer probe in its own documentation + +commit 9a56f383b726082c3a8f3bb5982ec3a5a334e29c +Author: Tobi Oetiker +Date: Thu Sep 7 22:05:49 2006 +0000 + + make sure we do not redistribute old copies of ourselves + +commit 680d11861f6222f38b46f18ecc552af3ec8917f8 +Author: Tobi Oetiker +Date: Thu Sep 7 22:05:10 2006 +0000 + + added new priority property for alerts + +commit 8a4c23496d19915818b87a9050e01a478b94a5cc +Author: Tobi Oetiker +Date: Thu Sep 7 22:02:35 2006 +0000 + + added WebProxyFilter probe + +commit edbe6f2aa91d6d8d3ce6092aaf97fe5d08ecbbc1 +Author: Niko Tyni +Date: Thu Sep 7 06:31:39 2006 +0000 + + make the LDAP 'scope' option actually work. + +commit 364743d3606928e114cedc84e9d6c2f7cef7c7a3 +Author: Niko Tyni +Date: Wed Sep 6 21:31:44 2006 +0000 + + typo fix + +commit a0f42d4ccf2c4637cf2e40fd58c9cd9b36466909 +Author: Niko Tyni +Date: Wed Sep 6 21:29:46 2006 +0000 + + yes|no needs to parenthesized, as Config::Grammar matches it as + /^$re$/ + so eg. "yessssssss" and "abceuano" match otherwise. + +commit 425d5b5be4e76469c0c95bbdce4ade33466e624f +Author: Niko Tyni +Date: Wed Sep 6 21:09:00 2006 +0000 + + typo fixes + +commit 0e8a6e46497e5a152e3434b556538ffd1d913a5d +Author: Tobi Oetiker +Date: Thu Aug 31 08:08:54 2006 +0000 + + 2.0.901 internal release with minor touchups. Especially the FTPtransfer + probe now reports in seconds like everyone else ... + +commit 8edaa7fee41f9d5597a656123a481f2483906053 +Author: Tobi Oetiker +Date: Wed Aug 30 23:12:31 2006 +0000 + + added alert mailtemplates and new probe config ProbeUnit + +commit a1e648c79fc9300d981b45c0d31b594c819b51c7 +Author: Tobi Oetiker +Date: Wed Aug 30 08:36:34 2006 +0000 + + images shoud be written in binmode + +commit e0f339933ed2ab70a1b6d48f962a0b091ea9337e +Author: Tobi Oetiker +Date: Wed Aug 30 08:35:38 2006 +0000 + + make perl binary configurable in makefile + +commit a8e660624f549afabf3b175107263693a3aca454 +Author: Tobi Oetiker +Date: Wed Aug 30 08:34:16 2006 +0000 + + fixed compatibility with newer echoping versions + +commit dd3accda13569f43b6aa83025698a3a247b2c5a1 +Author: Tobi Oetiker +Date: Wed Aug 30 08:33:17 2006 +0000 + + log the fact that no replies came back from a device + +commit c4c40a6046548f022440d8ccfdae49da9fa3a5e5 +Author: Tobi Oetiker +Date: Wed Aug 30 08:15:07 2006 +0000 + + * spelling fix + * call rrdupdate_string only once + +commit fb7a20fbf7d55ecc6990918ea099f44daf8b9dd0 +Author: Tobi Oetiker +Date: Tue Aug 29 16:17:12 2006 +0000 + + initial version of the Virtela FTPtransfer probe + +commit afb0fe8401909a0087a5425337bfa2a2b6692a1f +Author: Tobi Oetiker +Date: Tue Aug 29 15:56:34 2006 +0000 + + merge bug fixed (GetOptions lost a line) + +commit 9b1b305a1677443fc6f627d10f597331d29f08e7 +Author: Tobi Oetiker +Date: Tue Aug 29 09:17:36 2006 +0000 + + fixed merge in upgrade docs again ... selfreferencing links were earlier + +commit ed2fcf4de53126ae7dc3973f2a27aa15c00e9160 +Author: Tobi Oetiker +Date: Tue Aug 29 09:15:25 2006 +0000 + + merged missing upgrade docs + +commit f86998b3e0c689ca234245343aa75e7cdc5519d3 +Author: Tobi Oetiker +Date: Tue Aug 29 09:08:31 2006 +0000 + + merge back to trunk + +commit c2b6279de0c09f62ef2a43e1f35955046600e74c +Author: Tobi Oetiker +Date: Mon Aug 28 23:00:59 2006 +0000 + + prepare for the release of smokeping-20060829_trunk + +commit ec5c8efba55d43c65630564024aabdb51e34224f +Author: Tobi Oetiker +Date: Sun Aug 27 23:01:07 2006 +0000 + + prepare for the release of smokeping-20060828_trunk + +commit a2b37b9b3fadba2dcfc093cdba6d0fee2e532222 +Author: Tobi Oetiker +Date: Fri Aug 25 23:01:06 2006 +0000 + + prepare for the release of smokeping-20060826_trunk + +commit 96cc81ec26b5990187ac78815178706d02fda035 +Author: Tobi Oetiker +Date: Thu Aug 24 23:01:15 2006 +0000 + + prepare for the release of smokeping-20060825_trunk + +commit 39ddbcd0fd52495a25800655a36b6d1931f676d1 +Author: Tobi Oetiker +Date: Wed Aug 23 23:01:18 2006 +0000 + + prepare for the release of smokeping-20060824_trunk + +commit 3e9b23aa8d437920c422e70040bd6f96a739fdbb +Author: Tobi Oetiker +Date: Tue Aug 22 23:01:12 2006 +0000 + + prepare for the release of smokeping-20060823_trunk + +commit 1887b577e96b5d45aed013afcf32a9f3382e19dc +Author: Tobi Oetiker +Date: Mon Aug 21 23:01:06 2006 +0000 + + prepare for the release of smokeping-20060822_trunk + +commit f1d826700d09b3783c44b49f9502cb381d9cda45 +Author: Tobi Oetiker +Date: Sun Aug 20 23:01:18 2006 +0000 + + prepare for the release of smokeping-20060821_trunk + +commit 2e1beb69d82a6d7b1aeb138aa8d3bf9ab733939f +Author: Tobi Oetiker +Date: Sat Aug 19 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060820_trunk + +commit 879fb4247906dd9eac91acc9a055e51aa20917e5 +Author: Tobi Oetiker +Date: Fri Aug 18 23:01:03 2006 +0000 + + prepare for the release of smokeping-20060819_trunk + +commit 0ca7a5fd001a3d159e741ab88a306ba0508e55ad +Author: Tobi Oetiker +Date: Thu Aug 17 23:01:13 2006 +0000 + + prepare for the release of smokeping-20060818_trunk + +commit dd01d2673a77aadd77742ec8428ef62d9480e6e8 +Author: Tobi Oetiker +Date: Wed Aug 16 23:01:11 2006 +0000 + + prepare for the release of smokeping-20060817_trunk + +commit b4e6f28d05d1427ee17553793049892a5b7e1a1b +Author: Tobi Oetiker +Date: Tue Aug 15 23:01:14 2006 +0000 + + prepare for the release of smokeping-20060816_trunk + +commit a861412cc85fd76c30cb0e0ce5ef0200487805a1 +Author: Tobi Oetiker +Date: Tue Aug 15 05:59:57 2006 +0000 + + allow multiple Mailserver + add shorter timeout to smtp module + +commit fc280a35cc9b6cc96f26d13d4ab87e9a041cf154 +Author: Tobi Oetiker +Date: Mon Aug 14 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060815_trunk + +commit 71681f39c4e5102b5a2c629ee7a16e9f8a20f8d0 +Author: Tobi Oetiker +Date: Sun Aug 13 23:01:19 2006 +0000 + + prepare for the release of smokeping-20060814_trunk + +commit 0d1c06ba9b183c02a9bca6987ac6f52951f136f6 +Author: Tobi Oetiker +Date: Sat Aug 12 23:00:52 2006 +0000 + + prepare for the release of smokeping-20060813_trunk + +commit 9d944716c0b1a3ba2a1057865f787e40bc0cef7f +Author: Tobi Oetiker +Date: Fri Aug 11 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060812_trunk + +commit bb79f178b55d84776e72d123634513941e4cbf94 +Author: Tobi Oetiker +Date: Thu Aug 10 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060811_trunk + +commit eea608d23ea60480a67dc5bad16821096c0d8d3d +Author: Tobi Oetiker +Date: Wed Aug 9 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060810_trunk + +commit 5c74f8d92d50aecde1eb92e77eef7549ef3d3228 +Author: Tobi Oetiker +Date: Tue Aug 8 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060809_trunk + +commit 8448d6f09bcb2b3712a27df0725daa19a1c15527 +Author: Tobi Oetiker +Date: Mon Aug 7 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060808_trunk + +commit a9e0eabfde78048a7aebdf1cfa7c018aef480fff +Author: Tobi Oetiker +Date: Sun Aug 6 23:01:12 2006 +0000 + + prepare for the release of smokeping-20060807_trunk + +commit 3c1ff42d19b7f174908ec03eb189481e203b1d9d +Author: Tobi Oetiker +Date: Sat Aug 5 23:01:02 2006 +0000 + + prepare for the release of smokeping-20060806_trunk + +commit cd31717822c4ed6d4a78b173e74ee76bf504afe5 +Author: Tobi Oetiker +Date: Fri Aug 4 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060805_trunk + +commit c8ef7c58a2e9b8dae032071d181ea910106ce037 +Author: Tobi Oetiker +Date: Thu Aug 3 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060804_trunk + +commit e05c856ba16d9c731ecc196cadb408c1af54212a +Author: Tobi Oetiker +Date: Wed Aug 2 23:01:01 2006 +0000 + + prepare for the release of smokeping-20060803_trunk + +commit c39a2544b2fa4f74ea5e32168b270e48c0312b91 +Author: Tobi Oetiker +Date: Tue Aug 1 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060802_trunk + +commit 2ae71f2430ad1ec64882911278078caf41c7ea50 +Author: Tobi Oetiker +Date: Mon Jul 31 23:00:52 2006 +0000 + + prepare for the release of smokeping-20060801_trunk + +commit b585d236b5c9e4fec03146e4ce5c3452507e438e +Author: Tobi Oetiker +Date: Sun Jul 30 23:01:04 2006 +0000 + + prepare for the release of smokeping-20060731_trunk + +commit eda43ee0d111938bd8effeb223a4bd1a81e23998 +Author: Tobi Oetiker +Date: Sat Jul 29 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060730_trunk + +commit 4d88e72094fd76b30833299e114038db068863de +Author: Tobi Oetiker +Date: Fri Jul 28 23:00:55 2006 +0000 + + prepare for the release of smokeping-20060729_trunk + +commit e0ae4ef798ac097ff5703ac1bb3208ded8703ac9 +Author: Tobi Oetiker +Date: Thu Jul 27 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060728_trunk + +commit a9e9cc5464f76f418838d8b1320adebebf9ec9f4 +Author: Tobi Oetiker +Date: Wed Jul 26 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060727_trunk + +commit 750edaa98fb0100c7ed55c0fced21da7d3cc7dad +Author: Tobi Oetiker +Date: Tue Jul 25 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060726_trunk + +commit c10f2699a9eb97e79e237357190c971886074fb3 +Author: Tobi Oetiker +Date: Mon Jul 24 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060725_trunk + +commit 650455bf23f0ff0d4199d4e48c87d96a928b4344 +Author: Tobi Oetiker +Date: Sun Jul 23 23:01:19 2006 +0000 + + prepare for the release of smokeping-20060724_trunk + +commit a89ce7953c4bfb06046b87a517e4401e91c9a219 +Author: Tobi Oetiker +Date: Sat Jul 22 23:01:03 2006 +0000 + + prepare for the release of smokeping-20060723_trunk + +commit d84352847fb49979a9b78410ad9a1df9f2efd6be +Author: Tobi Oetiker +Date: Fri Jul 21 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060722_trunk + +commit 3cb15a9faccb4e8fcaf9919f1805ae5e8927149b +Author: Tobi Oetiker +Date: Thu Jul 20 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060721_trunk + +commit 4cb033293a392832e7748af39ed99b7c5e30eb9d +Author: Tobi Oetiker +Date: Wed Jul 19 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060720_trunk + +commit 161f1b8f58933795b45d772b4b2cd5c0132a2060 +Author: Tobi Oetiker +Date: Tue Jul 18 23:00:57 2006 +0000 + + prepare for the release of smokeping-20060719_trunk + +commit ce8a46b5e9aa091d455ea0e25f5f478a3b6f3110 +Author: Tobi Oetiker +Date: Mon Jul 17 23:01:06 2006 +0000 + + prepare for the release of smokeping-20060718_trunk + +commit 2dc8c44f712a2f70c340dc490adc14b9e6e2058f +Author: Tobi Oetiker +Date: Sun Jul 16 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060717_trunk + +commit 86175a3bdad15b04d2baa969bf6058e93faecabb +Author: Tobi Oetiker +Date: Sat Jul 15 23:01:09 2006 +0000 + + prepare for the release of smokeping-20060716_trunk + +commit db0fe70e88e9d0247e800b9a41e1c217fb028bc8 +Author: Tobi Oetiker +Date: Fri Jul 14 23:01:09 2006 +0000 + + prepare for the release of smokeping-20060715_trunk + +commit 7f719f169b7df45f8c47b6fa11bd0cdd60bc6865 +Author: Tobi Oetiker +Date: Fri Jul 14 09:06:31 2006 +0000 + + * added matchers CheckLatency and CheckLoss -- tobi, from Dylan Vanderhoof DylanV semaphore.com + +commit 1156e3f7256585535d875e6056651cb93f0abf94 +Author: Tobi Oetiker +Date: Fri Jul 14 09:00:28 2006 +0000 + + added tacacsplus probe -- Gary.Mikula nasd.com + +commit f23f0db53df28f650056bd4ae5f644aa998bee2c +Author: Tobi Oetiker +Date: Thu Jul 13 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060714_trunk + +commit 0ec91b093f7fcc8a64e441ac8d883dc7fa503b7e +Author: Tobi Oetiker +Date: Wed Jul 12 23:00:57 2006 +0000 + + prepare for the release of smokeping-20060713_trunk + +commit 8e6a401ce24a3c479bc2f24fe0f594b44d8aba1f +Author: Niko Tyni +Date: Wed Jul 12 17:32:39 2006 +0000 + + * pass 'prevmatch' to alert matcher plugins. + -- niko, from Dylan Vanderhoof + + (add to trunk as well) + +commit d1830b25c0f16ffe684b75ce0c5e4bd2b3f552bb +Author: Niko Tyni +Date: Wed Jul 12 16:42:00 2006 +0000 + + Fix morning emails in tSmoke.dist. + +commit c10f5b164ddf4e727c70f9eaf554f65ef5e2fb27 +Author: Tobi Oetiker +Date: Tue Jul 11 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060712_trunk + +commit b290aa45f2b456046c79fccf68e3e85f04ada40e +Author: Tobi Oetiker +Date: Mon Jul 10 23:00:55 2006 +0000 + + prepare for the release of smokeping-20060711_trunk + +commit 5baf73d8adfbbe6c505edc9a6cae2043a57114f1 +Author: Tobi Oetiker +Date: Sun Jul 9 23:00:49 2006 +0000 + + prepare for the release of smokeping-20060710_trunk + +commit 44e773cfd2038deb1989fa63cd6f29dfb8ede0ad +Author: Niko Tyni +Date: Sun Jul 9 08:07:21 2006 +0000 + + Fix duplicate entry in CHANGES. + +commit 24aad364c78d190bdb371d0f19295cbecfc04ecd +Author: Niko Tyni +Date: Sun Jul 9 08:06:42 2006 +0000 + + Merge a change from the 2.0 tree. + +commit bc44b6eb6edf099dbd8f2ba40ce7ed9e03462add +Author: Niko Tyni +Date: Sun Jul 9 08:02:54 2006 +0000 + + AnotherDNS.pm: added option 'require_answers' for testing + recursive DNS servers. + +commit 7db88eb01e1e02688e17ae79638d5a0ec618f746 +Author: Tobi Oetiker +Date: Sat Jul 8 23:00:52 2006 +0000 + + prepare for the release of smokeping-20060709_trunk + +commit 3e300db12870eefb86cfd04e18088efcb5fbf27b +Author: Tobi Oetiker +Date: Fri Jul 7 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060708_trunk + +commit e3ed113b0cad55925ac1850a2b1e8dcd3ee5eb43 +Author: Tobi Oetiker +Date: Fri Jul 7 18:21:40 2006 +0000 + + fix loss_color description (it is not percents) and add line color non-pale + +commit 03be6ba819683a3345571f8e497a2a1bd45a1637 +Author: Tobi Oetiker +Date: Thu Jul 6 23:00:59 2006 +0000 + + prepare for the release of smokeping-20060707_trunk + +commit 20bc0b304390a9180a5cf381c1007cee6bf17a88 +Author: Tobi Oetiker +Date: Wed Jul 5 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060706_trunk + +commit 41426fca0ac308bc015655fb7bfc1a880fcb1b64 +Author: Tobi Oetiker +Date: Tue Jul 4 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060705_trunk + +commit d69240bd861edbf1a189943f86ca3f95fb5c32cb +Author: Tobi Oetiker +Date: Tue Jul 4 07:21:33 2006 +0000 + + prepare for the release of smokeping-20060704_trunk + +commit f4d656e15874284607d875bfa04fd096a2ebf356 +Author: Tobi Oetiker +Date: Tue Jul 4 07:19:52 2006 +0000 + + forgot to add when incoorperating the loss_background patch + +commit 4712a70ca420acce8186b428453bc3c63edf20a1 +Author: Tobi Oetiker +Date: Tue Jun 27 21:12:36 2006 +0000 + + new probe Telnet JunOSPing integrated + +commit 8c3025c21d652c8ab9bb5bf19b221e6dfdabc9ae +Author: Tobi Oetiker +Date: Tue Jun 27 21:08:46 2006 +0000 + + added background coloring + +commit 0c44eb0cc6b20730a7d29030a3b220d664722e2b +Author: Tobi Oetiker +Date: Mon Jun 26 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060627_trunk + +commit 85792ae3d91ca94d0da926a536f2f58d22447a0c +Author: Tobi Oetiker +Date: Sun Jun 25 23:01:02 2006 +0000 + + prepare for the release of smokeping-20060626_trunk + +commit d3b58da692482ac45b5cb365af4fe99a4db93438 +Author: Tobi Oetiker +Date: Sat Jun 24 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060625_trunk + +commit 313e5a392ecfb97f8fdab78ecef6aea7f9790c62 +Author: Tobi Oetiker +Date: Fri Jun 23 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060624_trunk + +commit 446159316e2445b0b5596696a8b135529cc64099 +Author: Tobi Oetiker +Date: Thu Jun 22 23:00:55 2006 +0000 + + prepare for the release of smokeping-20060623_trunk + +commit a91c8844b7e3d570753345b453a12ab46ed42f96 +Author: Tobi Oetiker +Date: Wed Jun 21 23:00:55 2006 +0000 + + prepare for the release of smokeping-20060622_trunk + +commit 7533476fe2aa5d68009a9d63c117b6c192f351c3 +Author: Tobi Oetiker +Date: Tue Jun 20 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060621_trunk + +commit b21de76409f7dd06a507b268fbd857edfd8a0d86 +Author: Tobi Oetiker +Date: Mon Jun 19 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060620_trunk + +commit 3b5baa2cecbfa29e6f355300e6c4068d1ba1dbce +Author: Tobi Oetiker +Date: Sun Jun 18 23:00:49 2006 +0000 + + prepare for the release of smokeping-20060619_trunk + +commit c2d71b63191ed2029b57468dcaa5df824236b0dc +Author: Tobi Oetiker +Date: Sat Jun 17 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060618_trunk + +commit 4fec7afde03c59022a8473b7d465f01ac822ff16 +Author: Tobi Oetiker +Date: Fri Jun 16 23:00:57 2006 +0000 + + prepare for the release of smokeping-20060617_trunk + +commit c6511eb9a138b20fffde614288d13851e3b8219b +Author: Tobi Oetiker +Date: Thu Jun 15 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060616_trunk + +commit 8bc2e1bc392f4d47ddece6a967a2823691179f7f +Author: Tobi Oetiker +Date: Wed Jun 14 23:00:57 2006 +0000 + + prepare for the release of smokeping-20060615_trunk + +commit 3c2f4e5ab0b7318c6ea1e59b829b09533a4aaf25 +Author: Tobi Oetiker +Date: Tue Jun 13 23:01:02 2006 +0000 + + prepare for the release of smokeping-20060614_trunk + +commit ada7c0231d4727090ac38a8a75ae0b67e8901c33 +Author: Tobi Oetiker +Date: Mon Jun 12 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060613_trunk + +commit ed32779e3e1c3e6c26b872d04c3ee38ba88863b5 +Author: Tobi Oetiker +Date: Sun Jun 11 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060612_trunk + +commit ecb759c66137c299fde8448d250ab9ce7a530bae +Author: Tobi Oetiker +Date: Sat Jun 10 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060611_trunk + +commit 154b4af0d6a2c7386dfe6c90441bf41588d75b39 +Author: Tobi Oetiker +Date: Fri Jun 9 23:01:01 2006 +0000 + + prepare for the release of smokeping-20060610_trunk + +commit 1a74a8b236db6c3a8f8996572ad70407bc52864f +Author: Tobi Oetiker +Date: Thu Jun 8 23:01:02 2006 +0000 + + prepare for the release of smokeping-20060609_trunk + +commit 2820736e7ed7adec3c1e34cf83f89b20e727a058 +Author: Tobi Oetiker +Date: Wed Jun 7 23:00:59 2006 +0000 + + prepare for the release of smokeping-20060608_trunk + +commit bf0e5b5088c2704a4fa9537696e496d4de8c97e3 +Author: Tobi Oetiker +Date: Tue Jun 6 23:01:01 2006 +0000 + + prepare for the release of smokeping-20060607_trunk + +commit 4ef7e21bf432ac403d7f9b063a28794595a6dced +Author: Tobi Oetiker +Date: Mon Jun 5 23:00:52 2006 +0000 + + prepare for the release of smokeping-20060606_trunk + +commit 69a6cfbe69cad46a79cae24118c987d85aa703b3 +Author: Tobi Oetiker +Date: Sun Jun 4 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060605_trunk + +commit ed4246d5c391c6b21ab0ccc8c7bccb32e6939641 +Author: Tobi Oetiker +Date: Sat Jun 3 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060604_trunk + +commit 3a8c46ba012c22b5d2e1d0b3117b40b64fd32813 +Author: Tobi Oetiker +Date: Fri Jun 2 23:00:49 2006 +0000 + + prepare for the release of smokeping-20060603_trunk + +commit 2fa7b05cffef73b954a9be329cf51d3d4de72209 +Author: Tobi Oetiker +Date: Thu Jun 1 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060602_trunk + +commit 2ad7c535303ab45e5238507d2d7313ba1275c153 +Author: Tobi Oetiker +Date: Wed May 31 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060601_trunk + +commit a54a90cdbac3c5e91d56a376d1ac375f4bb71f4c +Author: Tobi Oetiker +Date: Tue May 30 23:01:00 2006 +0000 + + prepare for the release of smokeping-20060531_trunk + +commit 69b06b6d2be1213fad332fc9703d21a9def4ad3a +Author: Tobi Oetiker +Date: Mon May 29 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060530_trunk + +commit 6dc9756724675d893fdd7a5b5d360f92ed834295 +Author: Tobi Oetiker +Date: Sun May 28 23:00:50 2006 +0000 + + prepare for the release of smokeping-20060529_trunk + +commit 8ca5b2f635bde291f60b421e1a8f4fad2c0fbe74 +Author: Tobi Oetiker +Date: Sat May 27 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060528_trunk + +commit d39c56dca8b14e5fb90695e62a3ba288e6094d6c +Author: Tobi Oetiker +Date: Fri May 26 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060527_trunk + +commit ff15a9dfc43a89f23ed99e100b97c6280ca79a96 +Author: Tobi Oetiker +Date: Thu May 25 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060526_trunk + +commit b00129a9eed4717d3b320cb728bead23e177e160 +Author: Tobi Oetiker +Date: Wed May 24 23:00:52 2006 +0000 + + prepare for the release of smokeping-20060525_trunk + +commit 22af5167d41c79e382754ae96e408feb135e4ef5 +Author: Tobi Oetiker +Date: Tue May 23 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060524_trunk + +commit 361ba786435396499dae9d858f9bdf26fd385f2f +Author: Tobi Oetiker +Date: Mon May 22 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060523_trunk + +commit 9b89c87e8139103df792cd55cf0cebae2211ea0d +Author: Tobi Oetiker +Date: Sun May 21 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060522_trunk + +commit d1d4941d1821370757de586e0fc06bd36dc8595e +Author: Tobi Oetiker +Date: Sat May 20 23:00:52 2006 +0000 + + prepare for the release of smokeping-20060521_trunk + +commit f8f2d9bdaef64d25ab261004e1d5bd9acc8c2ba8 +Author: Tobi Oetiker +Date: Fri May 19 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060520_trunk + +commit a0650b1631c9588c7fc796afe5536e662c090d4d +Author: Tobi Oetiker +Date: Thu May 18 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060519_trunk + +commit d0b8cabf6e9030ee17b5eda9d4584967f0e25203 +Author: Tobi Oetiker +Date: Wed May 17 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060518_trunk + +commit 236114c315a288a6a863f84becab449a325295e6 +Author: Tobi Oetiker +Date: Tue May 16 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060517_trunk + +commit d314839ab2f912567b1953303b548a3d65612b15 +Author: Tobi Oetiker +Date: Mon May 15 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060516_trunk + +commit c3f200246ff749093fedc0606867967af1568622 +Author: Tobi Oetiker +Date: Sun May 14 23:00:49 2006 +0000 + + prepare for the release of smokeping-20060515_trunk + +commit 5ed6e51c5681cfb899d672a5c86bf6cd2301ea6f +Author: Tobi Oetiker +Date: Sat May 13 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060514_trunk + +commit aa47de5289ea7cd132f38c94c21b6b67647d35ab +Author: Tobi Oetiker +Date: Fri May 12 23:01:05 2006 +0000 + + prepare for the release of smokeping-20060513_trunk + +commit 87f40d8fdbe73a8d76b84871c6ed4a2fe25ded72 +Author: Tobi Oetiker +Date: Thu May 11 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060512_trunk + +commit a4b04c9c2d6be88f61e1da5b8e17de02b09f1344 +Author: Tobi Oetiker +Date: Wed May 10 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060511_trunk + +commit 2f862b1505ae982ecee7a33c0d19bebdf37013b2 +Author: Tobi Oetiker +Date: Tue May 9 23:01:01 2006 +0000 + + prepare for the release of smokeping-20060510_trunk + +commit b00f64b74155e0f4de20a2d0ec40827a04b5b534 +Author: Tobi Oetiker +Date: Mon May 8 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060509_trunk + +commit 14e7c8600754d80b15ae12d7718271690be9e664 +Author: Tobi Oetiker +Date: Sun May 7 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060508_trunk + +commit 908bc3dbac3dbefccaa13e14e197b58999e2d0a7 +Author: Tobi Oetiker +Date: Sat May 6 23:00:49 2006 +0000 + + prepare for the release of smokeping-20060507_trunk + +commit 2e599fc3eff72072eb4228a42b617ca84e5fc3de +Author: Tobi Oetiker +Date: Fri May 5 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060506_trunk + +commit aa462852a935c9c1a258eb5c09d2f5c7b3f5c6e1 +Author: Tobi Oetiker +Date: Thu May 4 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060505_trunk + +commit a8c8a3ef946d1d5303a4556e903941c18e473470 +Author: Tobi Oetiker +Date: Wed May 3 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060504_trunk + +commit 66716035022e2f8158bf4fdbee340637cb563560 +Author: Tobi Oetiker +Date: Tue May 2 23:00:50 2006 +0000 + + prepare for the release of smokeping-20060503_trunk + +commit 0ba264ad26728b522dca8681df97369e42e81b92 +Author: Tobi Oetiker +Date: Mon May 1 23:00:50 2006 +0000 + + prepare for the release of smokeping-20060502_trunk + +commit a1c148476f32f43bfc0c064f3e05dd694230b9ab +Author: Tobi Oetiker +Date: Sun Apr 30 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060501_trunk + +commit 3b6841978aff64e8f21aa424e2245d46c0132094 +Author: Tobi Oetiker +Date: Sat Apr 29 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060430_trunk + +commit c9b778cc793a0aa617b378f289ccca27aa73204a +Author: Tobi Oetiker +Date: Fri Apr 28 23:00:50 2006 +0000 + + prepare for the release of smokeping-20060429_trunk + +commit aca2888dd0ba3669c4a564d91b58b1ff20ff929b +Author: Tobi Oetiker +Date: Thu Apr 27 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060428_trunk + +commit 1b93efcb67eab9d086d737e21705956ff859f9b2 +Author: Tobi Oetiker +Date: Wed Apr 26 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060427_trunk + +commit 979e18a01a43bc15dbd0e8234a2bf607ab08f541 +Author: Tobi Oetiker +Date: Tue Apr 25 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060426_trunk + +commit 305c42df2a4ac4fa8a2b33a0a0683b028e626e98 +Author: Tobi Oetiker +Date: Mon Apr 24 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060425_trunk + +commit a391548f32753e651cb44c297cb010eb9f8d0152 +Author: Tobi Oetiker +Date: Sun Apr 23 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060424_trunk + +commit af42b4765bf1b04ccc024a94d6e3f473df3f2371 +Author: Tobi Oetiker +Date: Sat Apr 22 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060423_trunk + +commit 60ab462d5400ec529c045f40f29bd4cb0d5859bd +Author: Tobi Oetiker +Date: Fri Apr 21 23:00:55 2006 +0000 + + prepare for the release of smokeping-20060422_trunk + +commit 4530ab950e1189b01132f7d2b08ae40d18da1a61 +Author: Tobi Oetiker +Date: Thu Apr 20 23:01:03 2006 +0000 + + prepare for the release of smokeping-20060421_trunk + +commit 971bd0e476bae219341624848d1bae68241a42e8 +Author: Tobi Oetiker +Date: Wed Apr 19 23:00:55 2006 +0000 + + prepare for the release of smokeping-20060420_trunk + +commit 46ee95fed2d9fd96185ba3e845b3b313ad5c05b5 +Author: Tobi Oetiker +Date: Tue Apr 18 23:00:57 2006 +0000 + + prepare for the release of smokeping-20060419_trunk + +commit 1d4293fd5da3b375fb309c30b8072571615813f0 +Author: Tobi Oetiker +Date: Mon Apr 17 23:01:06 2006 +0000 + + prepare for the release of smokeping-20060418_trunk + +commit a2b9b44105bf022c23f5fd8edcdc65fae6c4dcb3 +Author: Tobi Oetiker +Date: Sun Apr 16 23:00:50 2006 +0000 + + prepare for the release of smokeping-20060417_trunk + +commit f15f1a911d68fb398eff6e50f260d17cee2ae956 +Author: Niko Tyni +Date: Sun Apr 16 06:21:36 2006 +0000 + + Bring back 'fping -t'. + +commit d414b046426118fee953f74bde16a31b83fe9fa9 +Author: Tobi Oetiker +Date: Sat Apr 15 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060416_trunk + +commit 321bd6f0be0f2e172b42224efd22fd3eb5111709 +Author: Tobi Oetiker +Date: Fri Apr 14 23:00:58 2006 +0000 + + prepare for the release of smokeping-20060415_trunk + +commit 8d772edffc35ca5adbcbb96a0e4153d0cb744898 +Author: Tobi Oetiker +Date: Fri Apr 14 08:59:01 2006 +0000 + + adjusted for new home on oss.oetiker.ch + +commit 1f583574e3b973536c588a8a7bc3c348cf10d2e1 +Author: Tobi Oetiker +Date: Thu Apr 13 23:00:57 2006 +0000 + + prepare for the release of smokeping-20060414_trunk + +commit 641df363ae015f50c1dbcfd7fee01115fe62f194 +Author: Tobi Oetiker +Date: Wed Apr 12 23:00:48 2006 +0000 + + prepare for the release of smokeping-20060413_trunk + +commit 772d22334d4c9335aa19fcc598920c8f7bd51c60 +Author: Tobi Oetiker +Date: Tue Apr 11 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060412_trunk + +commit 01ce0b453fa4c229931db6926d6e655dc7d6f10c +Author: Tobi Oetiker +Date: Mon Apr 10 23:00:50 2006 +0000 + + prepare for the release of smokeping-20060411_trunk + +commit a287c2968d875521dc681d3730c0ec5d5a3c6474 +Author: Tobi Oetiker +Date: Sun Apr 9 23:00:50 2006 +0000 + + prepare for the release of smokeping-20060410_trunk + +commit c4f790f7df347a185bcc7c749ad7f69f2cabdd19 +Author: Tobi Oetiker +Date: Sat Apr 8 23:00:54 2006 +0000 + + prepare for the release of smokeping-20060409_trunk + +commit a9f6a569bf8f150b1f3ecacffbc5598e85f6f136 +Author: Tobi Oetiker +Date: Fri Apr 7 23:01:02 2006 +0000 + + prepare for the release of smokeping-20060408_trunk + +commit 8523054f6103ece800d8d26014f0a9a2723ece1b +Author: Tobi Oetiker +Date: Thu Apr 6 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060407_trunk + +commit 68bb65f87593483a82ecaa8c636a54d851a58a18 +Author: Tobi Oetiker +Date: Wed Apr 5 23:00:56 2006 +0000 + + prepare for the release of smokeping-20060406_trunk + +commit 18ad7fe4fd3e2b30c246f830bfc27f9d6339523c +Author: Tobi Oetiker +Date: Tue Apr 4 23:00:59 2006 +0000 + + prepare for the release of smokeping-20060405_trunk + +commit 5b28dc9edb84d5486916199881707a5a796b32a6 +Author: Tobi Oetiker +Date: Mon Apr 3 23:00:53 2006 +0000 + + prepare for the release of smokeping-20060404_trunk + +commit 60ca4e5022ad0723ad931603ce9d7aeaae8df4a8 +Author: Tobi Oetiker +Date: Sun Apr 2 23:00:49 2006 +0000 + + prepare for the release of smokeping-20060403_trunk + +commit 75aa992d8cf249e5bf7606d41053216d39d10605 +Author: Tobi Oetiker +Date: Sat Apr 1 23:00:52 2006 +0000 + + prepare for the release of smokeping-20060402_trunk + +commit 599f7c7fb671c160e4886061b92324ae13b951de +Author: Tobi Oetiker +Date: Fri Mar 31 23:00:49 2006 +0000 + + prepare for the release of smokeping-20060401_trunk + +commit 122bc45208329c43618b4777f810e69bf2122a91 +Author: Tobi Oetiker +Date: Thu Mar 30 23:00:50 2006 +0000 + + prepare for the release of smokeping-20060331_trunk + +commit db4a14c92108d1a53ce77d8d866cede23980df27 +Author: Tobi Oetiker +Date: Wed Mar 29 23:00:52 2006 +0000 + + prepare for the release of smokeping-20060330_trunk + +commit 7b1759db61292ea7805502ecbd4e13986c46fb38 +Author: Tobi Oetiker +Date: Tue Mar 28 23:00:48 2006 +0000 + + prepare for the release of smokeping-20060329_trunk + +commit 7089b5c78e9194c097a488eb87b3e45b416d94bc +Author: Tobi Oetiker +Date: Mon Mar 27 23:00:51 2006 +0000 + + prepare for the release of smokeping-20060328_trunk + +commit 4f7b53be0f6b0ca441e680a4c204c6bb9ddb5b29 +Author: Tobi Oetiker +Date: Sun Mar 26 23:01:02 2006 +0000 + + prepare for the release of smokeping-20060327_trunk + +commit 52b28733e7944e8d271d9e83f2b6da15c2f4a97d +Author: Tobi Oetiker +Date: Sun Mar 26 00:00:55 2006 +0000 + + prepare for the release of smokeping-20060326_trunk + +commit dfede96a6777b23f8bfdab4de9bc18f63012cca5 +Author: Tobi Oetiker +Date: Sat Mar 25 00:00:56 2006 +0000 + + prepare for the release of smokeping-20060325_trunk + +commit caf2371553daafb3f463f48063266b7a0e9e9bcd +Author: Tobi Oetiker +Date: Fri Mar 24 16:55:30 2006 +0000 + + let the name of the dns server in DNS.pm be configurable + -- ark + +commit dea4aa149f292a456eb1412fbdd83d2016e77aa7 +Author: Tobi Oetiker +Date: Fri Mar 24 00:00:56 2006 +0000 + + prepare for the release of smokeping-20060324_trunk + +commit 067711fa0dbf61e7fa165121d9735b1a4eb989e1 +Author: Tobi Oetiker +Date: Thu Mar 23 00:00:56 2006 +0000 + + prepare for the release of smokeping-20060323_trunk + +commit 1247ca957d00432d6aa3c4f2cbf9c509ea545c03 +Author: Tobi Oetiker +Date: Wed Mar 22 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060322_trunk + +commit eb5b60612aec46ef7a321c223237d02c8439083b +Author: Tobi Oetiker +Date: Tue Mar 21 00:00:55 2006 +0000 + + prepare for the release of smokeping-20060321_trunk + +commit edf96cad95a22cb15deda328ed891c7ff1ae21a2 +Author: Tobi Oetiker +Date: Mon Mar 20 00:00:50 2006 +0000 + + prepare for the release of smokeping-20060320_trunk + +commit 21fc62e070f4b87a58bce29cee25c4dfdf687746 +Author: Tobi Oetiker +Date: Sun Mar 19 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060319_trunk + +commit c99ad9c627f6df9f82438223f8966d87907d0650 +Author: Tobi Oetiker +Date: Sat Mar 18 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060318_trunk + +commit 7364208763247000d58ca49355737e98316517f4 +Author: Tobi Oetiker +Date: Fri Mar 17 00:00:58 2006 +0000 + + prepare for the release of smokeping-20060317_trunk + +commit 28828494e3c14e84232a895104411d855bfd38b2 +Author: Tobi Oetiker +Date: Thu Mar 16 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060316_trunk + +commit 5ba7e23f3f72293b7bc8c97fa6f071288b35437a +Author: Tobi Oetiker +Date: Wed Mar 15 00:00:57 2006 +0000 + + prepare for the release of smokeping-20060315_trunk + +commit 07269b146a214f17c6a4587db18cf5fefe6280cc +Author: Tobi Oetiker +Date: Tue Mar 14 00:00:50 2006 +0000 + + prepare for the release of smokeping-20060314_trunk + +commit 958c578f294a753fa290981e1bffd1224bbdb9bb +Author: Tobi Oetiker +Date: Mon Mar 13 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060313_trunk + +commit 5e2b4100c9807be39f75a7af2f1f195330e05b0c +Author: Tobi Oetiker +Date: Sun Mar 12 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060312_trunk + +commit 8320d440faa98b29c5bc197dd2ef4929bdd55275 +Author: Tobi Oetiker +Date: Sat Mar 11 00:00:50 2006 +0000 + + prepare for the release of smokeping-20060311_trunk + +commit 5ab1dafe1779e191f506c13b7a9f16d023a9721b +Author: Tobi Oetiker +Date: Fri Mar 10 00:00:51 2006 +0000 + + prepare for the release of smokeping-20060310_trunk + +commit 7d0a6d44483ca890405eec34b47dc8658d304b11 +Author: Tobi Oetiker +Date: Thu Mar 9 00:00:51 2006 +0000 + + prepare for the release of smokeping-20060309_trunk + +commit 59ecc933d413dadcc1393cea8b05c3d66c6399c0 +Author: Tobi Oetiker +Date: Wed Mar 8 00:00:54 2006 +0000 + + prepare for the release of smokeping-20060308_trunk + +commit 1cd0f0b0a673c49189a112d60d8e5258390b20d0 +Author: Tobi Oetiker +Date: Tue Mar 7 00:00:48 2006 +0000 + + prepare for the release of smokeping-20060307_trunk + +commit 57883cc6af995e35fa01491cb6ce5b5188a663ab +Author: Tobi Oetiker +Date: Mon Mar 6 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060306_trunk + +commit 09500f0224d8717db157f6d21961a22dbef329a7 +Author: Tobi Oetiker +Date: Sun Mar 5 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060305_trunk + +commit ea72fc0b5ded9d967d9f85a5574be692b89559a0 +Author: Tobi Oetiker +Date: Sat Mar 4 00:00:50 2006 +0000 + + prepare for the release of smokeping-20060304_trunk + +commit 22427a3b0d45483d3277c386ec95f9bf288a4fd5 +Author: Tobi Oetiker +Date: Fri Mar 3 00:00:50 2006 +0000 + + prepare for the release of smokeping-20060303_trunk + +commit 1d8ea2813596138d931f4dcc42ac5b3011a7a185 +Author: Tobi Oetiker +Date: Thu Mar 2 00:00:48 2006 +0000 + + prepare for the release of smokeping-20060302_trunk + +commit ced1a2d96fa017fb8161d48a6fc28a945e83c856 +Author: Tobi Oetiker +Date: Wed Mar 1 00:00:54 2006 +0000 + + prepare for the release of smokeping-20060301_trunk + +commit efd79d1d39d86c71c2ce6d324b543e159c2350bc +Author: Tobi Oetiker +Date: Tue Feb 28 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060228_trunk + +commit 8af9909af7667d0d4b4af52edd8feec8000d1009 +Author: Tobi Oetiker +Date: Mon Feb 27 00:00:54 2006 +0000 + + prepare for the release of smokeping-20060227_trunk + +commit 127dddf876c89630fcd0f4322bbebd136057a78e +Author: Tobi Oetiker +Date: Sun Feb 26 00:00:58 2006 +0000 + + prepare for the release of smokeping-20060226_trunk + +commit 4f924e7e288b8b827a1f39f755a4739bce2f8ed0 +Author: Tobi Oetiker +Date: Sat Feb 25 00:01:04 2006 +0000 + + prepare for the release of smokeping-20060225_trunk + +commit 2ceec4653085b74246e9f2828ee76183e55d1750 +Author: Tobi Oetiker +Date: Fri Feb 24 00:00:55 2006 +0000 + + prepare for the release of smokeping-20060224_trunk + +commit 9d0ead6a745f6ca857ef9d318a0bb7d4b5ed51fa +Author: Tobi Oetiker +Date: Thu Feb 23 00:00:56 2006 +0000 + + prepare for the release of smokeping-20060223_trunk + +commit ce8d46be47469deda66754b6b261638875a6d63e +Author: Tobi Oetiker +Date: Wed Feb 22 00:00:54 2006 +0000 + + prepare for the release of smokeping-20060222_trunk + +commit 1c3d445889e35f89a1150d0585e8d5aa8ef26f18 +Author: Tobi Oetiker +Date: Tue Feb 21 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060221_trunk + +commit 03550709db57595b831936a6414f8a9a3372c44e +Author: Tobi Oetiker +Date: Mon Feb 20 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060220_trunk + +commit c70d17ccd08cbd5ceca437a3bf0b8e1826bf87b6 +Author: Tobi Oetiker +Date: Sun Feb 19 00:00:48 2006 +0000 + + prepare for the release of smokeping-20060219_trunk + +commit d46cf31ae2666708ddbf288fd085d1bb07e9bbc4 +Author: Tobi Oetiker +Date: Sat Feb 18 00:00:47 2006 +0000 + + prepare for the release of smokeping-20060218_trunk + +commit 0909f53edec7176a263a827715eb419fe2ce0efa +Author: Tobi Oetiker +Date: Fri Feb 17 00:00:58 2006 +0000 + + prepare for the release of smokeping-20060217_trunk + +commit 8a2e8696148262389ff39ead2dd114e54db44139 +Author: Tobi Oetiker +Date: Thu Feb 16 00:00:54 2006 +0000 + + prepare for the release of smokeping-20060216_trunk + +commit bd19f805a41846fdca4345810640662ba9c8567b +Author: Tobi Oetiker +Date: Wed Feb 15 00:00:54 2006 +0000 + + prepare for the release of smokeping-20060215_trunk + +commit 0d4b5ded0d67a027f3f3bd9e0fe20a4c3891cc8c +Author: Tobi Oetiker +Date: Tue Feb 14 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060214_trunk + +commit 0dd43b8d31eb1748474c7cd91f2a30508b1100e8 +Author: Tobi Oetiker +Date: Mon Feb 13 00:00:48 2006 +0000 + + prepare for the release of smokeping-20060213_trunk + +commit 8e8c72864c24b4cfa9390c50a5e61a48d0e5be0b +Author: Tobi Oetiker +Date: Sun Feb 12 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060212_trunk + +commit 998c468147b2ecff21d2d27da016d48149484659 +Author: Tobi Oetiker +Date: Sat Feb 11 00:00:48 2006 +0000 + + prepare for the release of smokeping-20060211_trunk + +commit 57d0f8aad1756ab4bf7a3350fe1eded46d514f1c +Author: Tobi Oetiker +Date: Fri Feb 10 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060210_trunk + +commit 58dcd0ccbc914d4264367bf544e4e2cd5544e779 +Author: Tobi Oetiker +Date: Thu Feb 9 00:00:55 2006 +0000 + + prepare for the release of smokeping-20060209_trunk + +commit 6fa384bf039b941380e7765f0ff37c931825523c +Author: Tobi Oetiker +Date: Wed Feb 8 00:00:51 2006 +0000 + + prepare for the release of smokeping-20060208_trunk + +commit 456679eeca960ff7d5d642ebde524105d0486282 +Author: Tobi Oetiker +Date: Tue Feb 7 23:22:05 2006 +0000 + + added multihost alerts + +commit 6ff302bb024f84d41b8b11ac21047130f426d154 +Author: Tobi Oetiker +Date: Tue Feb 7 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060207_trunk + +commit 79f2ea2d22c602f37dcad2ac325b8bee0935e8f7 +Author: Tobi Oetiker +Date: Mon Feb 6 00:01:07 2006 +0000 + + prepare for the release of smokeping-20060206_trunk + +commit 52b3634acaa71fa722ac6d6d46757f80d1545e4b +Author: Tobi Oetiker +Date: Sun Feb 5 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060205_trunk + +commit 064d3e4382f6312f4fe1e9198342931f22f4ae55 +Author: Tobi Oetiker +Date: Sat Feb 4 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060204_trunk + +commit 4f3bfa912f2db07511174c3e00cb5a08d119ff40 +Author: Tobi Oetiker +Date: Fri Feb 3 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060203_trunk + +commit cfa4f1124afc197ab9e14ddb6cdd62fe3b9e4c7d +Author: Tobi Oetiker +Date: Thu Feb 2 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060202_trunk + +commit 0a0d6309f769c2dc835170b483326c1a88a629f3 +Author: Tobi Oetiker +Date: Wed Feb 1 00:00:50 2006 +0000 + + prepare for the release of smokeping-20060201_trunk + +commit ebf647aebd49a30a50e5e46e6e2a463420fbb012 +Author: Tobi Oetiker +Date: Tue Jan 31 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060131_trunk + +commit 0160ab418253e9d3d815251e226c602a1d90cd7f +Author: Tobi Oetiker +Date: Mon Jan 30 00:00:58 2006 +0000 + + prepare for the release of smokeping-20060130_trunk + +commit 54a23742e701e010d85c62c9565b78c315c665f1 +Author: Tobi Oetiker +Date: Sun Jan 29 00:00:56 2006 +0000 + + prepare for the release of smokeping-20060129_trunk + +commit b382ac386b54e4fabe087fedad380ecd23a6d12c +Author: Tobi Oetiker +Date: Sat Jan 28 00:00:48 2006 +0000 + + prepare for the release of smokeping-20060128_trunk + +commit fe0e0f001d671727fc891af3d7b5f861dfb49de2 +Author: Tobi Oetiker +Date: Fri Jan 27 00:00:49 2006 +0000 + + prepare for the release of smokeping-20060127_trunk + +commit 33e761c82de6a458c1260c2212b4e1b51c28c989 +Author: Tobi Oetiker +Date: Thu Jan 26 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060126_trunk + +commit 0c86383ab59a89fb6f8af4895e02d9e72213edb8 +Author: Tobi Oetiker +Date: Wed Jan 25 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060125_trunk + +commit 62e3577448c628db993746355c9e48162fbcf898 +Author: Tobi Oetiker +Date: Tue Jan 24 00:00:56 2006 +0000 + + prepare for the release of smokeping-20060124_trunk + +commit f8e5cb064dd35f2872ffcb90e623bb3fa55ce82c +Author: Tobi Oetiker +Date: Mon Jan 23 00:00:58 2006 +0000 + + prepare for the release of smokeping-20060123_trunk + +commit 2a52eba5e497c573aa34e83583427b42064be570 +Author: Tobi Oetiker +Date: Sun Jan 22 00:00:54 2006 +0000 + + prepare for the release of smokeping-20060122_trunk + +commit c97e35208b47b3e4239fa64320c577e1d96cc9e6 +Author: Tobi Oetiker +Date: Sat Jan 21 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060121_trunk + +commit d2aa2784d769f97ed657f1f5a9e1ccbdd3ce242d +Author: Tobi Oetiker +Date: Fri Jan 20 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060120_trunk + +commit cbe6eb611c92f5eafef03940ff8d4610490d7351 +Author: Tobi Oetiker +Date: Thu Jan 19 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060119_trunk + +commit ff4556debdd900c0e0c12ea1f02f336832badb35 +Author: Tobi Oetiker +Date: Wed Jan 18 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060118_trunk + +commit 2725616dc36e59b6524ada73e1f492c248aafc1f +Author: Tobi Oetiker +Date: Tue Jan 17 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060117_trunk + +commit 16716a8b7d09afa31172e93399b4ffd66bb688c1 +Author: Tobi Oetiker +Date: Mon Jan 16 00:01:07 2006 +0000 + + prepare for the release of smokeping-20060116_trunk + +commit a948ae4ad598f2beb753040f6da849c08d45ee83 +Author: Tobi Oetiker +Date: Sun Jan 15 00:00:50 2006 +0000 + + prepare for the release of smokeping-20060115_trunk + +commit ed17a6b7b8dcf46de7aec37777aeb525af65c7ac +Author: Tobi Oetiker +Date: Sat Jan 14 00:00:47 2006 +0000 + + prepare for the release of smokeping-20060114_trunk + +commit c186d8f231b999aea5c64c4c38c9f04a2c79ee34 +Author: Tobi Oetiker +Date: Fri Jan 13 00:00:53 2006 +0000 + + prepare for the release of smokeping-20060113_trunk + +commit da9ca937189fbd8e610fa6d9b9df0718e55a886e +Author: Tobi Oetiker +Date: Thu Jan 12 00:00:57 2006 +0000 + + prepare for the release of smokeping-20060112_trunk + +commit 32a5c55063a7af8f655df33bad5cbf56b70a4cc5 +Author: Tobi Oetiker +Date: Wed Jan 11 00:00:59 2006 +0000 + + prepare for the release of smokeping-20060111_trunk + +commit 62290ff74c8c5f66f2a869d6753ce5ac945c9334 +Author: Tobi Oetiker +Date: Tue Jan 10 00:00:50 2006 +0000 + + prepare for the release of smokeping-20060110_trunk + +commit 2f5c41eb902dc2d6a16071a09e753f5d7a970f69 +Author: Tobi Oetiker +Date: Mon Jan 9 00:01:03 2006 +0000 + + prepare for the release of smokeping-20060109_trunk + +commit 589d0704143ee6003456f3e2f6750378913cfc5f +Author: Tobi Oetiker +Date: Sun Jan 8 00:00:47 2006 +0000 + + prepare for the release of smokeping-20060108_trunk + +commit 1c14828cfb69e39b4ec7ca47f7c12e492045736f +Author: Tobi Oetiker +Date: Sat Jan 7 00:00:58 2006 +0000 + + prepare for the release of smokeping-20060107_trunk + +commit 6772387bcd7b604ad28d12a49e5806a872ad3b79 +Author: Tobi Oetiker +Date: Fri Jan 6 00:01:05 2006 +0000 + + prepare for the release of smokeping-20060106_trunk + +commit b0435f544c7bc175a2a1741394357f2f44622a97 +Author: Tobi Oetiker +Date: Thu Jan 5 20:14:36 2006 +0000 + + portability for perl 5.8.7 + +commit fb6979fa7f47246b2b8fd022f448030b7e1b8702 +Author: Tobi Oetiker +Date: Thu Jan 5 00:00:59 2006 +0000 + + prepare for the release of smokeping-20060105_trunk + +commit 7d6262a81e61ad1c112a4318b2fc1c972940d0bc +Author: Tobi Oetiker +Date: Wed Jan 4 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060104_trunk + +commit 7afdc7aade6f31623b3cebb113e8768e982fad31 +Author: Tobi Oetiker +Date: Tue Jan 3 00:00:52 2006 +0000 + + prepare for the release of smokeping-20060103_trunk + +commit 9333ae4fead9fd1e066e6c10c731fa30e9bb7161 +Author: Tobi Oetiker +Date: Mon Jan 2 00:01:01 2006 +0000 + + prepare for the release of smokeping-20060102_trunk + +commit a25527165845fd32dd1ac054d3962c83bad989cb +Author: Tobi Oetiker +Date: Sun Jan 1 00:00:54 2006 +0000 + + prepare for the release of smokeping-20060101_trunk + +commit 448ab9a128acc6005fa6cd8eaecb540ae40aea71 +Author: Tobi Oetiker +Date: Sat Dec 31 00:01:03 2005 +0000 + + prepare for the release of smokeping-20051231_trunk + +commit be82526c51ec0359c0d79606175536cd9ff94d8b +Author: Tobi Oetiker +Date: Fri Dec 30 00:00:50 2005 +0000 + + prepare for the release of smokeping-20051230_trunk + +commit ae6b1e03bf7baf9e2031b445d31d787c20da1823 +Author: Tobi Oetiker +Date: Thu Dec 29 00:00:50 2005 +0000 + + prepare for the release of smokeping-20051229_trunk + +commit 63a0daf10ee069e05189ab4c732982b91c7ac97a +Author: Tobi Oetiker +Date: Wed Dec 28 00:00:56 2005 +0000 + + prepare for the release of smokeping-20051228_trunk + +commit dd0e5f50b634785c017b365d7af1b6a7c3087b23 +Author: Tobi Oetiker +Date: Tue Dec 27 00:01:01 2005 +0000 + + prepare for the release of smokeping-20051227_trunk + +commit b3498e0092465209bd5b96ff0dd48ea8f19b6e3a +Author: Tobi Oetiker +Date: Mon Dec 26 00:00:57 2005 +0000 + + prepare for the release of smokeping-20051226_trunk + +commit 537c95d700080b23cc3dac5e1bf17eaa83a390f3 +Author: Tobi Oetiker +Date: Sun Dec 25 00:00:59 2005 +0000 + + prepare for the release of smokeping-20051225_trunk + +commit e47d849259ed6c43463a873073c14582618d84bb +Author: Tobi Oetiker +Date: Sat Dec 24 00:00:53 2005 +0000 + + prepare for the release of smokeping-20051224_trunk + +commit 5b3966df8b51691bd8fc69e768e9676bc38e9d3e +Author: Tobi Oetiker +Date: Fri Dec 23 00:00:50 2005 +0000 + + prepare for the release of smokeping-20051223_trunk + +commit 8f4f24ab6d397a46e228c21c5964aab07a67a7e7 +Author: Tobi Oetiker +Date: Thu Dec 22 00:01:07 2005 +0000 + + prepare for the release of smokeping-20051222_trunk + +commit a7def2ca84fad70758e24bbc3d83d330d37f2570 +Author: Tobi Oetiker +Date: Wed Dec 21 00:00:58 2005 +0000 + + prepare for the release of smokeping-20051221_trunk + +commit 22462833c1511c921822ba6f3eca4ea2d3cacf61 +Author: Tobi Oetiker +Date: Tue Dec 20 20:49:54 2005 +0000 + + synced up with 2.0 branch + +commit 1bb4dde5b7a92d8cbe996cda79cd0b098a8dfb6a +Author: Tobi Oetiker +Date: Tue Dec 20 00:01:15 2005 +0000 + + prepare for the release of smokeping-20051220_trunk + +commit 4b00783932733db3b58296742e3f7946e697dd64 +Author: Tobi Oetiker +Date: Mon Dec 19 00:01:05 2005 +0000 + + prepare for the release of smokeping-20051219_trunk + +commit b1aa79d75ffc85cafc945a8e7253f56a9e2b522a +Author: Tobi Oetiker +Date: Sun Dec 18 00:01:16 2005 +0000 + + prepare for the release of smokeping-20051218_trunk + +commit a564850ad79ef936f9acd8a60e763ce7bd91a0d0 +Author: Tobi Oetiker +Date: Sat Dec 17 00:00:57 2005 +0000 + + prepare for the release of smokeping-20051217_trunk + +commit 61429c9cb042e31f0b79a85f63083a10a202528e +Author: Tobi Oetiker +Date: Fri Dec 16 00:00:54 2005 +0000 + + prepare for the release of smokeping-20051216_trunk + +commit c3ebdbd645add45df0e6ae7d7759ede0e9b655f4 +Author: Tobi Oetiker +Date: Thu Dec 15 00:01:01 2005 +0000 + + prepare for the release of smokeping-20051215_trunk + +commit b6674d6f5485d425edfd88611389f909bd4b2332 +Author: Tobi Oetiker +Date: Wed Dec 14 00:00:54 2005 +0000 + + prepare for the release of smokeping-20051214_trunk + +commit 34a47cf6dd9f7e660182693e41d39d06c155d461 +Author: Tobi Oetiker +Date: Tue Dec 13 00:01:13 2005 +0000 + + prepare for the release of smokeping-20051213_trunk + +commit 2aeb1cfb160a72307b3c5dd6d122a533ff4f9b55 +Author: Tobi Oetiker +Date: Mon Dec 12 00:01:07 2005 +0000 + + prepare for the release of smokeping-20051212_trunk + +commit c1ac0cbb380212efff08eda78af5cbe5e18c5935 +Author: Niko Tyni +Date: Sun Dec 11 07:44:12 2005 +0000 + + * brought trunk/ up to date + +commit 4bb9e387247d11ba4c842c4f6490d0e210615d2b +Author: Tobi Oetiker +Date: Sun Dec 11 00:01:05 2005 +0000 + + prepare for the release of smokeping-20051211_trunk + +commit 7966425f1a919b1154fb4c29ce5ba3b2cfac2507 +Author: Tobi Oetiker +Date: Sat Dec 10 00:00:54 2005 +0000 + + prepare for the release of smokeping-20051210_trunk + +commit dee8b5e5124e9be822593638ee3af6abb0e32567 +Author: Tobi Oetiker +Date: Fri Dec 9 00:00:54 2005 +0000 + + prepare for the release of smokeping-20051209_trunk + +commit db20031e50e0fb6b6ed0f540997b3d7250f300c3 +Author: Tobi Oetiker +Date: Thu Dec 8 00:00:54 2005 +0000 + + prepare for the release of smokeping-20051208_trunk + +commit b1b3211571281154866ab83eb36f921930b23041 +Author: Tobi Oetiker +Date: Wed Dec 7 00:00:57 2005 +0000 + + prepare for the release of smokeping-20051207_trunk + +commit f2dde2dccf7521f1e1ef242e49a0de4de992d483 +Author: Tobi Oetiker +Date: Tue Dec 6 00:00:52 2005 +0000 + + prepare for the release of smokeping-20051206_trunk + +commit 4114bcf074676b01159284cfa6d14642c748a947 +Author: Tobi Oetiker +Date: Mon Dec 5 00:01:03 2005 +0000 + + prepare for the release of smokeping-20051205_trunk + +commit 60e55de4f17990c6917933e4be8c0e98699085dd +Author: Tobi Oetiker +Date: Sun Dec 4 00:00:53 2005 +0000 + + prepare for the release of smokeping-20051204_trunk + +commit 96ff6333350d80852209f984e6a08ce69be3ab74 +Author: Tobi Oetiker +Date: Sat Dec 3 00:00:55 2005 +0000 + + prepare for the release of smokeping-20051203_trunk + +commit c804efc1111ab2fc29f90d8ba0dcbfcd25f5b43d +Author: Niko Tyni +Date: Fri Dec 2 21:45:05 2005 +0000 + + * brought trunk/ up to date + +commit f628316ec477ef0173567ef0810f37817df117a2 +Author: Tobi Oetiker +Date: Fri Dec 2 00:00:55 2005 +0000 + + prepare for the release of smokeping-20051202_trunk + +commit 2ab647d1e15c52b9947626b17216320ee1dfeaa2 +Author: Tobi Oetiker +Date: Thu Dec 1 00:00:55 2005 +0000 + + prepare for the release of smokeping-20051201_trunk + +commit 94fa5e5e42c996131b8d4960f3fffb55794cf15d +Author: Tobi Oetiker +Date: Wed Nov 30 00:00:52 2005 +0000 + + prepare for the release of smokeping-20051130_trunk + +commit 3c4cd65c711a8a2f2f63b127be58625e0fb3c6f1 +Author: Tobi Oetiker +Date: Tue Nov 29 00:02:10 2005 +0000 + + prepare for the release of smokeping-20051129_trunk + +commit e64fb3c94eb46a3c802ce41209f1cdcece5dfb74 +Author: Tobi Oetiker +Date: Mon Nov 28 00:01:02 2005 +0000 + + prepare for the release of smokeping-20051128_trunk + +commit 846c9d27f04566611a57a30eb70dfd38a46b4d13 +Author: Tobi Oetiker +Date: Sun Nov 27 00:01:01 2005 +0000 + + prepare for the release of smokeping-20051127_trunk + +commit 0217762c01814425d80e73d24d89740304c5554d +Author: Tobi Oetiker +Date: Sat Nov 26 00:00:59 2005 +0000 + + prepare for the release of smokeping-20051126_trunk + +commit 938b38ff8c7d95e73234926c06569018b33a8362 +Author: Tobi Oetiker +Date: Fri Nov 25 00:01:07 2005 +0000 + + prepare for the release of smokeping-20051125_trunk + +commit b2b0ee599075672447ad0508fecf61fbe25f999e +Author: Tobi Oetiker +Date: Thu Nov 24 20:09:02 2005 +0000 + + fixed spelling for height + +commit 5c4787a7e82c29fede4eac87553e94df42e14eb6 +Author: Tobi Oetiker +Date: Thu Nov 24 00:00:57 2005 +0000 + + prepare for the release of smokeping-20051124_trunk + +commit 73e555ad9f43d97d3f82b813f1229a86ac27756a +Author: Tobi Oetiker +Date: Wed Nov 23 00:00:56 2005 +0000 + + prepare for the release of smokeping-20051123_trunk + +commit a200270873a3572fcf5071cfe8ea8fc8aad744bb +Author: Tobi Oetiker +Date: Tue Nov 22 00:01:02 2005 +0000 + + prepare for the release of smokeping-20051122_trunk + +commit 9b0e13fcc29fc233e55d64ec5426c9fe048e6b4b +Author: Tobi Oetiker +Date: Mon Nov 21 00:01:21 2005 +0000 + + prepare for the release of smokeping-20051121_trunk + +commit 6a0eee4edd4efc290053db9719f298c40c1aa37b +Author: Tobi Oetiker +Date: Sun Nov 20 00:00:53 2005 +0000 + + prepare for the release of smokeping-20051120_trunk + +commit 5c3a70d83c55785dd4f18c0fef3f3837bc779b8d +Author: Tobi Oetiker +Date: Sat Nov 19 00:00:53 2005 +0000 + + prepare for the release of smokeping-20051119_trunk + +commit 880202c220f29aabf072e899aab5f6b2a2e9e65e +Author: Tobi Oetiker +Date: Fri Nov 18 00:00:53 2005 +0000 + + prepare for the release of smokeping-20051118_trunk + +commit 72462747acbc8a52e04098093d6d84938d366069 +Author: Tobi Oetiker +Date: Thu Nov 17 00:01:02 2005 +0000 + + prepare for the release of smokeping-20051117_trunk + +commit d5ac26abe33b59bff4f3576b346943758944f5be +Author: Tobi Oetiker +Date: Wed Nov 16 00:00:55 2005 +0000 + + prepare for the release of smokeping-20051116_trunk + +commit da3520af54c9cf9a2b34f5667160c12349bc8169 +Author: Tobi Oetiker +Date: Tue Nov 15 00:01:08 2005 +0000 + + prepare for the release of smokeping-20051115_trunk + +commit f7520e9d2710026e7e154503fdba5e8a1751423a +Author: Niko Tyni +Date: Mon Nov 14 22:09:54 2005 +0000 + + * lib/Smokeping/probes/FPing.pm, + doc/smokeping_upgrade.pod, + CHANGES: + + remove the FPing 'timeout' variable, since it never really did anything + +commit 334ec7968c236ad0bc7937b4ab87f5abd7c116a2 +Author: Niko Tyni +Date: Mon Nov 14 21:57:00 2005 +0000 + + * (trunk)/ + lib/Smokeping.pm, + CHANGES: + + use the 'cgiurl' variable from the 'General' section for all CGI self-refering links + +commit fdf5205ed32123872ff09d475dfdd9190eaade9d +Author: Tobi Oetiker +Date: Mon Nov 14 00:01:05 2005 +0000 + + prepare for the release of smokeping-20051114_trunk + +commit 4042816c7974942bd5ac2e6f3c5dd5465297f504 +Author: Tobi Oetiker +Date: Sun Nov 13 00:01:09 2005 +0000 + + prepare for the release of smokeping-20051113_trunk + +commit 3e7bc9eb6f96569e3e9f80c6812d84d83418bb6a +Author: Tobi Oetiker +Date: Sat Nov 12 00:01:01 2005 +0000 + + prepare for the release of smokeping-20051112_trunk + +commit b8d8935bf52baea0170d74db6bdbf82d5dc21231 +Author: Tobi Oetiker +Date: Fri Nov 11 00:00:57 2005 +0000 + + prepare for the release of smokeping-20051111_trunk + +commit 20cbbde0a799cfd82fb3453187e8c15ab72dd181 +Author: Tobi Oetiker +Date: Thu Nov 10 00:00:58 2005 +0000 + + prepare for the release of smokeping-20051110_trunk + +commit 5fa129240541ea49fdd1c1e767c461ceaee5c9a2 +Author: Tobi Oetiker +Date: Wed Nov 9 00:00:56 2005 +0000 + + prepare for the release of smokeping-20051109_trunk + +commit 2295a13ccf466b166d8e7d15bea363a01753b8a4 +Author: Tobi Oetiker +Date: Tue Nov 8 00:00:52 2005 +0000 + + prepare for the release of smokeping-20051108_trunk + +commit 8554c768b586a3b15f14e7aa6b397f9c4efce4b4 +Author: Tobi Oetiker +Date: Mon Nov 7 00:01:04 2005 +0000 + + prepare for the release of smokeping-20051107_trunk + +commit 714f7e3d167b5dd3a20c508fc083ac8132e10bb5 +Author: Niko Tyni +Date: Sun Nov 6 09:52:59 2005 +0000 + + * trunk/ + lib/Smokeping/probes/Curl.pm, + CHANGES: + + don't take '0' for 'true' with the 'ssl2' or 'insecure_ssl' options + +commit b12124181c5cd5f3373c754c2e1795fd2d02fac3 +Author: Tobi Oetiker +Date: Sun Nov 6 00:00:53 2005 +0000 + + prepare for the release of smokeping-20051106_trunk + +commit f5eab423141ac2f28f1886dff4581f222430ca08 +Author: Tobi Oetiker +Date: Sat Nov 5 00:00:52 2005 +0000 + + prepare for the release of smokeping-20051105_trunk + +commit a644389b1d268fa892f1c31ca2578fbdc47b9620 +Author: Tobi Oetiker +Date: Fri Nov 4 00:00:59 2005 +0000 + + prepare for the release of smokeping-20051104_trunk + +commit 8ab320e78f3e87258976262d8b8df26d11384e5b +Author: Tobi Oetiker +Date: Thu Nov 3 00:00:56 2005 +0000 + + prepare for the release of smokeping-20051103_trunk + +commit 04aa92d0a09308a99631bd73f69838a43065d02b +Author: Tobi Oetiker +Date: Wed Nov 2 00:00:58 2005 +0000 + + prepare for the release of smokeping-20051102_trunk + +commit c933a6039693020169584f878a3cfade99c58e92 +Author: Tobi Oetiker +Date: Tue Nov 1 00:00:53 2005 +0000 + + prepare for the release of smokeping-20051101_trunk + +commit 485aa3052dc30b4fd18f29a04a63849937e65474 +Author: Tobi Oetiker +Date: Mon Oct 31 00:01:03 2005 +0000 + + prepare for the release of smokeping-20051031_trunk + +commit 6a4c5617d253d488000e511c028afc4cc46aa7e2 +Author: Tobi Oetiker +Date: Sat Oct 29 23:00:54 2005 +0000 + + prepare for the release of smokeping-20051030_trunk + +commit 63bfbe565cd684d88eed9a0993b035ce6addae70 +Author: Tobi Oetiker +Date: Fri Oct 28 23:00:59 2005 +0000 + + prepare for the release of smokeping-20051029_trunk + +commit 86525919fb7ff3e1cd8c1f3ab6bfb5f8c095468e +Author: Niko Tyni +Date: Fri Oct 28 11:19:29 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping/probes/LDAP.pm, + CHANGES: + + add the 'scope' Net::LDAP search option to the LDAP probe + +commit 5f5bd15d7cbd95b1ba4507dbe79c32628b3a6a80 +Author: Tobi Oetiker +Date: Thu Oct 27 23:00:52 2005 +0000 + + prepare for the release of smokeping-20051028_trunk + +commit 65574bbd22f7cbf384a41a940f8edccb21a09db6 +Author: Tobi Oetiker +Date: Wed Oct 26 23:00:51 2005 +0000 + + prepare for the release of smokeping-20051027_trunk + +commit 3dd1d1e939a173e50f5ff6d54a515e10a2c46cd4 +Author: Tobi Oetiker +Date: Tue Oct 25 23:00:56 2005 +0000 + + prepare for the release of smokeping-20051026_trunk + +commit 833e7bdfa9e680f4ad6ae5b7e9d96c4f14394ca1 +Author: Tobi Oetiker +Date: Mon Oct 24 23:00:58 2005 +0000 + + prepare for the release of smokeping-20051025_trunk + +commit b5e49395509d49aa1cc28c17912bed4a498a102d +Author: Tobi Oetiker +Date: Sun Oct 23 23:01:11 2005 +0000 + + prepare for the release of smokeping-20051024_trunk + +commit c9e23f7a3da48ffa3a248254eb4107034a70d6ac +Author: Tobi Oetiker +Date: Sat Oct 22 23:00:58 2005 +0000 + + prepare for the release of smokeping-20051023_trunk + +commit 593fa608368eea633c226c41218bd8bbd90ef3d8 +Author: Tobi Oetiker +Date: Fri Oct 21 23:01:01 2005 +0000 + + prepare for the release of smokeping-20051022_trunk + +commit ac81dca814aaca83729f1f22a7bf738b1c17c9ac +Author: Tobi Oetiker +Date: Thu Oct 20 23:01:06 2005 +0000 + + prepare for the release of smokeping-20051021_trunk + +commit a53951bf3c81883e7163e2c108bd8beb511a7565 +Author: Tobi Oetiker +Date: Wed Oct 19 23:00:59 2005 +0000 + + prepare for the release of smokeping-20051020_trunk + +commit d230c06cb6e8462c2b7b406d5f4f11880900a866 +Author: Niko Tyni +Date: Wed Oct 19 11:13:11 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping/probes/Curl.pm, + CHANGES: + + make the Curl probe compatible with Perl 5.6 + +commit 12e7a448c63c79b0e01e2bc6810c5a23669ca741 +Author: Tobi Oetiker +Date: Tue Oct 18 23:01:06 2005 +0000 + + prepare for the release of smokeping-20051019_trunk + +commit aca01304a6c2638c9667711967b9ee1aa9bd09d9 +Author: Niko Tyni +Date: Tue Oct 18 05:22:40 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping.pm, + CHANGES: + + get rid of 'Use of uninitialized value' messages when + using the Avgratio matcher + +commit 7c66130c076338076b19f9f9968851170ef5c29b +Author: Tobi Oetiker +Date: Mon Oct 17 23:01:04 2005 +0000 + + prepare for the release of smokeping-20051018_trunk + +commit a86acb450ba469e382effbbe8cf7fec53f1636de +Author: Tobi Oetiker +Date: Sun Oct 16 23:01:02 2005 +0000 + + prepare for the release of smokeping-20051017_trunk + +commit 615627595553e8522a6c0e709ca278283dc7803a +Author: Tobi Oetiker +Date: Sat Oct 15 23:00:55 2005 +0000 + + prepare for the release of smokeping-20051016_trunk + +commit 424920c6dfbc7cc73654b5226086ecdada945fe7 +Author: Tobi Oetiker +Date: Fri Oct 14 23:00:49 2005 +0000 + + prepare for the release of smokeping-20051015_trunk + +commit d21515540d74694cb09148e164e1bee1ecee6d55 +Author: Niko Tyni +Date: Fri Oct 14 12:50:50 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping.pm: + + cosmetic fix from "ChunjingHan" + +commit 7f89ec986512196ded2ce2aaa35227a556a31fc5 +Author: Niko Tyni +Date: Fri Oct 14 12:49:18 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping.pm, + CHANGES: + + include the smallest ping value in the graphs too + +commit 2f5b3b13f36137299dbb240d42db261f07772739 +Author: Tobi Oetiker +Date: Thu Oct 13 23:00:54 2005 +0000 + + prepare for the release of smokeping-20051014_trunk + +commit 36d4802453ee4253dd60e80926ea8404cdf7db53 +Author: Tobi Oetiker +Date: Wed Oct 12 23:00:52 2005 +0000 + + prepare for the release of smokeping-20051013_trunk + +commit 75fb5a5a679939e8d5eee2a7d42d3dc1512f6a43 +Author: Tobi Oetiker +Date: Tue Oct 11 23:01:00 2005 +0000 + + prepare for the release of smokeping-20051012_trunk + +commit ee7fc272795fe8114ffe316d14c11a491942e4e8 +Author: Niko Tyni +Date: Tue Oct 11 19:20:11 2005 +0000 + + * (trunk,2.0)/ + CHANGES: + + typo fix + +commit bb33fa999a13290f612e9af05b7ce113c22d1140 +Author: Niko Tyni +Date: Tue Oct 11 19:19:23 2005 +0000 + + * (trunk)/ + lib/Smokeping.pm, + CHANGES: + + avoid creating new RRD files as the user running 'smokeping --reload' + (merged from 2.0) + +commit 9c0ca72bea9a83cdefa5d91461160dc9867bd2e9 +Author: Tobi Oetiker +Date: Mon Oct 10 23:01:05 2005 +0000 + + prepare for the release of smokeping-20051011_trunk + +commit 2d62442fb7559a4c79d2b5b30907a090a2c97a20 +Author: Tobi Oetiker +Date: Sun Oct 9 23:01:01 2005 +0000 + + prepare for the release of smokeping-20051010_trunk + +commit 04d9b3ac960efaf94aff4846b3ff6dde3e043950 +Author: Tobi Oetiker +Date: Sat Oct 8 23:00:52 2005 +0000 + + prepare for the release of smokeping-20051009_trunk + +commit e74b942d712e906a001762a80d02be41522a237b +Author: Tobi Oetiker +Date: Fri Oct 7 23:00:53 2005 +0000 + + prepare for the release of smokeping-20051008_trunk + +commit cd8d15446e258e68f143795d318b79c562e7de37 +Author: Niko Tyni +Date: Fri Oct 7 10:57:27 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping.pm, + lib/Smokeping/RRDtools.pm, + CHANGES + + only warn if RRA parameters other than CF are different + config file and an RRD + +commit 3fd3ab47081ef2df27c25203ed978e46156a204f +Author: Tobi Oetiker +Date: Thu Oct 6 23:00:51 2005 +0000 + + prepare for the release of smokeping-20051007_trunk + +commit 23c4635bd1567d03215020dfc66f4e21c28bbd1d +Author: Tobi Oetiker +Date: Wed Oct 5 23:01:08 2005 +0000 + + prepare for the release of smokeping-20051006_trunk + +commit afa76250e14ea5cadb7cda3dd62ccb2492951741 +Author: Tobi Oetiker +Date: Tue Oct 4 23:01:04 2005 +0000 + + prepare for the release of smokeping-20051005_trunk + +commit 4caa4ed99402778a0bf455a5ec5056ade6e52bbb +Author: Tobi Oetiker +Date: Mon Oct 3 23:00:56 2005 +0000 + + prepare for the release of smokeping-20051004_trunk + +commit fe0fef990bd0c11934ce48da407b51906a2c862e +Author: Niko Tyni +Date: Mon Oct 3 11:45:35 2005 +0000 + + * (trunk/) + lib/Smokeping.pm: + + fixed a typo + +commit 76884f2dae8556d52be6c97e66a3171a94ef8420 +Author: Niko Tyni +Date: Mon Oct 3 11:20:46 2005 +0000 + + * (trunk/) + doc/smokeping_install.pod, + lib/Smokeping.pm, + CHANGES: + + make it work (hopefully) with even older versions of CGI::Carp if + 'changecgiprogramname' is set to 'no' in the General section + +commit 244a5fca9c21faffe98cae72f64e0b9ed69d7e0b +Author: Tobi Oetiker +Date: Sun Oct 2 23:01:06 2005 +0000 + + prepare for the release of smokeping-20051003_trunk + +commit 9d8a68509109b63869e2486a4c982357bfeceef3 +Author: Tobi Oetiker +Date: Sat Oct 1 23:01:03 2005 +0000 + + prepare for the release of smokeping-20051002_trunk + +commit 89c0857bd0a1854d469bc29f68e5920259822e52 +Author: Tobi Oetiker +Date: Fri Sep 30 23:01:00 2005 +0000 + + prepare for the release of smokeping-20051001_trunk + +commit 68067aea7fc50691ccc48dbea061253d6451cfd6 +Author: Tobi Oetiker +Date: Thu Sep 29 23:01:06 2005 +0000 + + prepare for the release of smokeping-20050930_trunk + +commit 01d152d8c8a752c68407cec20c81d339e565f498 +Author: Tobi Oetiker +Date: Wed Sep 28 23:01:00 2005 +0000 + + prepare for the release of smokeping-20050929_trunk + +commit 72c6bc1c53f52e66e1b5e8d70b00ff2476b1b220 +Author: Niko Tyni +Date: Wed Sep 28 11:11:17 2005 +0000 + + * (trunk)/ + doc/smokeping_install.pod, + doc/smokeping_upgrade.pod, + lib/Smokeping.pm, + CHANGES: + + make having an older version of CGI::Carp a non-fatal error and + recommend a newer one in the docs + +commit ec993081f760b7af33e60c14717ea9f557b1881f +Author: Tobi Oetiker +Date: Tue Sep 27 23:00:55 2005 +0000 + + prepare for the release of smokeping-20050928_trunk + +commit 40cb0357e0446fa3d0e34f17d006cdfd232681dd +Author: Tobi Oetiker +Date: Mon Sep 26 23:01:02 2005 +0000 + + prepare for the release of smokeping-20050927_trunk + +commit 5a809af06052ab4475f90c7972cd5fa5930914e0 +Author: Tobi Oetiker +Date: Mon Sep 26 20:07:15 2005 +0000 + + prepare for the release of smokeping-20050926_trunk + +commit 1d1ad79d657c4706933332cc17af5f15df0353a0 +Author: Niko Tyni +Date: Mon Sep 26 19:18:43 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping/probes/FPing.pm, + CHANGES: + + fix fping output parsing regexp so it doesn't report + 100% loss when the first ping is lost + +commit bf49085b6ef259192f6b012ad1d83e5c4cb7edd0 +Author: Niko Tyni +Date: Mon Sep 26 18:42:02 2005 +0000 + + * (trunk/) + Makefile: + + move the 'svn commit' command to its own target 'commit' + +commit 87c25cbf644b899547ace009c7bec7b6922cc5cd +Author: Niko Tyni +Date: Sun Sep 25 12:46:51 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping/probes/TelnetIOSPing.pm: + + change the Net::Telnet->new() call so it compiles + without Net::Telnet loaded + +commit 12b1e1921c3da6e7c7e178682fb13097196a157b +Author: Niko Tyni +Date: Sun Sep 25 12:30:33 2005 +0000 + + * (trunk,2.0)/ + Radius.pm: + + explicitly tag the ACCESS_* calls as subroutines (&) + so they work while building the documentation + +commit 77a6167109b90747b8e3f5fe766cb7979ecea640 +Author: Niko Tyni +Date: Sun Sep 25 12:16:47 2005 +0000 + + * (trunk,2.0)/ + lib/Smokeping.pm, + CHANGES: + + no need to have all the external modules (Net::DNS, Authen::Radius etc.) + installed just to build the documentation. + +commit 684cb417be1d156c5f48460c73f9d32b851c576b +Author: Niko Tyni +Date: Sun Sep 25 10:41:43 2005 +0000 + + * (trunk/) + Makefile: + + merged 2.0 changes from the two previous revisions + +commit fd10867b929964e1ea7d52f58802d17ba7a7f5bb +Author: Niko Tyni +Date: Sun Sep 25 10:26:13 2005 +0000 + + * (trunk,2.0)/ + COPYRIGHT: + + updated FSF postal address + +commit 52a1a8978ca8be8d39d522960f46d94432bbde9d +Author: Tobi Oetiker +Date: Sat Sep 24 23:01:05 2005 +0000 + + prepare for the release of smokeping-20050925_trunk + +commit 79cb6fdc7391eb5d37a095a58cdfc2dfdf761b48 +Author: Tobi Oetiker +Date: Fri Sep 23 23:01:09 2005 +0000 + + prepare for the release of smokeping-20050924_trunk + +commit e7d508f06248c1d7ca981beabcbfb0308219d0ea +Author: Tobi Oetiker +Date: Thu Sep 22 23:01:00 2005 +0000 + + prepare for the release of smokeping-20050923_trunk + +commit f7ec5a8d8089bf2ab5edcd33a155655783a050ae +Author: Tobi Oetiker +Date: Wed Sep 21 23:00:58 2005 +0000 + + prepare for the release of smokeping-20050922_trunk + +commit e878c50a1ec861e61254969dec69952b966a8b3b +Author: Niko Tyni +Date: Wed Sep 21 16:30:48 2005 +0000 + + * (trunk)/ + TODO: + + Targets/alertee: syntax to remove an address from the Alerts/to list + +commit 89a81249a147e6a98bbb60b77e88719344e16963 +Author: Tobi Oetiker +Date: Tue Sep 20 23:01:12 2005 +0000 + + prepare for the release of smokeping-20050921_trunk + +commit ce3590638105b69b537589f14cd3109f93315293 +Author: Tobi Oetiker +Date: Mon Sep 19 23:00:59 2005 +0000 + + prepare for the release of smokeping-20050920_trunk + +commit c616eb281b2211395a5cf03cc31d7d803227eb89 +Author: Niko Tyni +Date: Mon Sep 19 12:48:06 2005 +0000 + + * (trunk,2.0)/ + doc/smokeping_upgrade.pod: + + fixed version numbers + +commit d0c878bb2ea868bb95fbc7117465efbe6fe72d70 +Author: Tobi Oetiker +Date: Sun Sep 18 23:01:05 2005 +0000 + + prepare for the release of smokeping-20050919_trunk + +commit 83700c2a45a1c8e6f22954e9cc9669ca60f08206 +Author: Tobi Oetiker +Date: Sun Sep 18 19:08:33 2005 +0000 + + added halfway ping idea + +commit 20e34cad05efc1ec279b912a6bd61a77b3288975 +Author: Tobi Oetiker +Date: Sat Sep 17 23:00:52 2005 +0000 + + prepare for the release of smokeping-20050918_trunk + +commit 5186621fd92524792c03406d61d0cecf74e4dbbc +Author: Tobi Oetiker +Date: Fri Sep 16 23:00:51 2005 +0000 + + prepare for the release of smokeping-20050917_trunk + +commit 88bbf618e858f433fab37dc7578ab48eded70d00 +Author: Tobi Oetiker +Date: Thu Sep 15 23:01:04 2005 +0000 + + prepare for the release of smokeping-20050916_trunk + +commit 1b20b84b83594cd8178c88b7b6227c59d27a4171 +Author: Tobi Oetiker +Date: Wed Sep 14 23:00:52 2005 +0000 + + prepare for the release of smokeping-20050915_trunk + +commit d12d5e62a94e78c13abf29dbe8c099f662e6ba23 +Author: Niko Tyni +Date: Wed Sep 14 19:45:37 2005 +0000 + + + (trunk)/ + CHANGES: + + reword the reload stuff + +commit f0021857e52510645acf59997de6b5ee952186c3 +Author: Niko Tyni +Date: Wed Sep 14 19:44:00 2005 +0000 + + * (trunk)/ + lib/Smokeping.pm, + bin/smokeping.dist, + CHANGES, + TODO: + + reload the config file on HUP signal and bail out if it's broken. + After reloading, restart gracefully so that no measurement is + interrupted. The signal can also be triggered by 'smokeping --reload'. + +commit d788fb4fa54adfb8cc2d8d0344bdb9a7af2d642d +Author: Niko Tyni +Date: Wed Sep 14 17:01:14 2005 +0000 + + * (trunk,2.0)/ + doc/smokeping_extend.pod, + lib/Smokeping.pm: + + small documentation fixes + +commit 48c103c0ee1480b1fc98abad693d8d1469e9ae85 +Author: Tobi Oetiker +Date: Tue Sep 13 23:00:58 2005 +0000 + + prepare for the release of smokeping-20050914_trunk + +commit 97b64b61cd4b395b612620e721b55f9cc61bd610 +Author: Niko Tyni +Date: Tue Sep 13 11:17:39 2005 +0000 + + * lib/Smokeping.pm (trunk,2.0), + CHANGE (trunk,2.0): + + made some alert docs in smokeping_config visible + +commit 954c1303bf9aa057100cd61f89e4797f6cf8d7c6 +Author: Niko Tyni +Date: Tue Sep 13 11:09:43 2005 +0000 + + * lib/Smokeping.pm (trunk): + + another edgetrigger fix + +commit 480b4f632984a880237acd0c92fbc97ad5578ad7 +Author: Niko Tyni +Date: Tue Sep 13 10:59:11 2005 +0000 + + * lib/Smokeping.pm (trunk): + + edgetrigger fix + +commit a1d59c4e0289ad21308ef6965bb229ad04dde4c7 +Author: Tobi Oetiker +Date: Mon Sep 12 23:01:12 2005 +0000 + + prepare for the release of smokeping-20050913_trunk + +commit 7fc2d592a65b39b9e4a8b9fc44f6324e291fba1e +Author: Niko Tyni +Date: Mon Sep 12 14:09:29 2005 +0000 + + * lib/Smokeping.pm (trunk), + doc/smokeping_upgrade.pod (trunk), + CHANGES (trunk), + TODO (trunk): + + optionally only send alerts when the state changes ('edgetrigger'). + (untested yet) + +commit f84dd88683a50d232722ca9f622a50a86b2531a9 +Author: Tobi Oetiker +Date: Sun Sep 11 23:01:08 2005 +0000 + + prepare for the release of smokeping-20050912_trunk + +commit 617e8a3551de97eef26b709682b0b0511af5c282 +Author: Tobi Oetiker +Date: Sat Sep 10 23:00:54 2005 +0000 + + prepare for the release of smokeping-20050911_trunk + +commit 13b3fdf76532364cb8a66a61042432e38a1363d0 +Author: Tobi Oetiker +Date: Fri Sep 9 23:00:52 2005 +0000 + + prepare for the release of smokeping-20050910_trunk + +commit db18af300e1ee4598243eccb9b36d745cd95becb +Author: Niko Tyni +Date: Fri Sep 9 20:21:44 2005 +0000 + + * README (2.0) + + tiny fixes + * README (trunk): + + merged 2.0 changes + +commit e818279a5cd867bd9d3dc6d7dd25ed64245c6d3a +Author: Niko Tyni +Date: Fri Sep 9 18:50:36 2005 +0000 + + * lib/Smokeping.pm (trunk), + CHANGES (trunk): + + try to trigger an alert with the minimum number of values needed for it + rather than require a stack with the maximum number of possible values. + See http://lists.ee.ethz.ch/smokeping-users/msg01654.html for the problem. + +commit 198ad5785a314d588f8974ee4ba2a4e8a3fe84c6 +Author: Niko Tyni +Date: Fri Sep 9 05:04:04 2005 +0000 + + * {trunk,2.0}/htdocs/smokeping.cgi.dist + + fixed a glitch in documentation + +commit bba6237f781dd30247fb7969ec7afe88b2f1be97 +Author: Tobi Oetiker +Date: Thu Sep 8 23:01:08 2005 +0000 + + prepare for the release of smokeping-20050909_trunk + +commit 6a3b779d7c9b8478f29acd58e1490a0efe669989 +Author: Tobi Oetiker +Date: Thu Sep 8 14:16:50 2005 +0000 + + added TOP10 wish + +commit c46c5fc16f5393a89806cd6a8abf30aa38360325 +Author: Tobi Oetiker +Date: Wed Sep 7 23:01:05 2005 +0000 + + prepare for the release of smokeping-20050908_trunk + +commit e158d53556f9eab5c89a04b7654b4df0bc2aa5d0 +Author: Niko Tyni +Date: Wed Sep 7 18:45:42 2005 +0000 + + * trunk/TODO: + + make 'active alerts' (whatever that means, have to think + this through) visible (eg. different colour) in the CGI menu + +commit 67728381e577ead951fc6a4d22e7f316af4da9cd +Author: Tobi Oetiker +Date: Tue Sep 6 23:00:53 2005 +0000 + + prepare for the release of smokeping-20050907_trunk + +commit b35ffd3e11bb092273d1831708632e62216d2b56 +Author: Niko Tyni +Date: Tue Sep 6 17:24:10 2005 +0000 + + * {2.0,trunk}/CHANGES: + + document r169 and r170 (logo autogeneration) + +commit 46af3fd04bfb97a53ffb1a67b74eeb8ba2d2ee74 +Author: Niko Tyni +Date: Tue Sep 6 17:16:44 2005 +0000 + + * trunk:lib/Smokeping.pm + + regenerate the logo images if Smokeping.pm is newer than the old ones + +commit dec26a16f5abcc9db5770b35d12c9b969b5c84d7 +Author: Niko Tyni +Date: Tue Sep 6 15:14:14 2005 +0000 + + * trunk:lib/Smokeping.pm + + merged new logos from 2.0:lib/Smokeping.pm r144:r145 into trunk + +commit c2bf9c3c752ed3ae795fe7d72607e5c1732de843 +Author: Tobi Oetiker +Date: Mon Sep 5 23:00:49 2005 +0000 + + prepare for the release of smokeping-20050906_trunk + +commit 9abc22db7afb02eaddaa546c3a72475ff0bae0da +Author: Niko Tyni +Date: Mon Sep 5 17:10:12 2005 +0000 + + * {trunk,2.0}/doc/smokeping_upgrade.pod: + + add a missing =back + +commit b145432af48908a9b61587c5e1d03d5e12cc712e +Author: Tobi Oetiker +Date: Mon Sep 5 06:09:05 2005 +0000 + + prepare for the release of smokeping-20050905_trunk + +commit 48faec3c1f481a0120aa5363c08c531279f23941 +Author: Tobi Oetiker +Date: Mon Sep 5 06:07:45 2005 +0000 + + merge with 2.0.1 changes + +commit f5602215b928f8dd0cc8dee28b4f7bb87307254b +Author: Niko Tyni +Date: Sun Sep 4 16:46:18 2005 +0000 + + Trunk: removed doc/.cvsignore + +commit 52de638f8e7e13dd62a4e7906387be72969a4168 +Merge: 0950447 0fb4bc7 +Author: Niko Tyni +Date: Sun Sep 4 16:23:12 2005 +0000 + + Copied branches/2.0 to trunk/software + +commit 0fb4bc74b24ea96e80d4e27428b8c2451fbf0eb5 +Author: Niko Tyni +Date: Sun Sep 4 11:40:42 2005 +0000 + + * lib/Smokeping.pm, + CHANGES: + + don't create directories in "datadir" when running as a CGI + +commit 3946df708ae20686c8453eb55be934103daf2f7e +Author: Niko Tyni +Date: Sun Sep 4 11:34:08 2005 +0000 + + * lib/Smokeping.pm, + lib/Smokeping/probes/base.pm, + doc/smokeping_upgrade.pod, + TODO, + CHANGES: + + the DYNAMIC-related files (.adr and .snmp) can now be located outside "datadir" + by specifying the new configuration variable "dyndir" + +commit 733f5ee3d4aad0c1a21d796d5a36baa82389e199 +Author: Niko Tyni +Date: Sun Sep 4 09:20:48 2005 +0000 + + * 2.0/lib/Smokeping.pm, + 2.0/TODO, + 2.0/CHANGES: + + return '404 not found' when DYNAMIC updates fail + +commit 08a913068ea426a7bd7c520ef140f3a2f50b8939 +Author: Niko Tyni +Date: Sun Sep 4 07:40:37 2005 +0000 + + * TODO: + + CGI::Carp is already implemented + +commit b24bc862beab1ac7bc8467d83321e56569e4138f +Author: Tobi Oetiker +Date: Thu Sep 1 10:29:44 2005 +0000 + + fixed spelling + +commit 04e1ef4cd80ad08455452d56aa4b953ed3a53057 +Author: Niko Tyni +Date: Tue Aug 30 12:38:35 2005 +0000 + + * 2.0/lib/Smokeping.pm: + + make the address of the remote client appear in the web server's error log + +commit fcaa98c7edf28d8d16ff3f970460d2a0bcbd409d +Author: Niko Tyni +Date: Mon Aug 29 12:04:26 2005 +0000 + + * 2.0/lib/Smokeping.pm: + + use CGI::Carp and warn() for do_cgilog() to get timestamps there as well + +commit b845e8f36b17287858130cac979914b3851189d3 +Author: Niko Tyni +Date: Thu Aug 25 11:36:30 2005 +0000 + + * 2.0/Makefile: + + made the 'rename-man' target idempotent + +commit 097c0c8590821246ac6630e7f2d72c0db62ea69d +Author: Niko Tyni +Date: Tue Aug 23 19:13:31 2005 +0000 + + * 2.0/TODO: + + CGI: return something else than 200 OK in error situations + + config: make .adr dir configurable + +commit 69064fb816bd54a08ffd92760f125a5d83793250 +Author: Niko Tyni +Date: Tue Aug 23 12:43:37 2005 +0000 + + * 2.0/lib/Smokeping.pm, + 2.0/CHANGES: + + make errors in DYNAMIC updates appear in the web server error log + * 2.0/TODO: + + replace the __WARN__ and __DIE__ handlers with CGI::Carp? + +commit 2f01fa7db139ec0141bf5e7f8d8e2223069d3c68 +Author: Niko Tyni +Date: Thu Aug 18 20:20:00 2005 +0000 + + * branches/2.0/doc/smokeping_upgrade.pod: + + document the tuning of RRD DS parameters + +commit a23d80aaccf4392e8e703eea13440d3c19ca7c55 +Author: Niko Tyni +Date: Thu Aug 18 18:44:26 2005 +0000 + + * 2.0/lib/Config/Grammar.pm: + + update to official version 1.02 + +commit cfe62bb62be56069c1507c18e2ab842fe2ef06a9 +Author: Niko Tyni +Date: Thu Aug 18 18:38:44 2005 +0000 + + * TODO: + + configurable RRD parameters per target? + +commit 237c2131e3f216eccd4b472e456d16f4dbe20456 +Author: Niko Tyni +Date: Fri Aug 5 20:43:55 2005 +0000 + + * remove a quotemeta() call in Config::Grammar to allow metacharacters + at the right side of '@define' + -- niko, reported by Warrick FitzGerald + +commit caea6ae36aaacadab7029f172821899d237108f4 +Author: Tobi Oetiker +Date: Fri Jul 29 08:14:17 2005 +0000 + + set LC_NUMERIC to C to help people that would otherwhise get , as decimal separator + +commit 7c05e52c7486b782ea8fe83f61eda56f05fd2613 +Author: Niko Tyni +Date: Wed Jul 27 11:45:20 2005 +0000 + + * 2.0/lib/Smokeping/probes/CiscoRTTMonEchoICMP.pm, + 2.0/CHANGES: + + bugfix for CiscoRTTMonEchoICMP packetsize variable + -- niko, from Sam Stickland + +commit 3ca78feffa42b2863dcc23c2143d96bead1e107f +Author: Tobi Oetiker +Date: Mon Jul 4 05:58:11 2005 +0000 + + the old pngs in __navcache did not get removed properly ... + +commit 6c3d9be08286f6bf6b21bfb7e4f8ee77900025df +Author: Tobi Oetiker +Date: Sun Jul 3 22:22:05 2005 +0000 + + backslash after LinuUp + +commit f3a0711e88ccf8e43773dc41518b3dbbc2b87a32 +Author: Tobi Oetiker +Date: Sun Jul 3 22:17:00 2005 +0000 + + tune datasources + +commit 66c8d49cbe278316114a6eef8ccb509c9e67d0ba +Author: Tobi Oetiker +Date: Sun Jul 3 22:15:20 2005 +0000 + + tune the rrd files for min/max/heartbeat + +commit b5a21fd2221f92bf7db544bc265a76d41912a633 +Author: Tobi Oetiker +Date: Thu Jun 2 13:55:58 2005 +0000 + + updated release tags so that they should protect against duplicate execution + +commit 395461bfc00f6b3c98540c870fd24959d2c1466f +Author: Niko Tyni +Date: Thu Jun 2 10:58:17 2005 +0000 + + * 2.0/Makefile: + + new target 'increment-CHANGES-version intended for automatically + updating CHANGES when releasing a new version. + +commit 54b0cfd69a5ea9dd38b27bb1b6880b97bf9bc27d +Author: Niko Tyni +Date: Wed Jun 1 11:29:44 2005 +0000 + + * 2.0/doc/smokeping_upgrade.pod: + + mention tSmoke inclusion + * 2.0/bin/tSmoke.dist, 2.0/Makefile: + + make tSmoke require the current Smokeping.pm version + + add tSmoke to the 'patch' Makefile target to keep it up to date + * 2.0/etc/config.dist: + + add the 'tmail' variable + * 2.0/CHANGES: + + mention Dan as the original tSmoke author + +commit 9791370bdbea2be98b9f715a4cea7bbfc5ec9880 +Author: Tobi Oetiker +Date: Tue May 31 20:14:23 2005 +0000 + + prepare for the release of smokeping-2.0rc5 + +commit dbad531025c7f6ffe665c1514af416658fc6d3f4 +Author: Niko Tyni +Date: Tue May 31 19:50:03 2005 +0000 + + * 2.0/CHANGES: + + Officially include the tSmoke script from the contrib download directory. + +commit a596fb2a0d96b7300048c27591cb3502c2b41950 +Author: Niko Tyni +Date: Tue May 31 19:27:33 2005 +0000 + + * 2.0/bin/tSmoke.dist: + + Remove the PROBE_CONF reference; this version of tSmoke is now for 2.x only. + +commit 8a4ec2a4345c457fca47a1a7e2b4f40d2cf6fea5 +Author: Niko Tyni +Date: Tue May 31 19:18:17 2005 +0000 + + Delete trailing DOS newlines from tSmoke files. + +commit 02b65c3987f68a239c92376cbf24bc066a04d38d +Author: Niko Tyni +Date: Thu May 26 19:24:08 2005 +0000 + + * tSmoke stuff; no testing done yet + + 2.0/lib/Smokeping.pm: include config file support + + 2.0/tSmoke.v4.README: integrate into tSmoke script + + 2.0/bin/tSmoke.dist: + * renamed from tSmoke.pl to tSmoke + * installation instructions updated + + 2.0/etc/tmail.dist: + * renamed from 2.0/etc/tmail + + 2.0/Makefile: + * doc file generation + +commit 3d1b4178cd7c5d7d10aca5c48bad8995afc31a58 +Author: Niko Tyni +Date: Thu May 26 18:45:05 2005 +0000 + + * Officially include tSmoke.pl from the Smokeping contrib directory + + add pristine v4 files; they still need modification + +commit 205fff014be2afad6cb4430a2fceabea8111c885 +Author: Niko Tyni +Date: Mon May 23 18:02:01 2005 +0000 + + * Perl 5.8.0 compatibility fix ("missing max for DS uptime") + +commit b83cf0d34b87d51fbdcf60d522b9c87ca4b4ccd2 +Author: Niko Tyni +Date: Sun May 22 11:15:46 2005 +0000 + + * 2.0/TODO: + + wishlist and other entries + +commit bf7247e98dfc9891a5adaaf60cbe392b25cb66ae +Author: Niko Tyni +Date: Wed May 18 11:19:09 2005 +0000 + + * branches/2.0/lib/Smokeping/RRDtools.pm, + branches/2.0/CHANGES: + + RRDtool 1.2.x compatibility fix ("unknown RRD version: 0003" on restart) + -- niko, reported by Sam Stickland + +commit 6b119de859a72910df1b1bf83ab4e978af019694 +Author: Niko Tyni +Date: Tue May 17 13:28:01 2005 +0000 + + * CHANGES: + + mention 2.0rcX releases + +commit 83ab1432a8f085b2139cab8a61227b80e5b319b4 +Author: Tobi Oetiker +Date: Wed May 11 19:58:21 2005 +0000 + + prepare for the release of smokeping-2.0rc4 + +commit ef0a8b6b72eff929a9f6a414e16db33ec3fac07d +Author: Tobi Oetiker +Date: Wed May 11 19:48:55 2005 +0000 + + fix zooming + +commit 2e6ce403d18425cf4f32dd5fc2cbb6e94eae39ae +Author: Niko Tyni +Date: Wed May 11 10:32:46 2005 +0000 + + * branches/2.0/CHANGES: + + include Marc Spitzer's first name too :) + +commit 292c6fc1ffce6460bd8fa97d31b912da3a90673b +Author: Niko Tyni +Date: Tue May 10 18:10:14 2005 +0000 + + * branches/2.0/doc/smokeping_upgrade.pod; + branches/2.0/CHANGES: + + changelog updates + +commit bd0e56f10d34b874a6d115391c4046199e5b330e +Author: Niko Tyni +Date: Tue May 10 17:48:16 2005 +0000 + + * branches/2.0/lib/Smokeping/probes/Curl.pm: + + added the 'insecure_ssl' (-k) option from + Marc Spitzer + +commit cc63560d93815cac731fefe82f24aee01aba7676 +Author: Niko Tyni +Date: Tue May 10 11:45:52 2005 +0000 + + * 2.0/lib/Smokeping.pm: + + make 'smokeping -static' work again + + document '@include' and its friends in smokeping_config + in addition to Config::Grammar + +commit 4036ad2a9afa4417c670fc52eaf67da37b0f8e45 +Author: Tobi Oetiker +Date: Mon May 9 18:38:03 2005 +0000 + + Double check the answer from the dns server and optionally enforce a + NOERROR response code -- Christoph.Heine in HaDiKo.DE + +commit e5123e033bdae8ceaf9ba847b929ec56d9dfa1e8 +Author: Tobi Oetiker +Date: Fri Apr 15 15:25:38 2005 +0000 + + make navigator feature more robust for situations where invalid timeranges are provided. + +commit 1f333688daf8f6dcf6f5a9c0be857dbcf0675dc3 +Author: Tobi Oetiker +Date: Fri Apr 15 15:03:01 2005 +0000 + + make unlink in navcache work + +commit 21df925982b162f18479c9ab8312e3573dcd7f24 +Author: Tobi Oetiker +Date: Wed Apr 13 19:31:27 2005 +0000 + + * added labeling fixes for rrdtool 1.2 compatibility + * added navigator mode where it is possible to alter the timerange shown in a graph. + This feature is sponsored by BeverlyCorp. + * fix fix for matcher cache skipping + +commit d9b0e622f870cc151ffe814abde6f62a47cdba58 +Author: Tobi Oetiker +Date: Wed Apr 13 11:35:52 2005 +0000 + + * updated version numbers in branche + * propperly deal with branches in the target tree that have no probe propperty set. + +commit c1676927af530e87f849df945deaa65182db5835 +Author: Tobi Oetiker +Date: Fri Mar 11 20:08:19 2005 +0000 + + removed extra space + +commit 021947ad8e963d89bdb00bd9de24dc962a3472bf +Author: Niko Tyni +Date: Thu Mar 10 11:00:44 2005 +0000 + + * 2.0/lib/Smokeping/probes/Curl.pm, + 2.0/doc/smokeping_upgrade.pod, + 2.0/CHANGES: + + new variables: extraargs and extrare + +commit 4d50cc7a6c80ea58ba492a875abcd250d44b1255 +Author: Niko Tyni +Date: Wed Mar 9 17:33:33 2005 +0000 + + * 2.0/lib/Config/Grammar.pm: + + change the last few ParseConfig references to Config::Grammar + +commit 1eda41862b7279427ab2da51b8dd12767118bfa4 +Author: Niko Tyni +Date: Wed Mar 9 17:17:06 2005 +0000 + + * change all ISG::ParseConfig references to its new name, Config::Grammar + +commit 8acdb5d58ba10ecc1dc1d57be7fdc151515c82e0 +Author: Niko Tyni +Date: Tue Mar 8 20:13:55 2005 +0000 + + * branches/2.0/lib/ISG/ParseConfig.pm: + + remove S<> tags from AUTHORS section as pod2html messes them up + + explicitly set VERSION to 2.0 + +commit 6e6508791dd10e9e2b5869187973b551dabc6fc9 +Author: Niko Tyni +Date: Tue Mar 8 19:57:08 2005 +0000 + + * branches/2.0/lib/Smokeping/RRDtools.pm: + + add AUTHOR section to the POD documentation. + +commit 6ffe2a9773e56a77bd1f3a07301154f0eeb10db3 +Author: Niko Tyni +Date: Sun Mar 6 17:41:33 2005 +0000 + + * trunk/website/bin/nestfix.pl: + + renamed to branches/2.0/util/fix-pod2html.pl + + * branches/2.0/Makefile: + + fix pod2html output with util/fix-pod2html.pl + + * branches/2.0/util/fix-pod2html.pl: + + v1.4: insert the "N" letter into too. + + * trunk/website/bin/pod2wml.sh: + + use fix-pod2html.pl from branches/2.0 + +commit 455ab143f72d62c07c9cef46ad3a726e2dcde065 +Author: Niko Tyni +Date: Sun Mar 6 17:16:04 2005 +0000 + + * lib/Smokeping/probes/base.pm: + + probe documents had a 'SEE_ALSO' section; + fixed to read "SEE ALSO". + +commit a4c71fe71c8f40a3534490a010cde424063003ef +Author: Tobi Oetiker +Date: Sun Feb 27 23:03:00 2005 +0000 + + rc2 + +commit f65e5b94977a51279c81e781720334d46b5c4e78 +Author: Niko Tyni +Date: Sun Feb 27 07:51:28 2005 +0000 + + Update to David's newest version (only HISTORY changes). + +commit df42119cf36c6a0cf4fe731722bdb8a986d6189b +Author: Niko Tyni +Date: Sat Feb 26 18:09:15 2005 +0000 + + Changed my e-mail address to the @iki.fi one. + +commit 30f15c0632513caff0c322c4cf1a8a1e10d9865c +Author: Niko Tyni +Date: Sat Feb 26 18:00:27 2005 +0000 + + SYNOPSYS is really spelled SYNOPSIS. Shame on me. + +commit 90caa79fbf5c6be6d42e2768d7a5868ac851895d +Author: Tobi Oetiker +Date: Wed Feb 23 06:36:45 2005 +0000 + + exclude .svn directories + +commit 3dbf456570a2fc2ab25e246a8f656ab709c79586 +Author: Tobi Oetiker +Date: Tue Feb 22 22:27:31 2005 +0000 + + synced Makefile Changes + +commit 77deee0905e61502052b0e873cef7b0bee03aaef +Author: Tobi Oetiker +Date: Tue Feb 22 21:50:28 2005 +0000 + + branched for 2.0 pulling 2.0rc1 into tags right away + +commit 09504475c41653b151b02605ea1ea7b53f86e222 +Author: Niko Tyni +Date: Tue Feb 22 20:18:14 2005 +0000 + + * don't create any RRD files if running as a CGI -- niko + +commit a8f89dab926914ba921b09adc6eaf2e92f9e0512 +Author: Niko Tyni +Date: Tue Feb 22 11:36:49 2005 +0000 + + ISG::ParseConfig bugfixes. + +commit d0f8c7c435da69415c4a391c80f1b39706c2d86d +Author: Niko Tyni +Date: Mon Feb 21 18:25:28 2005 +0000 + + CHANGES entries are now more consistent. + +commit baf9588e379b308d3e1f6869fde39e19d041c24d +Author: Niko Tyni +Date: Mon Feb 21 18:04:11 2005 +0000 + + * Curl timeouts work better now -- niko + * Curl User-Agent string doesn't need quotes anymore -- niko + +commit 2d8297b72b98005b7220c1ab47e9eeeb68711ac6 +Author: Niko Tyni +Date: Sun Feb 20 21:40:58 2005 +0000 + + * check at startup that existing RRD files conform to the config specifications -- niko + - new Smokeping::RRDtools module + - note in CHANGES and smokeping_upgrade + +commit 41b34e09a8692d9253d39d893ad09fdbfec0353c +Author: Niko Tyni +Date: Sat Feb 19 12:00:04 2005 +0000 + + Doc updates: + * mention the minimum # of pings in CHANGES and smokeping_upgrade + * add a note about possibly lowering the pings variable in the HTTP probes + +commit 2206afb0d6aaf857ecf739ae0b639bf215106294 +Author: Niko Tyni +Date: Fri Feb 18 20:55:29 2005 +0000 + + * complain if pings < 3 + * show the smoke for pings == 3 too, not only if >3 + +commit f6d4093e0dc827fbc853ed21ad3cb0ab1f898704 +Author: Niko Tyni +Date: Fri Feb 18 13:04:12 2005 +0000 + + * graph fixes for small numbers of pings -- Chris Wilson + * fix the LDAP probe killing the CGI with perl <5.6 -- Peter Farmer + * make the LDAP probe work withouth IO::Socket::SSL -- niko + + * make Curl description shorter -- Chris Wilson + * use CGI::Carp for CGI error handling + - remove the now unnecessary kludge from AnotherDNS + * don't call exit() in the daemon __DIE__ handler + * raise Curl and EchoPingHttp{,s} default timeouts + * add a section on timeouts to smokeping_upgrade + * add IO::Socket::SSL to smokeping_install + +commit 634fe0bf599454c203fd64e9f634e8a3d3abf1c5 +Author: Niko Tyni +Date: Thu Feb 17 13:20:41 2005 +0000 + + Tiny bugfixes. + +commit 09df26f453b88aafaddf53c08c740d32e1342336 +Author: Niko Tyni +Date: Wed Feb 16 20:18:48 2005 +0000 + + * announce smokeping version at startup + * add matcher list to smokeping_config + * make matcher names start with a capital letter + * make probe names start with a capital letter + * small doc updates + * one more pod2html makefile fix + +commit 94f0e104fd177a53bc73ab83838522785e785623 +Author: Niko Tyni +Date: Tue Feb 15 20:22:29 2005 +0000 + + Documentation glitches. + +commit 8edf3d57eea6c5895701c2a14376a93a11d068de +Author: Niko Tyni +Date: Tue Feb 15 20:00:10 2005 +0000 + + One more shot at pod2html... + +commit c8c27595a1bc378aa28ffc6868e7e8e65e06a814 +Author: Niko Tyni +Date: Tue Feb 15 17:50:51 2005 +0000 + + Further pod2html fixes - links are now properly relative. + +commit cc7bc1ad2526737978ccbbca541f90f5e8a1c82b +Author: Niko Tyni +Date: Tue Feb 15 16:44:17 2005 +0000 + + Fix typo in FPing.pm + +commit 085f51e6af606a8ab27b64e49f56c1908a9cb7a8 +Author: Niko Tyni +Date: Tue Feb 15 12:22:29 2005 +0000 + + * CHANGES updated + * FPing : added 'hostinterval' (-p), renamed 'mindelay' -> 'mininterval' (-i) + * Smokeping.pm: include links to the probe manpages from smokeping_config + +commit 4e4427e69c5a4aa2b688f14f117ba342a7f7b0fc +Author: Niko Tyni +Date: Tue Feb 15 11:38:06 2005 +0000 + + The ISG::ParseConfig patch: + * _dyndoc + * _varlist + * _sub for sections + +commit feee384f64b9d1e747b5e966bf6298c354ea8ae8 +Author: Niko Tyni +Date: Tue Feb 15 11:35:12 2005 +0000 + + Docs: more L<> links. + Makefile: really filter out smokeping_config.pod. + +commit 4051f04d0275f51929aa4a08b34dbf3c70788e8c +Author: Niko Tyni +Date: Tue Feb 15 10:53:04 2005 +0000 + + Makefile: + * add the 'symlinks' and 'remove-symlinks' targets as a desperate + measure to get L work. Bah. + +commit 02ea9b1fa581f890c9401fe23b75852541578d59 +Author: Niko Tyni +Date: Mon Feb 14 22:26:25 2005 +0000 + + * smokeping.cgi documentation resurrected + * L<> links in POD documents + * mess with pod2html in Makefile to get L<> links work + * add smokeping_upgrade and smokeping_examples to the README + * change software requirements in smokeping_install + +commit 3ca0d465ea56d4cdcea3271bff803e878a118f90 +Author: Niko Tyni +Date: Mon Feb 14 19:44:10 2005 +0000 + + * move probes and matchers documentation to doc/Smokeping + * include Smokeping::Examples documentation + * add ../bin to pod2html search path + +commit 79b181df37260a9305762f30144d8ab084ef40db +Author: Niko Tyni +Date: Mon Feb 14 17:10:46 2005 +0000 + + Makefile: + * move manpages to (hopefully) right sections + * new target rename-man adds the the full path to + perl module manpage filenames + * add pod2html temporary files to the IGNORE list + +commit e50291a517b1e672641e6d2e2aa251ae32327825 +Author: Niko Tyni +Date: Sun Feb 13 21:15:20 2005 +0000 + + Delete old examples in the killdoc target. + +commit 6d76521656e91daa160bc8019828f1b68d7aa5dc +Author: Niko Tyni +Date: Sun Feb 13 19:23:04 2005 +0000 + + Moved probes, matchers and ciscoRttMonMIB modules to lib/Smokeping. + +commit 6dba1afbe4b475a7d34f5ef867b7b37291cd1484 +Author: Niko Tyni +Date: Sun Feb 13 18:28:54 2005 +0000 + + Strip .pm from doc file names. + +commit 75584db4815e1f3c1c34d2ec51e2ace8534e97bf +Author: Niko Tyni +Date: Sun Feb 13 18:03:08 2005 +0000 + + Fix the spaces at the start of *** Probes *** and *** Targets *** + lines: the POD file should have a space, the example files shouldn't. + +commit 8a268f47f7987eb3110eee1c114e4dbf2e708c1b +Author: Niko Tyni +Date: Sun Feb 13 17:55:37 2005 +0000 + + Build fixes: + * add (empty) doc/{matchers,probes} directories + * Makefile: rule for building smokeping.html + +commit fb018875344d19e44f0139629bee319b7184bd5c +Author: Niko Tyni +Date: Sat Feb 12 19:32:02 2005 +0000 + + Minor documentation updates. + +commit 62241bbdbab4ba6d9cb35bb5f70de6a86108087e +Author: Niko Tyni +Date: Sat Feb 12 18:26:23 2005 +0000 + + Add missing ProbeDesc() for FPing6. + +commit 3247e9cd78e6bfbea9e3e18805ea6c930b04aee5 +Author: Tobi Oetiker +Date: Sat Feb 12 09:58:20 2005 +0000 + + be more careful after seting up Net::SMTP and Net::SNPP only use the handle + if we got one ... + +commit 3d62610c70896af4fef67480965898533a68e839 +Author: Tobi Oetiker +Date: Fri Feb 11 21:00:51 2005 +0000 + + added defaults and versioning up the 1.99001 + +commit f0b5385c63bd886c2bb58f0922cce564504ec12f +Author: Tobi Oetiker +Date: Fri Feb 11 21:00:15 2005 +0000 + + handle incomplete documentation propperly by entering notes about the missing bits into the generated documentation. + +commit b9ddd9310ea896a5e644f784013a386d9e7212a9 +Author: Tobi Oetiker +Date: Fri Feb 11 20:48:36 2005 +0000 + + niko has revamped smokeping to parse configuration much more strictly. It is all documented in + software/doc/smokeping_upgrade.pod + +commit 3623e33d0ae10eaeca653e00a3796495dbc0f713 +Author: Tobi Oetiker +Date: Fri Feb 11 20:22:38 2005 +0000 + + initial import diff --git a/CONTRIBUTORS b/CONTRIBUTORS new file mode 100644 index 0000000..c9d0ed6 --- /dev/null +++ b/CONTRIBUTORS @@ -0,0 +1,9 @@ +Contributors +============ + +* Tobias Oetiker => Main Author + +* Niko Tyni => Many Patches +* Simon Leinen => SNMP_Session.pm +* David Schweikert => Config::Grammar +* Jack Cummings => Proper graphs with pings > 10s. diff --git a/COPYRIGHT b/COPYRIGHT new file mode 100644 index 0000000..c0c1be4 --- /dev/null +++ b/COPYRIGHT @@ -0,0 +1,22 @@ + SmokePing - a ICMP latency logging and graphing + system. It consists of a daemon process which + organizes the latency measurements and a CGI which + presents the graphs. + + Copyright (c) 2001 Tobias Oetiker + + All rights reserved. + + 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., + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..e77696a --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, 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. + + GNU GENERAL PUBLIC LICENSE + 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 Apply These Terms to Your New Programs + + 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. + + + Copyright (C) 19yy + + 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., 675 Mass Ave, Cambridge, MA 02139, 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) 19yy 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. + + , 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/Makefile b/Makefile new file mode 100644 index 0000000..bc9d69b --- /dev/null +++ b/Makefile @@ -0,0 +1,801 @@ +# Makefile.in generated by automake 1.17 from Makefile.am. +# Makefile. Generated from Makefile.in by configure. + +# Copyright (C) 1994-2024 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + + + +# Copyright (C) 2011 Tobias Oetiker +# +# 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. + +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/smokeping +pkgincludedir = $(includedir)/smokeping +pkglibdir = $(libdir)/smokeping +pkglibexecdir = $(libexecdir)/smokeping +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/conftools/install-sh \ + $(top_srcdir)/conftools/missing README.md TODO \ + conftools/install-sh conftools/missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ + ; rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = -9 +DIST_TARGETS = dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = \ + find . \( -type f -a \! \ + \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print +ACLOCAL = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' aclocal-1.17 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AUTOCONF = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' autoconf +AUTOHEADER = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' autoheader +AUTOMAKE = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' automake-1.17 +AWK = mawk +CP = /usr/bin/cp +CSCOPE = cscope +CTAGS = ctags +CURL = /usr/bin/curl +CYGPATH_W = echo +DEFS = -DPACKAGE_NAME=\"smokeping\" -DPACKAGE_TARNAME=\"smokeping\" -DPACKAGE_VERSION=\"2.9.0\" -DPACKAGE_STRING=\"smokeping\ 2.9.0\" -DPACKAGE_BUGREPORT=\"tobi@oetiker.ch\" -DPACKAGE_URL=\"\" -DPACKAGE=\"smokeping\" -DVERSION=\"2.9.0\" +ECHO = /usr/bin/echo +ECHO_C = +ECHO_N = -n +ECHO_T = +ETAGS = etags +FIND = /usr/bin/find +GMAKE = /usr/bin/gmake +GREP = /usr/bin/grep +HTDOCSDIR = /usr/share/smokeping/www +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LIBOBJS = +LIBS = +LN = /usr/bin/ln +LTLIBOBJS = +MAKEINFO = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' makeinfo +MKDIR = /usr/bin/mkdir +MKDIR_P = /usr/bin/mkdir -p +NROFF = /usr/bin/nroff +PACKAGE = smokeping +PACKAGE_BUGREPORT = tobi@oetiker.ch +PACKAGE_NAME = smokeping +PACKAGE_STRING = smokeping 2.9.0 +PACKAGE_TARNAME = smokeping +PACKAGE_URL = +PACKAGE_VERSION = 2.9.0 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PERL5LIB = +RM = /usr/bin/rm +RMDIR = /usr/bin/rmdir +SED = /usr/bin/sed +SENDMAIL = /usr/sbin/sendmail +SET_MAKE = +SHELL = /bin/bash +STRIP = +URL_CAT = /usr/bin/curl --location +VERSION = 2.9.0 +WGET = /usr/bin/wget +abs_builddir = /root/smoke/smokeping-2.9.0 +abs_srcdir = /root/smoke/smokeping-2.9.0 +abs_top_builddir = /root/smoke/smokeping-2.9.0 +abs_top_srcdir = /root/smoke/smokeping-2.9.0 +am__leading_dot = . +am__rm_f_notfound = +am__tar = tar --format=ustar -chf - "$$tardir" +am__untar = tar -xf - +am__xargs_n = xargs -n +bindir = /usr/sbin +build_alias = x86_64-linux-gnu +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +enable_pkgonly = +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /root/smoke/smokeping-2.9.0/conftools/install-sh +libdir = /usr/share/perl5 +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = /var +mandir = ${prefix}/share/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = /run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = /usr/share/doc/smokeping +target_alias = +top_build_prefix = +top_builddir = . +top_srcdir = . +AUTOMAKE_OPTIONS = foreign +SUBDIRS = lib thirdparty bin doc etc htdocs +EXTRA_DIST = COPYRIGHT CHANGES CONTRIBUTORS LICENSE cpanfile VERSION README.md +all: all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + $(AM_V_at)$(MKDIR_P) "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ + dist-zip dist-zstd distcheck distclean distclean-generic \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + +.PRECIOUS: Makefile + + +dist-hook: + $(PERL) -i -p -e '"$(PACKAGE_VERSION)" =~ /(\d+)\.(\d+)\.(\d+)/ and $$v = sprintf("%d.%03d%03d",$$1,$$2,$$3) and s/^\$$VERSION\s*=\s*".*?"/\$$VERSION = "$$v"/' $(distdir)/lib/Smokeping.pm + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/Makefile.am b/Makefile.am new file mode 100644 index 0000000..1dc34c7 --- /dev/null +++ b/Makefile.am @@ -0,0 +1,24 @@ +# Copyright (C) 2011 Tobias Oetiker +# +# 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. + +AUTOMAKE_OPTIONS = foreign + +SUBDIRS = lib thirdparty bin doc etc htdocs + +EXTRA_DIST = COPYRIGHT CHANGES CONTRIBUTORS LICENSE cpanfile VERSION README.md + +dist-hook: + $(PERL) -i -p -e '"$(PACKAGE_VERSION)" =~ /(\d+)\.(\d+)\.(\d+)/ and $$v = sprintf("%d.%03d%03d",$$1,$$2,$$3) and s/^\$$VERSION\s*=\s*".*?"/\$$VERSION = "$$v"/' $(distdir)/lib/Smokeping.pm diff --git a/Makefile.in b/Makefile.in new file mode 100644 index 0000000..f56af4c --- /dev/null +++ b/Makefile.in @@ -0,0 +1,801 @@ +# Makefile.in generated by automake 1.17 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2024 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2011 Tobias Oetiker +# +# 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. +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir distdir-am dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/conftools/install-sh \ + $(top_srcdir)/conftools/missing README.md TODO \ + conftools/install-sh conftools/missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -700 -exec chmod u+rwx {} ';' \ + ; rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = -9 +DIST_TARGETS = dist-gzip +# Exists only to be overridden by the user if desired. +AM_DISTCHECK_DVI_TARGET = dvi +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = \ + find . \( -type f -a \! \ + \( -name .nfs* -o -name .smb* -o -name .__afs* \) \) -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CP = @CP@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CURL = @CURL@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ETAGS = @ETAGS@ +FIND = @FIND@ +GMAKE = @GMAKE@ +GREP = @GREP@ +HTDOCSDIR = @HTDOCSDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN = @LN@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR = @MKDIR@ +MKDIR_P = @MKDIR_P@ +NROFF = @NROFF@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PERL5LIB = @PERL5LIB@ +RM = @RM@ +RMDIR = @RMDIR@ +SED = @SED@ +SENDMAIL = @SENDMAIL@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +URL_CAT = @URL_CAT@ +VERSION = @VERSION@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_pkgonly = @enable_pkgonly@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AUTOMAKE_OPTIONS = foreign +SUBDIRS = lib thirdparty bin doc etc htdocs +EXTRA_DIST = COPYRIGHT CHANGES CONTRIBUTORS LICENSE cpanfile VERSION README.md +all: all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + $(am__remove_distdir) + $(AM_V_at)$(MKDIR_P) "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$(top_distdir)" distdir="$(distdir)" \ + dist-hook + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-zstd: distdir + tardir=$(distdir) && $(am__tar) | zstd -c $${ZSTD_CLEVEL-$${ZSTD_OPT--19}} >$(distdir).tar.zst + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + eval GZIP= gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + eval GZIP= gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + *.tar.zst*) \ + zstd -dc $(distdir).tar.zst | $(am__untar) ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) $(AM_DISTCHECK_DVI_TARGET) \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ + dist-zip dist-zstd distcheck distclean distclean-generic \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + +.PRECIOUS: Makefile + + +dist-hook: + $(PERL) -i -p -e '"$(PACKAGE_VERSION)" =~ /(\d+)\.(\d+)\.(\d+)/ and $$v = sprintf("%d.%03d%03d",$$1,$$2,$$3) and s/^\$$VERSION\s*=\s*".*?"/\$$VERSION = "$$v"/' $(distdir)/lib/Smokeping.pm + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/README.md b/README.md new file mode 100644 index 0000000..08d772e --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +``` + ____ _ ____ _ +/ ___| _ __ ___ ___ | | _____| _ \(_)_ __ __ _ +\___ \| '_ ` _ \ / _ \| |/ / _ \ |_) | | '_ \ / _` | + ___) | | | | | | (_) | < __/ __/| | | | | (_| | +|____/|_| |_| |_|\___/|_|\_\___|_| |_|_| |_|\__, | + |___/ +``` + +Original Authors: Tobias Oetiker and Niko Tyni + +[![Build Test](https://github.com/oetiker/SmokePing/actions/workflows/build-test.yaml/badge.svg)](https://github.com/oetiker/SmokePing/actions/workflows/build-test.yaml) + +SmokePing is a latency logging and graphing and +alerting system. It consists of a daemon process which +organizes the latency measurements and a CGI which +presents the graphs. + +SmokePing is ... +================ + + * extensible through plug-in modules + + * easy to customize through a webtemplate and an extensive + configuration file. + + * written in perl and should readily port to any unix system + + * an RRDtool frontend + + * able to deal with DYNAMIC IP addresses as used with + Cable and ADSL internet. + + +cheers +tobi diff --git a/TODO b/TODO new file mode 100644 index 0000000..efc11e9 --- /dev/null +++ b/TODO @@ -0,0 +1,54 @@ +* ALERTS based on input from multiple targets + Wouter Prins + + +* ASSIGN BLAME - HALFWAY PING + - A method for pinging the host in the middle between here and host B + (use traceroute for figuring out which one it should be) + This graph combined with the graph for here-B could show in which half of the link the problem lies ... + Russell Stuart + +* TOP10 + - show a list of the top 10 (most whatever graphs) + gmourani * privalodc.com + < they are willing to pay for this feature - tobi > + +* UPTIME + - define update via snmp pointer per device + - possibility to call an external script + -> generic uptime plugin? + +* ATTENTION + allow to define a threshold rule by looking at + two average medians and take action when threshold triped + +* ALIASES + allow to have atarget which points to a different target + only targets with host are considered + +* ALERTS + make 'active alerts' (whatever that means, have to think + this through) visible (eg. different colour) in the CGI menu + - suggested by Cornel Badea + + Targets/alertee: syntax to remove an address from the Alerts/to list + (maybe 'alertee = -user@somewhere'? This breaks real addresses + starting with '-'...require quoting for those?) + - from James Bouressa, + +* REMOTE EXECUTION + generic remote probe + - a possibility for basefork-derived probes to reuse the same + SSH connection with shell for() loops for all the pings to a given + target + +* GENERIC EXEC PROBE + - almost every probe has a different way of calling system(), exec() + or similar. This should be in an inheritable module. + - the module should also support extra commandline arguments + +* RRD + configurable RRD parameters per target? + - suggested by Leos Bitto, + + diff --git a/VERSION b/VERSION new file mode 100644 index 0000000..c8e38b6 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +2.9.0 diff --git a/aclocal.m4 b/aclocal.m4 new file mode 100644 index 0000000..df86bd5 --- /dev/null +++ b/aclocal.m4 @@ -0,0 +1,927 @@ +# generated automatically by aclocal 1.17 -*- Autoconf -*- + +# Copyright (C) 1996-2024 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],, +[m4_warning([this file was generated for autoconf 2.72. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.17' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.17], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.17])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([_AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) + +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_RM_F +# --------------- +# Check whether 'rm -f' without any arguments works. +# https://bugs.gnu.org/10828 +AC_DEFUN([_AM_PROG_RM_F], +[am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SLEEP_FRACTIONAL_SECONDS +# ---------------------------- +AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) + +# _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +# ----------------------------------- +# Determine the filesystem's resolution for file modification +# timestamps. The coarsest we know of is FAT, with a resolution +# of only two seconds, even with the most recent "exFAT" extensions. +# The finest (e.g. ext4 with large inodes, XFS, ZFS) is one +# nanosecond, matching clock_gettime. However, it is probably not +# possible to delay execution of a shell script for less than one +# millisecond, due to process creation overhead and scheduling +# granularity, so we don't check for anything finer than that. (See below.) +AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + _AS_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[]*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! +]) +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SILENT_RULES +# ---------------- +# Enable less verbose build rules support. +AC_DEFUN([_AM_SILENT_RULES], +[AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +])dnl +]) + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Set the default verbosity level to DEFAULT ("yes" being less verbose, "no" or +# empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])]) + +# Copyright (C) 2001-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +# Copyright (C) 2022-2024 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_XARGS_N +# ---------------- +# Check whether 'xargs -n' works. It should work everywhere, so the fallback +# is not optimized at all as we never expect to use it. +AC_DEFUN([_AM_PROG_XARGS_N], +[AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) + diff --git a/autom4te.cache/output.0 b/autom4te.cache/output.0 new file mode 100644 index 0000000..55cb0c0 --- /dev/null +++ b/autom4te.cache/output.0 @@ -0,0 +1,4837 @@ +@%:@! /bin/sh +@%:@ Guess values for system-dependent variables and create Makefiles. +@%:@ Generated by GNU Autoconf 2.72 for smokeping 2.9.0. +@%:@ +@%:@ Report bugs to . +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2023 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 ${ZSH_VERSION+y} && (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 e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (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 e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +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 case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and tobi@oetiker.ch +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +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 @S|@? 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 "@S|@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=`printf "%s\n" "$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 || +printf "%s\n" 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 case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$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 || +printf "%s\n" 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 ' + t clear + :clear + 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" || + { printf "%s\n" "$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 +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +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=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='smokeping' +PACKAGE_TARNAME='smokeping' +PACKAGE_VERSION='2.9.0' +PACKAGE_STRING='smokeping 2.9.0' +PACKAGE_BUGREPORT='tobi@oetiker.ch' +PACKAGE_URL='' + +ac_default_prefix=/opt/$PACKAGE_NAME-$PACKAGE_VERSION +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +PERL5LIB +HTDOCSDIR +enable_pkgonly +GMAKE +NROFF +SENDMAIL +FIND +MKDIR +RMDIR +RM +CP +LN +ECHO +GREP +SED +URL_CAT +WGET +CURL +PERL +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +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 +runstatedir +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 +am__quote' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_pkgonly +with_htdocs_dir +' + ac_precious_vars='build_alias +host_alias +target_alias +PERL +GMAKE +PERL5LIB' + + +# 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' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +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 + + 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=`printf "%s\n" "$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=`printf "%s\n" "$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 ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -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=`printf "%s\n" "$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=`printf "%s\n" "$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. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$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" ;; + *) printf "%s\n" "$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 runstatedir +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 || +printf "%s\n" 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 smokeping 2.9.0 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 + @<:@@S|@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] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --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/smokeping@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of smokeping 2.9.0:";; + esac + 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] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-pkgonly Skip all checking + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-htdocs-dir=DIR Where to install htdocs @<:@PREFIX/htdocs@:>@ + +Some influential environment variables: + PERL Path to local perl binary + GMAKE Path to local GNU Make binary + PERL5LIB Colon separated list of perl library directories + +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 . +_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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + 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 + printf "%s\n" "$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 +smokeping configure 2.9.0 +generated by GNU Autoconf 2.72 + +Copyright (C) 2023 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_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. Invocation command line was + + $ $0$ac_configure_args_raw + +_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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "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=`printf "%s\n" "$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=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$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 + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$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 + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/conftools" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +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. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +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,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$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=`printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-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 + + + + + +# need this to allow long path names +am__api_version='1.17' + + + + # 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. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +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 + ;; +esac +fi + if test ${ac_cv_path_install+y}; 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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$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' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf "%s\n" "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf "%s\n" "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='smokeping' + VERSION='2.9.0' + + +printf "%s\n" "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf "%s\n" "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + + + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_PERL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no" + ;; +esac ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "curl", so it can be a program name with args. +set dummy curl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CURL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $CURL in + [\\/]* | ?:[\\/]*) + ac_cv_path_CURL="$CURL" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_CURL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CURL" && ac_cv_path_CURL="no" + ;; +esac ;; +esac +fi +CURL=$ac_cv_path_CURL +if test -n "$CURL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5 +printf "%s\n" "$CURL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "wget", so it can be a program name with args. +set dummy wget; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_WGET+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $WGET in + [\\/]* | ?:[\\/]*) + ac_cv_path_WGET="$WGET" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_WGET="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_WGET" && ac_cv_path_WGET="no" + ;; +esac ;; +esac +fi +WGET=$ac_cv_path_WGET +if test -n "$WGET"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WGET" >&5 +printf "%s\n" "$WGET" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +URL_CAT="neither curl nor wget found" + +if test -x "$CURL"; then + URL_CAT="$CURL --location" +else + if test -x "$WGET"; then + URL_CAT="$WGET -O -" + fi +fi + + + +ac_perl_version="5.10.1" + +if test "x$PERL" != "x"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl version greater than or equal to $ac_perl_version" >&5 +printf %s "checking for perl version greater than or equal to $ac_perl_version... " >&6; } + $PERL -e "use $ac_perl_version;" >/dev/null 2>&1 + if test $? -ne 0; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; + as_fn_error $? "at least version 5.10.1 is required to run mojolicious" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; }; + fi +else + as_fn_error $? "could not find perl" "$LINENO" 5 +fi + + +# Extract the first word of "sed", so it can be a program name with args. +set dummy sed; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $SED in + [\\/]* | ?:[\\/]*) + ac_cv_path_SED="$SED" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_SED="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SED" && ac_cv_path_SED="no" + ;; +esac ;; +esac +fi +SED=$ac_cv_path_SED +if test -n "$SED"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +printf "%s\n" "$SED" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "grep", so it can be a program name with args. +set dummy grep; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GREP="$GREP" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GREP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GREP" && ac_cv_path_GREP="no" + ;; +esac ;; +esac +fi +GREP=$ac_cv_path_GREP +if test -n "$GREP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5 +printf "%s\n" "$GREP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "echo", so it can be a program name with args. +set dummy echo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ECHO+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $ECHO in + [\\/]* | ?:[\\/]*) + ac_cv_path_ECHO="$ECHO" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_ECHO="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_ECHO" && ac_cv_path_ECHO="no" + ;; +esac ;; +esac +fi +ECHO=$ac_cv_path_ECHO +if test -n "$ECHO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5 +printf "%s\n" "$ECHO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "ln", so it can be a program name with args. +set dummy ln; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LN+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $LN in + [\\/]* | ?:[\\/]*) + ac_cv_path_LN="$LN" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_LN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_LN" && ac_cv_path_LN="no" + ;; +esac ;; +esac +fi +LN=$ac_cv_path_LN +if test -n "$LN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LN" >&5 +printf "%s\n" "$LN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "cp", so it can be a program name with args. +set dummy cp; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $CP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CP="$CP" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_CP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CP" && ac_cv_path_CP="no" + ;; +esac ;; +esac +fi +CP=$ac_cv_path_CP +if test -n "$CP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 +printf "%s\n" "$CP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "rm", so it can be a program name with args. +set dummy rm; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_RM+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $RM in + [\\/]* | ?:[\\/]*) + ac_cv_path_RM="$RM" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_RM="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_RM" && ac_cv_path_RM="no" + ;; +esac ;; +esac +fi +RM=$ac_cv_path_RM +if test -n "$RM"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 +printf "%s\n" "$RM" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "rmdir", so it can be a program name with args. +set dummy rmdir; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_RMDIR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $RMDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_RMDIR="$RMDIR" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_RMDIR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_RMDIR" && ac_cv_path_RMDIR="no" + ;; +esac ;; +esac +fi +RMDIR=$ac_cv_path_RMDIR +if test -n "$RMDIR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5 +printf "%s\n" "$RMDIR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "mkdir", so it can be a program name with args. +set dummy mkdir; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MKDIR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $MKDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKDIR="$MKDIR" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_MKDIR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_MKDIR" && ac_cv_path_MKDIR="no" + ;; +esac ;; +esac +fi +MKDIR=$ac_cv_path_MKDIR +if test -n "$MKDIR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 +printf "%s\n" "$MKDIR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "find", so it can be a program name with args. +set dummy find; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_FIND+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $FIND in + [\\/]* | ?:[\\/]*) + ac_cv_path_FIND="$FIND" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_FIND="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_FIND" && ac_cv_path_FIND="no" + ;; +esac ;; +esac +fi +FIND=$ac_cv_path_FIND +if test -n "$FIND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5 +printf "%s\n" "$FIND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "sendmail", so it can be a program name with args. +set dummy sendmail; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SENDMAIL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $SENDMAIL in + [\\/]* | ?:[\\/]*) + ac_cv_path_SENDMAIL="$SENDMAIL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$PATH:/usr/sbin:/usr/lib" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_SENDMAIL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SENDMAIL" && ac_cv_path_SENDMAIL="/path/to/sendmail" + ;; +esac ;; +esac +fi +SENDMAIL=$ac_cv_path_SENDMAIL +if test -n "$SENDMAIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SENDMAIL" >&5 +printf "%s\n" "$SENDMAIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +for ac_prog in gnroff nroff +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_NROFF+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $NROFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_NROFF="$NROFF" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_NROFF="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +NROFF=$ac_cv_path_NROFF +if test -n "$NROFF"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5 +printf "%s\n" "$NROFF" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$NROFF" && break +done + + + +for ac_prog in gnumake 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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMAKE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMAKE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMAKE="$GMAKE" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMAKE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +GMAKE=$ac_cv_path_GMAKE +if test -n "$GMAKE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMAKE" >&5 +printf "%s\n" "$GMAKE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$GMAKE" && break +done + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking checking for gnu make availability" >&5 +printf %s "checking checking for gnu make availability... " >&6; } +if ( $GMAKE --version 2> /dev/null | $GREP GNU > /dev/null 2>&1 ); then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMAKE is GNU make" >&5 +printf "%s\n" "$GMAKE is GNU make" >&6; } +else + as_fn_error $? "GNU make not found. Try setting the GMAKE environment variable." "$LINENO" 5 +fi + +@%:@ Check whether --enable-pkgonly was given. +if test ${enable_pkgonly+y} +then : + enableval=$enable_pkgonly; +fi + + + +# $prefix stores the value of the --prefix command line option, or +# NONE if the option wasn't set. In the case that it wasn't set, make +# it be the default, so that we can use it to expand directories now. + +actual_prefix=$prefix +if test x$actual_prefix = xNONE; then + actual_prefix=$ac_default_prefix +fi + +HTDOCSDIR=${actual_prefix}/htdocs + +@%:@ Check whether --with-htdocs-dir was given. +if test ${with_htdocs_dir+y} +then : + withval=$with_htdocs_dir; HTDOCSDIR=$withval +fi + + + + + + + +# Check the necessary Perl modules + +mod_ok=1 +if test "$enable_pkgonly" != yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking checking for RRDs perl module" >&5 +printf %s "checking checking for RRDs perl module... " >&6; } + if ${PERL} -e 'use RRDs' 2>/dev/null ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Ok" >&5 +printf "%s\n" "Ok" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Failed" >&5 +printf "%s\n" "Failed" >&6; } + mod_ok=0 + fi +fi + +if test x$mod_ok = x0; then + 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$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+y} || &/ + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$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}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; 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=`printf "%s\n" "$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 +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$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 ${ZSH_VERSION+y} && (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 e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? 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 case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +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 || +printf "%s\n" 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 + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +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 "@S|@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=`printf "%s\n" "$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 || +printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. 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 + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_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 + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +smokeping config.status 2.9.0 +configured by $0, generated by GNU Autoconf 2.72, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2023 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' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +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 ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$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 + \printf "%s\n" "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 + printf "%s\n" "$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 + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "htdocs/Makefile") CONFIG_FILES="$CONFIG_FILES htdocs/Makefile" ;; + "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "thirdparty/Makefile") CONFIG_FILES="$CONFIG_FILES thirdparty/Makefile" ;; + "etc/config.dist") CONFIG_FILES="$CONFIG_FILES etc/config.dist" ;; + + *) 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+y} || CONFIG_FILES=$config_files +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" + + +eval set X " :F $CONFIG_FILES " +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=`printf "%s\n" "$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 '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$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 || +printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + 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@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$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 +s&@MKDIR_P@&$ac_MKDIR_P&;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"; } && + { printf "%s\n" "$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 +printf "%s\n" "$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 + ;; + + + + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + cat <. +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2023 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 ${ZSH_VERSION+y} && (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 e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (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 e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +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 case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and tobi@oetiker.ch +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +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 @S|@? 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 "@S|@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=`printf "%s\n" "$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 || +printf "%s\n" 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 case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$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 || +printf "%s\n" 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 ' + t clear + :clear + 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" || + { printf "%s\n" "$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 +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +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=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='smokeping' +PACKAGE_TARNAME='smokeping' +PACKAGE_VERSION='2.9.0' +PACKAGE_STRING='smokeping 2.9.0' +PACKAGE_BUGREPORT='tobi@oetiker.ch' +PACKAGE_URL='' + +ac_default_prefix=/opt/$PACKAGE_NAME-$PACKAGE_VERSION +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +PERL5LIB +HTDOCSDIR +enable_pkgonly +GMAKE +NROFF +SENDMAIL +FIND +MKDIR +RMDIR +RM +CP +LN +ECHO +GREP +SED +URL_CAT +WGET +CURL +PERL +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +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 +runstatedir +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_silent_rules +enable_pkgonly +with_htdocs_dir +' + ac_precious_vars='build_alias +host_alias +target_alias +PERL +GMAKE +PERL5LIB' + + +# 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' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +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 + + 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=`printf "%s\n" "$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=`printf "%s\n" "$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 ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -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=`printf "%s\n" "$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=`printf "%s\n" "$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. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$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" ;; + *) printf "%s\n" "$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 runstatedir +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 || +printf "%s\n" 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 smokeping 2.9.0 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 + @<:@@S|@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] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --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/smokeping@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of smokeping 2.9.0:";; + esac + 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] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-pkgonly Skip all checking + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-htdocs-dir=DIR Where to install htdocs @<:@PREFIX/htdocs@:>@ + +Some influential environment variables: + PERL Path to local perl binary + GMAKE Path to local GNU Make binary + PERL5LIB Colon separated list of perl library directories + +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 . +_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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + 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 + printf "%s\n" "$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 +smokeping configure 2.9.0 +generated by GNU Autoconf 2.72 + +Copyright (C) 2023 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_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. Invocation command line was + + $ $0$ac_configure_args_raw + +_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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "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=`printf "%s\n" "$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=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$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 + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$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 + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/conftools" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +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. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +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,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$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=`printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-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 + + + + + +# need this to allow long path names +am__api_version='1.17' + + + + # 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. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +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 + ;; +esac +fi + if test ${ac_cv_path_install+y}; 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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$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' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf "%s\n" "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf "%s\n" "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='smokeping' + VERSION='2.9.0' + + +printf "%s\n" "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf "%s\n" "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + + + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_PERL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no" + ;; +esac ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "curl", so it can be a program name with args. +set dummy curl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CURL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $CURL in + [\\/]* | ?:[\\/]*) + ac_cv_path_CURL="$CURL" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_CURL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CURL" && ac_cv_path_CURL="no" + ;; +esac ;; +esac +fi +CURL=$ac_cv_path_CURL +if test -n "$CURL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5 +printf "%s\n" "$CURL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "wget", so it can be a program name with args. +set dummy wget; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_WGET+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $WGET in + [\\/]* | ?:[\\/]*) + ac_cv_path_WGET="$WGET" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_WGET="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_WGET" && ac_cv_path_WGET="no" + ;; +esac ;; +esac +fi +WGET=$ac_cv_path_WGET +if test -n "$WGET"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WGET" >&5 +printf "%s\n" "$WGET" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +URL_CAT="neither curl nor wget found" + +if test -x "$CURL"; then + URL_CAT="$CURL --location" +else + if test -x "$WGET"; then + URL_CAT="$WGET -O -" + fi +fi + + + +ac_perl_version="5.10.1" + +if test "x$PERL" != "x"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl version greater than or equal to $ac_perl_version" >&5 +printf %s "checking for perl version greater than or equal to $ac_perl_version... " >&6; } + $PERL -e "use $ac_perl_version;" >/dev/null 2>&1 + if test $? -ne 0; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; + as_fn_error $? "at least version 5.10.1 is required to run mojolicious" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; }; + fi +else + as_fn_error $? "could not find perl" "$LINENO" 5 +fi + + +# Extract the first word of "sed", so it can be a program name with args. +set dummy sed; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $SED in + [\\/]* | ?:[\\/]*) + ac_cv_path_SED="$SED" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_SED="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SED" && ac_cv_path_SED="no" + ;; +esac ;; +esac +fi +SED=$ac_cv_path_SED +if test -n "$SED"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +printf "%s\n" "$SED" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "grep", so it can be a program name with args. +set dummy grep; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GREP="$GREP" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GREP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GREP" && ac_cv_path_GREP="no" + ;; +esac ;; +esac +fi +GREP=$ac_cv_path_GREP +if test -n "$GREP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5 +printf "%s\n" "$GREP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "echo", so it can be a program name with args. +set dummy echo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ECHO+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $ECHO in + [\\/]* | ?:[\\/]*) + ac_cv_path_ECHO="$ECHO" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_ECHO="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_ECHO" && ac_cv_path_ECHO="no" + ;; +esac ;; +esac +fi +ECHO=$ac_cv_path_ECHO +if test -n "$ECHO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5 +printf "%s\n" "$ECHO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "ln", so it can be a program name with args. +set dummy ln; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LN+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $LN in + [\\/]* | ?:[\\/]*) + ac_cv_path_LN="$LN" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_LN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_LN" && ac_cv_path_LN="no" + ;; +esac ;; +esac +fi +LN=$ac_cv_path_LN +if test -n "$LN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LN" >&5 +printf "%s\n" "$LN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "cp", so it can be a program name with args. +set dummy cp; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $CP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CP="$CP" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_CP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CP" && ac_cv_path_CP="no" + ;; +esac ;; +esac +fi +CP=$ac_cv_path_CP +if test -n "$CP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 +printf "%s\n" "$CP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "rm", so it can be a program name with args. +set dummy rm; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_RM+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $RM in + [\\/]* | ?:[\\/]*) + ac_cv_path_RM="$RM" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_RM="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_RM" && ac_cv_path_RM="no" + ;; +esac ;; +esac +fi +RM=$ac_cv_path_RM +if test -n "$RM"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 +printf "%s\n" "$RM" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "rmdir", so it can be a program name with args. +set dummy rmdir; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_RMDIR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $RMDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_RMDIR="$RMDIR" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_RMDIR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_RMDIR" && ac_cv_path_RMDIR="no" + ;; +esac ;; +esac +fi +RMDIR=$ac_cv_path_RMDIR +if test -n "$RMDIR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5 +printf "%s\n" "$RMDIR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "mkdir", so it can be a program name with args. +set dummy mkdir; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MKDIR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $MKDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKDIR="$MKDIR" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_MKDIR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_MKDIR" && ac_cv_path_MKDIR="no" + ;; +esac ;; +esac +fi +MKDIR=$ac_cv_path_MKDIR +if test -n "$MKDIR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 +printf "%s\n" "$MKDIR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "find", so it can be a program name with args. +set dummy find; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_FIND+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $FIND in + [\\/]* | ?:[\\/]*) + ac_cv_path_FIND="$FIND" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_FIND="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_FIND" && ac_cv_path_FIND="no" + ;; +esac ;; +esac +fi +FIND=$ac_cv_path_FIND +if test -n "$FIND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5 +printf "%s\n" "$FIND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "sendmail", so it can be a program name with args. +set dummy sendmail; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SENDMAIL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $SENDMAIL in + [\\/]* | ?:[\\/]*) + ac_cv_path_SENDMAIL="$SENDMAIL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$PATH:/usr/sbin:/usr/lib" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_SENDMAIL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SENDMAIL" && ac_cv_path_SENDMAIL="/path/to/sendmail" + ;; +esac ;; +esac +fi +SENDMAIL=$ac_cv_path_SENDMAIL +if test -n "$SENDMAIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SENDMAIL" >&5 +printf "%s\n" "$SENDMAIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +for ac_prog in gnroff nroff +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_NROFF+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $NROFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_NROFF="$NROFF" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_NROFF="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +NROFF=$ac_cv_path_NROFF +if test -n "$NROFF"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5 +printf "%s\n" "$NROFF" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$NROFF" && break +done + + + +for ac_prog in gnumake 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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMAKE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMAKE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMAKE="$GMAKE" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMAKE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +GMAKE=$ac_cv_path_GMAKE +if test -n "$GMAKE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMAKE" >&5 +printf "%s\n" "$GMAKE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$GMAKE" && break +done + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking checking for gnu make availability" >&5 +printf %s "checking checking for gnu make availability... " >&6; } +if ( $GMAKE --version 2> /dev/null | $GREP GNU > /dev/null 2>&1 ); then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMAKE is GNU make" >&5 +printf "%s\n" "$GMAKE is GNU make" >&6; } +else + as_fn_error $? "GNU make not found. Try setting the GMAKE environment variable." "$LINENO" 5 +fi + +@%:@ Check whether --enable-pkgonly was given. +if test ${enable_pkgonly+y} +then : + enableval=$enable_pkgonly; +fi + + + +# $prefix stores the value of the --prefix command line option, or +# NONE if the option wasn't set. In the case that it wasn't set, make +# it be the default, so that we can use it to expand directories now. + +actual_prefix=$prefix +if test x$actual_prefix = xNONE; then + actual_prefix=$ac_default_prefix +fi + +HTDOCSDIR=${actual_prefix}/htdocs + +@%:@ Check whether --with-htdocs-dir was given. +if test ${with_htdocs_dir+y} +then : + withval=$with_htdocs_dir; HTDOCSDIR=$withval +fi + + + + + + + +# Check the necessary Perl modules + +mod_ok=1 +if test "$enable_pkgonly" != yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking checking for RRDs perl module" >&5 +printf %s "checking checking for RRDs perl module... " >&6; } + if ${PERL} -e 'use RRDs' 2>/dev/null ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Ok" >&5 +printf "%s\n" "Ok" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Failed" >&5 +printf "%s\n" "Failed" >&6; } + mod_ok=0 + fi +fi + +if test x$mod_ok = x0; then + 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$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+y} || &/ + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$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}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; 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=`printf "%s\n" "$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 +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$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 ${ZSH_VERSION+y} && (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 e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? 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 case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +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 || +printf "%s\n" 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 + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +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 "@S|@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=`printf "%s\n" "$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 || +printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. 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 + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_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 + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +smokeping config.status 2.9.0 +configured by $0, generated by GNU Autoconf 2.72, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2023 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' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +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 ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$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 + \printf "%s\n" "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 + printf "%s\n" "$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 + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "htdocs/Makefile") CONFIG_FILES="$CONFIG_FILES htdocs/Makefile" ;; + "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "thirdparty/Makefile") CONFIG_FILES="$CONFIG_FILES thirdparty/Makefile" ;; + "etc/config.dist") CONFIG_FILES="$CONFIG_FILES etc/config.dist" ;; + + *) 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+y} || CONFIG_FILES=$config_files +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" + + +eval set X " :F $CONFIG_FILES " +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=`printf "%s\n" "$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 '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$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 || +printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + 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@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$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 +s&@MKDIR_P@&$ac_MKDIR_P&;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"; } && + { printf "%s\n" "$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 +printf "%s\n" "$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 + ;; + + + + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + cat <. +@%:@ +@%:@ +@%:@ Copyright (C) 1992-1996, 1998-2017, 2020-2023 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 ${ZSH_VERSION+y} && (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 e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (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 e in @%:@( + e) case \`(set -o) 2>/dev/null\` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +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 case e in @%:@( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in @%:@( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in @%:@( + e) 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and tobi@oetiker.ch +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +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 @S|@? 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 "@S|@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=`printf "%s\n" "$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 || +printf "%s\n" 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 case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +fi # as_fn_arith + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$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 || +printf "%s\n" 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 ' + t clear + :clear + 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" || + { printf "%s\n" "$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 +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +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=. +LIB@&t@OBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='smokeping' +PACKAGE_TARNAME='smokeping' +PACKAGE_VERSION='2.9.0' +PACKAGE_STRING='smokeping 2.9.0' +PACKAGE_BUGREPORT='tobi@oetiker.ch' +PACKAGE_URL='' + +ac_default_prefix=/opt/$PACKAGE_NAME-$PACKAGE_VERSION +ac_subst_vars='LTLIBOBJS +LIB@&t@OBJS +PERL5LIB +HTDOCSDIR +enable_pkgonly +GMAKE +NROFF +SENDMAIL +FIND +MKDIR +RMDIR +RM +CP +LN +ECHO +GREP +SED +URL_CAT +WGET +CURL +PERL +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +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 +runstatedir +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_silent_rules +enable_pkgonly +with_htdocs_dir +' + ac_precious_vars='build_alias +host_alias +target_alias +PERL +GMAKE +PERL5LIB' + + +# 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' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +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 + + 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=`printf "%s\n" "$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=`printf "%s\n" "$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 ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -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=`printf "%s\n" "$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=`printf "%s\n" "$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. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$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" ;; + *) printf "%s\n" "$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 runstatedir +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 || +printf "%s\n" 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 smokeping 2.9.0 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 + @<:@@S|@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] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --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/smokeping@:>@ + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of smokeping 2.9.0:";; + esac + 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] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-pkgonly Skip all checking + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-htdocs-dir=DIR Where to install htdocs @<:@PREFIX/htdocs@:>@ + +Some influential environment variables: + PERL Path to local perl binary + GMAKE Path to local GNU Make binary + PERL5LIB Colon separated list of perl library directories + +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 . +_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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + 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 + printf "%s\n" "$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 +smokeping configure 2.9.0 +generated by GNU Autoconf 2.72 + +Copyright (C) 2023 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_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?@<:@ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. Invocation command line was + + $ $0$ac_configure_args_raw + +_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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "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=`printf "%s\n" "$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=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$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 + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$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 + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "@%:@define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "@%:@define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in @%:@( + */*) : + ;; @%:@( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/conftools" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in @%:@( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +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. +if test -f "${ac_aux_dir}config.guess"; then + ac_@&t@config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_@&t@config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_@&t@configure="$SHELL ${ac_aux_dir}configure" +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,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$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=`printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-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 + + + + + +# need this to allow long path names +am__api_version='1.17' + + + + # 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. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +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 + ;; +esac +fi + if test ${ac_cv_path_install+y}; 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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$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' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in @%:@( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf "%s\n" "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in @%:@( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +@%:@ Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in @%:@( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in @%:@( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf "%s\n" "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in @%:@( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='smokeping' + VERSION='2.9.0' + + +printf "%s\n" "@%:@define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf "%s\n" "@%:@define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + + + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_PERL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no" + ;; +esac ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "curl", so it can be a program name with args. +set dummy curl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CURL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $CURL in + [\\/]* | ?:[\\/]*) + ac_cv_path_CURL="$CURL" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_CURL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CURL" && ac_cv_path_CURL="no" + ;; +esac ;; +esac +fi +CURL=$ac_cv_path_CURL +if test -n "$CURL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5 +printf "%s\n" "$CURL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "wget", so it can be a program name with args. +set dummy wget; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_WGET+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $WGET in + [\\/]* | ?:[\\/]*) + ac_cv_path_WGET="$WGET" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_WGET="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_WGET" && ac_cv_path_WGET="no" + ;; +esac ;; +esac +fi +WGET=$ac_cv_path_WGET +if test -n "$WGET"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WGET" >&5 +printf "%s\n" "$WGET" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +URL_CAT="neither curl nor wget found" + +if test -x "$CURL"; then + URL_CAT="$CURL --location" +else + if test -x "$WGET"; then + URL_CAT="$WGET -O -" + fi +fi + + + +ac_perl_version="5.10.1" + +if test "x$PERL" != "x"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl version greater than or equal to $ac_perl_version" >&5 +printf %s "checking for perl version greater than or equal to $ac_perl_version... " >&6; } + $PERL -e "use $ac_perl_version;" >/dev/null 2>&1 + if test $? -ne 0; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; + as_fn_error $? "at least version 5.10.1 is required to run mojolicious" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; }; + fi +else + as_fn_error $? "could not find perl" "$LINENO" 5 +fi + + +# Extract the first word of "sed", so it can be a program name with args. +set dummy sed; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $SED in + [\\/]* | ?:[\\/]*) + ac_cv_path_SED="$SED" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_SED="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SED" && ac_cv_path_SED="no" + ;; +esac ;; +esac +fi +SED=$ac_cv_path_SED +if test -n "$SED"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +printf "%s\n" "$SED" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "grep", so it can be a program name with args. +set dummy grep; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GREP="$GREP" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GREP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GREP" && ac_cv_path_GREP="no" + ;; +esac ;; +esac +fi +GREP=$ac_cv_path_GREP +if test -n "$GREP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5 +printf "%s\n" "$GREP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "echo", so it can be a program name with args. +set dummy echo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ECHO+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $ECHO in + [\\/]* | ?:[\\/]*) + ac_cv_path_ECHO="$ECHO" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_ECHO="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_ECHO" && ac_cv_path_ECHO="no" + ;; +esac ;; +esac +fi +ECHO=$ac_cv_path_ECHO +if test -n "$ECHO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5 +printf "%s\n" "$ECHO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "ln", so it can be a program name with args. +set dummy ln; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LN+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $LN in + [\\/]* | ?:[\\/]*) + ac_cv_path_LN="$LN" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_LN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_LN" && ac_cv_path_LN="no" + ;; +esac ;; +esac +fi +LN=$ac_cv_path_LN +if test -n "$LN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LN" >&5 +printf "%s\n" "$LN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "cp", so it can be a program name with args. +set dummy cp; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CP+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $CP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CP="$CP" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_CP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CP" && ac_cv_path_CP="no" + ;; +esac ;; +esac +fi +CP=$ac_cv_path_CP +if test -n "$CP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 +printf "%s\n" "$CP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "rm", so it can be a program name with args. +set dummy rm; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_RM+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $RM in + [\\/]* | ?:[\\/]*) + ac_cv_path_RM="$RM" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_RM="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_RM" && ac_cv_path_RM="no" + ;; +esac ;; +esac +fi +RM=$ac_cv_path_RM +if test -n "$RM"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 +printf "%s\n" "$RM" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "rmdir", so it can be a program name with args. +set dummy rmdir; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_RMDIR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $RMDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_RMDIR="$RMDIR" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_RMDIR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_RMDIR" && ac_cv_path_RMDIR="no" + ;; +esac ;; +esac +fi +RMDIR=$ac_cv_path_RMDIR +if test -n "$RMDIR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5 +printf "%s\n" "$RMDIR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "mkdir", so it can be a program name with args. +set dummy mkdir; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MKDIR+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $MKDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKDIR="$MKDIR" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_MKDIR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_MKDIR" && ac_cv_path_MKDIR="no" + ;; +esac ;; +esac +fi +MKDIR=$ac_cv_path_MKDIR +if test -n "$MKDIR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 +printf "%s\n" "$MKDIR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "find", so it can be a program name with args. +set dummy find; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_FIND+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $FIND in + [\\/]* | ?:[\\/]*) + ac_cv_path_FIND="$FIND" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_FIND="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_FIND" && ac_cv_path_FIND="no" + ;; +esac ;; +esac +fi +FIND=$ac_cv_path_FIND +if test -n "$FIND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5 +printf "%s\n" "$FIND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "sendmail", so it can be a program name with args. +set dummy sendmail; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SENDMAIL+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $SENDMAIL in + [\\/]* | ?:[\\/]*) + ac_cv_path_SENDMAIL="$SENDMAIL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$PATH:/usr/sbin:/usr/lib" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_SENDMAIL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SENDMAIL" && ac_cv_path_SENDMAIL="/path/to/sendmail" + ;; +esac ;; +esac +fi +SENDMAIL=$ac_cv_path_SENDMAIL +if test -n "$SENDMAIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SENDMAIL" >&5 +printf "%s\n" "$SENDMAIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +for ac_prog in gnroff nroff +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_NROFF+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $NROFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_NROFF="$NROFF" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_NROFF="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +NROFF=$ac_cv_path_NROFF +if test -n "$NROFF"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5 +printf "%s\n" "$NROFF" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$NROFF" && break +done + + + +for ac_prog in gnumake 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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMAKE+y} +then : + printf %s "(cached) " >&6 +else case e in @%:@( + e) case $GMAKE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMAKE="$GMAKE" # 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMAKE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +GMAKE=$ac_cv_path_GMAKE +if test -n "$GMAKE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMAKE" >&5 +printf "%s\n" "$GMAKE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$GMAKE" && break +done + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking checking for gnu make availability" >&5 +printf %s "checking checking for gnu make availability... " >&6; } +if ( $GMAKE --version 2> /dev/null | $GREP GNU > /dev/null 2>&1 ); then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMAKE is GNU make" >&5 +printf "%s\n" "$GMAKE is GNU make" >&6; } +else + as_fn_error $? "GNU make not found. Try setting the GMAKE environment variable." "$LINENO" 5 +fi + +@%:@ Check whether --enable-pkgonly was given. +if test ${enable_pkgonly+y} +then : + enableval=$enable_pkgonly; +fi + + + +# $prefix stores the value of the --prefix command line option, or +# NONE if the option wasn't set. In the case that it wasn't set, make +# it be the default, so that we can use it to expand directories now. + +actual_prefix=$prefix +if test x$actual_prefix = xNONE; then + actual_prefix=$ac_default_prefix +fi + +HTDOCSDIR=${actual_prefix}/htdocs + +@%:@ Check whether --with-htdocs-dir was given. +if test ${with_htdocs_dir+y} +then : + withval=$with_htdocs_dir; HTDOCSDIR=$withval +fi + + + + + + + +# Check the necessary Perl modules + +mod_ok=1 +if test "$enable_pkgonly" != yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking checking for RRDs perl module" >&5 +printf %s "checking checking for RRDs perl module... " >&6; } + if ${PERL} -e 'use RRDs' 2>/dev/null ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Ok" >&5 +printf "%s\n" "Ok" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Failed" >&5 +printf "%s\n" "Failed" >&6; } + mod_ok=0 + fi +fi + +if test x$mod_ok = x0; then + 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$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+y} || &/ + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$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}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.h` + + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIB@&t@OBJS; 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=`printf "%s\n" "$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 +LIB@&t@OBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$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 ${ZSH_VERSION+y} && (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 e in @%:@( + e) case `(set -o) 2>/dev/null` in @%:@( + *posix*) : + set -o posix ;; @%:@( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in @%:@((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +@%:@ as_fn_error STATUS ERROR [LINENO LOG_FD] +@%:@ ---------------------------------------- +@%:@ Output "`basename @S|@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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$as_me: error: $2" >&2 + as_fn_exit $as_status +} @%:@ as_fn_error + + +@%:@ as_fn_set_status STATUS +@%:@ ----------------------- +@%:@ Set @S|@? 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 case e in @%:@( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +fi # as_fn_append + +@%:@ as_fn_arith ARG... +@%:@ ------------------ +@%:@ Perform arithmetic evaluation on the ARGs, and store the result in the +@%:@ global @S|@as_val. Take advantage of shells that can avoid forks. The arguments +@%:@ must be portable across @S|@(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null +then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else case e in @%:@( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +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 || +printf "%s\n" 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 + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_@&t@echo='printf %s\n' +as_@&t@echo_n='printf %s' + +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 "@S|@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=`printf "%s\n" "$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 || +printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. 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 + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_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 + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +smokeping config.status 2.9.0 +configured by $0, generated by GNU Autoconf 2.72, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2023 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' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +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 ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$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 + \printf "%s\n" "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 + printf "%s\n" "$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 + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "htdocs/Makefile") CONFIG_FILES="$CONFIG_FILES htdocs/Makefile" ;; + "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "thirdparty/Makefile") CONFIG_FILES="$CONFIG_FILES thirdparty/Makefile" ;; + "etc/config.dist") CONFIG_FILES="$CONFIG_FILES etc/config.dist" ;; + + *) 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+y} || CONFIG_FILES=$config_files +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" + + +eval set X " :F $CONFIG_FILES " +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=`printf "%s\n" "$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 '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$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 || +printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + 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@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$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 +s&@MKDIR_P@&$ac_MKDIR_P&;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"; } && + { printf "%s\n" "$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 +printf "%s\n" "$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 + ;; + + + + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + cat < 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_DEFUN' => 1, + 'AC_DEFUN_ONCE' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_AUX_DIR_EXPAND' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_DEP_TRACK' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAKE_INCLUDE' => 1, + 'AM_MISSING_HAS_RUN' => 1, + 'AM_MISSING_PROG' => 1, + 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_INSTALL_SH' => 1, + 'AM_PROG_INSTALL_STRIP' => 1, + 'AM_RUN_LOG' => 1, + 'AM_SANITY_CHECK' => 1, + 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, + 'AM_SET_DEPDIR' => 1, + 'AM_SET_LEADING_DOT' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_SUBST_NOTMAKE' => 1, + 'AU_DEFUN' => 1, + '_AC_AM_CONFIG_HEADER_HOOK' => 1, + '_AM_AUTOCONF_VERSION' => 1, + '_AM_CONFIG_MACRO_DIRS' => 1, + '_AM_DEPENDENCIES' => 1, + '_AM_FILESYSTEM_TIMESTAMP_RESOLUTION' => 1, + '_AM_IF_OPTION' => 1, + '_AM_MANGLE_OPTION' => 1, + '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, + '_AM_PROG_CC_C_O' => 1, + '_AM_PROG_RM_F' => 1, + '_AM_PROG_TAR' => 1, + '_AM_PROG_XARGS_N' => 1, + '_AM_SET_OPTION' => 1, + '_AM_SET_OPTIONS' => 1, + '_AM_SILENT_RULES' => 1, + '_AM_SLEEP_FRACTIONAL_SECONDS' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '1', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + 'configure.ac' + ], + { + 'AC_CANONICAL_BUILD' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST' => 1, + 'AC_SUBST_TRACE' => 1, + 'AH_OUTPUT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_NLS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_PROG_AR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'GTK_DOC_CHECK' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'LT_INIT' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_COND_IF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'm4_sinclude' => 1, + 'sinclude' => 1 + } + ], 'Autom4te::Request' ), + bless( [ + '2', + 1, + [ + '/usr/share/autoconf' + ], + [ + '/usr/share/autoconf/autoconf/autoconf.m4f', + 'aclocal.m4', + '/usr/share/autoconf/autoconf/trailer.m4', + 'configure.ac' + ], + { + 'AC_CANONICAL_BUILD' => 1, + 'AC_CANONICAL_HOST' => 1, + 'AC_CANONICAL_SYSTEM' => 1, + 'AC_CANONICAL_TARGET' => 1, + 'AC_CONFIG_AUX_DIR' => 1, + 'AC_CONFIG_FILES' => 1, + 'AC_CONFIG_HEADERS' => 1, + 'AC_CONFIG_LIBOBJ_DIR' => 1, + 'AC_CONFIG_LINKS' => 1, + 'AC_CONFIG_MACRO_DIR_TRACE' => 1, + 'AC_CONFIG_SUBDIRS' => 1, + 'AC_DEFINE_TRACE_LITERAL' => 1, + 'AC_FC_FREEFORM' => 1, + 'AC_FC_PP_DEFINE' => 1, + 'AC_FC_PP_SRCEXT' => 1, + 'AC_FC_SRCEXT' => 1, + 'AC_INIT' => 1, + 'AC_LIBSOURCE' => 1, + 'AC_PROG_LIBTOOL' => 1, + 'AC_REQUIRE_AUX_FILE' => 1, + 'AC_SUBST' => 1, + 'AC_SUBST_TRACE' => 1, + 'AH_OUTPUT' => 1, + 'AM_AUTOMAKE_VERSION' => 1, + 'AM_CONDITIONAL' => 1, + 'AM_ENABLE_MULTILIB' => 1, + 'AM_EXTRA_RECURSIVE_TARGETS' => 1, + 'AM_GNU_GETTEXT' => 1, + 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, + 'AM_INIT_AUTOMAKE' => 1, + 'AM_MAINTAINER_MODE' => 1, + 'AM_MAKEFILE_INCLUDE' => 1, + 'AM_NLS' => 1, + 'AM_PATH_GUILE' => 1, + 'AM_POT_TOOLS' => 1, + 'AM_PROG_AR' => 1, + 'AM_PROG_CC_C_O' => 1, + 'AM_PROG_CXX_C_O' => 1, + 'AM_PROG_F77_C_O' => 1, + 'AM_PROG_FC_C_O' => 1, + 'AM_PROG_LIBTOOL' => 1, + 'AM_PROG_MKDIR_P' => 1, + 'AM_PROG_MOC' => 1, + 'AM_SILENT_RULES' => 1, + 'AM_XGETTEXT_OPTION' => 1, + 'GTK_DOC_CHECK' => 1, + 'IT_PROG_INTLTOOL' => 1, + 'LT_CONFIG_LTDL_DIR' => 1, + 'LT_INIT' => 1, + 'LT_SUPPORTED_TAG' => 1, + '_AM_COND_ELSE' => 1, + '_AM_COND_ENDIF' => 1, + '_AM_COND_IF' => 1, + '_AM_MAKEFILE_INCLUDE' => 1, + '_AM_SUBST_NOTMAKE' => 1, + '_LT_AC_TAGCONFIG' => 1, + '_m4_warn' => 1, + 'include' => 1, + 'm4_include' => 1, + 'm4_pattern_allow' => 1, + 'm4_pattern_forbid' => 1, + 'm4_sinclude' => 1, + 'sinclude' => 1 + } + ], 'Autom4te::Request' ) + ); + diff --git a/autom4te.cache/traces.0 b/autom4te.cache/traces.0 new file mode 100644 index 0000000..2ed4de1 --- /dev/null +++ b/autom4te.cache/traces.0 @@ -0,0 +1,1038 @@ +m4trace:/usr/share/aclocal-1.17/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.17' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.17], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) +m4trace:/usr/share/aclocal-1.17/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.17])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +m4trace:/usr/share/aclocal-1.17/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) +m4trace:/usr/share/aclocal-1.17/cond.m4:12: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) +m4trace:/usr/share/aclocal-1.17/depend.m4:26: -1- AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thus: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) +m4trace:/usr/share/aclocal-1.17/depend.m4:163: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) +m4trace:/usr/share/aclocal-1.17/depend.m4:171: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) +m4trace:/usr/share/aclocal-1.17/depout.m4:11: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + AS_CASE([$CONFIG_FILES], + [*\'*], [eval set x "$CONFIG_FILES"], + [*], [set x $CONFIG_FILES]) + shift + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf + do + # Strip MF so we end up with the name of the file. + am_mf=`AS_ECHO(["$am_mf"]) | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`AS_DIRNAME(["$am_mf"])` + am_filepart=`AS_BASENAME(["$am_mf"])` + AM_RUN_LOG([cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles]) || am_rc=$? + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. If GNU make was not used, consider + re-running the configure script with MAKE="gmake" (or whatever is + necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi + AS_UNSET([am_dirpart]) + AS_UNSET([am_filepart]) + AS_UNSET([am_mf]) + AS_UNSET([am_rc]) + rm -f conftest-deps.mk +} +]) +m4trace:/usr/share/aclocal-1.17/depout.m4:64: -1- AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}"])]) +m4trace:/usr/share/aclocal-1.17/init.m4:29: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl +m4_ifdef([_$0_ALREADY_INIT], + [m4_fatal([$0 expanded multiple times +]m4_defn([_$0_ALREADY_INIT]))], + [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi +AC_SUBST([CTAGS]) +if test -z "$ETAGS"; then + ETAGS=etags +fi +AC_SUBST([ETAGS]) +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi +AC_SUBST([CSCOPE]) + +AC_REQUIRE([_AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +AC_REQUIRE([_AM_PROG_RM_F]) +AC_REQUIRE([_AM_PROG_XARGS_N]) + +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) +m4trace:/usr/share/aclocal-1.17/init.m4:166: -1- AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) +m4trace:/usr/share/aclocal-1.17/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) +m4trace:/usr/share/aclocal-1.17/lead-dot.m4:10: -1- AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) +m4trace:/usr/share/aclocal-1.17/make.m4:13: -1- AC_DEFUN([AM_MAKE_INCLUDE], [AC_MSG_CHECKING([whether ${MAKE-make} supports the include directive]) +cat > confinc.mk << 'END' +am__doit: + @echo this is the am__doit target >confinc.out +.PHONY: am__doit +END +am__include="#" +am__quote= +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + AM_RUN_LOG([${MAKE-make} -f confmf.$s && cat confinc.out]) + AS_CASE([$?:`cat confinc.out 2>/dev/null`], + ['0:this is the am__doit target'], + [AS_CASE([$s], + [BSD], [am__include='.include' am__quote='"'], + [am__include='include' am__quote=''])]) + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +AC_MSG_RESULT([${_am_result}]) +AC_SUBST([am__include])]) +m4trace:/usr/share/aclocal-1.17/make.m4:42: -1- m4_pattern_allow([^am__quote$]) +m4trace:/usr/share/aclocal-1.17/missing.m4:11: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) +m4trace:/usr/share/aclocal-1.17/missing.m4:20: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) +m4trace:/usr/share/aclocal-1.17/options.m4:11: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +m4trace:/usr/share/aclocal-1.17/options.m4:17: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +m4trace:/usr/share/aclocal-1.17/options.m4:23: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +m4trace:/usr/share/aclocal-1.17/options.m4:29: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +m4trace:/usr/share/aclocal-1.17/prog-cc-c-o.m4:12: -1- AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) +m4trace:/usr/share/aclocal-1.17/prog-cc-c-o.m4:47: -1- AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) +m4trace:/usr/share/aclocal-1.17/rmf.m4:12: -1- AC_DEFUN([_AM_PROG_RM_F], [am__rm_f_notfound= +AS_IF([(rm -f && rm -fr && rm -rf) 2>/dev/null], [], [am__rm_f_notfound='""']) +AC_SUBST(am__rm_f_notfound) +]) +m4trace:/usr/share/aclocal-1.17/runlog.m4:12: -1- AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) +m4trace:/usr/share/aclocal-1.17/sanity.m4:11: -1- AC_DEFUN([_AM_SLEEP_FRACTIONAL_SECONDS], [dnl +AC_CACHE_CHECK([whether sleep supports fractional seconds], + am_cv_sleep_fractional_seconds, [dnl +AS_IF([sleep 0.001 2>/dev/null], [am_cv_sleep_fractional_seconds=yes], + [am_cv_sleep_fractional_seconds=no]) +])]) +m4trace:/usr/share/aclocal-1.17/sanity.m4:28: -1- AC_DEFUN([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION], [dnl +AC_REQUIRE([_AM_SLEEP_FRACTIONAL_SECONDS]) +AC_CACHE_CHECK([filesystem timestamp resolution], + am_cv_filesystem_timestamp_resolution, [dnl +# Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `[ls -t conftest.ts[12]]` && + { + test "$[]*" != "X conftest.ts1 conftest.ts2" || + test "$[]*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + _AS_ECHO_UNQUOTED( + ["Bad output from ls -t: \"`[ls -t conftest.ts[12]]`\""], + [AS_MESSAGE_LOG_FD]) + AC_MSG_FAILURE([ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment.]) +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$[]2" = conftest.ts3 && + test "$[]3" = conftest.ts2 && + test "$[]4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) +])]) +m4trace:/usr/share/aclocal-1.17/sanity.m4:161: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_REQUIRE([_AM_FILESYSTEM_TIMESTAMP_RESOLUTION]) +# This check should not be cached, as it may vary across builds of +# different projects. +AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[]*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$[]2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +AC_MSG_RESULT([$am_build_env_is_sane]) +if test "$am_build_env_is_sane" = no; then + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +AS_IF([test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1],, [dnl + ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! +]) +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) +m4trace:/usr/share/aclocal-1.17/silent.m4:11: -1- AC_DEFUN([_AM_SILENT_RULES], [AM_DEFAULT_VERBOSITY=1 +AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +dnl Delay evaluation of AM_DEFAULT_VERBOSITY to the end to allow multiple calls +dnl to AM_SILENT_RULES to change the default value. +AC_CONFIG_COMMANDS_PRE([dnl +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +])dnl +]) +m4trace:/usr/share/aclocal-1.17/silent.m4:69: -1- AC_DEFUN([AM_SILENT_RULES], [AC_REQUIRE([_AM_SILENT_RULES]) +AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1])]) +m4trace:/usr/share/aclocal-1.17/strip.m4:17: -1- AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) +m4trace:/usr/share/aclocal-1.17/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) +m4trace:/usr/share/aclocal-1.17/substnot.m4:17: -1- AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +m4trace:/usr/share/aclocal-1.17/tar.m4:23: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test x$am_uid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current UID is ok, but dist-ustar might not work]) + elif test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test x$gm_gid = xunknown; then + AC_MSG_WARN([ancient id detected; assuming current GID is ok, but dist-ustar might not work]) + elif test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) +m4trace:/usr/share/aclocal-1.17/xargsn.m4:12: -1- AC_DEFUN([_AM_PROG_XARGS_N], [AC_CACHE_CHECK([xargs -n works], am_cv_xargs_n_works, [dnl +AS_IF([test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3"], [am_cv_xargs_n_works=yes], [am_cv_xargs_n_works=no])]) +AS_IF([test "$am_cv_xargs_n_works" = yes], [am__xargs_n='xargs -n'], [dnl + am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "$@" "$am__xargs_n_arg"; done; }' +])dnl +AC_SUBST(am__xargs_n) +]) +m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?A[CHUM]_]) +m4trace:configure.ac:20: -1- m4_pattern_forbid([_AC_]) +m4trace:configure.ac:20: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section 'AC_LIBOBJ vs LIBOBJS']) +m4trace:configure.ac:20: -1- m4_pattern_allow([^AS_FLAGS$]) +m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?m4_]) +m4trace:configure.ac:20: -1- m4_pattern_forbid([^dnl$]) +m4trace:configure.ac:20: -1- m4_pattern_forbid([^_?AS_]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^SHELL$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PATH_SEPARATOR$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^exec_prefix$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^prefix$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^program_transform_name$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^bindir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^sbindir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^libexecdir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^datarootdir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^datadir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^sysconfdir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^sharedstatedir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^localstatedir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^runstatedir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^includedir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^oldincludedir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^docdir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^infodir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^htmldir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^dvidir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^pdfdir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^psdir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^libdir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^localedir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^mandir$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_NAME$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_VERSION$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_STRING$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^PACKAGE_URL$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^DEFS$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_C$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_N$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^ECHO_T$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^LIBS$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^build_alias$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^host_alias$]) +m4trace:configure.ac:20: -1- m4_pattern_allow([^target_alias$]) +m4trace:configure.ac:25: -1- AM_INIT_AUTOMAKE([1.9 tar-ustar foreign]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) +m4trace:configure.ac:25: -1- AM_SET_CURRENT_AUTOMAKE_VERSION +m4trace:configure.ac:25: -1- AM_AUTOMAKE_VERSION([1.17]) +m4trace:configure.ac:25: -1- _AM_AUTOCONF_VERSION([2.72]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_DATA$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^am__isrc$]) +m4trace:configure.ac:25: -1- _AM_SUBST_NOTMAKE([am__isrc]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^CYGPATH_W$]) +m4trace:configure.ac:25: -1- _AM_SET_OPTIONS([1.9 tar-ustar foreign]) +m4trace:configure.ac:25: -1- _AM_SET_OPTION([1.9]) +m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([1.9]) +m4trace:configure.ac:25: -1- _AM_SET_OPTION([tar-ustar]) +m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([tar-ustar]) +m4trace:configure.ac:25: -1- _AM_SET_OPTION([foreign]) +m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([foreign]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:25: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])]) +m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([no-define]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^PACKAGE$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^VERSION$]) +m4trace:configure.ac:25: -1- AM_SANITY_CHECK +m4trace:configure.ac:25: -1- _AM_FILESYSTEM_TIMESTAMP_RESOLUTION +m4trace:configure.ac:25: -1- _AM_SLEEP_FRACTIONAL_SECONDS +m4trace:configure.ac:25: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +m4trace:configure.ac:25: -1- AM_MISSING_HAS_RUN +m4trace:configure.ac:25: -1- AM_AUX_DIR_EXPAND +m4trace:configure.ac:25: -1- m4_pattern_allow([^ACLOCAL$]) +m4trace:configure.ac:25: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOCONF$]) +m4trace:configure.ac:25: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOMAKE$]) +m4trace:configure.ac:25: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AUTOHEADER$]) +m4trace:configure.ac:25: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^MAKEINFO$]) +m4trace:configure.ac:25: -1- AM_PROG_INSTALL_SH +m4trace:configure.ac:25: -1- m4_pattern_allow([^install_sh$]) +m4trace:configure.ac:25: -1- AM_PROG_INSTALL_STRIP +m4trace:configure.ac:25: -1- m4_pattern_allow([^STRIP$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^MKDIR_P$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^mkdir_p$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AWK$]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^SET_MAKE$]) +m4trace:configure.ac:25: -1- AM_SET_LEADING_DOT +m4trace:configure.ac:25: -1- m4_pattern_allow([^am__leading_dot$]) +m4trace:configure.ac:25: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +m4trace:configure.ac:25: -2- _AM_MANGLE_OPTION([tar-ustar]) +m4trace:configure.ac:25: -1- _AM_PROG_TAR([ustar]) +m4trace:configure.ac:25: -1- m4_pattern_allow([^AMTAR$]) +m4trace:configure.ac:25: -1- AM_RUN_LOG([$_am_tar --version]) +m4trace:configure.ac:25: -1- AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) +m4trace:configure.ac:25: -1- AM_RUN_LOG([$am__untar &2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/smokeping +pkgincludedir = $(includedir)/smokeping +pkglibdir = $(libdir)/smokeping +pkglibexecdir = $(libexecdir)/smokeping +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = bin +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_bin_SCRIPTS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ + } +am__installdirs = "$(DESTDIR)$(bindir)" +SCRIPTS = $(dist_bin_SCRIPTS) +AM_V_P = $(am__v_P_$(V)) +am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_$(V)) +am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_$(V)) +am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' aclocal-1.17 +AMTAR = $${TAR-tar} +AM_DEFAULT_VERBOSITY = 1 +AUTOCONF = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' autoconf +AUTOHEADER = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' autoheader +AUTOMAKE = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' automake-1.17 +AWK = mawk +CP = /usr/bin/cp +CSCOPE = cscope +CTAGS = ctags +CURL = /usr/bin/curl +CYGPATH_W = echo +DEFS = -DPACKAGE_NAME=\"smokeping\" -DPACKAGE_TARNAME=\"smokeping\" -DPACKAGE_VERSION=\"2.9.0\" -DPACKAGE_STRING=\"smokeping\ 2.9.0\" -DPACKAGE_BUGREPORT=\"tobi@oetiker.ch\" -DPACKAGE_URL=\"\" -DPACKAGE=\"smokeping\" -DVERSION=\"2.9.0\" +ECHO = /usr/bin/echo +ECHO_C = +ECHO_N = -n +ECHO_T = +ETAGS = etags +FIND = /usr/bin/find +GMAKE = /usr/bin/gmake +GREP = /usr/bin/grep +HTDOCSDIR = /usr/share/smokeping/www +INSTALL = /usr/bin/install -c +INSTALL_DATA = ${INSTALL} -m 644 +INSTALL_PROGRAM = ${INSTALL} +INSTALL_SCRIPT = ${INSTALL} +INSTALL_STRIP_PROGRAM = $(install_sh) -c -s +LIBOBJS = +LIBS = +LN = /usr/bin/ln +LTLIBOBJS = +MAKEINFO = ${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' makeinfo +MKDIR = /usr/bin/mkdir +MKDIR_P = /usr/bin/mkdir -p +NROFF = /usr/bin/nroff +PACKAGE = smokeping +PACKAGE_BUGREPORT = tobi@oetiker.ch +PACKAGE_NAME = smokeping +PACKAGE_STRING = smokeping 2.9.0 +PACKAGE_TARNAME = smokeping +PACKAGE_URL = +PACKAGE_VERSION = 2.9.0 +PATH_SEPARATOR = : +PERL = /usr/bin/perl +PERL5LIB = +RM = /usr/bin/rm +RMDIR = /usr/bin/rmdir +SED = /usr/bin/sed +SENDMAIL = /usr/sbin/sendmail +SET_MAKE = +SHELL = /bin/bash +STRIP = +URL_CAT = /usr/bin/curl --location +VERSION = 2.9.0 +WGET = /usr/bin/wget +abs_builddir = /root/smoke/smokeping-2.9.0/bin +abs_srcdir = /root/smoke/smokeping-2.9.0/bin +abs_top_builddir = /root/smoke/smokeping-2.9.0 +abs_top_srcdir = /root/smoke/smokeping-2.9.0 +am__leading_dot = . +am__rm_f_notfound = +am__tar = tar --format=ustar -chf - "$$tardir" +am__untar = tar -xf - +am__xargs_n = xargs -n +bindir = /usr/sbin +build_alias = x86_64-linux-gnu +builddir = . +datadir = ${datarootdir} +datarootdir = ${prefix}/share +docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} +dvidir = ${docdir} +enable_pkgonly = +exec_prefix = ${prefix} +host_alias = +htmldir = ${docdir} +includedir = ${prefix}/include +infodir = ${prefix}/share/info +install_sh = ${SHELL} /root/smoke/smokeping-2.9.0/conftools/install-sh +libdir = /usr/share/perl5 +libexecdir = ${exec_prefix}/libexec +localedir = ${datarootdir}/locale +localstatedir = /var +mandir = ${prefix}/share/man +mkdir_p = $(MKDIR_P) +oldincludedir = /usr/include +pdfdir = ${docdir} +prefix = /usr +program_transform_name = s,x,x, +psdir = ${docdir} +runstatedir = /run +sbindir = ${exec_prefix}/sbin +sharedstatedir = ${prefix}/com +srcdir = . +sysconfdir = /usr/share/doc/smokeping +target_alias = +top_build_prefix = ../ +top_builddir = .. +top_srcdir = .. +dist_bin_SCRIPTS = smokeinfo smokeping smokeping_cgi tSmoke +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign bin/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign bin/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-dist_binSCRIPTS: $(dist_bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-dist_binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-dist_binSCRIPTS + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_binSCRIPTS + +.MAKE: install-am install-exec-am install-strip + +.PHONY: all all-am check check-am clean clean-generic cscopelist-am \ + ctags-am distclean distclean-generic distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dist_binSCRIPTS install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ + uninstall uninstall-am uninstall-dist_binSCRIPTS + +.PRECIOUS: Makefile + + +install-exec-hook: + test "$(PERL5LIB)" = "" || cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{.*# PERL5LIB}{use lib (split /:/, q{$(PERL5LIB)}); # PERL5LIB}' $(dist_bin_SCRIPTS) + cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{.*# LIBDIR}{use lib qw($(libdir)); # LIBDIR}' $(dist_bin_SCRIPTS) + cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{^#!.*perl.*}{#!$(PERL)};' $(dist_bin_SCRIPTS) +# EOF + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/bin/Makefile.am b/bin/Makefile.am new file mode 100644 index 0000000..2c6f3bc --- /dev/null +++ b/bin/Makefile.am @@ -0,0 +1,24 @@ +# Copyright (C) 2011 Tobias Oetiker +# +# 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. + + +dist_bin_SCRIPTS = smokeinfo smokeping smokeping_cgi tSmoke + +install-exec-hook: + test "$(PERL5LIB)" = "" || cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{.*# PERL5LIB}{use lib (split /:/, q{$(PERL5LIB)}); # PERL5LIB}' $(dist_bin_SCRIPTS) + cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{.*# LIBDIR}{use lib qw($(libdir)); # LIBDIR}' $(dist_bin_SCRIPTS) + cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{^#!.*perl.*}{#!$(PERL)};' $(dist_bin_SCRIPTS) +# EOF diff --git a/bin/Makefile.in b/bin/Makefile.in new file mode 100644 index 0000000..eda6cf3 --- /dev/null +++ b/bin/Makefile.in @@ -0,0 +1,508 @@ +# Makefile.in generated by automake 1.17 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2024 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +# Copyright (C) 2011 Tobias Oetiker +# +# 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. + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +am__rm_f = rm -f $(am__rm_f_notfound) +am__rm_rf = rm -rf $(am__rm_f_notfound) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = bin +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(dist_bin_SCRIPTS) \ + $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && echo $$files | $(am__xargs_n) 40 $(am__rm_f); }; \ + } +am__installdirs = "$(DESTDIR)$(bindir)" +SCRIPTS = $(dist_bin_SCRIPTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +am__DIST_COMMON = $(srcdir)/Makefile.in +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CP = @CP@ +CSCOPE = @CSCOPE@ +CTAGS = @CTAGS@ +CURL = @CURL@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +ECHO = @ECHO@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +ETAGS = @ETAGS@ +FIND = @FIND@ +GMAKE = @GMAKE@ +GREP = @GREP@ +HTDOCSDIR = @HTDOCSDIR@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LN = @LN@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR = @MKDIR@ +MKDIR_P = @MKDIR_P@ +NROFF = @NROFF@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PERL = @PERL@ +PERL5LIB = @PERL5LIB@ +RM = @RM@ +RMDIR = @RMDIR@ +SED = @SED@ +SENDMAIL = @SENDMAIL@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +URL_CAT = @URL_CAT@ +VERSION = @VERSION@ +WGET = @WGET@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +am__leading_dot = @am__leading_dot@ +am__rm_f_notfound = @am__rm_f_notfound@ +am__tar = @am__tar@ +am__untar = @am__untar@ +am__xargs_n = @am__xargs_n@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +enable_pkgonly = @enable_pkgonly@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +runstatedir = @runstatedir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +dist_bin_SCRIPTS = smokeinfo smokeping smokeping_cgi tSmoke +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign bin/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign bin/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-dist_binSCRIPTS: $(dist_bin_SCRIPTS) + @$(NORMAL_INSTALL) + @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + if test -f "$$d$$p"; then echo "$$d$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n' \ + -e 'h;s|.*|.|' \ + -e 'p;x;s,.*/,,;$(transform)' | sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1; } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) { files[d] = files[d] " " $$1; \ + if (++n[d] == $(am__install_max)) { \ + print "f", d, files[d]; n[d] = 0; files[d] = "" } } \ + else { print "f", d "/" $$4, $$1 } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_SCRIPT) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_SCRIPT) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-dist_binSCRIPTS: + @$(NORMAL_UNINSTALL) + @list='$(dist_bin_SCRIPTS)'; test -n "$(bindir)" || exit 0; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 's,.*/,,;$(transform)'`; \ + dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir) +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + +distdir: $(BUILT_SOURCES) + $(MAKE) $(AM_MAKEFLAGS) distdir-am + +distdir-am: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(SCRIPTS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -$(am__rm_f) $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || $(am__rm_f) $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-dist_binSCRIPTS + @$(NORMAL_INSTALL) + $(MAKE) $(AM_MAKEFLAGS) install-exec-hook +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-dist_binSCRIPTS + +.MAKE: install-am install-exec-am install-strip + +.PHONY: all all-am check check-am clean clean-generic cscopelist-am \ + ctags-am distclean distclean-generic distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dist_binSCRIPTS install-dvi \ + install-dvi-am install-exec install-exec-am install-exec-hook \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \ + uninstall uninstall-am uninstall-dist_binSCRIPTS + +.PRECIOUS: Makefile + + +install-exec-hook: + test "$(PERL5LIB)" = "" || cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{.*# PERL5LIB}{use lib (split /:/, q{$(PERL5LIB)}); # PERL5LIB}' $(dist_bin_SCRIPTS) + cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{.*# LIBDIR}{use lib qw($(libdir)); # LIBDIR}' $(dist_bin_SCRIPTS) + cd "$(DESTDIR)$(bindir)" && $(PERL) -i -p -e 's{^#!.*perl.*}{#!$(PERL)};' $(dist_bin_SCRIPTS) +# EOF + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: + +# Tell GNU make to disable its built-in pattern rules. +%:: %,v +%:: RCS/%,v +%:: RCS/% +%:: s.% +%:: SCCS/s.% diff --git a/bin/smokeinfo b/bin/smokeinfo new file mode 100755 index 0000000..2b38b86 --- /dev/null +++ b/bin/smokeinfo @@ -0,0 +1,143 @@ +#!/usr/bin/perl +use strict; +use warnings; + +use lib (split /:/, q{}); # PERL5LIB +use FindBin;use lib "$FindBin::RealBin/../lib";use lib "$FindBin::RealBin/../thirdparty/lib/perl5"; # LIBDIR + +use Smokeping::Info; +use Getopt::Long 2.25 qw(:config no_ignore_case); +use Pod::Usage 1.14; + +'$Revision: 3879 $ ' =~ /Revision: (\S*)/; +my $Revision = $1; + +sub main() +{ + # parse options + my %opt = (mode=>'plain',separator=>';',format=>'%le',start=>'end-24h',end=>'now'); + + GetOptions(\%opt, 'help|h', 'man', 'version', 'noaction|no-action|n','no-head', + 'start=s','end=s','filter=s','mode=s','separator=s','format=s') or exit(1); + if($opt{help}) { pod2usage(1) } + if($opt{man}) { pod2usage(-exitstatus => 0, -verbose => 2) } + if($opt{version}) { print "smokeinfo $Revision\n"; exit(0) } + if($opt{noaction}) { die "ERROR: don't know how to \"no-action\".\n" } + my $config = shift @ARGV; + + my $si = Smokeping::Info->new($config); + my $nodes = $si->fetch_nodes(pattern=>$opt{filter},mode=>$opt{mode}); + my @rows = qw(med_avg med_min med_max med_now loss_avg loss_max loss_now); + print '# ',join $opt{separator}, 'node_path',@rows if not $opt{'no-head'}; + print "\n"; + for my $node (@$nodes) { + my $data = $si->stat_node($node,$opt{start},$opt{end}); + print join $opt{separator},$node->{path},map {defined $data->{$_} ? sprintf($opt{format},$data->{$_}) : '?'} @rows; + print "\n"; + } +} + +main; + +__END__ + +=head1 NAME + +smokeinfo - poll smokeping site for numeric information + +=head1 SYNOPSIS + +B path/to/config.cfg [I] + + --start x rrd graph start time. (default now-24h) + + --end y rrd graph end time. (default now) + + --filter pattern search pattern for node selection + + --mode plain (default) how to use the pattern + - plain + - recursive + - regexp + + --separator ; (default) + + --format %le (default) + + --no-head do not print a header + + --man show man-page and exit + -h, --help display this help and exit + --version output version information and exit + +=head1 DESCRIPTION + +SmokeInfo is a simple frontend to the L module. It provides +access to numeric data stored in the rrd files. + +Note that --start and --end are passed directly to rrd graph. This means +they work on the same syntax. + +=head2 Examples + +Get all data all nodes + + smokeinfo etc/config + +Only show nodes directly under /Customers + + smokeinfo --filter=/Customers/ etc/config + +Show all nodes under /Customers + + smokeinfo --mode=recursive --filter=/Customers/ etc/config + +Show all nodes with '_wlan_' in the name + + smokeinfo --mode=regexp --filter=_wlan_ etc/config + +=head1 SEE ALSO + +L + +=head1 COPYRIGHT + +Copyright (c) 2009 by OETIKER+PARTNER AG. All rights reserved. + +=head1 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +=head1 AUTHOR + +Stobi@oetiker.chE> + +=head1 HISTORY + + 2009-01-05 to Initial Version + +=cut + +# Emacs Configuration +# +# Local Variables: +# mode: cperl +# eval: (cperl-set-style "PerlStyle") +# mode: flyspell +# mode: flyspell-prog +# End: +# +# vi: sw=4 et + diff --git a/bin/smokeping b/bin/smokeping new file mode 100755 index 0000000..1dae42a --- /dev/null +++ b/bin/smokeping @@ -0,0 +1,184 @@ +#!/usr/bin/perl +# -*-perl-*- + +use strict; +use warnings; + +use FindBin; +use lib (split /:/, q{}); # PERL5LIB +use lib "$FindBin::RealBin/../lib";use lib "$FindBin::RealBin/../thirdparty/lib/perl5"; # LIBDIR + +use Smokeping; + +Smokeping::main("$FindBin::RealBin/../etc/config"); + +=head1 NAME + +smokeping - Commandline tool for SmokePing + +=head1 SYNOPSIS + +B [ B<--email> | B<--makepod> | B<--version> | B<--restart> ] + + Options: + + --man[=x] Show the manpage for the program (or for probe x, if specified) + + --help Help :-) + + --email Send SmokePing Agents to all Targets marked DYNAMIC + + --config=x Use a config file different from the default + + --check Just check the config file syntax, don't start the daemon + + --makepod[=x] Create POD documentation on Config file (or for probe x, if specified) + + --version Show SmokePing Version + + --debug Run Only once and do not Fork + + --debug-daemon Start the daemon with debugging enabled + + --restart Restart SmokePing + + --reload Reload configuration in the running process without interrupting + any probes + + --nodaemon Do no daemonize the process (no fork) + + --filter=x Only measure entries which pass the filter x + + --logfile=x Append warnings to logfile x. + + --static[=x] Generates a static website in directory x. If x is left out, + pagedir from the config is used. + + --nosleep For debugging you may want to run SmokePing without sleep interval + + --gen-examples Generate the smokeping_examples document and example config files + (to be used while building inside the smokeping distribution) + With --check : check the syntax of the generated examples. + + --master-url=s Run smokeping in slave mode. Attach to master for config. + + --slave-name=s By default the slave will use whatever it thinks its name + is, when talking to its master. In some cases you may + probably want to override this. + + + --shared-secret=s File containing the shared secret for talking to the server. + + --cache-dir=s Directory for temporary data storage when running in slave mode. + + --pid-dir=s Directory for the PID file when running in slave mode. + (optional, defaults to --cache-dir) + +=head1 DESCRIPTION + +The B tool is the commandline part of the SmokePing system. Its +main function is to run as a daemon and send Pings to all the Targets you +have specified in the Config file. When you call B without +arguments it will start as a daemon and do its work. + +If called with an argument, then further functions can be activated, as seen +in the Synopsis above. The B<--email> function is explained in the +documentation on the config file. + +The B<--filter> option allows you to run the daemon on a big config file, +but have the config file filtered and only measure the entries that pass the +filter. This is useful for remote measurement. Run Smokeping with two +exclusive filters in two locations and rsync the rrds back to the webserver +host where you run the cgi. Filters act on the section names in the config +file. Multiple section names are concatenated with B like path names: + + *** targets *** + + A + .... + + B + ... + ++ C + +This gives + + /A + +and + + /B, /B/C + +If I want to monitor /A my filter would look like this: + + --filter=/A + +Filters follow regular expression syntax. The are always anchored at the tip of the string. +by adding a B to the front of the filter string you negate it. Matching entries will be excluded from monitoring. +Multiple B<--filter> arguments can be used to assemble complex filters: + + --filter=/A --filter=/B + +would include all the targets + + --filter=/A --filter=/B --filter=!/B/C + +would include all but /B/C. + +The B<--makepod> does get used internally to produce the +L. + +Please refer to L for detailed setup instructions. + +=head1 SETUP + +When installing SmokePing, this file has to be adjusted to fit your +local system. Three paths have to be entered. + +One pointing to your B installation + + use lib qw(/usr/pack/rrdtool-1.0.33-to/lib/perl); + +One pointing to the place where you have installed the SmokePing libraries + + use lib qw(/home/oetiker/public_html/smokeping/lib); + +The third path is the argument to the Smokeping::main command. It points to +the SmokePing configuration file. + + use Smokeping; + Smokeping::main("/home/oetiker/.smokeping/config"); + +=head1 SEE ALSO + +L, L, L, +L, L, L, +L, L, +How to read the graphs https://oss.oetiker.ch/smokeping/doc/reading.en.html + +=head1 COPYRIGHT + +Copyright (c) 2002 by Tobias Oetiker. All right reserved. + +=head1 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 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., 675 Mass Ave, Cambridge, MA +02139, USA. + +=head1 AUTHOR + +Tobias Oetiker Etobi@oetiker.chE + +=cut diff --git a/bin/smokeping_cgi b/bin/smokeping_cgi new file mode 100755 index 0000000..610118c --- /dev/null +++ b/bin/smokeping_cgi @@ -0,0 +1,94 @@ +#!/usr/bin/perl +# -*-perl-*- + +use strict; +use warnings; + +use FindBin; +use lib (split /:/, q{}); # PERL5LIB +use lib "$FindBin::RealBin/../lib";use lib "$FindBin::RealBin/../thirdparty/lib/perl5"; # LIBDIR + +# don't bother with zombies +$SIG{CHLD} = 'IGNORE'; + +use CGI::Carp qw(fatalsToBrowser); + +use Smokeping; + +use CGI::Fast; + +my $cfg = (shift @ARGV) || "$FindBin::Bin/../etc/config"; + + +while (my $q = new CGI::Fast) { + Smokeping::cgi($cfg,$q); +} + +=head1 NAME + +smokeping_cgi - SmokePing webfrontend + +=head1 OVERVIEW + +This script acts as a 'website' for your SmokePing monitoring operation. It +presents the targets you are looking at in a tree structure and draws graphs +as they are required by people looking at the pages. + +=head1 DESCRIPTION + +To get B going, you need a webserver which allows you to run +CGI or better FastCGI scripts. The system must be setup so that the cgi +process is allowed to write to the image caching area as defined in the +config file. + +This script runs fine as a normal CGI, B it will appear to be very slow, +because it does a lot of things when starting up. So if the script has to be +started a fresh on every click, this is both slow and a tough thing for your +webserver. I therefore strongly recommend using FastCGI. + +Please refer to the installation document for detailed setup instructions. + +=head1 SETUP + +There is a sample F directory in your smokeping installation root. +Copy its content to the place where your webserver expects its files. The +fcgi script shows the preferred method for running smokeping. You can also +run smokeping as a cgi. But make sure to still use the wrapper as exposing +ARGV to the webserver represents a security vulnerability you may rather not +want to deal with. + +Adjust the paths in the script and you should be ready to go. + +=head1 SEE ALSO + +L, L, L, +L + +=head1 COPYRIGHT + +Copyright (c) 2011 by Tobias Oetiker. All right reserved. + +=head1 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 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., 675 Mass Ave, Cambridge, MA +02139, USA. + +=head1 AUTHOR + +Tobias Oetiker Etobi@oetiker.chE + +=cut diff --git a/bin/tSmoke b/bin/tSmoke new file mode 100755 index 0000000..8559189 --- /dev/null +++ b/bin/tSmoke @@ -0,0 +1,570 @@ +#!/usr/bin/perl +# +#----------------------------------------------- +# tSmoke.pl +# Dan McGinn-Combs, Sep 2003 +# tSmoke.v 0.4 2004/03 McGinn-Combs +#----------------------------------------------- +# +# Modified for Smokeping official distribution since 20050526 +# Original README follows +# +# tSmoke.v04.README +# - added downtime report (--downtime) +# - a few tweaks to the calculations to ensure it's consistent +# +# tSmoke.v03.README +# - Initial Release +# - The script, started through cron, will cull through a config file and +# determine which hosts are down at a point in time (Morning report) and +# send out an smtp message to a mobile phone (for example). +# +# - It will also cull through the same config file and, using an included html +# file (small change to General section of the config file), send an html +# message which shows the availability over the past day, week, month +# and quarter. +# +# - It can also show detail data depending on the setting of +# command line option "detail". +# +# tSmoke.v02.README +# - Local testing version +#----------------------------------------------- +# +# 1) This program is run via CRON or the command line +# 2) It extracts RRD information from a smokeping config file +# 3) It pulls data from RRD files to determine if anything is offline, that is returning 0 PINGs +# 4) tSmoke reports status via an SMTP alert +# 5) tSmoke also generates an SMTP mail showing historical view of availability +# +# Many thanks to the following people for their help and guidance: +# Jim Horwath of Agere Systems Inc. for his examples and pointers to Spreadsheet::WriteExcel +# Frank Harper the author of SLAMon, a tool for tracking Service Level Agreements +# Tobias Oetiker, or course, the author of Smokeping, RRDTool and MRTG +# +use strict; +use warnings; + +# We need to use +# -- Smokeping libraries +# -- RRDTool +# -- Getopt::Long +# +# Point the lib variables to your implementation + +use lib (split /:/, q{}); # PERL5LIB +use FindBin; +use lib "$FindBin::RealBin/../lib";use lib "$FindBin::RealBin/../thirdparty/lib/perl5"; # LIBDIR + + +use Smokeping; +use Net::SMTP; +use Getopt::Long; +use Pod::Usage; +use RRDs; + +# Point to your Smokeping config file +my $cfgfile = (shift @ARGV) || "$FindBin::Bin/../etc/config"; + +# global variables +my $cfg; + +#this is designed to work on IPv4 only +my $havegetaddrinfo = 0; + +# we want opts everywhere +my %opt; + +#Hashes for the data +my (%Daily,%Weekly,%Monthly,%Quarterly); # the entries +my (%DailyC,%WeeklyC,%MonthlyC,%QuarterlyC); # a count of the entries + +###################### +### Moving Average ### +###################### +# Just a reminder of how to do a moving average if you ever want to +# PREV,UN,,UN,1,,IF,PREV,IF,,UN,1,,IF,-,,*,A,UN,1,A,IF,+ + +# Change Log: +# DMC - Added Quarterly Status +# DMC - Added HTML mail reporting and consolidated functions +# DMC = Added an external HTML mail template, tMail +my $RCS_VERSION = '$id: tSmoke.v 0.4 2004/03 McGinn-Combs'; + +sub test_mail($) { + my $cfg = shift; + my $mail = <<"EOF"; +Subject: tSmoke test +To: $cfg->{Alerts}{to} + +This is a test mail with 'tSmoke --testmail'. +EOF + print "Sending a test mail to $cfg->{Alerts}{to} from $cfg->{Alerts}{from}..."; + Smokeping::sendmail($cfg->{Alerts}{from}, $cfg->{Alerts}{to}, $mail); + print "done.\n"; +}; + +sub morning_update($) { + # Send out a morning summary of devices that are down + my $cfg = shift; + my $Body = ""; + my $TmpBody = ""; + my $To = ""; + if ( $opt{to} ) { $To = $opt{to}; } else { $To = $cfg->{Alerts}{to}; } + + # Get a list of the existing RRD Files + my @rrds = split ( /\n/,list_rrds($cfg->{Targets},"","") ); + my $Count = $#rrds + 1; + my $Down = 0; + + foreach my $target (@rrds) { + my $Loss = 0; + my ($start,$step,$names,$data) = RRDs::fetch "$target","AVERAGE","--start","-300"; + my $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + foreach my $line (@$data) { + $Loss += ( defined($$line[3]) ? $$line[3] : 0 ); + } + $Down += 1 if $Loss == 0; + $target =~ s/^([a-zA-Z0-9]*\/)*//; + $target =~ s/.rrd//; + $target =~ s/\~(.*)/ from $1/ if $target =~ m/\~/; + $TmpBody .= "$target\n" if $Loss == 0; + } + $Body = <{Alerts}{from},$To,$Body); +} + +sub weekly_update($) { + # Send out a formatted HTML Table of the + # Previous Day, Week, Month and Quarter Availability + # Get a list of the existing RRD Files + my @rrds = split ( /\n/,list_rrds($cfg->{Targets},"","") ); + + my $To = ""; + if ( $opt{to} ) { $To = $opt{to}; } else { $To = $cfg->{Alerts}{to}; } + + my $Body =''; + +# Calculations Based on the following: +# RRDs::graph "fake.png", +# '--start','-86400', +# '-end','-300', +# "DEF:loss=${rrd}:loss:AVERAGE", +# "CDEF:avail=loss,0,100,IF", or more precisely "CDEF:avail=loss,2,GE,0,100,IF" +# and adding in the check for unknown for systems just coming on line +# "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF" + # Arbitrarily a loss of 10% of Pings means the system was down + my $pings = $cfg->{Database}{pings} * .1; + + foreach my $target (@rrds) { + # Get an average Availability for each RRD file + my $ERR; + + my ($DAverage,$Dxsize,$Dysize) = RRDs::graph "fake.png", + "--start","-86400", + "--end","-600", + "--step","1008", + "DEF:loss=$target:loss:AVERAGE", + "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF", + "PRINT:avail:AVERAGE:%.2lf"; + $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + + my ($WAverage,$Wxsize,$Wysize) = RRDs::graph "fake.png", + "--start","-604800", + "--end","-600", + "--step","4320", + "DEF:loss=$target:loss:AVERAGE", + "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF", + "PRINT:avail:AVERAGE:%.2lf"; + $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + + my ($MAverage,$Mxsize,$Mysize) = RRDs::graph "fake.png", + "--start","-2592000", + "--end","-600", + "--step","4320", + "DEF:loss=$target:loss:AVERAGE", + "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF", + "PRINT:avail:AVERAGE:%.2lf"; + $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + + my ($QAverage,$Qxsize,$Qysize) = RRDs::graph "fake.png", + "--start","-7776000", + "--end","-600", + "--step","4320", + "DEF:loss=$target:loss:AVERAGE", + "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF", + "PRINT:avail:AVERAGE:%.2lf"; + $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + + $target =~ s/$cfg->{General}{datadir}\///; + $target =~ s/.rrd//; + my @Path; + push @Path,split/\//,$target; + update_stats ( \@Path, @$DAverage[0], @$WAverage[0], @$MAverage[0], @$QAverage[0]); + } + + # Prepare the e-mail message + $Body = <{General}{tmail} or die "ERROR: can't read $cfg->{General}{tmail}\n"; + while (){ + my $Summary = Summary_Sheet(); + s/<##SUMMARY##>/$Summary/ig; + my $Daily = DetailSheet(86400); + s/<##DAYDETAIL##>/$Daily/ig; + my $Weekly = DetailSheet(604800); + s/<##WEEKDETAIL##>/$Weekly/ig; + my $Monthly = DetailSheet(2592000); + s/<##MONTHDETAIL##>/$Monthly/ig; + my $Quarterly = DetailSheet(7776000); + s/<##QUARTERDETAIL##>/$Quarterly/ig; + $Body .= $_; + } + close tSMOKE; + Smokeping::sendmail($cfg->{Alerts}{from}, $To, $Body); +} + +sub update_stats($$$$$); +sub update_stats($$$$$) { + # Update the uptime percentages in the Hash Arrays + my $Path = shift; + my $DAverage = shift; + my $WAverage = shift; + my $MAverage = shift; + my $QAverage = shift; + + #Enter everything once as it exists + #Trim off the rightmost component (hostname) and reenter the code + #If there is only one component, this is the final level + #This is an average of averages + + my $Ticket = join ( ".",@$Path); + $Daily { $Ticket } += $DAverage; + $Weekly { $Ticket } += $WAverage; + $Monthly { $Ticket } += $MAverage; + $Quarterly {$Ticket } += $QAverage; + $DailyC { $Ticket }++; + $WeeklyC { $Ticket }++; + $MonthlyC { $Ticket }++; + $QuarterlyC { $Ticket }++; + my $Length = @$Path; + @$Path = @$Path [ 0 .. $Length - 2 ]; + update_stats(\@$Path,$DAverage,$WAverage,$MAverage,$QAverage) if $Length > 1; +} + +sub Summary_Sheet() { + my $Body = ''; + + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= " + + + + \n"; + foreach (sort { $a cmp $b } keys %Monthly) { + next if ( $_ =~ /\./ ); + # this is a major section heading + $Body .= "\n"; + $Body .= ""; + $Body .= "" + if $Quarterly{$_}/$QuarterlyC{$_} >= 99 ; + $Body .= "" + if $Quarterly{$_}/$QuarterlyC{$_} > 95 and $Quarterly{$_}/$QuarterlyC{$_} < 99 ; + $Body .= "" + if $Quarterly{$_}/$QuarterlyC{$_} > 90 and $Quarterly{$_}/$QuarterlyC{$_} < 95 ; + $Body .= "" + if $Quarterly{$_}/$QuarterlyC{$_} < 90 ; + $Body .= "" + if $Monthly{$_}/$MonthlyC{$_} >= 99 ; + $Body .= "" + if $Monthly{$_}/$MonthlyC{$_} > 95 and $Monthly{$_}/$MonthlyC{$_} < 99 ; + $Body .= "" + if $Monthly{$_}/$MonthlyC{$_} > 90 and $Monthly{$_}/$MonthlyC{$_} < 95 ; + $Body .= "" + if $Monthly{$_}/$MonthlyC{$_} < 90 ; + $Body .= "" + if $Weekly{$_}/$WeeklyC{$_} >= 99; + $Body .= "" + if $Weekly{$_}/$WeeklyC{$_} > 95 and $Weekly{$_}/$WeeklyC{$_} < 99 ; + $Body .= "" + if $Weekly{$_}/$WeeklyC{$_} > 90 and $Weekly{$_}/$WeeklyC{$_} < 95 ; + $Body .= "" + if $Weekly{$_}/$WeeklyC{$_} < 90 ; + $Body .= "" + if $Daily{$_}/$DailyC{$_} >= 99; + $Body .= "" + if $Daily{$_}/$DailyC{$_} > 95 and $Daily{$_}/$DailyC{$_} < 99 ; + $Body .= "" + if $Daily{$_}/$DailyC{$_} > 90 and $Daily{$_}/$DailyC{$_} < 95 ; + $Body .= "" + if $Daily{$_}/$DailyC{$_} < 90 ; + $Body .= "\n"; + } + $Body .= "
IT Network Systems Availability Summary
Compiled: ". scalar(localtime) . "
ServicePast QuarterPast MonthPast WeekPast Day
$_" . sprintf('%.2f',$Quarterly{$_}/$QuarterlyC{$_}) . "%" . sprintf('%.2f',$Quarterly{$_}/$QuarterlyC{$_}) . "%" . sprintf('%.2f',$Quarterly{$_}/$QuarterlyC{$_}) . "%" . sprintf('%.2f',$Quarterly{$_}/$QuarterlyC{$_}) . "%" . sprintf('%.2f',$Monthly{$_}/$MonthlyC{$_}) . "%" . sprintf('%.2f',$Monthly{$_}/$MonthlyC{$_}) . "%" . sprintf('%.2f',$Monthly{$_}/$MonthlyC{$_}) . "%" . sprintf('%.2f',$Monthly{$_}/$MonthlyC{$_}) . "%" . sprintf('%.2f',$Weekly{$_}/$WeeklyC{$_}) . "%" . sprintf('%.2f',$Weekly{$_}/$WeeklyC{$_}) . "%" . sprintf('%.2f',$Weekly{$_}/$WeeklyC{$_}) . "%" . sprintf('%.2f',$Weekly{$_}/$WeeklyC{$_}) . "%" . sprintf('%.2f',$Daily{$_}/$DailyC{$_}) . "%" . sprintf('%.2f',$Daily{$_}/$DailyC{$_}) . "%" . sprintf('%.2f',$Daily{$_}/$DailyC{$_}) . "%" . sprintf('%.2f',$Daily{$_}/$DailyC{$_}) . "%
"; + $Body .= "

\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "
Legend:
if uptime > 99% then GREEN
if uptime > 95% but < 99% then BLUE
if uptime > 90% but < 95% then YELLOW
if uptime < 90% then RED
\n"; + return $Body; +} + +sub NumDots($) { + # Count the number of dots in a string + # There's probably a better way to do this + my $DNA = shift; + my $a = 0; + while($DNA =~ /\./ig){$a++} + return $a +} + +sub DetailSheet($) { + # Populate the table with details depending on the value of %opts{detail} + my $Seconds = shift; + my $Body = ''; + + return '' unless $opt{detail}; + + # Monthly/Weekly/Daily + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= " + + \n"; + + my %CornBeef; + my %CornBeefC; + + CASE: { + %CornBeef = %Daily, %CornBeefC = %DailyC, print "Doing Daily\n", last CASE if $Seconds == 86400; + %CornBeef = %Weekly, %CornBeefC = %WeeklyC, print "Doing Weekly\n", last CASE if $Seconds == 604800; + %CornBeef = %Monthly, %CornBeefC = %MonthlyC, print "Doing Monthly\n", last CASE if $Seconds == 2592000; + %CornBeef = %Quarterly, %CornBeefC = %QuarterlyC, print "Doing Quarterly\n", last CASE if $Seconds == 7776000; + } # end of CASE block + + foreach (sort { $a cmp $b } keys %CornBeef ) { + next if NumDots ($_) > $opt{detail}; + if ( $_ =~ /\./ ) { + #this is a sub section + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + } else { + # this is a non-sub section + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= ""; + } + } + $Body .= "
IT Network Systems Availability Previous " . $Seconds/86400 . " Day(s)
Compiled: ". scalar(localtime) . "
ServiceSecondsPercent
$_" . sprintf('%.0f',(100 - $CornBeef{$_} / $CornBeefC{$_}) * ($Seconds/100)) . "" . sprintf('%.2f',$CornBeef{$_} / $CornBeefC{$_}) . "%
" . $_ . "" . sprintf('%.0f',(100 - $CornBeef{$_} / $CornBeefC{$_}) * ($Seconds/100)) . "" . sprintf('%.2f',$CornBeef{$_} / $CornBeefC{$_}) . "%
\n"; + return $Body; + } + +sub list_rrds($$$$$); +sub list_rrds($$$$$) { + # List the RRD's used by this configuration + my $tree = shift; + my $path = shift; + my $print = shift; + my $slaves = shift; + my $nomasterpoll = shift; + my $prline = ''; + if ( $opt{slaves} ) { + $slaves = $tree->{slaves} if exists( $tree->{slaves} ); + } else { + $slaves = ''; + } + $nomasterpoll = $tree->{nomasterpoll} if exists ( $tree->{nomasterpoll} ); + foreach my $rrds (keys %{$tree}) { + if (ref $tree->{$rrds} eq 'HASH'){ + $prline .= list_rrds( $tree->{$rrds}, $path."/$rrds", $print, $slaves, $nomasterpoll ); + } + if ($rrds eq 'host' and $tree->{$rrds} !~ m|/| ) { + if ( exists( $opt{slaves} ) && $slaves ) { + foreach( split( /\s+/, $slaves ) ) { + my $tslave = $_; + $prline .= "$cfg->{General}{datadir}$path~$tslave".".rrd\n" + if $opt{slaves} eq '' || grep( $tslave, split( ',', $opt{slaves} ) ); + } + $prline .= "$cfg->{General}{datadir}$path".".rrd\n" unless $nomasterpoll; + } else { + $prline .= "$cfg->{General}{datadir}$path".".rrd\n"; + } + } + } + return $prline; +} + +sub load_cfg ($) { + my $cfgfile = shift; +# my $parser = get_parser; + my $parser = Smokeping::get_parser; + $cfg = Smokeping::get_config $parser, $cfgfile; +} + +########################################################################### +# The Main Program +########################################################################### + +sub main($); +main($cfgfile); + +sub main ($) { + umask 022; + my $cfgfile = shift; + my $sendto; + GetOptions(\%opt, 'quiet','version','testmail','listrrds','to=s','detail=n','morning','weekly','help','man','slaves:s') or pod2usage(2); + if($opt{version}) { print "$RCS_VERSION\n"; exit(0) }; + if($opt{help}) { pod2usage(-verbose => 1); exit 0 }; + if($opt{man}) { pod2usage(-verbose => 2); exit 0 }; + load_cfg $cfgfile; + print "tSmoke for network managed by $cfg->{General}{owner}\nat $cfg->{General}{contact}\n(c) 2003 Dan McGinn-Combs\n" unless $opt{quiet}; + if($opt{testmail}) { test_mail($cfg) }; + if($opt{listrrds}) { print "List of Round Robin Databases used by this implementation\n"; + my @rrds = split ( /\n/,list_rrds($cfg->{Targets},"","","","") ); + foreach (@rrds) { + print "RRD: $_\n"; }; + } + if($opt{morning}) { morning_update($cfg) }; + if($opt{weekly}) { weekly_update($cfg) }; + exit 0; +} + +=head1 NAME + +tSmoke - Commandline tool for sending SmokePing information + +=head1 SYNOPSIS + +B [ B<--testmail> | B<--morning> | B<--weekly> | B<--version> | B<--help> | B<--man> | B<--slaves> ] + + Options: + + --man Show the manpage + --help Help :-) + --version Show SmokePing Version + --testmail Send a test message + --listrrds List the RRDs used by this Smokeping + --morning Send a morning synopsis + --weekly Send a weekly status report + --to E-mail address to send message (i.e. '--to=xyz@company.com.invalid' + --detail How much detail to send in weekly report (i.e. '--detail=1') + --quiet Do not print welcome + --slaves Enable slave support assumes all slaves unless csv list of slaves + is added (i.e. '--slaves' or '--slaves=slave1[,slave2...]') + +=head1 DESCRIPTION + +The B tool is a commandline tool which interfaces with the SmokePing system. +Its main function is to send a message indicating the current status of the systems +being monitored by Smokeping or an HTML mail file containing the status over the past day, +past week and past month including an overview. + +Typical crontab used to invoke this are + + # Quick morning alert to see what's down + 0 6 * * * /usr/local/smokeping/bin/tSmoke.pl --q --to=mobilephone@att.net.invalid --morning + # Weekly report on the percent availability of network systems with no detail + 0 8 * * * /usr/local/smokeping/bin/tSmoke.pl --q --to=mailbox@company.com.invalid --weekly --detail=0 + +=head1 SETUP + +When installing tSmoke, some variables must be adjusted to fit your local system. + +We need to use the following B: + +=over + +=item Smokeping + +=item RRDTool Perl bindings + +=item Getopt::Long + +=back + +Set up your libraries: + + use lib "/usr/local/smokeping/lib"; + use lib "/usr/local/rrdtool-1.0.39/lib/perl"; + +Point to your Smokeping B file + + my $cfgfile = "/usr/local/smokeping/etc/config"; + +Modify the Smokeping config file to include a path for tmail in the +General section: + + tmail = /usr/local/smokeping/etc/tmail + +=head1 SEE ALSO + +L, L + +=head1 COPYRIGHT + +Copyright (c) 2003 by Dan McGinn-Combs. All right reserved. + +=head1 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 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., 675 Mass Ave, Cambridge, MA +02139, USA. + +=head1 AUTHOR + +Dan McGinn-Combs Ed.mcginn-combs@mindspring.comE + +Modified for Smokeping official distribution by Niko Tyni Entyni@iki.fiE + +=cut + diff --git a/config.log b/config.log new file mode 100644 index 0000000..19a46d6 --- /dev/null +++ b/config.log @@ -0,0 +1,324 @@ +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by smokeping configure 2.9.0, which was +generated by GNU Autoconf 2.72. Invocation command line was + + $ ./configure --build=x86_64-linux-gnu --prefix=/usr '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' --sysconfdir=/etc --localstatedir=/var --disable-option-checking --disable-silent-rules '--libdir=${prefix}/lib/x86_64-linux-gnu' --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --with-htdocs-dir=/usr/share/smokeping/www --bindir=/usr/sbin --sysconfdir=/usr/share/doc/smokeping/ --libdir=/usr/share/perl5 + +## --------- ## +## Platform. ## +## --------- ## + +hostname = debian13-template +uname -m = x86_64 +uname -r = 6.12.38+deb13-amd64 +uname -s = Linux +uname -v = #1 SMP PREEMPT_DYNAMIC Debian 6.12.38-1 (2025-07-16) + +/usr/bin/uname -p = unknown +/bin/uname -X = unknown + +/bin/arch = x86_64 +/usr/bin/arch -k = unknown +/usr/convex/getsysinfo = unknown +/usr/bin/hostinfo = unknown +/bin/machine = unknown +/usr/bin/oslevel = unknown +/bin/universe = unknown + +PATH: /usr/local/sbin/ +PATH: /usr/local/bin/ +PATH: /usr/sbin/ +PATH: /usr/bin/ +PATH: /sbin/ +PATH: /bin/ + + +## ----------- ## +## Core tests. ## +## ----------- ## + +configure:1743: looking for aux files: missing install-sh +configure:1756: trying ./conftools/ +configure:1785: ./conftools/missing found +configure:1767: ./conftools/install-sh found +configure:1919: checking for a BSD-compatible install +configure:1993: result: /usr/bin/install -c +configure:2004: checking whether sleep supports fractional seconds +configure:2020: result: yes +configure:2023: checking filesystem timestamp resolution +configure:2158: result: 0.01 +configure:2163: checking whether build environment is sane +configure:2204: result: yes +configure:2375: checking for a race-free mkdir -p +configure:2418: result: /usr/bin/mkdir -p +configure:2425: checking for gawk +configure:2461: result: no +configure:2425: checking for mawk +configure:2446: found /usr/bin/mawk +configure:2458: result: mawk +configure:2469: checking whether make sets $(MAKE) +configure:2493: result: yes +configure:2519: checking whether make supports nested variables +configure:2538: result: yes +configure:2552: checking xargs -n works +configure:2568: result: yes +configure:2653: checking whether UID '0' is supported by ustar format +configure:2659: result: yes +configure:2666: checking whether GID '0' is supported by ustar format +configure:2672: result: yes +configure:2680: checking how to create a ustar tar archive +configure:2691: tar --version +tar (GNU tar) 1.35 +Copyright (C) 2023 Free Software Foundation, Inc. +License GPLv3+: GNU GPL version 3 or later . +This is free software: you are free to change and redistribute it. +There is NO WARRANTY, to the extent permitted by law. + +Written by John Gilmore and Jay Fenlason. +configure:2694: $? = 0 +configure:2734: tardir=conftest.dir && eval tar --format=ustar -chf - "$tardir" >conftest.tar +configure:2737: $? = 0 +configure:2741: tar -xf - /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 e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# 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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$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 case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +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 case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +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 || +printf "%s\n" 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 + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +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=`printf "%s\n" "$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 || +printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +# 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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. 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` +" + +# Files that config.status was made for. +config_files=" Makefile bin/Makefile doc/Makefile htdocs/Makefile etc/Makefile lib/Makefile thirdparty/Makefile etc/config.dist" + +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 + +Configuration files: +$config_files + +Report bugs to ." + +ac_cs_config='--build=x86_64-linux-gnu '\''--includedir=${prefix}/include'\'' '\''--mandir=${prefix}/share/man'\'' '\''--infodir=${prefix}/share/info'\'' --sysconfdir=/etc --localstatedir=/var --disable-option-checking --disable-silent-rules '\''--libdir=${prefix}/lib/x86_64-linux-gnu'\'' --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking --prefix=/usr --with-htdocs-dir=/usr/share/smokeping/www --bindir=/usr/sbin --sysconfdir=/usr/share/doc/smokeping/ --libdir=/usr/share/perl5 build_alias=x86_64-linux-gnu' +ac_cs_version="\ +smokeping config.status 2.9.0 +configured by ./configure, generated by GNU Autoconf 2.72, + with options \"$ac_cs_config\" + +Copyright (C) 2023 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='/root/smoke/smokeping-2.9.0' +srcdir='.' +INSTALL='/usr/bin/install -c' +MKDIR_P='/usr/bin/mkdir -p' +AWK='mawk' +test -n "$AWK" || AWK=awk +# 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 ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$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 + +if $ac_cs_recheck; then + set X /bin/bash './configure' '--build=x86_64-linux-gnu' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--disable-option-checking' '--disable-silent-rules' '--libdir=${prefix}/lib/x86_64-linux-gnu' '--runstatedir=/run' '--disable-maintainer-mode' '--disable-dependency-tracking' '--prefix=/usr' '--with-htdocs-dir=/usr/share/smokeping/www' '--bindir=/usr/sbin' '--sysconfdir=/usr/share/doc/smokeping/' '--libdir=/usr/share/perl5' 'build_alias=x86_64-linux-gnu' $ac_configure_extra_args --no-create --no-recursion + shift + \printf "%s\n" "running CONFIG_SHELL=/bin/bash $*" >&6 + CONFIG_SHELL='/bin/bash' + export CONFIG_SHELL + exec "$@" +fi + +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + printf "%s\n" "$ac_log" +} >&5 + + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "htdocs/Makefile") CONFIG_FILES="$CONFIG_FILES htdocs/Makefile" ;; + "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "thirdparty/Makefile") CONFIG_FILES="$CONFIG_FILES thirdparty/Makefile" ;; + "etc/config.dist") CONFIG_FILES="$CONFIG_FILES etc/config.dist" ;; + + *) 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+y} || CONFIG_FILES=$config_files +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" && +cat >>"$ac_tmp/subs1.awk" <<\_ACAWK && +S["LTLIBOBJS"]="" +S["LIBOBJS"]="" +S["PERL5LIB"]="" +S["HTDOCSDIR"]="/usr/share/smokeping/www" +S["enable_pkgonly"]="" +S["GMAKE"]="/usr/bin/gmake" +S["NROFF"]="/usr/bin/nroff" +S["SENDMAIL"]="/usr/sbin/sendmail" +S["FIND"]="/usr/bin/find" +S["MKDIR"]="/usr/bin/mkdir" +S["RMDIR"]="/usr/bin/rmdir" +S["RM"]="/usr/bin/rm" +S["CP"]="/usr/bin/cp" +S["LN"]="/usr/bin/ln" +S["ECHO"]="/usr/bin/echo" +S["GREP"]="/usr/bin/grep" +S["SED"]="/usr/bin/sed" +S["URL_CAT"]="/usr/bin/curl --location" +S["WGET"]="/usr/bin/wget" +S["CURL"]="/usr/bin/curl" +S["PERL"]="/usr/bin/perl" +S["am__xargs_n"]="xargs -n" +S["am__rm_f_notfound"]="" +S["AM_BACKSLASH"]="\\" +S["AM_DEFAULT_VERBOSITY"]="1" +S["AM_DEFAULT_V"]="$(AM_DEFAULT_VERBOSITY)" +S["AM_V"]="$(V)" +S["CSCOPE"]="cscope" +S["ETAGS"]="etags" +S["CTAGS"]="ctags" +S["am__untar"]="tar -xf -" +S["am__tar"]="tar --format=ustar -chf - \"$$tardir\"" +S["AMTAR"]="$${TAR-tar}" +S["am__leading_dot"]="." +S["SET_MAKE"]="" +S["AWK"]="mawk" +S["mkdir_p"]="$(MKDIR_P)" +S["MKDIR_P"]="/usr/bin/mkdir -p" +S["INSTALL_STRIP_PROGRAM"]="$(install_sh) -c -s" +S["STRIP"]="" +S["install_sh"]="${SHELL} /root/smoke/smokeping-2.9.0/conftools/install-sh" +S["MAKEINFO"]="${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' makeinfo" +S["AUTOHEADER"]="${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' autoheader" +S["AUTOMAKE"]="${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' automake-1.17" +S["AUTOCONF"]="${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' autoconf" +S["ACLOCAL"]="${SHELL} '/root/smoke/smokeping-2.9.0/conftools/missing' aclocal-1.17" +S["VERSION"]="2.9.0" +S["PACKAGE"]="smokeping" +S["CYGPATH_W"]="echo" +S["am__isrc"]="" +S["INSTALL_DATA"]="${INSTALL} -m 644" +S["INSTALL_SCRIPT"]="${INSTALL}" +S["INSTALL_PROGRAM"]="${INSTALL}" +S["target_alias"]="" +S["host_alias"]="" +S["build_alias"]="x86_64-linux-gnu" +S["LIBS"]="" +S["ECHO_T"]="" +S["ECHO_N"]="-n" +S["ECHO_C"]="" +S["DEFS"]="-DPACKAGE_NAME=\\\"smokeping\\\" -DPACKAGE_TARNAME=\\\"smokeping\\\" -DPACKAGE_VERSION=\\\"2.9.0\\\" -DPACKAGE_STRING=\\\"smokeping\\ 2.9.0\\\" -DPACKAGE_BUGREPORT=\\"\ +"\"tobi@oetiker.ch\\\" -DPACKAGE_URL=\\\"\\\" -DPACKAGE=\\\"smokeping\\\" -DVERSION=\\\"2.9.0\\\"" +S["mandir"]="${prefix}/share/man" +S["localedir"]="${datarootdir}/locale" +S["libdir"]="/usr/share/perl5" +S["psdir"]="${docdir}" +S["pdfdir"]="${docdir}" +S["dvidir"]="${docdir}" +S["htmldir"]="${docdir}" +S["infodir"]="${prefix}/share/info" +S["docdir"]="${datarootdir}/doc/${PACKAGE_TARNAME}" +S["oldincludedir"]="/usr/include" +S["includedir"]="${prefix}/include" +S["runstatedir"]="/run" +S["localstatedir"]="/var" +S["sharedstatedir"]="${prefix}/com" +S["sysconfdir"]="/usr/share/doc/smokeping" +S["datadir"]="${datarootdir}" +S["datarootdir"]="${prefix}/share" +S["libexecdir"]="${exec_prefix}/libexec" +S["sbindir"]="${exec_prefix}/sbin" +S["bindir"]="/usr/sbin" +S["program_transform_name"]="s,x,x," +S["prefix"]="/usr" +S["exec_prefix"]="${prefix}" +S["PACKAGE_URL"]="" +S["PACKAGE_BUGREPORT"]="tobi@oetiker.ch" +S["PACKAGE_STRING"]="smokeping 2.9.0" +S["PACKAGE_VERSION"]="2.9.0" +S["PACKAGE_TARNAME"]="smokeping" +S["PACKAGE_NAME"]="smokeping" +S["PATH_SEPARATOR"]=":" +S["SHELL"]="/bin/bash" +_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 +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 +fi # test -n "$CONFIG_FILES" + + +eval set X " :F $CONFIG_FILES " +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=`printf "%s\n" "$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 '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$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 || +printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +# 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@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} + ac_datarootdir_hack=' + s&@datadir@&${datarootdir}&g + s&@docdir@&${datarootdir}/doc/${PACKAGE_TARNAME}&g + s&@infodir@&${prefix}/share/info&g + s&@localedir@&${datarootdir}/locale&g + s&@mandir@&${prefix}/share/man&g + s&\${datarootdir}&${prefix}/share&g' ;; +esac +ac_sed_extra="/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +} + +: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 +s&@MKDIR_P@&$ac_MKDIR_P&;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"; } && + { printf "%s\n" "$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 +printf "%s\n" "$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 + ;; + + + + esac + +done # for ac_tag + + +as_fn_exit 0 diff --git a/configure b/configure new file mode 100755 index 0000000..54b8c0f --- /dev/null +++ b/configure @@ -0,0 +1,4837 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.72 for smokeping 2.9.0. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2017, 2020-2023 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 ${ZSH_VERSION+y} && (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 e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + +# 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +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 \${ZSH_VERSION+y} && (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 e in #( + e) case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +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 case e in #( + e) exitcode=1; echo positional parameters were not saved. ;; +esac +fi +test x\$exitcode = x0 || exit 1 +blah=\$(echo \$(echo blah)) +test x\"\$blah\" = xblah || 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" + if (eval "$as_required") 2>/dev/null +then : + as_have_required=yes +else case e in #( + e) as_have_required=no ;; +esac +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null +then : + +else case e in #( + e) 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$as_shell as_have_required=yes + if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null +then : + break 2 +fi +fi + done;; + esac + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null +then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi ;; +esac +fi + + + 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'. +printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno +then : + printf "%s\n" "$0: This script requires a shell more modern than all" + printf "%s\n" "$0: the shells that I found on your system." + if test ${ZSH_VERSION+y} ; then + printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" + printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." + else + printf "%s\n" "$0: Please tell bug-autoconf@gnu.org and tobi@oetiker.ch +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi ;; +esac +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=`printf "%s\n" "$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 || +printf "%s\n" 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 case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +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 case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$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 || +printf "%s\n" 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 ' + t clear + :clear + 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" || + { printf "%s\n" "$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 +} + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +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='smokeping' +PACKAGE_TARNAME='smokeping' +PACKAGE_VERSION='2.9.0' +PACKAGE_STRING='smokeping 2.9.0' +PACKAGE_BUGREPORT='tobi@oetiker.ch' +PACKAGE_URL='' + +ac_default_prefix=/opt/$PACKAGE_NAME-$PACKAGE_VERSION +ac_subst_vars='LTLIBOBJS +LIBOBJS +PERL5LIB +HTDOCSDIR +enable_pkgonly +GMAKE +NROFF +SENDMAIL +FIND +MKDIR +RMDIR +RM +CP +LN +ECHO +GREP +SED +URL_CAT +WGET +CURL +PERL +am__xargs_n +am__rm_f_notfound +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +CSCOPE +ETAGS +CTAGS +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +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 +runstatedir +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_silent_rules +enable_pkgonly +with_htdocs_dir +' + ac_precious_vars='build_alias +host_alias +target_alias +PERL +GMAKE +PERL5LIB' + + +# 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' +runstatedir='${localstatedir}/run' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +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 + + 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=`printf "%s\n" "$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=`printf "%s\n" "$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 ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst | --runs \ + | --run | --ru | --r) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ + | --run=* | --ru=* | --r=*) + runstatedir=$ac_optarg ;; + + -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=`printf "%s\n" "$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=`printf "%s\n" "$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. + printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + printf "%s\n" "$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" ;; + *) printf "%s\n" "$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 runstatedir +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 || +printf "%s\n" 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 smokeping 2.9.0 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] + --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] + --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/smokeping] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of smokeping 2.9.0:";; + esac + 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] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-pkgonly Skip all checking + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-htdocs-dir=DIR Where to install htdocs [PREFIX/htdocs] + +Some influential environment variables: + PERL Path to local perl binary + GMAKE Path to local GNU Make binary + PERL5LIB Colon separated list of perl library directories + +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 . +_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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 configure.gnu first; this name is used for a wrapper for + # Metaconfig's "Configure" on case-insensitive file systems. + 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 + printf "%s\n" "$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 +smokeping configure 2.9.0 +generated by GNU Autoconf 2.72 + +Copyright (C) 2023 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_configure_args_raw= +for ac_arg +do + case $ac_arg in + *\'*) + ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append ac_configure_args_raw " '$ac_arg'" +done + +case $ac_configure_args_raw in + *$as_nl*) + ac_safe_unquote= ;; + *) + ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. + ac_unsafe_a="$ac_unsafe_z#~" + ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" + ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; +esac + +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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. Invocation command line was + + $ $0$ac_configure_args_raw + +_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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + printf "%s\n" "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=`printf "%s\n" "$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=$? + # Sanitize IFS. + IFS=" "" $as_nl" + # Save into config.log some information that might help in debugging. + { + echo + + printf "%s\n" "## ---------------- ## +## 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$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 + + printf "%s\n" "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + printf "%s\n" "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + printf "%s\n" "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + printf "%s\n" "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + printf "%s\n" "$as_me: caught signal $ac_signal" + printf "%s\n" "$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 + +printf "%s\n" "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h + +printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +if test -n "$CONFIG_SITE"; then + ac_site_files="$CONFIG_SITE" +elif test "x$prefix" != xNONE; then + ac_site_files="$prefix/share/config.site $prefix/etc/config.site" +else + ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" +fi + +for ac_site_file in $ac_site_files +do + case $ac_site_file in #( + */*) : + ;; #( + *) : + ac_site_file=./$ac_site_file ;; +esac + if test -f "$ac_site_file" && test -r "$ac_site_file"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +printf "%s\n" "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +printf "%s\n" "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + + +# Auxiliary files required by this configure script. +ac_aux_files="missing install-sh" + +# Locations in which to look for auxiliary files. +ac_aux_dir_candidates="${srcdir}/conftools" + +# Search for a directory containing all of the required auxiliary files, +# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. +# If we don't find one directory that contains all the files we need, +# we report the set of missing files from the *first* directory in +# $ac_aux_dir_candidates and give up. +ac_missing_aux_files="" +ac_first_candidate=: +printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in $ac_aux_dir_candidates +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + as_found=: + + printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 + ac_aux_dir_found=yes + ac_install_sh= + for ac_aux in $ac_aux_files + do + # As a special case, if "install-sh" is required, that requirement + # can be satisfied by any of "install-sh", "install.sh", or "shtool", + # and $ac_install_sh is set appropriately for whichever one is found. + if test x"$ac_aux" = x"install-sh" + then + if test -f "${as_dir}install-sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 + ac_install_sh="${as_dir}install-sh -c" + elif test -f "${as_dir}install.sh"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 + ac_install_sh="${as_dir}install.sh -c" + elif test -f "${as_dir}shtool"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 + ac_install_sh="${as_dir}shtool install -c" + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} install-sh" + else + break + fi + fi + else + if test -f "${as_dir}${ac_aux}"; then + printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 + else + ac_aux_dir_found=no + if $ac_first_candidate; then + ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" + else + break + fi + fi + fi + done + if test "$ac_aux_dir_found" = yes; then + ac_aux_dir="$as_dir" + break + fi + ac_first_candidate=false + + as_found=false +done +IFS=$as_save_IFS +if $as_found +then : + +else case e in #( + e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; +esac +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. +if test -f "${ac_aux_dir}config.guess"; then + ac_config_guess="$SHELL ${ac_aux_dir}config.guess" +fi +if test -f "${ac_aux_dir}config.sub"; then + ac_config_sub="$SHELL ${ac_aux_dir}config.sub" +fi +if test -f "$ac_aux_dir/configure"; then + ac_configure="$SHELL ${ac_aux_dir}configure" +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,) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 +printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 +printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 +printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 +printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 +printf "%s\n" "$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=`printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run '${MAKE-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 + + + + + +# need this to allow long path names +am__api_version='1.17' + + + + # 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. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +printf %s "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if test ${ac_cv_path_install+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + # Account for fact that we put trailing slashes in our PATH walk. +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 + ;; +esac +fi + if test ${ac_cv_path_install+y}; 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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +printf "%s\n" "$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' + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether sleep supports fractional seconds" >&5 +printf %s "checking whether sleep supports fractional seconds... " >&6; } +if test ${am_cv_sleep_fractional_seconds+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if sleep 0.001 2>/dev/null +then : + am_cv_sleep_fractional_seconds=yes +else case e in #( + e) am_cv_sleep_fractional_seconds=no ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_sleep_fractional_seconds" >&5 +printf "%s\n" "$am_cv_sleep_fractional_seconds" >&6; } + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking filesystem timestamp resolution" >&5 +printf %s "checking filesystem timestamp resolution... " >&6; } +if test ${am_cv_filesystem_timestamp_resolution+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) # Default to the worst case. +am_cv_filesystem_timestamp_resolution=2 + +# Only try to go finer than 1 sec if sleep can do it. +# Don't try 1 sec, because if 0.01 sec and 0.1 sec don't work, +# - 1 sec is not much of a win compared to 2 sec, and +# - it takes 2 seconds to perform the test whether 1 sec works. +# +# Instead, just use the default 2s on platforms that have 1s resolution, +# accept the extra 1s delay when using $sleep in the Automake tests, in +# exchange for not incurring the 2s delay for running the test for all +# packages. +# +am_try_resolutions= +if test "$am_cv_sleep_fractional_seconds" = yes; then + # Even a millisecond often causes a bunch of false positives, + # so just try a hundredth of a second. The time saved between .001 and + # .01 is not terribly consequential. + am_try_resolutions="0.01 0.1 $am_try_resolutions" +fi + +# In order to catch current-generation FAT out, we must *modify* files +# that already exist; the *creation* timestamp is finer. Use names +# that make ls -t sort them differently when they have equal +# timestamps than when they have distinct timestamps, keeping +# in mind that ls -t prints the *newest* file first. +rm -f conftest.ts? +: > conftest.ts1 +: > conftest.ts2 +: > conftest.ts3 + +# Make sure ls -t actually works. Do 'set' in a subshell so we don't +# clobber the current shell's arguments. (Outer-level square brackets +# are removed by m4; they're present so that m4 does not expand +# ; be careful, easy to get confused.) +if ( + set X `ls -t conftest.ts[12]` && + { + test "$*" != "X conftest.ts1 conftest.ts2" || + test "$*" != "X conftest.ts2 conftest.ts1"; + } +); then :; else + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + printf "%s\n" ""Bad output from ls -t: \"`ls -t conftest.ts[12]`\""" >&5 + { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 +printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} +as_fn_error $? "ls -t produces unexpected output. +Make sure there is not a broken ls alias in your environment. +See 'config.log' for more details" "$LINENO" 5; } +fi + +for am_try_res in $am_try_resolutions; do + # Any one fine-grained sleep might happen to cross the boundary + # between two values of a coarser actual resolution, but if we do + # two fine-grained sleeps in a row, at least one of them will fall + # entirely within a coarse interval. + echo alpha > conftest.ts1 + sleep $am_try_res + echo beta > conftest.ts2 + sleep $am_try_res + echo gamma > conftest.ts3 + + # We assume that 'ls -t' will make use of high-resolution + # timestamps if the operating system supports them at all. + if (set X `ls -t conftest.ts?` && + test "$2" = conftest.ts3 && + test "$3" = conftest.ts2 && + test "$4" = conftest.ts1); then + # + # Ok, ls -t worked. If we're at a resolution of 1 second, we're done, + # because we don't need to test make. + make_ok=true + if test $am_try_res != 1; then + # But if we've succeeded so far with a subsecond resolution, we + # have one more thing to check: make. It can happen that + # everything else supports the subsecond mtimes, but make doesn't; + # notably on macOS, which ships make 3.81 from 2006 (the last one + # released under GPLv2). https://bugs.gnu.org/68808 + # + # We test $MAKE if it is defined in the environment, else "make". + # It might get overridden later, but our hope is that in practice + # it does not matter: it is the system "make" which is (by far) + # the most likely to be broken, whereas if the user overrides it, + # probably they did so with a better, or at least not worse, make. + # https://lists.gnu.org/archive/html/automake/2024-06/msg00051.html + # + # Create a Makefile (real tab character here): + rm -f conftest.mk + echo 'conftest.ts1: conftest.ts2' >conftest.mk + echo ' touch conftest.ts2' >>conftest.mk + # + # Now, running + # touch conftest.ts1; touch conftest.ts2; make + # should touch ts1 because ts2 is newer. This could happen by luck, + # but most often, it will fail if make's support is insufficient. So + # test for several consecutive successes. + # + # (We reuse conftest.ts[12] because we still want to modify existing + # files, not create new ones, per above.) + n=0 + make=${MAKE-make} + until test $n -eq 3; do + echo one > conftest.ts1 + sleep $am_try_res + echo two > conftest.ts2 # ts2 should now be newer than ts1 + if $make -f conftest.mk | grep 'up to date' >/dev/null; then + make_ok=false + break # out of $n loop + fi + n=`expr $n + 1` + done + fi + # + if $make_ok; then + # Everything we know to check worked out, so call this resolution good. + am_cv_filesystem_timestamp_resolution=$am_try_res + break # out of $am_try_res loop + fi + # Otherwise, we'll go on to check the next resolution. + fi +done +rm -f conftest.ts? +# (end _am_filesystem_timestamp_resolution) + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_filesystem_timestamp_resolution" >&5 +printf "%s\n" "$am_cv_filesystem_timestamp_resolution" >&6; } + +# This check should not be cached, as it may vary across builds of +# different projects. +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +printf %s "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +am_build_env_is_sane=no +am_has_slept=no +rm -f conftest.file +for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + if ( + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + test "$2" = conftest.file + ); then + am_build_env_is_sane=yes + break + fi + # Just in case. + sleep "$am_cv_filesystem_timestamp_resolution" + am_has_slept=yes +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_build_env_is_sane" >&5 +printf "%s\n" "$am_build_env_is_sane" >&6; } +if test "$am_build_env_is_sane" = no; then + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi + +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if test -e conftest.file || grep 'slept: no' conftest.file >/dev/null 2>&1 +then : + +else case e in #( + e) ( sleep "$am_cv_filesystem_timestamp_resolution" ) & + am_sleep_pid=$! + ;; +esac +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was 's,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`printf "%s\n" "$program_transform_name" | sed "$ac_script"` + + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + + + if test x"${MISSING+set}" != xset; then + MISSING="\${SHELL} '$am_aux_dir/missing'" +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +printf "%s\n" "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_STRIP="${ac_tool_prefix}strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +printf "%s\n" "$STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_ac_ct_STRIP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_STRIP="strip" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +printf "%s\n" "$ac_ct_STRIP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a race-free mkdir -p" >&5 +printf %s "checking for a race-free mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if test ${ac_cv_path_mkdir+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext" || continue + case `"$as_dir$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir ('*'coreutils) '* | \ + *'BusyBox '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + ;; +esac +fi + + test -d ./--version && rmdir ./--version + if test ${ac_cv_path_mkdir+y}; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use plain mkdir -p, + # in the hope it doesn't have the bugs of ancient mkdir. + MKDIR_P='mkdir -p' + fi +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +printf "%s\n" "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_prog_AWK+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_AWK="$ac_prog" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi ;; +esac +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +printf "%s\n" "$AWK" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +printf %s "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`printf "%s\n" "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval test \${ac_cv_prog_make_${ac_make}_set+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make ;; +esac +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + SET_MAKE= +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +AM_DEFAULT_VERBOSITY=1 +# Check whether --enable-silent-rules was given. +if test ${enable_silent_rules+y} +then : + enableval=$enable_silent_rules; +fi + +am_make=${MAKE-make} +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +printf %s "checking whether $am_make supports nested variables... " >&6; } +if test ${am_cv_make_support_nested_variables+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if printf "%s\n" 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +printf "%s\n" "$am_cv_make_support_nested_variables" >&6; } +AM_BACKSLASH='\' + +am__rm_f_notfound= +if (rm -f && rm -fr && rm -rf) 2>/dev/null +then : + +else case e in #( + e) am__rm_f_notfound='""' ;; +esac +fi + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking xargs -n works" >&5 +printf %s "checking xargs -n works... " >&6; } +if test ${am_cv_xargs_n_works+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if test "`echo 1 2 3 | xargs -n2 echo`" = "1 2 +3" +then : + am_cv_xargs_n_works=yes +else case e in #( + e) am_cv_xargs_n_works=no ;; +esac +fi ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_xargs_n_works" >&5 +printf "%s\n" "$am_cv_xargs_n_works" >&6; } +if test "$am_cv_xargs_n_works" = yes +then : + am__xargs_n='xargs -n' +else case e in #( + e) am__xargs_n='am__xargs_n () { shift; sed "s/ /\\n/g" | while read am__xargs_n_arg; do "" "$am__xargs_n_arg"; done; }' + ;; +esac +fi + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='smokeping' + VERSION='2.9.0' + + +printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h + + +printf "%s\n" "#define VERSION \"$VERSION\"" >>confdefs.h + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar plaintar pax cpio none' + +# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether UID '$am_uid' is supported by ustar format" >&5 +printf %s "checking whether UID '$am_uid' is supported by ustar format... " >&6; } + if test x$am_uid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current UID is ok, but dist-ustar might not work" >&2;} + elif test $am_uid -le $am_max_uid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether GID '$am_gid' is supported by ustar format" >&5 +printf %s "checking whether GID '$am_gid' is supported by ustar format... " >&6; } + if test x$gm_gid = xunknown; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&5 +printf "%s\n" "$as_me: WARNING: ancient id detected; assuming current GID is ok, but dist-ustar might not work" >&2;} + elif test $am_gid -le $am_max_gid; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +printf "%s\n" "yes" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } + _am_tools=none + fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to create a ustar tar archive" >&5 +printf %s "checking how to create a ustar tar archive... " >&6; } + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_ustar-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + { echo "$as_me:$LINENO: $_am_tar --version" >&5 + ($_am_tar --version) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && break + done + am__tar="$_am_tar --format=ustar -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=ustar -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x ustar -w "$$tardir"' + am__tar_='pax -L -x ustar -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H ustar -L' + am__tar_='find "$tardir" -print | cpio -o -H ustar -L' + am__untar='cpio -i -H ustar -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_ustar}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + { echo "$as_me:$LINENO: tardir=conftest.dir && eval $am__tar_ >conftest.tar" >&5 + (tardir=conftest.dir && eval $am__tar_ >conftest.tar) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + rm -rf conftest.dir + if test -s conftest.tar; then + { echo "$as_me:$LINENO: $am__untar &5 + ($am__untar &5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + { echo "$as_me:$LINENO: cat conftest.dir/file" >&5 + (cat conftest.dir/file) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + grep GrepMe conftest.dir/file >/dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + if test ${am_cv_prog_tar_ustar+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) am_cv_prog_tar_ustar=$_am_tool ;; +esac +fi + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_tar_ustar" >&5 +printf "%s\n" "$am_cv_prog_tar_ustar" >&6; } + + + + + +# Variables for tags utilities; see am/tags.am +if test -z "$CTAGS"; then + CTAGS=ctags +fi + +if test -z "$ETAGS"; then + ETAGS=etags +fi + +if test -z "$CSCOPE"; then + CSCOPE=cscope +fi + + + + + + + + + + + +# Extract the first word of "perl", so it can be a program name with args. +set dummy perl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_PERL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $PERL in + [\\/]* | ?:[\\/]*) + ac_cv_path_PERL="$PERL" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_PERL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_PERL" && ac_cv_path_PERL="no" + ;; +esac ;; +esac +fi +PERL=$ac_cv_path_PERL +if test -n "$PERL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5 +printf "%s\n" "$PERL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "curl", so it can be a program name with args. +set dummy curl; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CURL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $CURL in + [\\/]* | ?:[\\/]*) + ac_cv_path_CURL="$CURL" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_CURL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CURL" && ac_cv_path_CURL="no" + ;; +esac ;; +esac +fi +CURL=$ac_cv_path_CURL +if test -n "$CURL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CURL" >&5 +printf "%s\n" "$CURL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "wget", so it can be a program name with args. +set dummy wget; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_WGET+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $WGET in + [\\/]* | ?:[\\/]*) + ac_cv_path_WGET="$WGET" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_WGET="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_WGET" && ac_cv_path_WGET="no" + ;; +esac ;; +esac +fi +WGET=$ac_cv_path_WGET +if test -n "$WGET"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $WGET" >&5 +printf "%s\n" "$WGET" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + +URL_CAT="neither curl nor wget found" + +if test -x "$CURL"; then + URL_CAT="$CURL --location" +else + if test -x "$WGET"; then + URL_CAT="$WGET -O -" + fi +fi + + + +ac_perl_version="5.10.1" + +if test "x$PERL" != "x"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for perl version greater than or equal to $ac_perl_version" >&5 +printf %s "checking for perl version greater than or equal to $ac_perl_version... " >&6; } + $PERL -e "use $ac_perl_version;" >/dev/null 2>&1 + if test $? -ne 0; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; }; + as_fn_error $? "at least version 5.10.1 is required to run mojolicious" "$LINENO" 5 + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +printf "%s\n" "ok" >&6; }; + fi +else + as_fn_error $? "could not find perl" "$LINENO" 5 +fi + + +# Extract the first word of "sed", so it can be a program name with args. +set dummy sed; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SED+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $SED in + [\\/]* | ?:[\\/]*) + ac_cv_path_SED="$SED" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_SED="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SED" && ac_cv_path_SED="no" + ;; +esac ;; +esac +fi +SED=$ac_cv_path_SED +if test -n "$SED"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SED" >&5 +printf "%s\n" "$SED" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "grep", so it can be a program name with args. +set dummy grep; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GREP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $GREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_GREP="$GREP" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GREP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_GREP" && ac_cv_path_GREP="no" + ;; +esac ;; +esac +fi +GREP=$ac_cv_path_GREP +if test -n "$GREP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GREP" >&5 +printf "%s\n" "$GREP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "echo", so it can be a program name with args. +set dummy echo; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_ECHO+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $ECHO in + [\\/]* | ?:[\\/]*) + ac_cv_path_ECHO="$ECHO" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_ECHO="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_ECHO" && ac_cv_path_ECHO="no" + ;; +esac ;; +esac +fi +ECHO=$ac_cv_path_ECHO +if test -n "$ECHO"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ECHO" >&5 +printf "%s\n" "$ECHO" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "ln", so it can be a program name with args. +set dummy ln; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_LN+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $LN in + [\\/]* | ?:[\\/]*) + ac_cv_path_LN="$LN" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_LN="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_LN" && ac_cv_path_LN="no" + ;; +esac ;; +esac +fi +LN=$ac_cv_path_LN +if test -n "$LN"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LN" >&5 +printf "%s\n" "$LN" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "cp", so it can be a program name with args. +set dummy cp; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_CP+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $CP in + [\\/]* | ?:[\\/]*) + ac_cv_path_CP="$CP" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_CP="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_CP" && ac_cv_path_CP="no" + ;; +esac ;; +esac +fi +CP=$ac_cv_path_CP +if test -n "$CP"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CP" >&5 +printf "%s\n" "$CP" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "rm", so it can be a program name with args. +set dummy rm; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_RM+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $RM in + [\\/]* | ?:[\\/]*) + ac_cv_path_RM="$RM" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_RM="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_RM" && ac_cv_path_RM="no" + ;; +esac ;; +esac +fi +RM=$ac_cv_path_RM +if test -n "$RM"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RM" >&5 +printf "%s\n" "$RM" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "rmdir", so it can be a program name with args. +set dummy rmdir; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_RMDIR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $RMDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_RMDIR="$RMDIR" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_RMDIR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_RMDIR" && ac_cv_path_RMDIR="no" + ;; +esac ;; +esac +fi +RMDIR=$ac_cv_path_RMDIR +if test -n "$RMDIR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RMDIR" >&5 +printf "%s\n" "$RMDIR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "mkdir", so it can be a program name with args. +set dummy mkdir; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_MKDIR+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $MKDIR in + [\\/]* | ?:[\\/]*) + ac_cv_path_MKDIR="$MKDIR" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_MKDIR="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_MKDIR" && ac_cv_path_MKDIR="no" + ;; +esac ;; +esac +fi +MKDIR=$ac_cv_path_MKDIR +if test -n "$MKDIR"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $MKDIR" >&5 +printf "%s\n" "$MKDIR" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "find", so it can be a program name with args. +set dummy find; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_FIND+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $FIND in + [\\/]* | ?:[\\/]*) + ac_cv_path_FIND="$FIND" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_FIND="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_FIND" && ac_cv_path_FIND="no" + ;; +esac ;; +esac +fi +FIND=$ac_cv_path_FIND +if test -n "$FIND"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FIND" >&5 +printf "%s\n" "$FIND" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +# Extract the first word of "sendmail", so it can be a program name with args. +set dummy sendmail; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_SENDMAIL+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $SENDMAIL in + [\\/]* | ?:[\\/]*) + ac_cv_path_SENDMAIL="$SENDMAIL" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_dummy="$PATH:/usr/sbin:/usr/lib" +for as_dir in $as_dummy +do + IFS=$as_save_IFS + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_SENDMAIL="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + test -z "$ac_cv_path_SENDMAIL" && ac_cv_path_SENDMAIL="/path/to/sendmail" + ;; +esac ;; +esac +fi +SENDMAIL=$ac_cv_path_SENDMAIL +if test -n "$SENDMAIL"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $SENDMAIL" >&5 +printf "%s\n" "$SENDMAIL" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + +for ac_prog in gnroff nroff +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_NROFF+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $NROFF in + [\\/]* | ?:[\\/]*) + ac_cv_path_NROFF="$NROFF" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_NROFF="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +NROFF=$ac_cv_path_NROFF +if test -n "$NROFF"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $NROFF" >&5 +printf "%s\n" "$NROFF" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$NROFF" && break +done + + + +for ac_prog in gnumake 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 +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +printf %s "checking for $ac_word... " >&6; } +if test ${ac_cv_path_GMAKE+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) case $GMAKE in + [\\/]* | ?:[\\/]*) + ac_cv_path_GMAKE="$GMAKE" # 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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_GMAKE="$as_dir$ac_word$ac_exec_ext" + printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac ;; +esac +fi +GMAKE=$ac_cv_path_GMAKE +if test -n "$GMAKE"; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMAKE" >&5 +printf "%s\n" "$GMAKE" >&6; } +else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 +printf "%s\n" "no" >&6; } +fi + + + test -n "$GMAKE" && break +done + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking checking for gnu make availability" >&5 +printf %s "checking checking for gnu make availability... " >&6; } +if ( $GMAKE --version 2> /dev/null | $GREP GNU > /dev/null 2>&1 ); then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $GMAKE is GNU make" >&5 +printf "%s\n" "$GMAKE is GNU make" >&6; } +else + as_fn_error $? "GNU make not found. Try setting the GMAKE environment variable." "$LINENO" 5 +fi + +# Check whether --enable-pkgonly was given. +if test ${enable_pkgonly+y} +then : + enableval=$enable_pkgonly; +fi + + + +# $prefix stores the value of the --prefix command line option, or +# NONE if the option wasn't set. In the case that it wasn't set, make +# it be the default, so that we can use it to expand directories now. + +actual_prefix=$prefix +if test x$actual_prefix = xNONE; then + actual_prefix=$ac_default_prefix +fi + +HTDOCSDIR=${actual_prefix}/htdocs + +# Check whether --with-htdocs-dir was given. +if test ${with_htdocs_dir+y} +then : + withval=$with_htdocs_dir; HTDOCSDIR=$withval +fi + + + + + + + +# Check the necessary Perl modules + +mod_ok=1 +if test "$enable_pkgonly" != yes; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking checking for RRDs perl module" >&5 +printf %s "checking checking for RRDs perl module... " >&6; } + if ${PERL} -e 'use RRDs' 2>/dev/null ; then + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Ok" >&5 +printf "%s\n" "Ok" >&6; } + else + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Failed" >&5 +printf "%s\n" "Failed" >&6; } + mod_ok=0 + fi +fi + +if test x$mod_ok = x0; then + 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_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +printf "%s\n" "$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+y} || &/ + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +printf "%s\n" "$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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +printf "%s\n" "$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}' + +# Transform confdefs.h into DEFS. +# Protect against shell expansion while executing Makefile rules. +# Protect against Makefile macro expansion. +# +# If the first sed substitution is executed (which looks for macros that +# take arguments), then branch to the quote section. Otherwise, +# look for a macro that doesn't take arguments. +ac_script=' +:mline +/\\$/{ + N + s,\\\n,, + b mline +} +t clear +:clear +s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g +t quote +s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g +t quote +b any +:quote +s/[][ `~#$^&*(){}\\|;'\''"<>?]/\\&/g +s/\$/$$/g +H +:any +${ + g + s/^\n// + s/\n/ /g + p +} +' +DEFS=`sed -n "$ac_script" confdefs.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=`printf "%s\n" "$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 + + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +printf %s "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: done" >&5 +printf "%s\n" "done" >&6; } +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; +esac +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi + + + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +printf "%s\n" "$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 ${ZSH_VERSION+y} && (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 e in #( + e) case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac ;; +esac +fi + + + +# Reset variables that may have inherited troublesome values from +# the environment. + +# IFS needs to be set, to space, tab, and newline, in precisely that order. +# (If _AS_PATH_WALK were called with IFS unset, it would have the +# side effect of setting IFS to empty, thus disabling word splitting.) +# Quoting is to prevent editors from complaining about space-tab. +as_nl=' +' +export as_nl +IFS=" "" $as_nl" + +PS1='$ ' +PS2='> ' +PS4='+ ' + +# Ensure predictable behavior from utilities with locale-dependent output. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# We cannot yet rely on "unset" to work, but we need these variables +# to be unset--not just set to an empty or harmless value--now, to +# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct +# also avoids known problems related to "unset" and subshell syntax +# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). +for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH +do eval test \${$as_var+y} \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done + +# Ensure that fds 0, 1, and 2 are open. +if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi +if (exec 3>&2) ; then :; else exec 2>/dev/null; fi + +# The user is always right. +if ${PATH_SEPARATOR+false} :; 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 + + +# 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 + case $as_dir in #((( + '') as_dir=./ ;; + */) ;; + *) as_dir=$as_dir/ ;; + esac + 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 + printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + + + +# 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 + printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + printf "%s\n" "$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 case e in #( + e) as_fn_append () + { + eval $1=\$$1\$2 + } ;; +esac +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 case e in #( + e) as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } ;; +esac +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 || +printf "%s\n" 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 + + +# Determine whether it's possible to make 'echo' print without a newline. +# These variables are no longer used directly by Autoconf, but are AC_SUBSTed +# for compatibility with existing Makefiles. +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 + +# For backward compatibility with old third-party macros, we provide +# the shell variables $as_echo and $as_echo_n. New code should use +# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. +as_echo='printf %s\n' +as_echo_n='printf %s' + +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=`printf "%s\n" "$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 || +printf "%s\n" 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_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" +as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated + +# Sed expression to map a string onto a valid variable name. +as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" +as_tr_sh="eval sed '$as_sed_sh'" # deprecated + + +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 smokeping $as_me 2.9.0, which was +generated by GNU Autoconf 2.72. 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 + + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" + +_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 + +Configuration files: +$config_files + +Report bugs to ." + +_ACEOF +ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` +ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config='$ac_cs_config_escaped' +ac_cs_version="\\ +smokeping config.status 2.9.0 +configured by $0, generated by GNU Autoconf 2.72, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2023 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' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +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 ) + printf "%s\n" "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + printf "%s\n" "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h | --help | --hel | -h ) + printf "%s\n" "$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 + \printf "%s\n" "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 + printf "%s\n" "$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 + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "bin/Makefile") CONFIG_FILES="$CONFIG_FILES bin/Makefile" ;; + "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; + "htdocs/Makefile") CONFIG_FILES="$CONFIG_FILES htdocs/Makefile" ;; + "etc/Makefile") CONFIG_FILES="$CONFIG_FILES etc/Makefile" ;; + "lib/Makefile") CONFIG_FILES="$CONFIG_FILES lib/Makefile" ;; + "thirdparty/Makefile") CONFIG_FILES="$CONFIG_FILES thirdparty/Makefile" ;; + "etc/config.dist") CONFIG_FILES="$CONFIG_FILES etc/config.dist" ;; + + *) 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+y} || CONFIG_FILES=$config_files +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" + + +eval set X " :F $CONFIG_FILES " +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=`printf "%s\n" "$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 '` + printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +printf "%s\n" "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`printf "%s\n" "$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 || +printf "%s\n" 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=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`printf "%s\n" "$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 + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + 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@*) + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +printf "%s\n" "$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 +s&@MKDIR_P@&$ac_MKDIR_P&;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"; } && + { printf "%s\n" "$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 +printf "%s\n" "$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 + ;; + + + + 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 + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + + + cat </dev/null 2>&1 + if test $? -ne 0; then + AC_MSG_RESULT(no); + AC_MSG_ERROR(at least version 5.10.1 is required to run mojolicious) + else + AC_MSG_RESULT(ok); + fi +else + AC_MSG_ERROR(could not find perl) +fi + + +AC_PATH_PROG(SED, sed, no) +AC_PATH_PROG(GREP, grep, no) +AC_PATH_PROG(ECHO, echo, no) +AC_PATH_PROG(LN, ln, no) +AC_PATH_PROG(CP, cp, no) +AC_PATH_PROG(RM, rm, no) +AC_PATH_PROG(RMDIR, rmdir, no) +AC_PATH_PROG(MKDIR, mkdir, no) +AC_PATH_PROG(FIND, find, no) +AC_PATH_PROG(SENDMAIL, sendmail, /path/to/sendmail, $PATH:/usr/sbin:/usr/lib) +AC_PATH_PROGS(NROFF, [gnroff nroff]) + +AC_ARG_VAR(GMAKE, [Path to local GNU Make binary]) +AC_PATH_PROGS(GMAKE, [gnumake gmake make]) + +AC_MSG_CHECKING([checking for gnu make availability]) +if ( $GMAKE --version 2> /dev/null | $GREP GNU > /dev/null 2>&1 ); then + AC_MSG_RESULT([$GMAKE is GNU make]) +else + AC_MSG_ERROR([GNU make not found. Try setting the GMAKE environment variable.]) +fi + +AC_ARG_ENABLE(pkgonly, + [AS_HELP_STRING([--enable-pkgonly],[Skip all checking])]) +AC_SUBST(enable_pkgonly) + +# $prefix stores the value of the --prefix command line option, or +# NONE if the option wasn't set. In the case that it wasn't set, make +# it be the default, so that we can use it to expand directories now. + +actual_prefix=$prefix +if test x$actual_prefix = xNONE; then + actual_prefix=$ac_default_prefix +fi + +HTDOCSDIR=${actual_prefix}/htdocs +AC_ARG_WITH(htdocs-dir,AS_HELP_STRING([--with-htdocs-dir=DIR],[Where to install htdocs [PREFIX/htdocs]]), [HTDOCSDIR=$withval]) +AC_SUBST(HTDOCSDIR) + +AC_ARG_VAR(PERL5LIB, [Colon separated list of perl library directories]) + +AC_SUBST(PERL5LIB) + +# Check the necessary Perl modules + +mod_ok=1 +if test "$enable_pkgonly" != yes; then + AC_MSG_CHECKING([checking for RRDs perl module]) + if ${PERL} -e 'use RRDs' 2>/dev/null ; then + AC_MSG_RESULT([Ok]) + else + AC_MSG_RESULT([Failed]) + mod_ok=0 + fi +fi + +if test x$mod_ok = x0; then + cat <&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -p) cpprog="$cpprog -p";; + + -s) stripcmd=$stripprog;; + + -S) backupsuffix="$2" + shift;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 (GNU Automake) $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + # Don't chown directories that already exist. + if test $dstdir_status = 0; then + chowncmd="" + fi + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dstbase=`basename "$src"` + case $dst in + */) dst=$dst$dstbase;; + *) dst=$dst/$dstbase;; + esac + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + case $dstdir in + */) dstdirslash=$dstdir;; + *) dstdirslash=$dstdir/;; + esac + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + # The $RANDOM variable is not portable (e.g., dash). Use it + # here however when possible just to lower collision chance. + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + + trap ' + ret=$? + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" 2>/dev/null + exit $ret + ' 0 + + # Because "mkdir -p" follows existing symlinks and we likely work + # directly in world-writable /tmp, make sure that the '$tmpdir' + # directory is successfully created first before we actually test + # 'mkdir -p'. + if (umask $mkdir_umask && + $mkdirprog $mkdir_mode "$tmpdir" && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/a/b") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibility with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + test_tmpdir="$tmpdir/a" + ls_ld_tmpdir=`ls -ld "$test_tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$test_tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$test_tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/a/b" "$tmpdir/a" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- "$tmpdir" 2>/dev/null + fi + trap '' 0;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=${dstdirslash}_inst.$$_ + rmtmp=${dstdirslash}_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && + { test -z "$stripcmd" || { + # Create $dsttmp read-write so that cp doesn't create it read-only, + # which would cause strip to fail. + if test -z "$doit"; then + : >"$dsttmp" # No need to fork-exec 'touch'. + else + $doit touch "$dsttmp" + fi + } + } && + $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # If $backupsuffix is set, and the file being installed + # already exists, attempt a backup. Don't worry if it fails, + # e.g., if mv doesn't support -f. + if test -n "$backupsuffix" && test -f "$dst"; then + $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null + fi + + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/conftools/missing b/conftools/missing new file mode 100755 index 0000000..7e7d78e --- /dev/null +++ b/conftools/missing @@ -0,0 +1,236 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU and other programs. + +scriptversion=2024-06-07.14; # UTC + +# shellcheck disable=SC2006,SC2268 # we must support pre-POSIX shells + +# Copyright (C) 1996-2024 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# 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. + +# 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, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: +aclocal autoconf autogen autoheader autom4te automake autoreconf +bison flex help2man lex makeinfo perl yacc + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Report bugs to . +GNU Automake home page: . +General help using GNU software: ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing (GNU Automake) $scriptversion" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=https://www.perl.org/ +flex_URL=https://github.com/westes/flex +gnu_software_URL=https://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake|autoreconf) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + *) + : + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + autoheader_deps="'acconfig.h'" + automake_deps="'Makefile.am'" + aclocal_deps="'acinclude.m4'" + case $normalized_program in + aclocal*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$configure_deps." + ;; + autoconf*) + echo "You should only need it if you modified $configure_deps." + ;; + autogen*) + echo "You should only need it if you modified a '.def' or '.tpl' file." + echo "You may want to install the GNU AutoGen package:" + echo "<$gnu_software_URL/autogen/>" + ;; + autoheader*) + echo "You should only need it if you modified $autoheader_deps or" + echo "$configure_deps." + ;; + automake*) + echo "You should only need it if you modified $automake_deps or" + echo "$configure_deps." + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + ;; + autoreconf*) + echo "You should only need it if you modified $aclocal_deps or" + echo "$automake_deps or $autoheader_deps or $automake_deps or" + echo "$configure_deps." + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + perl*) + echo "You should only need it to run GNU Autoconf, GNU Automake, " + echo " assorted other tools, or if you modified a Perl source file." + echo "You may want to install the Perl 5 language interpreter:" + echo "<$perl_URL>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac + program_details "$normalized_program" +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC0" +# time-stamp-end: "; # UTC" +# End: diff --git a/cpanfile b/cpanfile new file mode 100644 index 0000000..d10728c --- /dev/null +++ b/cpanfile @@ -0,0 +1,24 @@ +requires 'FCGI'; +requires 'CGI'; +requires 'CGI::Fast'; +requires 'Config::Grammar'; +requires 'Socket6'; +requires 'IO::Socket::SSL'; +requires 'Digest::HMAC_MD5'; +requires 'Net::Telnet'; +requires 'Net::OpenSSH'; +requires 'Net::SNMP'; +requires 'Net::LDAP'; +requires 'Net::DNS'; +requires 'IO::Pty'; +requires 'LWP'; +requires 'Authen::Radius'; +requires 'Path::Tiny'; +requires 'MIME::Base64'; +requires 'InfluxDB::HTTP'; +requires 'InfluxDB::LineProtocol'; +# JSON::MaybeXS and Object::Result are required by InfluxDB::HTTP but were not +# listed in that lib's dependencies, so we need to cover for them here. +# See: https://github.com/raphaelthomas/InfluxDB-HTTP/issues/10 +requires 'JSON::MaybeXS'; +requires 'Object::Result'; diff --git a/debian/.debhelper/generated/smokeping/dh_installchangelogs.dch.trimmed b/debian/.debhelper/generated/smokeping/dh_installchangelogs.dch.trimmed new file mode 100644 index 0000000..bd48138 --- /dev/null +++ b/debian/.debhelper/generated/smokeping/dh_installchangelogs.dch.trimmed @@ -0,0 +1,89 @@ +smokeping (2.9.0+linuxiarz.pl-1) unstable; urgency=medium + + [ linuxiarz.pl ] + * Bump to 2.9.0 + +smokeping (2.8.2+ds-1) unstable; urgency=medium + + [ Gabriel Filion ] + * New upstream version (Closes: #1004308, #740852) + * All patches that were merged upstream were removed + * Add an example lighttpd configuration file for smokeping (Closes: #961950) + * Import upstream patch to fix curl probes (Closes: #986068) + * Avoid errors with ucf/ucfr during postrm (Closes: #1005807) + * New required library libobject-result-perl for influxdb + * Remove obsolete dependency on lsb-base + * fix lintian warning about unmatched news entry + * lintian-overrides are now obsolete + * Clear out copyright details for files removed in repack + * Patch out building of 3rd-party js libs + * Revert "fix lintian warning about unmatched news entry" + + [ Debian Janitor ] + * Bump debhelper from old 12 to 13. + * Update standards version to 4.6.1, no changes needed. + + -- Gabriel Filion Sun, 04 Feb 2024 14:54:09 -0500 + +smokeping (2.7.3-4) unstable; urgency=low + + [ Debian Janitor ] + * Trim trailing whitespace. + * Bump debhelper from old 10 to 12. + * Set debhelper-compat version in Build-Depends. + * Drop unnecessary dependency on dh-autoreconf. + * Update standards version to 4.5.0, no changes needed. + + [ Gabriel Filion ] + * Import patch that disables refresh while zooming (Closes:#981348) + * Import patch disabling rsa1 and enabling ecdsa for ssh probe (Closes: + #962225) + + -- Gabriel Filion Sun, 24 Apr 2022 14:44:58 -0400 + +smokeping (2.7.3-3) unstable; urgency=medium + + [ Gabriel Filion ] + * start generating smokeinfo manpage + * postrm: purge, removal of apache2/conf.d/smokeping not needed anymore + * make css and js load from the /smokeping alias (closes: #929515) + * change fix-conf-paths patch to point the daemon to /run/smokeping for its + pid indead of /var/run/smokeping + + [ Matteo F. Vescovi ] + * debian/patches/: fix-alert-edgetriggers added (Closes: #934170) + + -- Gabriel Filion Sat, 11 Jul 2020 00:00:19 +0200 + +smokeping (2.7.3-2) unstable; urgency=medium + + [ Gabriel Filion ] + * systemd: run service as smokeping user + The systemd service unit file that was introduced in 2.7.3-1 didn't setup + user and group properly for the service, and the daemon was running as root. + This is now corrected, but it might mean that some files were created by and + are owned by root. To fix this, you can use the following command: + . + find /var/lib/smokeping/ -mindepth 1 -name '__cgi' -prune -o \ + -exec chown smokeping:smokeping {} \; + * missing-VERSION forwarded and merged upstream + * patch "fix-400d-graph" forwarded and merged upstream + * rename patch path_changes to make its name more meaningful + * reduce javascript_path_changes to the strict minimum + * fix-perl-lib: indicate that the patch shouldn't be forwarded + * proper-samle-conf: indicate that it shouldn't be forwarded + * make commands invoked in rules more verbose as per policy version 4.2.0 + * use https for the homepage + * Bump Standards-Version to 4.3.0 + * merge both patches that hardcode config path + * init.d: match on pidfile only prevents service stop (closes: #922395) + * systemd: move example for slave mode in the examples dir + * control: erroneous and duplicated mention of default mta + + [ Sven Hartge ] + * Change group of secrets file for slaves to www-data (Closes: #760945) + + -- Gabriel Filion Sat, 23 Feb 2019 19:54:18 -0500 + +# Older entries have been removed from this changelog. +# To read the complete changelog use `apt changelog smokeping`. diff --git a/debian/.debhelper/generated/smokeping/dh_installchangelogs.news.trimmed b/debian/.debhelper/generated/smokeping/dh_installchangelogs.news.trimmed new file mode 100644 index 0000000..e69de29 diff --git a/debian/.debhelper/generated/smokeping/installed-by-dh_installdocs b/debian/.debhelper/generated/smokeping/installed-by-dh_installdocs new file mode 100644 index 0000000..c2dd0c3 --- /dev/null +++ b/debian/.debhelper/generated/smokeping/installed-by-dh_installdocs @@ -0,0 +1 @@ +./README.md diff --git a/debian/.debhelper/generated/smokeping/installed-by-dh_installexamples b/debian/.debhelper/generated/smokeping/installed-by-dh_installexamples new file mode 100644 index 0000000..57a78e3 --- /dev/null +++ b/debian/.debhelper/generated/smokeping/installed-by-dh_installexamples @@ -0,0 +1,9 @@ +./doc/examples/config.echoping +./doc/examples/config.fping-instances +./doc/examples/config.multiple-probes +./doc/examples/config.simple +./doc/examples/config.targetvars-with-Curl +./doc/examples/config.template +./etc/smokeping_secrets.dist +./debian/systemd +./debian/lighttpd_45-smokeping.conf diff --git a/debian/.debhelper/generated/smokeping/installed-by-dh_installman b/debian/.debhelper/generated/smokeping/installed-by-dh_installman new file mode 100644 index 0000000..e69de29 diff --git a/debian/.debhelper/generated/smokeping/postinst.service b/debian/.debhelper/generated/smokeping/postinst.service new file mode 100644 index 0000000..5bd10bd --- /dev/null +++ b/debian/.debhelper/generated/smokeping/postinst.service @@ -0,0 +1,43 @@ +# Automatically added by dh_installinit/13.24.2 +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + if [ -z "$DPKG_ROOT" ] && [ -x "/etc/init.d/smokeping" ]; then + update-rc.d smokeping defaults >/dev/null + if [ -n "$2" ]; then + _dh_action=restart + else + _dh_action=start + fi + invoke-rc.d --skip-systemd-native smokeping $_dh_action || exit 1 + fi +fi +# End automatically added section +# Automatically added by dh_installsystemd/13.24.2 +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + # The following line should be removed in trixie or trixie+1 + deb-systemd-helper unmask 'smokeping.service' >/dev/null || true + + # was-enabled defaults to true, so new installations run enable. + if deb-systemd-helper --quiet was-enabled 'smokeping.service'; then + # Enables the unit on first installation, creates new + # symlinks on upgrades if the unit file has changed. + deb-systemd-helper enable 'smokeping.service' >/dev/null || true + else + # Update the statefile to add new symlinks (if any), which need to be + # cleaned up on purge. Also remove old symlinks. + deb-systemd-helper update-state 'smokeping.service' >/dev/null || true + fi +fi +# End automatically added section +# Automatically added by dh_installsystemd/13.24.2 +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + if [ -d /run/systemd/system ]; then + systemctl --system daemon-reload >/dev/null || true + if [ -n "$2" ]; then + _dh_action=restart + else + _dh_action=start + fi + deb-systemd-invoke $_dh_action 'smokeping.service' >/dev/null || true + fi +fi +# End automatically added section diff --git a/debian/.debhelper/generated/smokeping/postrm.service b/debian/.debhelper/generated/smokeping/postrm.service new file mode 100644 index 0000000..d596e12 --- /dev/null +++ b/debian/.debhelper/generated/smokeping/postrm.service @@ -0,0 +1,8 @@ +# Automatically added by dh_installinit/13.24.2 +if [ "$1" = "remove" ] && [ -x "/etc/init.d/smokeping" ] ; then + chmod -x "/etc/init.d/smokeping" >/dev/null || true +fi +if [ -z "$DPKG_ROOT" ] && [ "$1" = "purge" ] ; then + update-rc.d smokeping remove >/dev/null +fi +# End automatically added section diff --git a/debian/.debhelper/generated/smokeping/preinst.service b/debian/.debhelper/generated/smokeping/preinst.service new file mode 100644 index 0000000..e65cb98 --- /dev/null +++ b/debian/.debhelper/generated/smokeping/preinst.service @@ -0,0 +1,5 @@ +# Automatically added by dh_installinit/13.24.2 +if [ "$1" = "install" ] && [ -n "$2" ] && [ -e "/etc/init.d/smokeping" ] ; then + chmod +x "/etc/init.d/smokeping" >/dev/null || true +fi +# End automatically added section diff --git a/debian/.debhelper/generated/smokeping/prerm.service b/debian/.debhelper/generated/smokeping/prerm.service new file mode 100644 index 0000000..8ff7a17 --- /dev/null +++ b/debian/.debhelper/generated/smokeping/prerm.service @@ -0,0 +1,10 @@ +# Automatically added by dh_installsystemd/13.24.2 +if [ -z "$DPKG_ROOT" ] && [ "$1" = remove ] && [ -d /run/systemd/system ] ; then + deb-systemd-invoke stop 'smokeping.service' >/dev/null || true +fi +# End automatically added section +# Automatically added by dh_installinit/13.24.2 +if [ -z "$DPKG_ROOT" ] && [ "$1" = remove ] && [ -x "/etc/init.d/smokeping" ] ; then + invoke-rc.d --skip-systemd-native smokeping stop || exit 1 +fi +# End automatically added section diff --git a/debian/NEWS b/debian/NEWS new file mode 100644 index 0000000..1103d6a --- /dev/null +++ b/debian/NEWS @@ -0,0 +1,77 @@ +smokeping (2.6.5-1~experimental0) experimental; urgency=low + + Instead of bundling our own configuration which constantly had to be + maintained in sync with upstream, we ship modified versions of the + upstream configuration files, which are now automatically split in + separate sections during build. This will lead to false positive in + configuration file changes, but just this one time, as we transition + away from ucf for config file management. + . + If you are upgrading from versions previous to 2.3.6-5 (in Lenny!), you + may have problems migrating your configuration. Make sure you at least + hit 2.3.6 packages to have a smooth upgrade as some compatibility bits + have been removed. + + -- Antoine BeauprĂ© Sun, 13 Nov 2011 18:28:22 -0500 + +smokeping (2.3.6-4) unstable; urgency=low + + The file hierarchy available to the web server has been moved + away from /var/www, which was a non-standard location. The recommended + way to set up the web part of Smokeping is to use the Apache2 configuration + supplied in /etc/smokeping/apache2.conf. This is done automatically + on new installations, see the README.Debian file. + . + Although the upgrade procedure tries to keep old setups working + with symlinks, make sure to merge the pathname changes in + /etc/smokeping/config.d/pathnames. Deleting /var/www/smokeping + afterwards should be safe if you have no manually added content there. + . + The recommended URL path to the CGI script is now /smokeping/smokeping.cgi + rather than /cgi-bin/smokeping.cgi. The latter should still work + through a symlink. + . + . + The default character set in /etc/smokeping/config.d/Presentation has + been changed to UTF-8. If you were relying on the former ISO-8859-15 + setting, just edit the file to reflect this. + + -- Niko Tyni Tue, 21 Jul 2009 20:17:24 +0300 + +smokeping (2.3.5-1) experimental; urgency=low + + The configuration file, /etc/smokeping/config, has been split into + subsection snippets in /etc/smokeping/config.d to ease merging of + configuration changes. The installation scripts will automatically + split the old configuration on upgrades, but the split won't take + effect unless ucf is allowed to overwrite /etc/smokeping/config. + . + This version also includes packaging changes to make the new + master/slave functionality work. A new directory, /var/lib/smokeping/__cgi, + has been created so that the CGI on a master host can queue up + ping results received from its slaves. The main Smokeping daemon + will then monitor the queue and update the RRD files accordingly. + . + Make sure to merge the new 'dyndir' and 'precreateperms' General section + variables on upgrades, otherwise the master/slave functionality (and + most probably also the old DYNAMIC host functionality) will not work. + + -- Niko Tyni Sat, 29 Mar 2008 23:39:33 +0200 + +smokeping (2.0.8-3) unstable; urgency=low + + When upgrading from Smokeping versions 1.x to 2.x, you may have to edit + the configuration file /etc/smokeping/config. The most common incompatibility + is that the 'PROBE_CONF' lines are neither needed nor accepted anymore. Simply + deleting these lines is sufficient. + + There are some other small incompatibilities; a list of those can be found + in the smokeping_upgrade(7) document. As the Smokeping configuration file + parser is now much more strict than in 1.x, the daemon complains about + these at startup and refuses to start. + + (This entry applies to all Smokeping 2.x versions, but was only added in + version 2.0.8-3.) + + -- Niko Tyni Sun, 28 May 2006 22:30:53 +0300 + diff --git a/debian/README.Debian b/debian/README.Debian new file mode 100644 index 0000000..9d83ec2 --- /dev/null +++ b/debian/README.Debian @@ -0,0 +1,22 @@ +After installing the package you have to edit the files in +/etc/smokeping/config.d to set your preferences. + +Note that the domain names are bogus to avoid all the people who +install the package DoSing the same servers, but at the same time an +fping probe in localhost is enabled, so you can check if smokeping +works for you. + +You can also edit the file /etc/smokeping/basepage.html to suit your +needs. + +A FastCGI configuration might be desirable for large sites. Simply add +this to the Apache configuration, in /etc/apache2/conf-available/smokeping.conf: + + + SetHandler fcgid-script + + +Please refer to the smokeping_config man page to see all the available +options. + + -- Antoine BeauprĂ© , Sat, 12 May 2018 16:02:25 -0400 diff --git a/debian/README.source b/debian/README.source new file mode 100644 index 0000000..063d24d --- /dev/null +++ b/debian/README.source @@ -0,0 +1,9 @@ +smokeping for Debian +-------------------- + +This package is maintained through git, but patches are applied through +quilt, in debian/patches/. + +To update to the new upstream, use git-import-orig --uscan. + + -- Antoine BeauprĂ© , Sat, 26 Feb 2012 13:20:51 -0500 diff --git a/debian/TODO b/debian/TODO new file mode 100644 index 0000000..a98f07b --- /dev/null +++ b/debian/TODO @@ -0,0 +1,12 @@ +The following issues need to be fixed: + +* fast-cgi should be default +* review upstream changes since last release, esp. config changes +* do not prompt for modifications on the files: +- Slaves +- General +- basepage.html + - this is very hard. we would need to fix the checksum in + /var/lib/dpkg/status, which doesn't seem to be doable + programmatically. See dpkg/src/configure.c:336 to see how this + works better. diff --git a/debian/autoreconf.after b/debian/autoreconf.after new file mode 100644 index 0000000..908009c --- /dev/null +++ b/debian/autoreconf.after @@ -0,0 +1,142 @@ +129546fe4287e256e267cb5a6d27f35b ./CHANGES +9f1c1c3412cba9c5c0fbf6af16656127 ./aclocal.m4 +3b8c6e97fc73993cbb89be7ab9a136ff ./configure +e1cbcec71e50595b705ff09f50d99bf2 ./README.md +1b173bf7a0a9360b7405c47ddce873c5 ./VERSION +92e5ed4a6c67e54a7162fde587beb49d ./TODO +b6538500b8c7d36d0864fb16751574bb ./configure.ac +8ba29f9a8f5cd5a8904dd790c3cbec29 ./thirdparty/cpanfile-5.38.snapshot +9c6f688be5527bf780e4e37ecd1c39c7 ./thirdparty/Makefile.in +19770f137f08138ec90a212679805033 ./thirdparty/Makefile.am +fef8eee66f66d40303a2c1f878f19929 ./autom4te.cache/requests +a4d45f576897f28acee3b65ae11ad61d ./autom4te.cache/output.2 +504fc05a6aa5caedf0ace19953f533ee ./autom4te.cache/traces.2 +f444d3ae8cb3caf128c2749e17941a47 ./autom4te.cache/output.0 +a7f46a668c2c825f1859935b7ba48367 ./autom4te.cache/output.1 +62c71c73c6b8e73ceabafe75f7d250ac ./autom4te.cache/traces.0 +504fc05a6aa5caedf0ace19953f533ee ./autom4te.cache/traces.1 +2339c0ab7afcfd5d895a292829b7e461 ./CONTRIBUTORS +8683b98a6aeb8b041085b983f539f59f ./bin/smokeinfo +b54cd27351fcbf3a72c0a5224bf3ed0a ./bin/smokeping_cgi +342a78bc86282443477742760433e8d6 ./bin/tSmoke +1bb25893188454b02e3e143672bb4aec ./bin/smokeping +eacf1a022d4942e78fb515384cbf54f5 ./bin/Makefile.in +06576d558fadfe4d9ecb619b966b9c57 ./bin/Makefile.am +9083c1f68b09e5653842e9f9c86fe7c0 ./doc/smokeping_install.pod +b1a2b28272d7d4decc58c27a6f5cd97d ./doc/smokeping_extend.pod +b8fc311736fe86d27f114ac7ba3505df ./doc/smokeping_master_slave.pod +552b25b825a6d722a6ee32a6bc7df7e6 ./doc/smokeping_install.txt +bb3fc39164bd44704650cc650e434db7 ./doc/Makefile.in +7dbb01c4261e4a862d33b7884df17653 ./doc/Makefile.am +ea23673e9191b0eaf62331e7557451f8 ./doc/smokeping_upgrade.pod +6efd1989ec82c270e2a65466472f9038 ./lib/SNMP_Session.pm +c6ea0ad89e3104d3f443f5a15463e46c ./lib/SNMP_util.pm +dad3c12c69c46fc40cb03eae55f70bc5 ./lib/Smokeping.pm +aa38784e396ff79b7701411c3a5690fa ./lib/Smokeping/Master.pm +7fb5e259df686acb83daacd7708a72a9 ./lib/Smokeping/Examples.pm +affa12d68e79a45a82635683686673d5 ./lib/Smokeping/Config.pm +6ca9a74149bbeda25588d81a885aafac ./lib/Smokeping/ciscoRttMonMIB.pm +4840b6be3abeea9cd8f4773da3649632 ./lib/Smokeping/RRDtools.pm +947f5dd1457ebcb7f5901ec475428e77 ./lib/Smokeping/probes/NFSping.pm +b1502dd807100f8aafd97e85d12a2110 ./lib/Smokeping/probes/EchoPing.pm +c16790651d98eb85ecc2692d001a23dd ./lib/Smokeping/probes/FPingContinuous.pm +2c9a0cac05ddd312a5656dd3eeed4462 ./lib/Smokeping/probes/FPing.pm +f3148ac862ddf308ffdfa6b98b1e4454 ./lib/Smokeping/probes/skel.pm +fa25895772c5d14031e36ef1164bd138 ./lib/Smokeping/probes/base.pm +2243990ce8eed9db07845671a7a46f37 ./lib/Smokeping/probes/LDAP.pm +1bfbd2c8d1b646fda4cd915b72dec62d ./lib/Smokeping/probes/passwordchecker.pm +7745c7902518a6ac7bebbed22ddfd82f ./lib/Smokeping/probes/EchoPingIcp.pm +001b86134c2788eb6716f8155931b4ef ./lib/Smokeping/probes/EchoPingDNS.pm +0abb73c4155c1b1aac6bdc84da4e35d1 ./lib/Smokeping/probes/Radius.pm +d4d56290d9a5f248f43103054e73b2f9 ./lib/Smokeping/probes/DismanPing.pm +5534b5594c794a8e35d81c42f9f104fb ./lib/Smokeping/probes/Qstat.pm +7bf83c131ec66df9ecb71903b2171be3 ./lib/Smokeping/probes/EchoPingHttps.pm +1e4fccbd6802b2a2e40d6960c3b06c8d ./lib/Smokeping/probes/TCPPing.pm +c39943e17c351729f59a1e6af79e8b96 ./lib/Smokeping/probes/EchoPingChargen.pm +1521777598df8965907927eb92c3e408 ./lib/Smokeping/probes/FTPtransfer.pm +e8ee4043da2e34980783301350fb6ee8 ./lib/Smokeping/probes/EchoPingPlugin.pm +59c2a5701010c38c00f95e2a3eb6dd40 ./lib/Smokeping/probes/TelnetIOSPing.pm +2f9f3f0fdae60d0b812ed8494bb495a4 ./lib/Smokeping/probes/RemoteFPing.pm +5cae2fd9ad9ff93c9a2969cf60903f46 ./lib/Smokeping/probes/EchoPingSmtp.pm +4818fed56c1d7afd5b887f164a682630 ./lib/Smokeping/probes/TelnetJunOSPing.pm +6c3e91d404bae0191320c425e3c9cada ./lib/Smokeping/probes/IRTT.pm +8fe659bc4b1db1e4b7a370a4bb95eddb ./lib/Smokeping/probes/CiscoRTTMonEchoICMP.pm +9f581fbab087d0a576260f0d79273310 ./lib/Smokeping/probes/TraceroutePing.pm +788c288e521072d6bec0ee33b1f49384 ./lib/Smokeping/probes/DNS.pm +2300f76af8d86de1a640c03a70375497 ./lib/Smokeping/probes/basefork.pm +40718aab8cdbc7cb4760386476e8c1cd ./lib/Smokeping/probes/TacacsPlus.pm +ad971c0c2f08b53c4fe5da5baf434b2a ./lib/Smokeping/probes/EchoPingDiscard.pm +a1d417dd6664100d9c7cdd671e2487a2 ./lib/Smokeping/probes/AnotherCurl.pm +3965ee85c715e289737f2278236590b1 ./lib/Smokeping/probes/OpenSSHJunOSPing.pm +9c046a63424618ac3fc6abeace84f561 ./lib/Smokeping/probes/CiscoRTTMonDNS.pm +3ee5f11dd635f54d04137db332ba8186 ./lib/Smokeping/probes/SSH.pm +31e949250005ff133a85262260d9e77b ./lib/Smokeping/probes/EchoPingHttp.pm +382cd82f0b8c779ba3fc0e78180b7456 ./lib/Smokeping/probes/SendEmail.pm +583202540b57e6883d7a120477559e69 ./lib/Smokeping/probes/IOSPing.pm +b079e26ad4e054dc5fde13c9c473fea0 ./lib/Smokeping/probes/WebProxyFilter.pm +38b0f60e322c4edb0495238b3864dcaa ./lib/Smokeping/probes/AnotherDNS.pm +386baa69338b1dddc2ab202c6e454e43 ./lib/Smokeping/probes/Curl.pm +d1bb3426744b26fcec326b1652f175c0 ./lib/Smokeping/probes/OpenSSHEOSPing.pm +22d4d89cb89d09ca1252915251bf53fa ./lib/Smokeping/probes/AnotherSSH.pm +f58ebe194cb6d2313c59b86c02d654f2 ./lib/Smokeping/probes/CiscoRTTMonTcpConnect.pm +8f77dbf0c925913ce83e184a4e6187d4 ./lib/Smokeping/probes/FPing6.pm +f3c010af1de08141c91e3aedf53181da ./lib/Smokeping/probes/EchoPingLDAP.pm +4f389d382ac14503322c617e37e7636c ./lib/Smokeping/probes/EchoPingWhois.pm +5ebc965d50d4601f51239caeddf0e352 ./lib/Smokeping/probes/basevars.pm +303869aad39ec0eaa977dc665b4be679 ./lib/Smokeping/probes/SipSak.pm +8d2752f301f4f73e006724deb1f77f33 ./lib/Smokeping/pingMIB.pm +5d1510802e13a09fa6d5cdb61a2ed973 ./lib/Smokeping/Slave.pm +e4590791ff48d9d3c2e8af7d4cc89537 ./lib/Smokeping/sorters/base.pm +ab05eee799a3f7dd3ad55552ebcf9005 ./lib/Smokeping/sorters/Loss.pm +8df66ecffb3d99a83853a95fcb93ca9e ./lib/Smokeping/sorters/Median.pm +b7b48ab6ee96cade6e4aee63a6229963 ./lib/Smokeping/sorters/StdDev.pm +b0ee00e7ded5d2244074da936081a5f8 ./lib/Smokeping/sorters/Max.pm +000bb41739ce475ac0db7aebeaec4cb6 ./lib/Smokeping/RRDhelpers.pm +74dc0a7e83f7e5033dcaa59f452fc11b ./lib/Smokeping/Colorspace.pm +40d9a0d2effcd59d89bbcd893fe3f27a ./lib/Smokeping/Info.pm +8c67107c66f13565419f0641ee720f47 ./lib/Smokeping/matchers/base.pm +d70b48f27e5c9a1eb8e8f51c7a6f183a ./lib/Smokeping/matchers/Median.pm +0c680558c553638e7418cc44cbb76868 ./lib/Smokeping/matchers/ConsecutiveLoss.pm +ebf79b04b999b0eea95bcdc6a918c30d ./lib/Smokeping/matchers/CheckLoss.pm +0589f39cc33fb0a443bd947e00442c92 ./lib/Smokeping/matchers/Avgratio.pm +c9f37222afc9fab4ee9ad81c84349bfe ./lib/Smokeping/matchers/CheckLatency.pm +0e9d1d8a7a4d338152c50ff221e2f152 ./lib/Smokeping/matchers/ExpLoss.pm +71282e21e01fb6572a1859492dda2ea8 ./lib/Smokeping/matchers/Medratio.pm +9615f1119ac79d65c51997f5403b558f ./lib/Smokeping/Graphs.pm +1134871f6bbdb7d37b13eb019bb9e380 ./lib/BER.pm +4118f7b233d940612672b2480ea21a18 ./lib/Makefile.in +cd59ef3716e6e18e3e1f6464016c7533 ./lib/Makefile.am +52a3e83bba27640f6e858412fecf8907 ./cpanfile +18810669f13b87348459e611d31ab760 ./LICENSE +20a41dc90ae70beba75139b8200ae253 ./etc/smokeping_secrets.dist +35455c7e9a4762b47addc856ddb8d1cd ./etc/config.dist.in +0edf364b4e38bd545f4cf6ed27fd63f4 ./etc/smokemail.dist +9aefc38c817bc5a265a5b89845e7a283 ./etc/basepage.html.dist +efbb764be19184ddf3757b2beb1db31c ./etc/tmail.dist +71d6452487418f86028c6f10268ccb99 ./etc/Makefile.in +fdf16be02d3898935df6e9a30ad76de7 ./etc/Makefile.am +28b3c6fbfc9edb70ccafeb578cf7588a ./htdocs/js/cropper/cropper.uncompressed.js +8ef561662d9ad6cd36a534648663471c ./htdocs/js/cropper/cropper.css +2b2adfe6df6517f146b5b7c5b86eda42 ./htdocs/js/cropper/marqueeVert.gif +45bc30298a5f48aad53b4c3815d8a770 ./htdocs/js/cropper/cropper.js +9b4c27fccf817923f59b78fa6099c376 ./htdocs/js/cropper/marqueeHoriz.gif +7d22d8406c981b4d4542e8228f4178ca ./htdocs/js/cropper/licence.txt +09ef4d15cc7cdb31058181765c8820dd ./htdocs/js/scriptaculous/controls.js +bb13d308c65d4647946b0ed8d536390f ./htdocs/js/scriptaculous/scriptaculous.js +0f2db4e77f36d2ac2f1826a0c253f5cc ./htdocs/js/scriptaculous/builder.js +aecce9b9186bc24b80ff9e2403a94326 ./htdocs/js/scriptaculous/effects.js +8c03e76e44ccca0624cef4800f3ea7db ./htdocs/js/scriptaculous/dragdrop.js +65ade465b0b37ba9acdd3d722a0324ee ./htdocs/js/scriptaculous/unittest.js +eff549ad8f7495332f7ad6103658764c ./htdocs/js/scriptaculous/slider.js +f415e9ac8946878a499a174d945c898a ./htdocs/js/scriptaculous/sound.js +b3194289aa4d19188e036ec01d4d2c12 ./htdocs/js/smokeping.js +fb004124bf1ed724b26e6e188db7604e ./htdocs/js/prototype.js +5a3a81cf4d5c006de7b39e149e8aac30 ./htdocs/css/smokeping-print.css +6d82c4e7262a8b71c47e3221b72174b5 ./htdocs/css/smokeping-screen.css +d7bb88ec9d6582d282ba4d1c3f028206 ./htdocs/Makefile.in +1c5220b32f26668156bbbedece99bb70 ./htdocs/Makefile.am +71ff2adc5f257348787b6f06040cdd01 ./conftools/install-sh +9563d3c0a7949776e3aee6831ad2a560 ./conftools/missing +2a899d30e2a02a5275258b58503d129b ./Makefile.in +b2afdcfbea0fdc675c157e8119afb43b ./COPYRIGHT +cc8471e7aaf58248ca90931622339177 ./Makefile.am diff --git a/debian/autoreconf.before b/debian/autoreconf.before new file mode 100644 index 0000000..503d5f9 --- /dev/null +++ b/debian/autoreconf.before @@ -0,0 +1,124 @@ +129546fe4287e256e267cb5a6d27f35b ./CHANGES +e1cbcec71e50595b705ff09f50d99bf2 ./README.md +1b173bf7a0a9360b7405c47ddce873c5 ./VERSION +92e5ed4a6c67e54a7162fde587beb49d ./TODO +b6538500b8c7d36d0864fb16751574bb ./configure.ac +8ba29f9a8f5cd5a8904dd790c3cbec29 ./thirdparty/cpanfile-5.38.snapshot +19770f137f08138ec90a212679805033 ./thirdparty/Makefile.am +2339c0ab7afcfd5d895a292829b7e461 ./CONTRIBUTORS +8683b98a6aeb8b041085b983f539f59f ./bin/smokeinfo +b54cd27351fcbf3a72c0a5224bf3ed0a ./bin/smokeping_cgi +342a78bc86282443477742760433e8d6 ./bin/tSmoke +1bb25893188454b02e3e143672bb4aec ./bin/smokeping +06576d558fadfe4d9ecb619b966b9c57 ./bin/Makefile.am +9083c1f68b09e5653842e9f9c86fe7c0 ./doc/smokeping_install.pod +b1a2b28272d7d4decc58c27a6f5cd97d ./doc/smokeping_extend.pod +b8fc311736fe86d27f114ac7ba3505df ./doc/smokeping_master_slave.pod +552b25b825a6d722a6ee32a6bc7df7e6 ./doc/smokeping_install.txt +7dbb01c4261e4a862d33b7884df17653 ./doc/Makefile.am +ea23673e9191b0eaf62331e7557451f8 ./doc/smokeping_upgrade.pod +6efd1989ec82c270e2a65466472f9038 ./lib/SNMP_Session.pm +c6ea0ad89e3104d3f443f5a15463e46c ./lib/SNMP_util.pm +dad3c12c69c46fc40cb03eae55f70bc5 ./lib/Smokeping.pm +aa38784e396ff79b7701411c3a5690fa ./lib/Smokeping/Master.pm +7fb5e259df686acb83daacd7708a72a9 ./lib/Smokeping/Examples.pm +affa12d68e79a45a82635683686673d5 ./lib/Smokeping/Config.pm +6ca9a74149bbeda25588d81a885aafac ./lib/Smokeping/ciscoRttMonMIB.pm +4840b6be3abeea9cd8f4773da3649632 ./lib/Smokeping/RRDtools.pm +947f5dd1457ebcb7f5901ec475428e77 ./lib/Smokeping/probes/NFSping.pm +b1502dd807100f8aafd97e85d12a2110 ./lib/Smokeping/probes/EchoPing.pm +c16790651d98eb85ecc2692d001a23dd ./lib/Smokeping/probes/FPingContinuous.pm +2c9a0cac05ddd312a5656dd3eeed4462 ./lib/Smokeping/probes/FPing.pm +f3148ac862ddf308ffdfa6b98b1e4454 ./lib/Smokeping/probes/skel.pm +fa25895772c5d14031e36ef1164bd138 ./lib/Smokeping/probes/base.pm +2243990ce8eed9db07845671a7a46f37 ./lib/Smokeping/probes/LDAP.pm +1bfbd2c8d1b646fda4cd915b72dec62d ./lib/Smokeping/probes/passwordchecker.pm +7745c7902518a6ac7bebbed22ddfd82f ./lib/Smokeping/probes/EchoPingIcp.pm +001b86134c2788eb6716f8155931b4ef ./lib/Smokeping/probes/EchoPingDNS.pm +0abb73c4155c1b1aac6bdc84da4e35d1 ./lib/Smokeping/probes/Radius.pm +d4d56290d9a5f248f43103054e73b2f9 ./lib/Smokeping/probes/DismanPing.pm +5534b5594c794a8e35d81c42f9f104fb ./lib/Smokeping/probes/Qstat.pm +7bf83c131ec66df9ecb71903b2171be3 ./lib/Smokeping/probes/EchoPingHttps.pm +1e4fccbd6802b2a2e40d6960c3b06c8d ./lib/Smokeping/probes/TCPPing.pm +c39943e17c351729f59a1e6af79e8b96 ./lib/Smokeping/probes/EchoPingChargen.pm +1521777598df8965907927eb92c3e408 ./lib/Smokeping/probes/FTPtransfer.pm +e8ee4043da2e34980783301350fb6ee8 ./lib/Smokeping/probes/EchoPingPlugin.pm +59c2a5701010c38c00f95e2a3eb6dd40 ./lib/Smokeping/probes/TelnetIOSPing.pm +2f9f3f0fdae60d0b812ed8494bb495a4 ./lib/Smokeping/probes/RemoteFPing.pm +5cae2fd9ad9ff93c9a2969cf60903f46 ./lib/Smokeping/probes/EchoPingSmtp.pm +4818fed56c1d7afd5b887f164a682630 ./lib/Smokeping/probes/TelnetJunOSPing.pm +6c3e91d404bae0191320c425e3c9cada ./lib/Smokeping/probes/IRTT.pm +8fe659bc4b1db1e4b7a370a4bb95eddb ./lib/Smokeping/probes/CiscoRTTMonEchoICMP.pm +9f581fbab087d0a576260f0d79273310 ./lib/Smokeping/probes/TraceroutePing.pm +788c288e521072d6bec0ee33b1f49384 ./lib/Smokeping/probes/DNS.pm +2300f76af8d86de1a640c03a70375497 ./lib/Smokeping/probes/basefork.pm +40718aab8cdbc7cb4760386476e8c1cd ./lib/Smokeping/probes/TacacsPlus.pm +ad971c0c2f08b53c4fe5da5baf434b2a ./lib/Smokeping/probes/EchoPingDiscard.pm +a1d417dd6664100d9c7cdd671e2487a2 ./lib/Smokeping/probes/AnotherCurl.pm +3965ee85c715e289737f2278236590b1 ./lib/Smokeping/probes/OpenSSHJunOSPing.pm +9c046a63424618ac3fc6abeace84f561 ./lib/Smokeping/probes/CiscoRTTMonDNS.pm +3ee5f11dd635f54d04137db332ba8186 ./lib/Smokeping/probes/SSH.pm +31e949250005ff133a85262260d9e77b ./lib/Smokeping/probes/EchoPingHttp.pm +382cd82f0b8c779ba3fc0e78180b7456 ./lib/Smokeping/probes/SendEmail.pm +583202540b57e6883d7a120477559e69 ./lib/Smokeping/probes/IOSPing.pm +b079e26ad4e054dc5fde13c9c473fea0 ./lib/Smokeping/probes/WebProxyFilter.pm +38b0f60e322c4edb0495238b3864dcaa ./lib/Smokeping/probes/AnotherDNS.pm +386baa69338b1dddc2ab202c6e454e43 ./lib/Smokeping/probes/Curl.pm +d1bb3426744b26fcec326b1652f175c0 ./lib/Smokeping/probes/OpenSSHEOSPing.pm +22d4d89cb89d09ca1252915251bf53fa ./lib/Smokeping/probes/AnotherSSH.pm +f58ebe194cb6d2313c59b86c02d654f2 ./lib/Smokeping/probes/CiscoRTTMonTcpConnect.pm +8f77dbf0c925913ce83e184a4e6187d4 ./lib/Smokeping/probes/FPing6.pm +f3c010af1de08141c91e3aedf53181da ./lib/Smokeping/probes/EchoPingLDAP.pm +4f389d382ac14503322c617e37e7636c ./lib/Smokeping/probes/EchoPingWhois.pm +5ebc965d50d4601f51239caeddf0e352 ./lib/Smokeping/probes/basevars.pm +303869aad39ec0eaa977dc665b4be679 ./lib/Smokeping/probes/SipSak.pm +8d2752f301f4f73e006724deb1f77f33 ./lib/Smokeping/pingMIB.pm +5d1510802e13a09fa6d5cdb61a2ed973 ./lib/Smokeping/Slave.pm +e4590791ff48d9d3c2e8af7d4cc89537 ./lib/Smokeping/sorters/base.pm +ab05eee799a3f7dd3ad55552ebcf9005 ./lib/Smokeping/sorters/Loss.pm +8df66ecffb3d99a83853a95fcb93ca9e ./lib/Smokeping/sorters/Median.pm +b7b48ab6ee96cade6e4aee63a6229963 ./lib/Smokeping/sorters/StdDev.pm +b0ee00e7ded5d2244074da936081a5f8 ./lib/Smokeping/sorters/Max.pm +000bb41739ce475ac0db7aebeaec4cb6 ./lib/Smokeping/RRDhelpers.pm +74dc0a7e83f7e5033dcaa59f452fc11b ./lib/Smokeping/Colorspace.pm +40d9a0d2effcd59d89bbcd893fe3f27a ./lib/Smokeping/Info.pm +8c67107c66f13565419f0641ee720f47 ./lib/Smokeping/matchers/base.pm +d70b48f27e5c9a1eb8e8f51c7a6f183a ./lib/Smokeping/matchers/Median.pm +0c680558c553638e7418cc44cbb76868 ./lib/Smokeping/matchers/ConsecutiveLoss.pm +ebf79b04b999b0eea95bcdc6a918c30d ./lib/Smokeping/matchers/CheckLoss.pm +0589f39cc33fb0a443bd947e00442c92 ./lib/Smokeping/matchers/Avgratio.pm +c9f37222afc9fab4ee9ad81c84349bfe ./lib/Smokeping/matchers/CheckLatency.pm +0e9d1d8a7a4d338152c50ff221e2f152 ./lib/Smokeping/matchers/ExpLoss.pm +71282e21e01fb6572a1859492dda2ea8 ./lib/Smokeping/matchers/Medratio.pm +9615f1119ac79d65c51997f5403b558f ./lib/Smokeping/Graphs.pm +1134871f6bbdb7d37b13eb019bb9e380 ./lib/BER.pm +cd59ef3716e6e18e3e1f6464016c7533 ./lib/Makefile.am +52a3e83bba27640f6e858412fecf8907 ./cpanfile +18810669f13b87348459e611d31ab760 ./LICENSE +20a41dc90ae70beba75139b8200ae253 ./etc/smokeping_secrets.dist +35455c7e9a4762b47addc856ddb8d1cd ./etc/config.dist.in +0edf364b4e38bd545f4cf6ed27fd63f4 ./etc/smokemail.dist +9aefc38c817bc5a265a5b89845e7a283 ./etc/basepage.html.dist +efbb764be19184ddf3757b2beb1db31c ./etc/tmail.dist +fdf16be02d3898935df6e9a30ad76de7 ./etc/Makefile.am +28b3c6fbfc9edb70ccafeb578cf7588a ./htdocs/js/cropper/cropper.uncompressed.js +8ef561662d9ad6cd36a534648663471c ./htdocs/js/cropper/cropper.css +2b2adfe6df6517f146b5b7c5b86eda42 ./htdocs/js/cropper/marqueeVert.gif +45bc30298a5f48aad53b4c3815d8a770 ./htdocs/js/cropper/cropper.js +9b4c27fccf817923f59b78fa6099c376 ./htdocs/js/cropper/marqueeHoriz.gif +7d22d8406c981b4d4542e8228f4178ca ./htdocs/js/cropper/licence.txt +09ef4d15cc7cdb31058181765c8820dd ./htdocs/js/scriptaculous/controls.js +bb13d308c65d4647946b0ed8d536390f ./htdocs/js/scriptaculous/scriptaculous.js +0f2db4e77f36d2ac2f1826a0c253f5cc ./htdocs/js/scriptaculous/builder.js +aecce9b9186bc24b80ff9e2403a94326 ./htdocs/js/scriptaculous/effects.js +8c03e76e44ccca0624cef4800f3ea7db ./htdocs/js/scriptaculous/dragdrop.js +65ade465b0b37ba9acdd3d722a0324ee ./htdocs/js/scriptaculous/unittest.js +eff549ad8f7495332f7ad6103658764c ./htdocs/js/scriptaculous/slider.js +f415e9ac8946878a499a174d945c898a ./htdocs/js/scriptaculous/sound.js +b3194289aa4d19188e036ec01d4d2c12 ./htdocs/js/smokeping.js +fb004124bf1ed724b26e6e188db7604e ./htdocs/js/prototype.js +5a3a81cf4d5c006de7b39e149e8aac30 ./htdocs/css/smokeping-print.css +6d82c4e7262a8b71c47e3221b72174b5 ./htdocs/css/smokeping-screen.css +1c5220b32f26668156bbbedece99bb70 ./htdocs/Makefile.am +b2afdcfbea0fdc675c157e8119afb43b ./COPYRIGHT +cc8471e7aaf58248ca90931622339177 ./Makefile.am diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..37abe0a --- /dev/null +++ b/debian/changelog @@ -0,0 +1,998 @@ +smokeping (2.9.0+linuxiarz.pl-1) unstable; urgency=medium + + [ linuxiarz.pl ] + * Bump to 2.9.0 + +smokeping (2.8.2+ds-1) unstable; urgency=medium + + [ Gabriel Filion ] + * New upstream version (Closes: #1004308, #740852) + * All patches that were merged upstream were removed + * Add an example lighttpd configuration file for smokeping (Closes: #961950) + * Import upstream patch to fix curl probes (Closes: #986068) + * Avoid errors with ucf/ucfr during postrm (Closes: #1005807) + * New required library libobject-result-perl for influxdb + * Remove obsolete dependency on lsb-base + * fix lintian warning about unmatched news entry + * lintian-overrides are now obsolete + * Clear out copyright details for files removed in repack + * Patch out building of 3rd-party js libs + * Revert "fix lintian warning about unmatched news entry" + + [ Debian Janitor ] + * Bump debhelper from old 12 to 13. + * Update standards version to 4.6.1, no changes needed. + + -- Gabriel Filion Sun, 04 Feb 2024 14:54:09 -0500 + +smokeping (2.7.3-4) unstable; urgency=low + + [ Debian Janitor ] + * Trim trailing whitespace. + * Bump debhelper from old 10 to 12. + * Set debhelper-compat version in Build-Depends. + * Drop unnecessary dependency on dh-autoreconf. + * Update standards version to 4.5.0, no changes needed. + + [ Gabriel Filion ] + * Import patch that disables refresh while zooming (Closes:#981348) + * Import patch disabling rsa1 and enabling ecdsa for ssh probe (Closes: + #962225) + + -- Gabriel Filion Sun, 24 Apr 2022 14:44:58 -0400 + +smokeping (2.7.3-3) unstable; urgency=medium + + [ Gabriel Filion ] + * start generating smokeinfo manpage + * postrm: purge, removal of apache2/conf.d/smokeping not needed anymore + * make css and js load from the /smokeping alias (closes: #929515) + * change fix-conf-paths patch to point the daemon to /run/smokeping for its + pid indead of /var/run/smokeping + + [ Matteo F. Vescovi ] + * debian/patches/: fix-alert-edgetriggers added (Closes: #934170) + + -- Gabriel Filion Sat, 11 Jul 2020 00:00:19 +0200 + +smokeping (2.7.3-2) unstable; urgency=medium + + [ Gabriel Filion ] + * systemd: run service as smokeping user + The systemd service unit file that was introduced in 2.7.3-1 didn't setup + user and group properly for the service, and the daemon was running as root. + This is now corrected, but it might mean that some files were created by and + are owned by root. To fix this, you can use the following command: + . + find /var/lib/smokeping/ -mindepth 1 -name '__cgi' -prune -o \ + -exec chown smokeping:smokeping {} \; + * missing-VERSION forwarded and merged upstream + * patch "fix-400d-graph" forwarded and merged upstream + * rename patch path_changes to make its name more meaningful + * reduce javascript_path_changes to the strict minimum + * fix-perl-lib: indicate that the patch shouldn't be forwarded + * proper-samle-conf: indicate that it shouldn't be forwarded + * make commands invoked in rules more verbose as per policy version 4.2.0 + * use https for the homepage + * Bump Standards-Version to 4.3.0 + * merge both patches that hardcode config path + * init.d: match on pidfile only prevents service stop (closes: #922395) + * systemd: move example for slave mode in the examples dir + * control: erroneous and duplicated mention of default mta + + [ Sven Hartge ] + * Change group of secrets file for slaves to www-data (Closes: #760945) + + -- Gabriel Filion Sat, 23 Feb 2019 19:54:18 -0500 + +smokeping (2.7.3-1) unstable; urgency=medium + + * use https in watch file + * new upstream release + * remove patch merged upstream + * add systemd service + + -- Gabriel Filion Wed, 23 Jan 2019 19:26:45 -0500 + +smokeping (2.7.2-3) unstable; urgency=medium + + [ OndÅ™ej NovĂ½ ] + * d/control: Deprecating priority extra as per policy 4.0.1 + * d/changelog: Remove trailing whitespaces + * d/control: Remove trailing whitespaces + + [ Gabriel Filion ] + * Update patch fping-protocol-version: setup default values (Closes: #908674) + + [ Antoine BeauprĂ© ] + * Update lintian bypass for embedded javascript + + -- Gabriel Filion Thu, 11 Oct 2018 19:22:32 -0400 + +smokeping (2.7.2-2) unstable; urgency=medium + + [ Gabriel Filion ] + * Add patch fping-protocol-version. (Closes: #905752) + + [ Antoine BeauprĂ© ] + * upload to unstable (Closes: #898580) + + -- Antoine BeauprĂ© Sun, 26 Aug 2018 17:28:53 -0400 + +smokeping (2.7.2-1) experimental; urgency=medium + + * new upstream release (Closes: #898580) + * drop patch typo_642197 fixed upstream + + -- Antoine BeauprĂ© Tue, 15 May 2018 12:21:26 -0400 + +smokeping (2.6.11-5) unstable; urgency=medium + + [ Gabriel Filion ] + * Add a directory index to show the cgi instead of a 403 (Closes: + #885699, #882987) + + [ Antoine BeauprĂ© ] + * document FastCGI configuration (Closes: #684870) + * repository migrated to salsa + * add Gabriel as maintainer + + -- Antoine BeauprĂ© Sat, 12 May 2018 15:48:07 -0400 + +smokeping (2.6.11-4) unstable; urgency=medium + + * add missing build-dep on rename (Closes: #826056) + * check config file validity - thanks Matus UHLAR (Closes: #847924) + * fix slave permissions configuration - thanks Sven Hartge (Closes: #760945) + * bump dh compat, no change + + -- Antoine BeauprĂ© Tue, 28 Nov 2017 11:57:04 -0500 + +smokeping (2.6.11-3) unstable; urgency=medium + + * remove outdated information from README.Debian (Closes: #804384) + * fix permissions error on default config, enable CGI module in postinst + (Closes: #760474, #821925) + * remove Rowan Thorpe from Uploaders, I haven't heard from him in over a + year + * fix lintian warnings + * depend on default-mta to fix default config on fresh installs + + -- Antoine BeauprĂ© Wed, 18 May 2016 17:59:06 -0400 + +smokeping (2.6.11-2) unstable; urgency=high + + * security fix for CVE-2015-0859: code execution via CGI arguments due + to Debian Apache configuration + + -- Antoine BeauprĂ© Tue, 10 Nov 2015 13:51:56 -0500 + +smokeping (2.6.11-1) unstable; urgency=medium + + * new upstream release, see https://oss.oetiker.ch/smokeping/pub/CHANGES + (Closes: #708615, #759483, #783229) + * do not ship incorrect .fcgi file (Closes: #695438) + * port to apache 2.4 (Closes: #669799) + * drop patches factored in upstream: fix-pod-escaping, fcgi_destdir + * add patch to ignore missing VERSION file + * add missing dependencies + + -- Antoine BeauprĂ© Thu, 04 Jun 2015 22:53:39 -0400 + +smokeping (2.6.9-1) unstable; urgency=medium + + * Upload to unstable + * remove jsogo as uploader, as I haven't heard from him in years + * Bug fix: missing "#MODE=slave" in /etc/default/smokeping, thanks to + xavier renaut for reporting and Rowan Thorpe for confirmation (Closes: + #685811). + * follow anonscm.d.o rename + * fix status doesn't use the pidfile (Closes: #699799) + * use dh_autoreconf to fix configure step, thanks to Rowan Thorpe + * Use dh_autoreconf to avoid errors about "missing xx" and to allow + rebuilding after first build (Closes: #724471) + * use dh_auto_configure rather than ./configure in rules, to only + override specified flags, not all + * add patches from Rowan Thorpe + * fix-paths-inside-executables - hardcode paths inside executables + (Closes: #707225) + * fix-pod-escaping - quote-protect a slash in a pod-link (Closes: + #752393) + * bump standards to 3.9.5, no change + * fix dependency list to ease diffs + + -- Antoine BeauprĂ© Mon, 07 Jul 2014 22:03:59 -0400 + +smokeping (2.6.9-1~exp0) experimental; urgency=high + + * New upstream release to properly fix CVE-2012-0790 (Closes: #659899) + * Acknowledge the NMU, thanks gregor! + + -- Antoine BeauprĂ© Sat, 16 Mar 2013 11:34:03 -0400 + +smokeping (2.6.8-1.1) unstable; urgency=low + + * Non-maintainer upload. + * Fix "fails to install, remove, distupgrade, and install again": + remove ucf config files also on install (not only on upgrade); cf. the + changelog entry for 2.6.5-2 and #655968. + (Closes: #668383) + * Remove Niko Tyni from Uploaders as per his request in #668383. + + -- gregor herrmann Mon, 30 Jul 2012 21:02:52 +0200 + +smokeping (2.6.8-1) unstable; urgency=low + + * New upstream release + + -- Antoine BeauprĂ© Sun, 26 Feb 2012 13:25:13 -0500 + +smokeping (2.6.7-1) unstable; urgency=high + + * New upstream release to fix CVE-2012-0790 (Closes: #659899) + + -- Antoine BeauprĂ© Tue, 14 Feb 2012 13:30:29 -0500 + +smokeping (2.6.5-2) unstable; urgency=low + + * Bug fix: "prompting due to modified conffiles which where not modified + by the user", thanks to Holger Levsen (Closes: #655968). This is done + by simply removing ucf config files that were not changed before + installing them. + * fix lintian warning by refering explicitly to GPL-2 + * update standards version to 3.9.2, no change + * unset locale (LC_ALL) when building to please the build process + + -- Antoine BeauprĂ© Sun, 15 Jan 2012 18:17:16 -0500 + +smokeping (2.6.5-1) unstable; urgency=low + + * fix pathnames + + -- Antoine BeauprĂ© Mon, 21 Nov 2011 22:26:40 -0500 + +smokeping (2.6.5-1~experimental1) experimental; urgency=low + + * fix reload in startup script + * forgot in previous changelog: stop using ucf now that we generate + config files during build, which leads to extra prompts during + upgrades. + + -- Antoine BeauprĂ© Wed, 16 Nov 2011 11:59:33 -0500 + +smokeping (2.6.5-1~experimental0) experimental; urgency=low + + * new upstream release (Closes: #485977). + * take over maintainership, leaving previous maintainer as uploader + (Closes: #568742). + * remove patches: + * 15_clean_makefile.dpatch - makefile is now clean + * 20_html-parser.dpatch - obsolete + * strip down patch: + * 10_path_changes.dpatch - only fix the HTML paths + * add patches: + * fcgi_destdir - setup the fcgi script properly + * fix-conf-path-cgi - hardcode the path to the config in the CGI script + * fix-conf-paths - fix paths in main config + * fix-perl-lib - fix path to PERLIB + * proper-sample-conf - have a proper sample config + * typo_642197 - fix typo in mail template (Closes: #642197) + * fix-400d-graph - fix long term graph (Closes: #618851) + * rewrite debian/rules with debhelper 7 + * remove our custom config.d files, instead we split the upstream config + in multiple files during the build, our modifications are now patches + to the default config (Closes: #589679) + * remove old (pre 2.3.6) compatibility code, now that even oldstable is + running that release + * switch to 3.0 (quilt) format + + -- Antoine BeauprĂ© Mon, 07 Nov 2011 00:15:53 -0500 + +smokeping (2.3.6-5) unstable; urgency=medium + + * debian/patches/20_html-parser.dpatch: fix an incompatibility with + recent versions of HTML::Parser. (Closes: #560562) + + -- Niko Tyni Sun, 20 Dec 2009 22:38:16 +0200 + +smokeping (2.3.6-4) unstable; urgency=low + + * Depend on libconfig-grammar-perl instead of bundling it. (Closes: #531196) + * Install the perl code in /usr/share/smokeping/lib instead of + /usr/share/perl5/smokeping. + * Downgrade the exim4 | mail-transport agent dependency to a suggestion. + (Closes: #520350) + * Remove the obsolete libnet-perl dependency. + * Depend on javascript libraries instead of bundling them. (Closes: #475285) + + cpio not used anymore. (Closes: #537026) + * Move away from /var/www but add compatibility symlinks on upgrades. + See NEWS.Debian. (Closes: #521333) + + automatically enable the web server configuration on new installations + where possible. + * Serve UTF-8 by default. Thanks to Elmar Hoffmann. (Closes: #506978) + * Don't ship /var/run/smokeping, it will be created at run time. + * Upgrade to Standards-Version 3.8.2. + + add Homepage, Vcs-Git, and Vcs-Browser information to debian/control. + * Change the alternate web server recommendation to httpd-cgi as per policy. + + -- Niko Tyni Tue, 21 Jul 2009 21:11:01 +0300 + +smokeping (2.3.6-3) unstable; urgency=low + + * Unset LC_ALL in the init script because the daemon needs to + reset LC_NUMERIC. (Closes: #489766) + * Fix a bashism in the postinst script. Thanks, lintian. + + -- Niko Tyni Fri, 29 Aug 2008 18:29:34 +0300 + +smokeping (2.3.6-2) unstable; urgency=low + + * Kill speedy_backend processes that are running on stop (Closes: #485880) + + -- Jose Carlos Garcia Sogo Wed, 02 Jul 2008 00:30:34 +0200 + +smokeping (2.3.6-1) unstable; urgency=low + + * New upstream release. + + honours the 'linkstyle' variable when zooming. (Closes: #476404) + * Wait until the daemon has exited when stopping it with the init.d script. + This should fix a race condition that made restarts fail sporadically. + (Closes: #478241) + + -- Niko Tyni Mon, 28 Apr 2008 21:49:28 +0300 + +smokeping (2.3.5-2) unstable; urgency=low + + * Prevent an unnecessary ucf prompt for the Slaves section on upgrades. + * Upload to unstable. + + -- Niko Tyni Fri, 04 Apr 2008 08:47:24 +0300 + +smokeping (2.3.5-1) experimental; urgency=low + + * New upstream release. (Closes: #470295) + + debian/patches/30_slave_piddir.dpatch: removed, included upstream. + + new dependency on libdigest-hmac-perl + * Revisit the directory permissions of various directories under /var. + See also NEWS.Debian. + + use /var/lib/smokeping/__cgi as a storage place for the CGI. + (Closes: #470382) + + debian/postinst: + * set the right permissions on install + * move *.adr files under __cgi on upgrade + * honour DAEMON_ARGS from /etc/default/smokeping even in slave mode. + * Remove the example target hierarchy 'World' from the default configuration + file, so that no unnecessary directories are created in the CGI directory. + * debian/rules: recreate empty documentation directories if needed to ease + working with a git repository. + * Split the monolithic configuration file into configuration snippets + in /etc/smokeping/config.d. See NEWS.Debian. (Closes: #473223) + + use ucf for managing all the configuration files to ease the merging + + debian/patches/20_conffile.dpatch: removed + * Install the upstream config template in /usr/share/doc too, because + smokeping_examples(7) says so and it doesn't hurt. + * Update debian/copyright. + * Don't blindly remove the whole /etc/smokeping on purge, just the + configuration files managed by maintainers scripts and any ucf leftovers. + * Upload to experimental to get a bit of testing first. + + -- Niko Tyni Tue, 11 Mar 2008 22:30:04 +0200 + +smokeping (2.3.2-1) unstable; urgency=low + + * New upstream release. (Closes: #468928) + * Add support for the new "slave mode", enabled via + /etc/default/smokeping. (Closes: #466533) + * debian/patches/30_slave_piddir.dpatch: Add an optional + --pid-dir option to specify the pid directory when running as a slave. + * Change the doc-base section to Network/Monitoring. Thanks, lintian. + + -- Niko Tyni Tue, 04 Mar 2008 23:36:58 +0200 + +smokeping (2.3.0-1) unstable; urgency=low + + * New upstream version. + + new dependency on liburi-perl + + debian/patches/30_jszoom.dpatch: removed, applied upstream. + + -- Niko Tyni Thu, 24 Jan 2008 23:27:29 +0200 + +smokeping (2.2.7-2) unstable; urgency=low + + * debian/patches/30_jszoom.dpatch: fix a javascript error + on pages without a zoom widget. (Closes: #457071) + * Change my maintainer email address. + * Upgrade to Standards-Version 3.7.3. No changes needed. + * Add two short patch descriptions in debian/patches. + * Don't install an empty /usr/bin directory. + + -- Niko Tyni Sun, 23 Dec 2007 20:57:49 +0200 + +smokeping (2.2.7-1) unstable; urgency=low + + * New upstream release + * Create /var/run/smokeping at startup if it doesn't exist. + Patch from Ubuntu. + + -- Niko Tyni Sat, 10 Nov 2007 09:55:32 +0200 + +smokeping (2.2.6-1) unstable; urgency=low + + * New upstream release. + * Update debian/copyright, including a typo fix. (Closes: #445877) + + -- Niko Tyni Sun, 28 Oct 2007 15:51:36 +0200 + +smokeping (2.2.4-1) unstable; urgency=low + + * New upstream release + + includes graph zooming code that is installed in /var/www/smokeping + + new master/slave functionality needs a dependency on libwww-perl + + requires librrds-perl >= 1.2; update the dependency + * debian/patches: + + 30_missing_smoke.dpatch: removed, now included upstream. + * Update debian/copyright for the included javascript libraries. + * Wrap overlong dependency lines in debian/control. + * debian/rules: fix the build-stamp dependency so it will not skip + the patch step + * Include an example secret file for the master/slave functionality + * Upgrade apache recommendation to apache2. + + -- Niko Tyni Mon, 17 Sep 2007 10:57:29 +0300 + +smokeping (2.1.1-1) unstable; urgency=low + + * New upstream release. + * Patches included upstream: + + 40_password.dpatch + + 50_ldap.dpatch + + 60_fping.dpatch + + 70_syslog.dpatch + * Recommend echoping, don't list it as an alternative dependency. + * Suggest openssh-client instead of ssh. (Closes: #416539) + * Don't delete the smokeping user when the package is purged. + * Update debian/watch: upstream has moved. + * Rewrite the init script for LSB support. + + Depend on lsb-base accordingly. + * Add a note in README.Debian about sporadic problems with the + CGI reloading configuration changes. + * Point to the note when executing '/etc/init.d/smokeping reload'. + (Closes: #397609) + * debian/patches/30_missing_smoke.dpatch: show the visible part of all + smoke even if the rest of it doesn't fit on the scale. (Closes: #412826) + + -- Niko Tyni Mon, 14 May 2007 23:25:27 +0300 + +smokeping (2.0.9-2) unstable; urgency=low + + * debian/patches/15_clean_makefile.dpatch: + + remove unneeded and potentially unsecure include paths. + * debian/patches: selected patches from the upstream SVN repository + + 40_password.dpatch: skip reading the password file when running as a CGI. + + 50_ldap.dpatch: Make the 'scope' option in the LDAP probe actually work. + + 60_fping.dpatch: + * Support the '-S' (set source address, see #198486) fping option. + * Don't try to execute fping when running as a CGI. + + 70_syslog.dpatch: Don't die silently if syslogd is unavailable. + (Closes: #395056) + * Remove all the autogenerated documentation at clean time, to properly + undo the effects of the 'build' target. + * Install example configuration files for documentation. + + -- Niko Tyni Thu, 26 Oct 2006 21:45:56 +0300 + +smokeping (2.0.9-1) unstable; urgency=low + + * New upstream release + * Add debian/watch. + * Update debian/copyright. + + -- Niko Tyni Sat, 15 Jul 2006 10:11:06 +0300 + +smokeping (2.0.8-3) unstable; urgency=low + + * remove all configuration file modifications from postinst, as per policy. + * no need for debconf anymore; remove all translations as well. + * add a NEWS.Debian entry about configuration file incompatibilities + between versions 1.x and 2.x. + * Upgraded to Standards-Version 3.7.2. No changes needed. + + -- Niko Tyni Sun, 28 May 2006 23:02:09 +0300 + +smokeping (2.0.8-2) unstable; urgency=low + + * debian/patches/10_path_changes.dpatch: fix the library path. + (Closes: #363439) + * debian/control: move dpatch to Build-Depends, as it's + required for the 'clean' target. + * debian/po/cs.po: include a Czech translation from Miroslav Kure. + (Closes: #363118) + * debian/po/fr.po: include a French translation from Olivier Trichet. + (Closes: #364165) + * debian/rules: don't run the 'build' target twice. + * debian/postinst: accept 'reconfigure' as the first parameter. + + -- Niko Tyni Sun, 23 Apr 2006 20:33:29 +0300 + +smokeping (2.0.8-1) unstable; urgency=low + + [ Niko Tyni ] + * New upstream version. + + makes all the CGI self-referring links relative and provides a + new variable to configure this behaviour. (Closes: #351783) + * debian/postrm: + + only call deluser if the smokeping user exists + + redirect all deluser output to stderr so debconf won't get confused + * Delay init.d startup so the SSH probe can test against localhost + (Closes: #349832) + * Upgrade to debhelper compatibility level 5. + * Move debhelper from Build-Depends-Indep to Build-Depends, since it's + required in the 'clean' target. + * (po-)debconfize the postinst note on failed upgrade + + debian/po/fi.po: include a Finnish translation + + debian/po/es.po: include a Spanish translation + + debian/rules: add a dh_installdebconf call + + debian/control: Build-Depend on po-debconf, Depend on ${misc:Depends} + + [ Jose Carlos Garcia Sogo ] + * Integrate Niko work in latest versions. Again, a big thanks goes to him. + * debian/patches: + + 10_path_changes: included again. Also change tSmoke.dist paths. + + 20_conffile: included again. + + -- Jose Carlos Garcia Sogo Sun, 16 Apr 2006 13:03:43 +0200 + +smokeping (2.0.5-2) unstable; urgency=low + + * Merge smokeping--debian--2.0.5 branch when preparing the package: + + Change default perl location. (Closes: #339690) + + Change default config file. (Closes: #339816) + + -- Jose Carlos Garcia Sogo Sat, 19 Nov 2005 10:50:22 +0100 + +smokeping (2.0.5-1) unstable; urgency=low + + [ Niko Tyni ] + * New upstream version + + use the 'cgiurl' variable for all CGI self-refering links + (Closes: #339019) + * debian/doc-base: + + add document authors + + fix the text document directory + * debian/postrm: + + use 'deluser --system' to delete the user at purge time. + + [ Jose Carlos Garcia Sogo ] + * Merged smokeping--*--2.0.5 branches from Niko's repo. + + -- Jose Carlos Garcia Sogo Wed, 16 Nov 2005 23:35:23 +0100 + +smokeping (2.0.4-1) unstable; urgency=low + + [ Niko Tyni ] + * New upstream version + + doesn't create new RRD files when run with '--reload' (Closes: #333373) + + [ Jose Carlos Garcia Sogo ] + * Added Niko Tyni to the list of uploaders. Usually he is + doing much of the work, and I do not have any need of making any change. + + -- Jose Carlos Garcia Sogo Wed, 12 Oct 2005 19:52:40 +0200 + +smokeping (2.0.3-1) unstable; urgency=low + + [ Niko Tyni ] + * New upstream version + + Make the package build without extra Build-Depends. (Closes: #330009) + + [ Jose Carlos Garcia Sogo ] + * Integrate and upload. Thanks Niko for your work! + + -- Jose Carlos Garcia Sogo Sat, 1 Oct 2005 14:00:45 +0200 + +smokeping (2.0.2-1) unstable; urgency=low + + [ Niko Tyni ] + * New upstream version + * debian/init.d: implemented 'reload' + + [ Jose Carlos Garcia Sogo ] + * Merged versions 2.0.1-1 and 2.0.2-1 in my baz repository. + Thanks goes to Niko Tyni for his work. + * Changed FSF address from copyright file. + + -- Jose Carlos Garcia Sogo Sat, 24 Sep 2005 11:11:03 +0200 + +smokeping (2.0.1-1) unstable; urgency=low + + * New upstream version (Closes: #329339) + * try to upgrade the config file automatically + * give a warning and a pointer to the smokeping_upgrade doc + if the upgrade isn't succesful + + -- Niko Tyni Thu, 22 Sep 2005 17:58:53 +0000 + +smokeping (1.42-2) unstable; urgency=low + + * Fix problem in default config file not allowing white space + which was added in previous version for local fping target. (Closes: #324846) + * debian/control: have to depend on adduser as it is being used in postinst. + + -- Jose Carlos Garcia Sogo Sun, 28 Aug 2005 20:36:32 +0200 + +smokeping (1.42-1) unstable; urgency=low + + * New upstream version + + Works with RRDtool > 1.2 (Closes: #309344) + + Fixed curl documentation (Closes: #283652) + + Added an 'include' directive in config parser (Closes: #307955) + + * Changed default location of sendmail to /usr/sbin (Closes: #302164) + * Added localhost as default fping target (Closes: #307954) + * Standars-version bumped to 3.6.2. No changes needed. + * README.Debian: document enabled localhost fping probe. + + -- Jose Carlos Garcia Sogo Thu, 18 Aug 2005 00:06:45 +0200 + +smokeping (1.38-3) unstable; urgency=low + + * Include missing matchers methods in binary package (Closes: #295354) + * Add missing suggests: libnet-dns-perl, ssh, libio-socket-ssl-perl, + libnet-telnet-perl (Closes: #295372) + + -- Jose Carlos Garcia Sogo Sun, 13 Mar 2005 13:55:44 +0100 + +smokeping (1.38-2) unstable; urgency=low + + * Added missing Build-Dependecy in groff. (Closes: #292949) + + -- Jose Carlos Garcia Sogo Sat, 5 Feb 2005 19:14:48 +0100 + +smokeping (1.38-1) unstable; urgency=low + + * The "upstream releases just when a new upstream release is uploaded to the + archive" release. + * New upstream release. + * debian/postinst: only create smokeping user if it does not exist yet. + + -- Jose Carlos Garcia Sogo Sun, 30 Jan 2005 18:36:24 +0100 + +smokeping (1.37-1) unstable; urgency=low + + * New upstream version (Closes: #289126) + * debian/patches: + + 40_fping-packet.dpatch, + + 50_concurrent-probes.dpatch, + + 60_makepod-without-config.dpatch, + + 65_fix_generating_docs.dpatch, + + 68_typos.dpatch: disabled. They are applied upstream + + 70_regenerated_docs.dpatch: updated. It is empty as docs are uptodate + in the upstream tarball. + + * debian/postinst: + + don't edit unconditionally config file. (Closes: #288628) + + fix here permissions for different dirs instead of in rules file. + + create smokeping system user + + * debian/postrm: + + delete smokeping system user on purge. + + * debian/init.d: + + run smokeping daemon as its own user. (Closes: #287253) + + * debian/rules: + + update-docs target should only regenerate pod files (Closes: #287508) + + install perl modules manpages with the probes::, matchers:: or ISG:: + prefix, as neeeded. (Closes: #288922) + + -- Jose Carlos Garcia Sogo Sun, 30 Jan 2005 17:18:53 +0100 + +smokeping (1.34-4) unstable; urgency=low + + * debian/patches: + + 30_typos: moved to 68_typos. + + 50_concurrent-probes: patch the patch. Fix signal handling. + Thanks again to Niko Tyni. (Closes: #288082) + + 65_fix_generating_docs: patch Makefile to allow generating docs without + having SmokePing installed. + + 68_typos: fix different typos in sources. + + 70_regenerated_docs: updated. + + * debian/rules: + + New update-docs target, which should be used to upgrade + 70_regenerated_docs patch. + + -- Jose Carlos Garcia Sogo Mon, 3 Jan 2005 13:55:53 +0100 + +smokeping (1.34-3) unstable; urgency=low + + * The "2004 is death - Long life to 2005!" release. + * Some docs have been moved to subdirectories. Reinstall them in + /usr/share/doc/smokeping (Closes: #287250) + * Documentation reorganized: + + *.pod files removed. We don't need to distribute those files. + + install documentation in two main subdirectories, txt and html. + Inside create both 'probes' and 'matchers' subdirectories. + + manpages are installed either in man1 or man3, depending on + the section described inside the file. File names are incorrect, so + we rename manpages being moved to section 3. + * debian/patches: + + 20_conffile: enable syslog logging by default. (Closes: #287825) + + 30_typos: New. s/secion/section/g and other typos in documentation and + source files. (Closes: #283643) + + 50_concurrent-probes: New. Allow probes to be executed in separate + processes. This permits probe-specific parameters and offset. + Thanks to Niko Tyni and Marc Haber (Closes: #283533) + + 60_makepod-without-config: New. Let 'smokeping -makepod' be run + without a config file. Thanks to Niko Tyni. + + 70_regenerated_docs: New. Contains doc regenerated to show new options + added in version 1.34-2. (Closes: #287508) + + -- Jose Carlos Garcia Sogo Fri, 31 Dec 2004 19:20:55 +0100 + +smokeping (1.34-2) unstable; urgency=low + + * Build-Depend on dpatch >= 2.0.9, as it now uses new dpatch-run + (Closes: #286431) + * Applied patch from Niko Tyni to allow fping probes with different + packet sizes. Thanks! (Closes: #283647) + + -- Jose Carlos Garcia Sogo Mon, 20 Dec 2004 23:15:52 +0100 + +smokeping (1.34-1) unstable; urgency=low + + * New upstream release. (Closes: #283621) + + Fixes whatis error in manpages. (Closes: #210622) + * debian/control: + + depend on exim4 | mail-transport-agent, as we are using + "sendmail" command in default config. (Closes: #274718) + + Recommends apache | httpd to conform with Policy. + * debian/patches: + + 10_path_changes: updated + + 30_typos: new. s/secion/section/g on every the doc. + + -- Jose Carlos Garcia Sogo Sun, 19 Dec 2004 19:44:41 +0100 + +smokeping (1.31-2) unstable; urgency=high + + * init.d: If not running, restart should start the daemon. (Closes: #275861) + * Urgency high as it fixes a RC bug also present in Sarge. + + -- Jose Carlos Garcia Sogo Mon, 11 Oct 2004 13:01:47 +0200 + +smokeping (1.31-1) unstable; urgency=low + + * New upstream version. + + -- Jose Carlos Garcia Sogo Thu, 5 Aug 2004 22:56:20 +0200 + +smokeping (1.30-1) unstable; urgency=low + + * New upstrem version. (Closes: #248264) + + -- Jose Carlos Garcia Sogo Fri, 14 May 2004 18:20:34 +0200 + +smokeping (1.28-1) unstable; urgency=low + + * New upstream version. (Closes: #240628) + * Removed 30_upstream_Smokeping.dpatch -- Included upstream. + + -- Jose Carlos Garcia Sogo Sun, 28 Mar 2004 22:22:22 +0200 + +smokeping (1.26-2) unstable; urgency=low + + * Added dpatch to Build-Depends. (Closes: #235077) + + -- Jose Carlos Garcia Sogo Fri, 27 Feb 2004 15:39:39 +0100 + +smokeping (1.26-1) unstable; urgency=low + + * New upstream version. (Closes: #233687) + * Ack previous NMU. Thanks Matthias. (Closes: #226829) + * Moved perl stuff from /usr/lib/perl5 to /usr/shre/perl5 as those files are + not Perl executables. + * Do not list /etc/smokeping files in conffiles, so they're not listed twice + when building the package. + * Using dpatch now. It makes really easier to mantain all those path changes + we need to do in upstream source: + - 10_path_changes.dpatch: Changes upstream paths to Debian ones. + - 20_conffile.dpatch: Creates a template conffile suitable for everyone. + - 30_upstream_Smokeping.dpatch: last minute upstream patch to + Smokeping.pm file fixing some typos. + * Suggests libnet-ldap-perl and libauthen-radius-perl for the new probes. + + -- Jose Carlos Garcia Sogo Sat, 21 Feb 2004 14:09:16 +0100 + +smokeping (1.25-1.1) unstable; urgency=low + + * NMU. + * Include the correct cgi script (closes: #226829). + * Suggests curl. + + -- Matthias Klose Wed, 21 Jan 2004 21:28:09 +0100 + +smokeping (1.25-1) unstable; urgency=low + + * New upstream release (Closes: #216163, #218974) + * Bumped Standars-Version. No changes needed. + + -- Jose Carlos Garcia Sogo Mon, 5 Jan 2004 21:30:53 +0100 + +smokeping (1.20-3) unstable; urgency=low + + * Fixed how email adresses are parsed. (Closes: #193697) + * Fixed permissions in /var/lib/smokeping dir so the CGI can + also write in it. (Closes: #193749) + * Fixed init.d script so it doesn't fail when trying to remove a stopped + smokeping package. (Closes: #193855) + + -- Jose Carlos Garcia Sogo Fri, 23 May 2003 22:16:27 +0200 + +smokeping (1.20-2) unstable; urgency=low + + * Changed the order in which /usr/share/doc/smokeping/pod/smokeping.pod link + is created, so we don't clash when installing *.pod files there. + (Closes: #193095) + + -- Jose Carlos Garcia Sogo Thu, 15 May 2003 23:18:21 +0200 + +smokeping (1.20-1) unstable; urgency=low + + * New upstream version. + * Added a dnsutils to recommends field, as it is used by DNS probe. + * Standars-Version bumped to 3.5.9. + + -- Jose Carlos Garcia Sogo Mon, 12 May 2003 16:08:08 +0200 + +smokeping (1.19-1) unstable; urgency=low + + * New upstream version. Add a DNS probe. + + -- Jose Carlos Garcia Sogo Thu, 20 Feb 2003 15:46:37 +0100 + +smokeping (1.18-1) unstable; urgency=low + + * New upstream release. + - Allow sub millisecond patterns. + - Report a full link in smokeping alerts. + + -- Jose Carlos Garcia Sogo Mon, 16 Dec 2002 16:15:44 +0100 + +smokeping (1.16-1) unstable; urgency=low + + * New upstream release: + - Graphs are showed in logarithmic scale. + - Added IOSPing probe. + + -- Jose Carlos Garcia Sogo Fri, 8 Nov 2002 20:50:19 +0100 + +smokeping (1.15-2) unstable; urgency=low + + * Changed postinst to check if $2 parameter passed to dpkg + --compare-versions isn't empty. (Closes: #164451) + * Upped dependencies to speedy-cgi-perl (2.21-1) and perl (5.8). + + -- Jose Carlos Garcia Sogo Sat, 12 Oct 2002 13:05:49 +0200 + +smokeping (1.15-1) unstable; urgency=low + + * Another upstream release: + - Bugfixes. + - Allow to call an external script upon matching an alert pattern. + - Unified mail tools. + + -- Jose Carlos Garcia Sogo Sat, 28 Sep 2002 12:42:28 +0200 + +smokeping (1.14-1) unstable; urgency=low + + * New upstream release: + - Some bugfixes. + + -- Jose Carlos Garcia Sogo Sat, 28 Sep 2002 12:35:52 +0200 + +smokeping (1.13-1) unstable; urgency=low + + * New upstream release. + + -- Jose Carlos Garcia Sogo Mon, 9 Sep 2002 21:03:01 +0200 + +smokeping (1.12-3) unstable; urgency=low + + * Fixed dependencies for Perl 5.8 + * Changed fping path to /usr/bin (Closes: #157905) + + -- Jose Carlos Garcia Sogo Sun, 1 Sep 2002 21:35:10 +0200 + +smokeping (1.12-2) unstable; urgency=low + + * Moved rddtool data files to /var/lib/smokeping to comply + with FHS. With this we don't need to make tricks with the owner + of smokeping binary and with /var/www/smokeping perms. (Closes: #152475) + + -- Jose Carlos Garcia Sogo Sat, 20 Jul 2002 13:43:34 +0200 + +smokeping (1.12-1) unstable; urgency=low + + * The "Once more I didn't received Freshmeat release announcement" release. + * New upstream release. + + -- Jose Carlos Garcia Sogo Sat, 8 Jun 2002 09:23:10 +0200 + +smokeping (1.11-1) unstable; urgency=low + + * New upstream release. + + -- Jose Carlos Garcia Sogo Sat, 11 May 2002 15:49:10 +0200 + +smokeping (1.9-2) unstable; urgency=low + + * Added a recommends in libsocket6-perl (Closes: #145164) + + -- Jose Carlos Garcia Sogo Wed, 1 May 2002 14:56:18 +0200 + +smokeping (1.9-1) unstable; urgency=low + + * New upstream release. + + -- Jose Carlos Garcia Sogo Tue, 30 Apr 2002 00:27:05 +0200 + +smokeping (1.8-1) unstable; urgency=low + + * New upstream release. + + -- Jose Carlos Garcia Sogo Fri, 26 Apr 2002 23:12:31 +0200 + +smokeping (1.6-2) unstable; urgency=low + + * Changed /usr/bin/perl for /usr/bin/speedy in the smokeping binary and the + smokeping cgi. (Closes: #140384) + + -- Jose Carlos Garcia Sogo Tue, 2 Apr 2002 15:02:08 +0200 + +smokeping (1.6-1) unstable; urgency=low + + * New upstream release. (Closes: #140056) + + -- Jose Carlos Garcia Sogo Thu, 28 Mar 2002 16:39:52 +0100 + +smokeping (1.5-1) unstable; urgency=low + + * New upstream release. + * Added support for echoping. + * Changed "don't touch this" /etc/smokeping/config message. + (Closes: #137836) + + -- Jose Carlos Garcia Sogo Mon, 11 Mar 2002 15:54:37 +0100 + +smokeping (1.4-2) unstable; urgency=low + + * Added forgotten #DEBHELPER# line in postinst. + Sorry for the new release, but the new incoming system works this way. + + -- Jose Carlos Garcia Sogo Sun, 10 Mar 2002 15:59:40 +0100 + +smokeping (1.4-1) unstable; urgency=low + + * New upstream release. + + -- Jose Carlos Garcia Sogo Sun, 10 Mar 2002 15:28:38 +0100 + +smokeping (1.3-1) unstable; urgency=low + + * New upstream release. + + -- Jose Carlos Garcia Sogo Sat, 9 Mar 2002 00:03:08 +0100 + +smokeping (1.1-2) unstable; urgency=low + + * Added README.Debian file explaining where to go after installing the + package to configure it, and the man page in which you can get info. + * Added a missed dependency on libdigest-md5-perl. (Closes: #136255) + + -- Jose Carlos Garcia Sogo Fri, 1 Mar 2002 19:52:04 +0100 + +smokeping (1.1-1) unstable; urgency=low + + * Initial Release. (Closes: #133824) + + -- Jose Carlos Garcia Sogo Wed, 13 Feb 2002 23:11:07 +0100 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..e5028ab --- /dev/null +++ b/debian/control @@ -0,0 +1,72 @@ +Source: smokeping +Section: net +Priority: optional +Maintainer: Gabriel Filion +Build-Depends: debhelper-compat (= 13) + , autoconf + , automake + , dh-apache2 + , apache2-dev + , rename +Build-Depends-Indep: librrds-perl + , groff-base + , libhtml-parser-perl + , libdigest-hmac-perl + , libwww-perl + , liburi-perl + , libcgi-fast-perl + , libconfig-grammar-perl + , libnet-openssh-perl + , libnet-snmp-perl + , libnet-ldap-perl + , libnet-dns-perl + , libnet-telnet-perl + , libio-pty-perl +Standards-Version: 4.6.1 +Homepage: https://smokeping.org/ +Vcs-Browser: https://salsa.debian.org/debian/smokeping +Vcs-Git: https://salsa.debian.org/debian/smokeping.git + +Package: smokeping +Architecture: all +Pre-Depends: ${misc:Pre-Depends} +Depends: ${perl:Depends}, ${misc:Depends} + , libwww-perl + , libsnmp-session-perl + , librrds-perl (>= 1.2) + , liburi-perl + , fping + , libcgi-fast-perl + , adduser + , libdigest-hmac-perl + , ucf + , libconfig-grammar-perl + , libjs-cropper + , libjs-scriptaculous + , libjs-prototype + , default-mta | mail-transport-agent +Recommends: apache2 | httpd-cgi + , libsocket6-perl + , dnsutils + , echoping + , ${misc:Recommends} +Suggests: curl + , libauthen-radius-perl + , libnet-ldap-perl + , libnet-dns-perl + , openssh-client + , libio-socket-ssl-perl + , libnet-telnet-perl + , libnet-openssh-perl + , libio-pty-perl + , libpath-tiny-perl + , libinfluxdb-lineprotocol-perl + , libobject-result-perl +Description: latency logging and graphing system + SmokePing consists of a daemon process which organizes the + latency measurements and a CGI which presents the graphs. + . + With SmokePing you can measure latency and packet loss in your network. + SmokePing uses RRDtool to maintain a longterm datastore and to draw pretty + graphs giving up to the minute information on the state of each + network connection. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..c737217 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,156 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: SmokePing +Source: https://github.com/oetiker/SmokePing +Comment: + The upstream source tarball is repacked to drop vendored javascript libraries. +Files-Excluded: + htdocs/js/cropper/* + htdocs/js/prototype.js + htdocs/js/scriptaculous/* + +Files: * +Copyright: 2001-2005 Tobias Oetiker +License: GPL-2+ + +Files: bin/tSmoke +Copyright: 2003 by Dan McGinn-Combs. All right reserved. +License: GPL-2+ + +Files: lib/Smokeping/Examples.pm lib/Smokeping/RRDtools.pm +Copyright: 2005 by Niko Tyni. +License: GPL-2+ + +Files: lib/Smokeping/matchers/Avgratio.pm lib/Smokeping/matchers/Median.pm lib/Smokeping/matchers/base.pm +Copyright: 2004 by OETIKER+PARTNER AG. All rights reserved. +License: GPL-2+ + +Files: lib/Smokeping/matchers/CheckLatency.pm lib/Smokeping/matchers/CheckLoss.pm +Copyright: 2006 Dylan C Vanderhoof, Semaphore Corporation +License: GPL-2+ + +Files: lib/BER.pm lib/SNMP_Session.pm +Copyright: 1995-2008, Simon Leinen. + . + This program is free software; you can redistribute it under the + "Artistic License 2.0" included in this distribution + (file "Artistic"). +License: Artistic-2.0 +Comment: These files are not used in the Debian version. The mentioned + "Artistic" license file is not present in the source repository. + +Files: debian/* +Copyright: Wed, 13 Feb 2002 23:11:07 +0100 Jose Carlos Garcia Sogo + 2018-2020 Gabriel Filion +License: GPL-2+ +Comment: The copyright mention was not updated throughout the years and there + are more authors and contributors that donated their time to maintaining those + files. + +License: GPL-2+ + On Debian systems, the full text of the GNU General Public + License version 2 can be found in the file + `/usr/share/common-licenses/GPL-2'. + +License: Artistic-2.0 + Copyright (c) 2000-2006, The Perl Foundation. + . + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble + . + This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. + . + You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. + Definitions + . + "Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package. + . + "Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. + . + "You" and "your" means any person who would like to copy, distribute, or modify the Package. + . + "Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. + . + "Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. + . + "Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. + . + "Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. + . + "Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. + . + "Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. + . + "Source" form means the source code, documentation source, and configuration files for the Package. + . + "Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. + Permission for Use and Modification Without Distribution + . + (1) You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. + Permissions for Redistribution of the Standard Version + . + (2) You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. + . + (3) You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. + Distribution of Modified Versions of the Package as Source + . + (4) You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: + . + (a) make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. + (b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. + (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under + (i) the Original License or + (ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. + Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source + . + (5) You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. + . + (6) You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. + Aggregating or Linking the Package + . + (7) You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. + . + (8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. + Items That are Not Considered Part of a Modified Version + . + (9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. + General Provisions + . + (10) Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. + . + (11) If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. + . + (12) This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. + . + (13) This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. + . + (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + . + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + . + http://www.opensource.org/licenses/bsd-license.php + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. diff --git a/debian/debhelper-build-stamp b/debian/debhelper-build-stamp new file mode 100644 index 0000000..9eefad6 --- /dev/null +++ b/debian/debhelper-build-stamp @@ -0,0 +1 @@ +smokeping diff --git a/debian/default-config b/debian/default-config new file mode 100644 index 0000000..79a3613 --- /dev/null +++ b/debian/default-config @@ -0,0 +1,7 @@ +@include /etc/smokeping/config.d/General +@include /etc/smokeping/config.d/Alerts +@include /etc/smokeping/config.d/Database +@include /etc/smokeping/config.d/Presentation +@include /etc/smokeping/config.d/Probes +@include /etc/smokeping/config.d/Slaves +@include /etc/smokeping/config.d/Targets diff --git a/debian/dirs b/debian/dirs new file mode 100644 index 0000000..01e7421 --- /dev/null +++ b/debian/dirs @@ -0,0 +1,9 @@ +etc/smokeping +etc/smokeping/config.d +usr/sbin +usr/share/smokeping/www/ +usr/share/smokeping/www/js +var/cache/smokeping/images +var/lib/smokeping +var/lib/smokeping/__cgi +usr/lib/cgi-bin diff --git a/debian/docs b/debian/docs new file mode 100644 index 0000000..b43bf86 --- /dev/null +++ b/debian/docs @@ -0,0 +1 @@ +README.md diff --git a/debian/examples b/debian/examples new file mode 100644 index 0000000..8c456e9 --- /dev/null +++ b/debian/examples @@ -0,0 +1,4 @@ +doc/examples/* +etc/smokeping_secrets.dist +debian/systemd +debian/lighttpd_45-smokeping.conf diff --git a/debian/files b/debian/files new file mode 100644 index 0000000..2c6ec56 --- /dev/null +++ b/debian/files @@ -0,0 +1,2 @@ +smokeping_2.9.0+linuxiarz.pl-1_all.deb net optional +smokeping_2.9.0+linuxiarz.pl-1_amd64.buildinfo net optional diff --git a/debian/init.d b/debian/init.d new file mode 100644 index 0000000..e2e4b0b --- /dev/null +++ b/debian/init.d @@ -0,0 +1,196 @@ +#!/bin/sh +# +# /etc/init.d/smokeping +# +### BEGIN INIT INFO +# Provides: smokeping +# Required-Start: $syslog $network $remote_fs +# Should-Start: sshd apache +# Required-Stop: $syslog $network $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start or stop the smokeping latency logging system daemon +# Description: SmokePing is a latency logging and graphing system +# that consists of a daemon process which organizes +# the latency measurements and a CGI which presents +# the graphs. This script is used to start or stop +# the daemon. +### END INIT INFO +# + +set -e + +# Source LSB init functions +. /lib/lsb/init-functions + +DAEMON=/usr/sbin/smokeping +NAME=smokeping +DESC="latency logger daemon" +CONFIG=/etc/smokeping/config +PIDFILE=/var/run/smokeping/$NAME.pid +DAEMON_USER=smokeping +DEFAULTS=/etc/default/smokeping +MODE=master +DAEMON_ARGS="--config=$CONFIG" + +# LC_ALL prevents resetting LC_NUMERIC which in turn interferes +# with Smokeping internal regexps matching floating point numbers +unset LC_ALL + +# Check whether the binary is still present: +test -f "$DAEMON" || exit 0 + +# source defaults for master vs. slave mode +if [ -f "$DEFAULTS" ] +then + . "$DEFAULTS" +fi + +check_slave() { + if [ "$MODE" != "slave" ] + then + return + fi + if [ -z "$SHARED_SECRET" ] + then + log_progress_msg "(missing \$SHARED_SECRET setting)" + log_end_msg 6 # program is not configured + exit 6 + fi + if [ ! -r "$SHARED_SECRET" ] + then + log_progress_msg "(invalid \$SHARED_SECRET setting)" + log_end_msg 2 # invalid or excess argument(s) + exit 2 + fi + if [ -z "$MASTER_URL" ] + then + log_progress_msg "(missing \$MASTER_URL setting)" + log_end_msg 6 # program is not configured + exit 6 + fi + DAEMON_ARGS="$DAEMON_ARGS --master-url $MASTER_URL --shared-secret $SHARED_SECRET" + if [ -n "$SLAVE_NAME" ] + then + DAEMON_ARGS="$DAEMON_ARGS --slave-name $SLAVE_NAME" + fi + DAEMON_ARGS="$DAEMON_ARGS --cache-dir /var/lib/smokeping" + DAEMON_ARGS="$DAEMON_ARGS --pid-dir /var/run/smokeping" +} + +check_config () { + echo "Checking smokeping configuration file syntax..." + # Check whether the configuration file is available + if [ ! -r "$CONFIG" ] && [ "$MODE" = "master" ] + then + log_progress_msg "($CONFIG does not exist)" + log_end_msg 6 # program is not configured + exit 6 + fi + if [ ! -d /var/run/smokeping ]; then + mkdir /var/run/smokeping + chown ${DAEMON_USER}.root /var/run/smokeping + chmod 0755 /var/run/smokeping + fi + ${DAEMON} --config=${CONFIG} --check || exit 6 +} + +case "$1" in + start) + check_config + log_daemon_msg "Starting $DESC" $NAME + check_slave + set +e + pidofproc -p "$PIDFILE" "$DAEMON" > /dev/null + STATUS=$? + set -e + if [ "$STATUS" = 0 ] + then + log_progress_msg "already running" + log_end_msg $STATUS + exit $STATUS + fi + + set +e + start-stop-daemon --start --quiet --exec $DAEMON --oknodo \ + --chuid $DAEMON_USER --pidfile $PIDFILE \ + -- $DAEMON_ARGS \ + | logger -p daemon.notice -t $NAME + STATUS=$? + set -e + + log_end_msg $STATUS + exit $STATUS + ;; + + + stop) + log_daemon_msg "Shutting down $DESC" $NAME + + set +e + start-stop-daemon --oknodo --stop --retry 3 --quiet --pidfile $PIDFILE --user $DAEMON_USER --signal 15 + STATUS=$? + set -e + + log_end_msg $STATUS + exit $STATUS + ;; + + + restart) + # Restart service (if running) or start service + $0 stop + $0 start + ;; + + + reload|force-reload) + check_config + log_action_begin_msg "Reloading $DESC configuration" + set +e + $DAEMON --reload $DAEMON_ARGS | logger -p daemon.notice -t smokeping + STATUS=$? + set -e + + if [ "$STATUS" = 0 ] + then + log_action_end_msg 0 "If the CGI has problems reloading, see README.Debian." + else + log_action_end_msg $STATUS + fi + exit $STATUS + ;; + + check) + check_config + ;; + + status) + log_daemon_msg "Checking $DESC status" $NAME + # Use pidofproc to check the status of the service, + # pidofproc returns the exit status code of 0 when it the process is + # running. + + # LSB defined exit status codes for status: + # 0 program is running or service is OK + # 1 program is dead and /var/run pid file exists + # 2 program is dead and /var/lock lock file exists + # 3 program is not running + # 4 program or service status is unknown + # 5-199 reserved (5-99 LSB, 100-149 distribution, 150-199 applications) + + set +e + pidofproc -p "$PIDFILE" "$DAEMON" > /dev/null + STATUS=$? + log_progress_msg "(status $STATUS)" + log_end_msg 0 + set -e + exit $STATUS + ;; + + + *) + echo "Usage: $0 {start|stop|status|restart|force-reload|reload}" + exit 1 + ;; +esac diff --git a/debian/lighttpd_45-smokeping.conf b/debian/lighttpd_45-smokeping.conf new file mode 100644 index 0000000..a124b79 --- /dev/null +++ b/debian/lighttpd_45-smokeping.conf @@ -0,0 +1,22 @@ +# /etc/lighttpd/conf-available/45-smokeping.conf +# Configuration for smokeping CGI program + +server.modules += ( "mod_fastcgi", "mod_rewrite" ) + +$HTTP["url"] =~ "^/smokeping/" { + server.document-root = "/usr/share/" + url.rewrite-once = ( + "^/smokeping/($|\?)" => "/smokeping/smokeping.cgi?${qsa}", + "^/smokeping/(.*)" => "/smokeping/www/$1", + ) + fastcgi.server = ( + "/smokeping/smokeping.cgi" => ( + "localhost" => ( + "bin-path" => "/usr/lib/cgi-bin/smokeping.cgi", + "socket" => "/run/lighttpd/smokeping-fcgi.socket", + ) + ), + ) +} + +# vim: set ts=4 sw=4 et: diff --git a/debian/patches/asset_path_changes b/debian/patches/asset_path_changes new file mode 100644 index 0000000..012a9b0 --- /dev/null +++ b/debian/patches/asset_path_changes @@ -0,0 +1,39 @@ +Description: fix the paths to javascript files + We're using javascript libraries from debian packages instead of the ones + vendored by upstream. Because of this some paths to libraries might differ a + bit. + Some folks are still using URLs of the form /cgi-bin/smokeping.cgi (which was + used up until buster). In order for css and js to be able to load with this + URL, we need to use our top-level alias to retrieve them. +Author: Antoine BeauprĂ© +Forwarded: not-needed +Last-Update: 2019-08-25 + +--- a/etc/basepage.html.dist ++++ b/etc/basepage.html.dist +@@ -4,8 +4,8 @@ + + + SmokePing Latency Page for <##title##> +- +- ++ ++ + + + +@@ -47,10 +47,10 @@ +

Maintained by <##owner##>

+ + +- +- +- +- ++ ++ ++ ++ + + + diff --git a/debian/patches/dont_build_third_party_js.patch b/debian/patches/dont_build_third_party_js.patch new file mode 100644 index 0000000..37f11d9 --- /dev/null +++ b/debian/patches/dont_build_third_party_js.patch @@ -0,0 +1,32 @@ +Description: Don't build js libraries from third parties + These 3rd party libraries are getting excluded from the source through + repacking since we instead include those from the debian packages that already + exists for them. The build shouldn't try and process the non-existent files. +Author: Gabriel Filion +Forwarded: not-needed +Origin: (upstream|backport|vendor|other), (|commit:) + +--- smokeping-2.8.2+ds.orig/htdocs/Makefile.am ++++ smokeping-2.8.2+ds/htdocs/Makefile.am +@@ -16,21 +16,6 @@ + # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + + JS = js/smokeping.js \ +- js/prototype.js \ +- js/cropper/cropper.js \ +- js/cropper/licence.txt \ +- js/cropper/marqueeVert.gif \ +- js/cropper/cropper.uncompressed.js \ +- js/cropper/cropper.css \ +- js/cropper/marqueeHoriz.gif \ +- js/scriptaculous/controls.js \ +- js/scriptaculous/slider.js \ +- js/scriptaculous/sound.js \ +- js/scriptaculous/effects.js \ +- js/scriptaculous/unittest.js \ +- js/scriptaculous/builder.js \ +- js/scriptaculous/scriptaculous.js \ +- js/scriptaculous/dragdrop.js \ + css/smokeping-print.css \ + css/smokeping-screen.css + diff --git a/debian/patches/fix-conf-paths b/debian/patches/fix-conf-paths new file mode 100644 index 0000000..c1e9814 --- /dev/null +++ b/debian/patches/fix-conf-paths @@ -0,0 +1,54 @@ +Description: use Debian paths instead of silly ones +Forwarded: not-needed + +Index: b/etc/config.dist.in +=================================================================== +--- a/etc/config.dist.in 2018-05-12 17:07:16.029079629 -0400 ++++ b/etc/config.dist.in 2018-05-12 17:08:53.349752138 -0400 +@@ -3,17 +3,17 @@ + owner = Peter Random + contact = some@address.nowhere + mailhost = my.mail.host +-sendmail = @SENDMAIL@ ++sendmail = /usr/sbin/sendmail + # NOTE: do not put the Image Cache below cgi-bin + # since all files under cgi-bin will be executed ... this is not + # good for images. +-imgcache = @prefix@/cache +-imgurl = cache +-datadir = @prefix@/data +-piddir = @prefix@/var ++imgcache = /var/cache/smokeping/images ++imgurl = ../smokeping/images ++datadir = /var/lib/smokeping ++piddir = /run/smokeping + cgiurl = http://some.url/smokeping.cgi +-smokemail = @prefix@/etc/smokemail.dist +-tmail = @prefix@/etc/tmail.dist ++smokemail = /etc/smokeping/smokemail ++tmail = /etc/smokeping/tmail + # specify this to get syslog logging + syslogfacility = local0 + # each probe is now run in its own process +@@ -47,7 +47,7 @@ AVERAGE 0.5 144 720 + + *** Presentation *** + +-template = @prefix@/etc/basepage.html.dist ++template = /etc/smokeping/basepage.html + htmltitle = yes + graphborders = no + +@@ -107,10 +107,10 @@ unison_tolerance = 2 + + + FPing + +-binary = /usr/sbin/fping ++binary = /usr/bin/fping + + *** Slaves *** +-secrets=@prefix@/etc/smokeping_secrets.dist ++secrets=/etc/smokeping/smokeping_secrets + +boomer + display_name=boomer + color=0000ff diff --git a/debian/patches/fix-paths-inside-executables b/debian/patches/fix-paths-inside-executables new file mode 100644 index 0000000..e28ae79 --- /dev/null +++ b/debian/patches/fix-paths-inside-executables @@ -0,0 +1,173 @@ +Description: hardcode the path to the config file in CGI +Author: Antoine Beaupré +Forwarded: not-needed +Last-Update: 2019-02-16 + +Index: b/bin/smokeping_cgi +=================================================================== +--- a/bin/smokeping_cgi 2018-05-12 17:02:02.090910241 -0400 ++++ b/bin/smokeping_cgi 2018-05-12 17:05:36.224389954 -0400 +@@ -4,9 +4,7 @@ + use strict; + use warnings; + +-use FindBin; + use lib (split /:/, q{}); # PERL5LIB +-use lib "$FindBin::RealBin/../lib";use lib "$FindBin::RealBin/../thirdparty/lib/perl5"; # LIBDIR + + # don't bother with zombies + $SIG{CHLD} = 'IGNORE'; +@@ -17,7 +15,7 @@ use Smokeping; + + use CGI::Fast; + +-my $cfg = (shift @ARGV) || "$FindBin::Bin/../etc/config"; ++my $cfg = (shift @ARGV) || "/etc/smokeping/config"; + + + while (my $q = new CGI::Fast) { +Index: b/bin/smokeping +=================================================================== +--- a/bin/smokeping 2018-05-12 17:04:04.175753876 -0400 ++++ b/bin/smokeping 2018-05-12 17:05:08.868200917 -0400 +@@ -4,13 +4,11 @@ + use strict; + use warnings; + +-use FindBin; + use lib (split /:/, q{}); # PERL5LIB +-use lib "$FindBin::RealBin/../lib";use lib "$FindBin::RealBin/../thirdparty/lib/perl5"; # LIBDIR + + use Smokeping; +- +-Smokeping::main("$FindBin::RealBin/../etc/config"); ++ ++Smokeping::main("/etc/smokeping/config"); + + =head1 NAME + +@@ -128,25 +126,6 @@ L. + + Please refer to L for detailed setup instructions. + +-=head1 SETUP +- +-When installing SmokePing, this file has to be adjusted to fit your +-local system. Three paths have to be entered. +- +-One pointing to your B installation +- +- use lib qw(/usr/pack/rrdtool-1.0.33-to/lib/perl); +- +-One pointing to the place where you have installed the SmokePing libraries +- +- use lib qw(/home/oetiker/public_html/smokeping/lib); +- +-The third path is the argument to the Smokeping::main command. It points to +-the SmokePing configuration file. +- +- use Smokeping; +- Smokeping::main("/home/oetiker/.smokeping/config"); +- + =head1 SEE ALSO + + L, L, L, +Index: b/bin/tSmoke +=================================================================== +--- a/bin/tSmoke 2018-05-12 17:04:04.175753876 -0400 ++++ b/bin/tSmoke 2018-05-12 17:06:18.924685024 -0400 +@@ -53,7 +53,6 @@ use warnings; + # Point the lib variables to your implementation + + use lib (split /:/, q{}); # PERL5LIB +-use FindBin;use lib "$FindBin::RealBin/../lib";use lib "$FindBin::RealBin/../thirdparty/lib/perl5"; # LIBDIR + + + use Smokeping; +@@ -63,7 +62,7 @@ use Pod::Usage; + use RRDs; + + # Point to your Smokeping config file +-my $cfgfile = (shift @ARGV) || "$FindBin::Bin/../etc/config"; ++my $cfgfile = (shift @ARGV) || "/etc/smokeping/config"; + + # global variables + my $cfg; +@@ -498,39 +497,9 @@ past week and past month including an overview. + Typical crontab used to invoke this are + + # Quick morning alert to see what's down +- 0 6 * * * /usr/local/smokeping/bin/tSmoke.pl --q --to=mobilephone@att.net.invalid --morning ++ 0 6 * * * /usr/sbin/tSmoke --q --to=mobilephone@att.net.invalid --morning + # Weekly report on the percent availability of network systems with no detail +- 0 8 * * * /usr/local/smokeping/bin/tSmoke.pl --q --to=mailbox@company.com.invalid --weekly --detail=0 +- +-=head1 SETUP +- +-When installing tSmoke, some variables must be adjusted to fit your local system. +- +-We need to use the following B: +- +-=over +- +-=item Smokeping +- +-=item RRDTool Perl bindings +- +-=item Getopt::Long +- +-=back +- +-Set up your libraries: +- +- use lib "/usr/local/smokeping/lib"; +- use lib "/usr/local/rrdtool-1.0.39/lib/perl"; +- +-Point to your Smokeping B file +- +- my $cfgfile = "/usr/local/smokeping/etc/config"; +- +-Modify the Smokeping config file to include a path for tmail in the +-General section: +- +- tmail = /usr/local/smokeping/etc/tmail ++ 0 8 * * * /usr/sbin/tSmoke --q --to=mailbox@company.com.invalid --weekly --detail=0 + + =head1 SEE ALSO + +diff --git a/bin/smokeinfo b/bin/smokeinfo +index 7c56c0f..83a346e 100755 +--- a/bin/smokeinfo ++++ b/bin/smokeinfo +@@ -3,7 +3,6 @@ use strict; + use warnings; + + use lib (split /:/, q{}); # PERL5LIB +-use FindBin;use lib "$FindBin::RealBin/../lib";use lib "$FindBin::RealBin/../thirdparty/lib/perl5"; # LIBDIR + + use Smokeping::Info; + use Getopt::Long 2.25 qw(:config no_ignore_case); +@@ -82,19 +81,19 @@ they work on the same syntax. + + Get all data all nodes + +- smokeinfo etc/config ++ smokeinfo /etc/smokeping/config + + Only show nodes directly under /Customers + +- smokeinfo --filter=/Customers/ etc/config ++ smokeinfo --filter=/Customers/ /etc/smokeping/config + + Show all nodes under /Customers + +- smokeinfo --mode=recursive --filter=/Customers/ etc/config ++ smokeinfo --mode=recursive --filter=/Customers/ /etc/smokeping/config + + Show all nodes with '_wlan_' in the name + +- smokeinfo --mode=regexp --filter=_wlan_ etc/config ++ smokeinfo --mode=regexp --filter=_wlan_ /etc/smokeping/config + + =head1 SEE ALSO + diff --git a/debian/patches/fix-perl-lib b/debian/patches/fix-perl-lib new file mode 100644 index 0000000..e47aa90 --- /dev/null +++ b/debian/patches/fix-perl-lib @@ -0,0 +1,14 @@ +Description: fix path for perl libs + Debian packages drop libraries in a different place than upstream +Forwarded: not-needed +Last-Update: 2019-02-10 + +--- smokeping-2.6.5.orig/lib/Makefile.am ++++ smokeping-2.6.5/lib/Makefile.am +@@ -31,5 +31,5 @@ MATCH := $(wildcard Smokeping/matchers/* + + EXTRA_DIST = $(PM) $(SP) $(SORT) $(PROBE) $(MATCH) + +-perllibdir = $(prefix)/lib ++perllibdir = $(prefix)/share/perl5 + nobase_perllib_DATA = $(EXTRA_DIST) diff --git a/debian/patches/fix_curl_probe.patch b/debian/patches/fix_curl_probe.patch new file mode 100644 index 0000000..e419c36 --- /dev/null +++ b/debian/patches/fix_curl_probe.patch @@ -0,0 +1,22 @@ +Description: Curl's help text changed format + Fix issue caused by curl 7.74 and later shortening default help +Author: Mat Ellis +Origin: upstream +Bug-Debian: https://bugs.debian.org/986068 +Forwarded: https://github.com/oetiker/SmokePing/issues/266 +Applied-Upstream: https://github.com/oetiker/SmokePing/commit/3a290ee5e603782c5ba3bc4ec7294c8971cc88c4 + +--- +Note: this was merged upstream after release of 2.8.2 + +--- smokeping-2.8.2.orig/lib/Smokeping/probes/Curl.pm ++++ smokeping-2.8.2/lib/Smokeping/probes/Curl.pm +@@ -220,7 +220,7 @@ sub test_usage { + + my $arghashref = $self->features; + my %arghash = %$arghashref; +- my $curl_man = `$bin --help`; ++ my $curl_man = `$bin --help all`; + + for my $feature (keys %arghash) { + next if $curl_man =~ /\Q$arghash{$feature}/; diff --git a/debian/patches/proper-sample-conf b/debian/patches/proper-sample-conf new file mode 100644 index 0000000..9a60b16 --- /dev/null +++ b/debian/patches/proper-sample-conf @@ -0,0 +1,72 @@ +Description: setup a proper sample configuration + This disables slaves and setups targets that are sure to work (no + slaves, localhost). It also sets up utf8 +Author: Antoine Beaupré +Forwarded: not-needed +Last-Update: 2019-02-10 + +Index: b/etc/config.dist.in +=================================================================== +--- a/etc/config.dist.in 2018-05-12 17:09:30.386008068 -0400 ++++ b/etc/config.dist.in 2018-05-12 17:13:09.471522001 -0400 +@@ -48,6 +48,7 @@ AVERAGE 0.5 144 720 + *** Presentation *** + + template = /etc/smokeping/basepage.html ++charset = utf-8 + htmltitle = yes + graphborders = no + +@@ -111,13 +112,13 @@ binary = /usr/bin/fping + + *** Slaves *** + secrets=/etc/smokeping/smokeping_secrets +-+boomer +-display_name=boomer +-color=0000ff +- +-+slave2 +-display_name=another +-color=00ff00 ++#+boomer ++#display_name=boomer ++#color=0000ff ++ ++#+slave2 ++#display_name=another ++#color=00ff00 + + *** Targets *** + +@@ -128,21 +129,16 @@ title = Network Latency Grapher + remark = Welcome to the SmokePing website of xxx Company. \ + Here you will learn all about the latency of our network. + +-+ Test +-menu= Targets +-#parents = owner:/Test/James location:/ +++ Local + +-++ James ++menu = Local ++title = Local Network ++#parents = owner:/Test/James location:/ + +-menu = James +-title =James +-alerts = someloss +-slaves = boomer slave2 +-host = james.address +- +-++ MultiHost +- +-menu = Multihost +-title = James and James as seen from Boomer +-host = /Test/James /Test/James~boomer ++++ LocalMachine + ++menu = Local Machine ++title = This host ++host = localhost ++#alerts = someloss ++#slaves = boomer slave2 diff --git a/debian/patches/series b/debian/patches/series new file mode 100644 index 0000000..a3f2e70 --- /dev/null +++ b/debian/patches/series @@ -0,0 +1,7 @@ +asset_path_changes +fix-perl-lib +fix-paths-inside-executables +fix-conf-paths +proper-sample-conf +fix_curl_probe.patch +dont_build_third_party_js.patch diff --git a/debian/postinst b/debian/postinst new file mode 100644 index 0000000..e15c8ea --- /dev/null +++ b/debian/postinst @@ -0,0 +1,69 @@ +#! /bin/sh +# postinst script for smokeping +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package +# +# 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'. + +setup_permissions() { + # Smokeping.cgi is run as user www-data, so we need it to be able + # to write in /var/cache/smokeping/images and in /var/lib/smokeping/__cgi + + chown smokeping:smokeping /var/lib/smokeping + chown www-data /var/cache/smokeping/images + chown smokeping:www-data /var/lib/smokeping/__cgi + chmod 2775 /var/lib/smokeping/__cgi + chown smokeping:www-data /etc/smokeping/smokeping_secrets + chmod 640 /etc/smokeping/smokeping_secrets +} + + +# OK, let's go +case "$1" in + configure|reconfigure) + + getent passwd smokeping > /dev/null || \ + adduser --system --group --home /var/lib/smokeping --no-create-home --gecos "SmokePing daemon" smokeping + setup_permissions + if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then + . /usr/share/apache2/apache2-maintscript-helper + apache2_invoke enmod cgi + fi + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + + diff --git a/debian/postrm b/debian/postrm new file mode 100644 index 0000000..ded1902 --- /dev/null +++ b/debian/postrm @@ -0,0 +1,61 @@ +#! /bin/sh +# postrm script for smoke +# +# 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 http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + + purge) + + rm -rf /var/run/smokeping + rm -rf /var/cache/smokeping + rm -rf /var/lib/smokeping + + for f in basepage.html smokemail tmail config + do + file=/etc/smokeping/$f + if command -v ucf >/dev/null 2>&1; then + ucf --purge $file || true + fi + if command -v ucfr >/dev/null 2>&1; then + ucfr --purge smokeping $file || true + fi + rm -f $file $file.ucf-old $file.ucf-new $file.ucf-dist + done + for f in Alerts Database General pathnames Presentation Probes Slaves Targets + do + file=/etc/smokeping/config.d/$f + if command -v ucf >/dev/null 2>&1; then + ucf --purge $file || true + fi + if command -v ucfr >/dev/null 2>&1; then + ucfr --purge smokeping $file || true + fi + rm -f $file $file.ucf-old $file.ucf-new $file.ucf-dist + done + + [ ! -d /etc/smokeping/config.d ] || rmdir --ignore-fail-on-non-empty --parents /etc/smokeping/config.d + +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/preinst b/debian/preinst new file mode 100644 index 0000000..283ed81 --- /dev/null +++ b/debian/preinst @@ -0,0 +1,49 @@ +#!/bin/sh +# preinst script for #PACKAGE# +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + IFS=":" + ucfq -w /etc/smokeping/basepage.html \ + /etc/smokeping/smokemail \ + /etc/smokeping/config.d/Alerts \ + /etc/smokeping/config.d/Presentation \ + /etc/smokeping/config.d/pathnames \ + /etc/smokeping/config.d/Targets \ + /etc/smokeping/config.d/General \ + /etc/smokeping/config.d/Slaves \ + | while read file package exists changed; do + if [ "$package" = "smokeping" -a "$changed" = "No" ]; then + rm -f "$file" + fi + done + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..7760787 --- /dev/null +++ b/debian/rules @@ -0,0 +1,63 @@ +#!/usr/bin/make -f +# -*- makefile -*- +# Sample debian/rules that uses debhelper. +# +# This file was originally written by Joey Hess and Craig Small. +# As a special exception, when this file is copied by dh-make into a +# dh-make output file, you may use that output file without restriction. +# This special exception was added by Craig Small in version 0.37 of dh-make. +# +# Modified to make a template file for a multi-binary package with separated +# build-arch and build-indep targets by Bill Allombert 2001 + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# This has to be exported to make some magic below work. +export DH_OPTIONS + +# smokeping doesn't like building with your locale +unexport LC_ALL + +TMP=$(CURDIR)/debian/smokeping + +SUBDIRS="doc etc htdocs lib bin" + +override_dh_auto_configure: + dh_auto_configure -- --prefix=/usr --with-htdocs-dir=/usr/share/smokeping/www --bindir=/usr/sbin --sysconfdir=/usr/share/doc/smokeping/ --libdir=/usr/share/perl5 + +override_dh_auto_build: + dh_auto_build -- SUBDIRS=$(SUBDIRS) + +override_dh_auto_test: + dh_auto_test -- SUBDIRS=$(SUBDIRS) + +override_dh_auto_install: + dh_auto_install -- SUBDIRS=$(SUBDIRS) + + # Move Perl modules to correct location + mkdir -p $(TMP)/usr/share/perl5 + if [ -d $(TMP)/usr/lib/Smokeping ] || [ -f $(TMP)/usr/lib/Smokeping.pm ]; then \ + mv -v $(TMP)/usr/lib/Smokeping* $(TMP)/usr/share/perl5/; \ + fi + + install -v -m 644 $(CURDIR)/htdocs/js/smokeping.js $(TMP)/usr/share/smokeping/www/js + + mkdir -p $(TMP)/etc/smokeping/config.d + mkdir -p $(TMP)/usr/lib/cgi-bin + + mv -v $(TMP)/usr/share/doc/smokeping/*.dist $(TMP)/etc/smokeping/ + rename -v 's/\.dist$$//' $(TMP)/etc/smokeping/*.dist + rm -vf $(TMP)/usr/share/smokeping/smokeping.fcgi.dist + rm -vf $(TMP)/usr/share/perl5/BER.pm $(TMP)/usr/share/perl5/SNMP_* + mv -v $(TMP)/usr/sbin/smokeping_cgi $(TMP)/usr/share/smokeping/smokeping.cgi + install -v -m 755 $(CURDIR)/debian/smokeping.cgi $(TMP)/usr/lib/cgi-bin/smokeping.cgi + $(CURDIR)/debian/split_config $(TMP) + install -v -m 644 $(CURDIR)/debian/default-config $(TMP)/etc/smokeping/config + +override_dh_link: + find $(TMP)/usr/share/smokeping/www/js/ -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} + + dh_link + +%: + dh $@ --with apache2 diff --git a/debian/smokeping.apache2 b/debian/smokeping.apache2 new file mode 100644 index 0000000..02fac13 --- /dev/null +++ b/debian/smokeping.apache2 @@ -0,0 +1 @@ +conf debian/smokeping.conf apache2 diff --git a/debian/smokeping.cgi b/debian/smokeping.cgi new file mode 100644 index 0000000..b13ae89 --- /dev/null +++ b/debian/smokeping.cgi @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /usr/share/smokeping/smokeping.cgi /etc/smokeping/config diff --git a/debian/smokeping.conf b/debian/smokeping.conf new file mode 100644 index 0000000..c712682 --- /dev/null +++ b/debian/smokeping.conf @@ -0,0 +1,9 @@ +ScriptAlias /smokeping/smokeping.cgi /usr/lib/cgi-bin/smokeping.cgi +Alias /smokeping /usr/share/smokeping/www + + + Options FollowSymLinks + Require all granted + DirectoryIndex smokeping.cgi + + diff --git a/debian/smokeping.debhelper.log b/debian/smokeping.debhelper.log new file mode 100644 index 0000000..f74424e --- /dev/null +++ b/debian/smokeping.debhelper.log @@ -0,0 +1 @@ +dh_link diff --git a/debian/smokeping.default b/debian/smokeping.default new file mode 100644 index 0000000..b027b0c --- /dev/null +++ b/debian/smokeping.default @@ -0,0 +1,16 @@ +# /etc/default/smokeping: Startup configuration for smokeping(1) +# +# select master or slave mode +MODE=master +# in master mode, the rest of the configuration is in +# /etc/smokeping/config +# +# in slave mode, uncomment and set the following variables too +# see smokeping(1) +# +# Mandatory configuration +# MASTER_URL=http://somewhere/cgi-bin/smokeping.cgi +# SHARED_SECRET=/etc/smokeping/slavesecrets.conf +# +# Optional configuration +# SLAVE_NAME=myslave diff --git a/debian/smokeping.dirs b/debian/smokeping.dirs new file mode 100644 index 0000000..e69de29 diff --git a/debian/smokeping.links b/debian/smokeping.links new file mode 100644 index 0000000..d8c1610 --- /dev/null +++ b/debian/smokeping.links @@ -0,0 +1,4 @@ +/var/cache/smokeping/images /usr/share/smokeping/www/images +/usr/share/javascript/cropper /usr/share/smokeping/www/js/cropper +/usr/share/javascript/prototype /usr/share/smokeping/www/js/prototype +/usr/share/javascript/scriptaculous /usr/share/smokeping/www/js/scriptaculous diff --git a/debian/smokeping.maintscript b/debian/smokeping.maintscript new file mode 100644 index 0000000..cf4a6dd --- /dev/null +++ b/debian/smokeping.maintscript @@ -0,0 +1 @@ +mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf diff --git a/debian/smokeping.postinst.debhelper b/debian/smokeping.postinst.debhelper new file mode 100644 index 0000000..d7dad2f --- /dev/null +++ b/debian/smokeping.postinst.debhelper @@ -0,0 +1,13 @@ +# Automatically added by dh_apache2/UNDECLARED +if true; then + if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then + . /usr/share/apache2/apache2-maintscript-helper + for conf in smokeping ; do + apache2_invoke enconf $conf || exit 1 + done + fi +fi +# End automatically added section +# Automatically added by dh_installdeb/13.24.2 +dpkg-maintscript-helper mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf -- "$@" +# End automatically added section diff --git a/debian/smokeping.postrm.debhelper b/debian/smokeping.postrm.debhelper new file mode 100644 index 0000000..aaad906 --- /dev/null +++ b/debian/smokeping.postrm.debhelper @@ -0,0 +1,28 @@ +# Automatically added by dh_installdeb/13.24.2 +dpkg-maintscript-helper mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf -- "$@" +# End automatically added section +# Automatically added by dh_installsystemd/13.24.2 +if [ "$1" = remove ] && [ -d /run/systemd/system ] ; then + systemctl --system daemon-reload >/dev/null || true +fi +# End automatically added section +# Automatically added by dh_installsystemd/13.24.2 +if [ "$1" = "purge" ]; then + if [ -x "/usr/bin/deb-systemd-helper" ]; then + deb-systemd-helper purge 'smokeping.service' >/dev/null || true + fi +fi +# End automatically added section +# Automatically added by dh_apache2/UNDECLARED +if [ "$1" = "purge" ] ; then + if true; then + if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then + . /usr/share/apache2/apache2-maintscript-helper + + for conf in smokeping ; do + apache2_invoke disconf $conf || exit 1 + done + fi + fi +fi +# End automatically added section diff --git a/debian/smokeping.preinst.debhelper b/debian/smokeping.preinst.debhelper new file mode 100644 index 0000000..aaecff9 --- /dev/null +++ b/debian/smokeping.preinst.debhelper @@ -0,0 +1,3 @@ +# Automatically added by dh_installdeb/13.24.2 +dpkg-maintscript-helper mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf -- "$@" +# End automatically added section diff --git a/debian/smokeping.prerm.debhelper b/debian/smokeping.prerm.debhelper new file mode 100644 index 0000000..4821aee --- /dev/null +++ b/debian/smokeping.prerm.debhelper @@ -0,0 +1,16 @@ +# Automatically added by dh_installdeb/13.24.2 +dpkg-maintscript-helper mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf -- "$@" +# End automatically added section +# Automatically added by dh_apache2/UNDECLARED +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ] ; then + if true; then + if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then + . /usr/share/apache2/apache2-maintscript-helper + + for conf in smokeping ; do + apache2_invoke disconf $conf || exit 1 + done + fi + fi +fi +# End automatically added section diff --git a/debian/smokeping.service b/debian/smokeping.service new file mode 100644 index 0000000..93a87e5 --- /dev/null +++ b/debian/smokeping.service @@ -0,0 +1,24 @@ +[Unit] +Description=Latency Logging and Graphing System +Documentation=man:smokeping(1) file:/usr/share/doc/smokeping/examples/systemd/slave_mode.conf +After=network.target + +[Service] +# It would in theory be simpler to run smokeping with the --nodaemon option and +# Type=simple, but smokeping does not work properly when in "slave" mode with +# --nodaemon set. +Type=forking +RuntimeDirectory=smokeping +PIDFile=/run/smokeping/smokeping.pid +User=smokeping +Group=smokeping + +# If you need to run smokeping in slave/master mode, see the example unit +# override in /usr/share/doc/smokeping/examples/systemd/slave_mode.conf +#ExecStart=/usr/sbin/smokeping --pid-dir=/run/smokeping +ExecStart=/usr/sbin/smokeping --config=/etc/smokeping/config --nodaemon + +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/debian/smokeping.substvars b/debian/smokeping.substvars new file mode 100644 index 0000000..a01d27f --- /dev/null +++ b/debian/smokeping.substvars @@ -0,0 +1,4 @@ +misc:Recommends=apache2 ( >= 2.4.6-4~ ) | apache2 | httpd +misc:Pre-Depends=init-system-helpers (>= 1.54~) +perl:Depends=perl:any +misc:Depends= diff --git a/debian/smokeping/DEBIAN/conffiles b/debian/smokeping/DEBIAN/conffiles new file mode 100644 index 0000000..e52c596 --- /dev/null +++ b/debian/smokeping/DEBIAN/conffiles @@ -0,0 +1,16 @@ +/etc/apache2/conf-available/smokeping.conf +/etc/default/smokeping +/etc/init.d/smokeping +/etc/smokeping/basepage.html +/etc/smokeping/config +/etc/smokeping/config.d/Alerts +/etc/smokeping/config.d/Database +/etc/smokeping/config.d/General +/etc/smokeping/config.d/Presentation +/etc/smokeping/config.d/Probes +/etc/smokeping/config.d/Slaves +/etc/smokeping/config.d/Targets +/etc/smokeping/config.d/pathnames +/etc/smokeping/smokemail +/etc/smokeping/smokeping_secrets +/etc/smokeping/tmail diff --git a/debian/smokeping/DEBIAN/control b/debian/smokeping/DEBIAN/control new file mode 100644 index 0000000..1d56c2b --- /dev/null +++ b/debian/smokeping/DEBIAN/control @@ -0,0 +1,20 @@ +Package: smokeping +Version: 2.9.0+linuxiarz.pl-1 +Architecture: all +Maintainer: Gabriel Filion +Installed-Size: 1328 +Pre-Depends: init-system-helpers (>= 1.54~) +Depends: perl:any, libwww-perl, libsnmp-session-perl, librrds-perl (>= 1.2), liburi-perl, fping, libcgi-fast-perl, adduser, libdigest-hmac-perl, ucf, libconfig-grammar-perl, libjs-cropper, libjs-scriptaculous, libjs-prototype, default-mta | mail-transport-agent +Recommends: apache2 | httpd-cgi, libsocket6-perl, dnsutils, echoping, apache2 (>= 2.4.6-4~) | apache2 | httpd +Suggests: curl, libauthen-radius-perl, libnet-ldap-perl, libnet-dns-perl, openssh-client, libio-socket-ssl-perl, libnet-telnet-perl, libnet-openssh-perl, libio-pty-perl, libpath-tiny-perl, libinfluxdb-lineprotocol-perl, libobject-result-perl +Section: net +Priority: optional +Homepage: https://smokeping.org/ +Description: latency logging and graphing system + SmokePing consists of a daemon process which organizes the + latency measurements and a CGI which presents the graphs. + . + With SmokePing you can measure latency and packet loss in your network. + SmokePing uses RRDtool to maintain a longterm datastore and to draw pretty + graphs giving up to the minute information on the state of each + network connection. diff --git a/debian/smokeping/DEBIAN/md5sums b/debian/smokeping/DEBIAN/md5sums new file mode 100644 index 0000000..bd97ade --- /dev/null +++ b/debian/smokeping/DEBIAN/md5sums @@ -0,0 +1,171 @@ +1134871f6bbdb7d37b13eb019bb9e380 usr/lib/BER.pm +6efd1989ec82c270e2a65466472f9038 usr/lib/SNMP_Session.pm +c6ea0ad89e3104d3f443f5a15463e46c usr/lib/SNMP_util.pm +ba82c5349a68b5dd4bc67d054e207c09 usr/lib/cgi-bin/smokeping.cgi +33a46ca6af4d1b48ed8abdeccc32b1d1 usr/lib/systemd/system/smokeping.service +c83cd7df37e8093e5fe03191540ee58d usr/sbin/smokeinfo +e70d4d37db446134c798b0e698d367b3 usr/sbin/smokeping +f4bbe4fcd858c3ada743a04239df658f usr/sbin/tSmoke +655a4ab4ff4e423d97918f149998253a usr/share/doc/smokeping/README.Debian +e1cbcec71e50595b705ff09f50d99bf2 usr/share/doc/smokeping/README.md +6b898ee5ee17e1ab773b1508da85c423 usr/share/doc/smokeping/TODO.Debian +7e3793102739694e106f07d303eba7eb usr/share/doc/smokeping/changelog.Debian.gz +fdb39f1efd5996a10a8a6c94ec679160 usr/share/doc/smokeping/changelog.gz +e65a7f6581c141086e888c9c87871b08 usr/share/doc/smokeping/copyright +a794267c6c448b40f0caeb33e6577287 usr/share/doc/smokeping/examples/config.echoping +b14664ebe2f9bf358f0de46cd8e2c7ca usr/share/doc/smokeping/examples/config.fping-instances +02acc4fbd7dd1106eae421e6fead04be usr/share/doc/smokeping/examples/config.multiple-probes +912cff778776afcf920f188b1fc80e88 usr/share/doc/smokeping/examples/config.simple +ab40e404a087e30556385c112ec44bce usr/share/doc/smokeping/examples/config.targetvars-with-Curl +794a4f3d1d7de13da52fe039c9d5a6cb usr/share/doc/smokeping/examples/config.template +78bb389ff3b5f86fd9f5c799ba3efabb usr/share/doc/smokeping/examples/lighttpd_45-smokeping.conf +20a41dc90ae70beba75139b8200ae253 usr/share/doc/smokeping/examples/smokeping_secrets.dist +8177fd878d08dd1d07905b4714475906 usr/share/doc/smokeping/examples/systemd/slave_mode.conf +b732161ea94edd01a3da533a76020d55 usr/share/man/man1/smokeinfo.1.gz +b1320c9ecf943938b07ad7f1be6a2ab5 usr/share/man/man1/smokeping.1.gz +8bbe4143c901543ebc15ee0cfc16f7bc usr/share/man/man1/smokeping_cgi.1.gz +efdf999b8bc342f6d94b804dfd7c178c usr/share/man/man1/tSmoke.1.gz +e1ae1fe9761f92229b3e6e37b244cd5d usr/share/man/man3/Smokeping_matchers_Avgratio.3.gz +c20afb8a74c7abab4a04209eaebea131 usr/share/man/man3/Smokeping_matchers_CheckLatency.3.gz +2eab1a1c61c0371412ed830839d7bf26 usr/share/man/man3/Smokeping_matchers_CheckLoss.3.gz +78af44735461bcbbd5742b93fc44c599 usr/share/man/man3/Smokeping_matchers_ConsecutiveLoss.3.gz +335186c50604e763760374c2fffec076 usr/share/man/man3/Smokeping_matchers_ExpLoss.3.gz +29bb8b5d67e235ace9d571d2507ae48d usr/share/man/man3/Smokeping_matchers_Median.3.gz +22f64ed24f88d82eb9ac74f621ccd62f usr/share/man/man3/Smokeping_matchers_Medratio.3.gz +a878c675f065a0d59065d3330d6b44bf usr/share/man/man3/Smokeping_matchers_base.3.gz +94b0f0b15e3c783d73e53d24442d34f9 usr/share/man/man3/Smokeping_probes_AnotherCurl.3.gz +f72546c54ff4f494521a08ac1e58b3bf usr/share/man/man3/Smokeping_probes_AnotherDNS.3.gz +4bc247df21865f827d7d0cc6d11f4ad5 usr/share/man/man3/Smokeping_probes_AnotherSSH.3.gz +134b6e05cd4183c66e735c0c241f3779 usr/share/man/man3/Smokeping_probes_CiscoRTTMonDNS.3.gz +e16f3b9bf474e4a82f55a3f72fb64cc8 usr/share/man/man3/Smokeping_probes_CiscoRTTMonEchoICMP.3.gz +5c8196ff3562300ad87313b623651619 usr/share/man/man3/Smokeping_probes_CiscoRTTMonTcpConnect.3.gz +450a8e8b052ecfc298028fd2dd0b2d29 usr/share/man/man3/Smokeping_probes_Curl.3.gz +6a442716aac4f4371315c37b4ab90203 usr/share/man/man3/Smokeping_probes_DNS.3.gz +18b3ee2d23f47dc73b80943e7bc61a77 usr/share/man/man3/Smokeping_probes_DismanPing.3.gz +f1f327eaab20a86d43d8527b395081a7 usr/share/man/man3/Smokeping_probes_EchoPing.3.gz +ea31ba780d8a52f2258177b1482ac641 usr/share/man/man3/Smokeping_probes_EchoPingChargen.3.gz +c0c7d7eb45a1bacb1cc5068e127cef3b usr/share/man/man3/Smokeping_probes_EchoPingDNS.3.gz +a40024dcb6cfd2fe78084a093c4d2543 usr/share/man/man3/Smokeping_probes_EchoPingDiscard.3.gz +296de901f0c841fe77e10fbe6254fa41 usr/share/man/man3/Smokeping_probes_EchoPingHttp.3.gz +253cb481295f201a7077c4c5d896c680 usr/share/man/man3/Smokeping_probes_EchoPingHttps.3.gz +563705b5aae65bc54c2431ba3fcd7d9e usr/share/man/man3/Smokeping_probes_EchoPingIcp.3.gz +f5b5c2618b95108ab2824fc561e4f239 usr/share/man/man3/Smokeping_probes_EchoPingLDAP.3.gz +7ec00b37e648edea72f03dda68ca1ffe usr/share/man/man3/Smokeping_probes_EchoPingPlugin.3.gz +86965cfc960f056d7f3c0ce9223942d9 usr/share/man/man3/Smokeping_probes_EchoPingSmtp.3.gz +eee072c1ba7274c859301d54ccb7dfa2 usr/share/man/man3/Smokeping_probes_EchoPingWhois.3.gz +750589c391a6c7c933d3840b60656d04 usr/share/man/man3/Smokeping_probes_FPing.3.gz +859306573a30db9efe2f01a5316058f3 usr/share/man/man3/Smokeping_probes_FPing6.3.gz +f79652e64406ed65e5d8f966d19da0da usr/share/man/man3/Smokeping_probes_FPingContinuous.3.gz +8f66f4d6b05663d1f29ee7711a2bd918 usr/share/man/man3/Smokeping_probes_FTPtransfer.3.gz +dd360d89050640e4100f71aef4f1861d usr/share/man/man3/Smokeping_probes_IOSPing.3.gz +bb1a6cca91f71b0c8f2cf1f281821e6f usr/share/man/man3/Smokeping_probes_IRTT.3.gz +f09af3b3292174bcb45d24840873b27e usr/share/man/man3/Smokeping_probes_LDAP.3.gz +24ff7f732951e74db35e19ae2b5c3e62 usr/share/man/man3/Smokeping_probes_NFSping.3.gz +71864ed1e82a866a4e45dd2a198e1f3c usr/share/man/man3/Smokeping_probes_OpenSSHEOSPing.3.gz +8843eb0d1f725bd82f33007b35f6c682 usr/share/man/man3/Smokeping_probes_OpenSSHJunOSPing.3.gz +f10a50bac310d03f3766fb9370575230 usr/share/man/man3/Smokeping_probes_Qstat.3.gz +1f986b466deb32a51262e4e02a7df92a usr/share/man/man3/Smokeping_probes_Radius.3.gz +043fcd3405590475920624364ba3025e usr/share/man/man3/Smokeping_probes_RemoteFPing.3.gz +6b1469547f1c9a6c2b1b953f2bbe881c usr/share/man/man3/Smokeping_probes_SSH.3.gz +75581fbb7c56fa75fa6da8d02d4f208a usr/share/man/man3/Smokeping_probes_SendEmail.3.gz +77696e77315902963c8d4f1ccf7990ff usr/share/man/man3/Smokeping_probes_SipSak.3.gz +87ce69554a609f1839ec05321151dffb usr/share/man/man3/Smokeping_probes_TCPPing.3.gz +e45ea0a3826a922b7090b2998afe0213 usr/share/man/man3/Smokeping_probes_TacacsPlus.3.gz +43e857ef3f996477dd222e96af4c1b80 usr/share/man/man3/Smokeping_probes_TelnetIOSPing.3.gz +053c938b283f3df5ee253b3ffd414521 usr/share/man/man3/Smokeping_probes_TelnetJunOSPing.3.gz +144338d31b0df8d4f3e642fc1c5db4a5 usr/share/man/man3/Smokeping_probes_TraceroutePing.3.gz +4b6ce979eed0a3bd35a91a6ba9c1b76e usr/share/man/man3/Smokeping_probes_WebProxyFilter.3.gz +3396c46a56b346a05fe65b273f5f1066 usr/share/man/man3/Smokeping_probes_base.3.gz +ca51e850b52e3200950ffeba06e901c1 usr/share/man/man3/Smokeping_probes_basefork.3.gz +b48367e10549357af6274082a5226c97 usr/share/man/man3/Smokeping_probes_basevars.3.gz +01f0ba3dcc868e6ade3a0d27050bb61a usr/share/man/man3/Smokeping_probes_passwordchecker.3.gz +1cbb916f490e06f8aae5006b2dad86db usr/share/man/man3/Smokeping_probes_skel.3.gz +7664d866e9d771d9efba9659028f381d usr/share/man/man3/Smokeping_sorters_Loss.3.gz +3cff55cc3934368184e342017685c548 usr/share/man/man3/Smokeping_sorters_Max.3.gz +2db7bddcd8cde91aaa83af81375569cb usr/share/man/man3/Smokeping_sorters_Median.3.gz +b431a0e6ae67562cf5dcdb372958a772 usr/share/man/man3/Smokeping_sorters_StdDev.3.gz +5d76eac0e1ee6573df5bee69e71a9cd2 usr/share/man/man3/Smokeping_sorters_base.3.gz +30fa00fcaace86d1490066c689c783f7 usr/share/man/man5/smokeping_config.5.gz +e2778d36b5c4600aa8f255af6bf8f277 usr/share/man/man5/smokeping_examples.5.gz +9739845883c9ac5a67cf73c77307f265 usr/share/man/man7/smokeping_extend.7.gz +61703f285f638deef693a1b113e6e874 usr/share/man/man7/smokeping_install.7.gz +9a8ada37ef7ae1d4c00cef595e3679aa usr/share/man/man7/smokeping_master_slave.7.gz +b44cd09375aab8d6e3a2607962da2c45 usr/share/man/man7/smokeping_upgrade.7.gz +dad3c12c69c46fc40cb03eae55f70bc5 usr/share/perl5/Smokeping.pm +74dc0a7e83f7e5033dcaa59f452fc11b usr/share/perl5/Smokeping/Colorspace.pm +affa12d68e79a45a82635683686673d5 usr/share/perl5/Smokeping/Config.pm +7fb5e259df686acb83daacd7708a72a9 usr/share/perl5/Smokeping/Examples.pm +9615f1119ac79d65c51997f5403b558f usr/share/perl5/Smokeping/Graphs.pm +40d9a0d2effcd59d89bbcd893fe3f27a usr/share/perl5/Smokeping/Info.pm +aa38784e396ff79b7701411c3a5690fa usr/share/perl5/Smokeping/Master.pm +000bb41739ce475ac0db7aebeaec4cb6 usr/share/perl5/Smokeping/RRDhelpers.pm +4840b6be3abeea9cd8f4773da3649632 usr/share/perl5/Smokeping/RRDtools.pm +5d1510802e13a09fa6d5cdb61a2ed973 usr/share/perl5/Smokeping/Slave.pm +6ca9a74149bbeda25588d81a885aafac usr/share/perl5/Smokeping/ciscoRttMonMIB.pm +0589f39cc33fb0a443bd947e00442c92 usr/share/perl5/Smokeping/matchers/Avgratio.pm +c9f37222afc9fab4ee9ad81c84349bfe usr/share/perl5/Smokeping/matchers/CheckLatency.pm +ebf79b04b999b0eea95bcdc6a918c30d usr/share/perl5/Smokeping/matchers/CheckLoss.pm +0c680558c553638e7418cc44cbb76868 usr/share/perl5/Smokeping/matchers/ConsecutiveLoss.pm +0e9d1d8a7a4d338152c50ff221e2f152 usr/share/perl5/Smokeping/matchers/ExpLoss.pm +d70b48f27e5c9a1eb8e8f51c7a6f183a usr/share/perl5/Smokeping/matchers/Median.pm +71282e21e01fb6572a1859492dda2ea8 usr/share/perl5/Smokeping/matchers/Medratio.pm +8c67107c66f13565419f0641ee720f47 usr/share/perl5/Smokeping/matchers/base.pm +8d2752f301f4f73e006724deb1f77f33 usr/share/perl5/Smokeping/pingMIB.pm +a1d417dd6664100d9c7cdd671e2487a2 usr/share/perl5/Smokeping/probes/AnotherCurl.pm +38b0f60e322c4edb0495238b3864dcaa usr/share/perl5/Smokeping/probes/AnotherDNS.pm +22d4d89cb89d09ca1252915251bf53fa usr/share/perl5/Smokeping/probes/AnotherSSH.pm +9c046a63424618ac3fc6abeace84f561 usr/share/perl5/Smokeping/probes/CiscoRTTMonDNS.pm +8fe659bc4b1db1e4b7a370a4bb95eddb usr/share/perl5/Smokeping/probes/CiscoRTTMonEchoICMP.pm +f58ebe194cb6d2313c59b86c02d654f2 usr/share/perl5/Smokeping/probes/CiscoRTTMonTcpConnect.pm +386baa69338b1dddc2ab202c6e454e43 usr/share/perl5/Smokeping/probes/Curl.pm +788c288e521072d6bec0ee33b1f49384 usr/share/perl5/Smokeping/probes/DNS.pm +d4d56290d9a5f248f43103054e73b2f9 usr/share/perl5/Smokeping/probes/DismanPing.pm +b1502dd807100f8aafd97e85d12a2110 usr/share/perl5/Smokeping/probes/EchoPing.pm +c39943e17c351729f59a1e6af79e8b96 usr/share/perl5/Smokeping/probes/EchoPingChargen.pm +001b86134c2788eb6716f8155931b4ef usr/share/perl5/Smokeping/probes/EchoPingDNS.pm +ad971c0c2f08b53c4fe5da5baf434b2a usr/share/perl5/Smokeping/probes/EchoPingDiscard.pm +31e949250005ff133a85262260d9e77b usr/share/perl5/Smokeping/probes/EchoPingHttp.pm +7bf83c131ec66df9ecb71903b2171be3 usr/share/perl5/Smokeping/probes/EchoPingHttps.pm +7745c7902518a6ac7bebbed22ddfd82f usr/share/perl5/Smokeping/probes/EchoPingIcp.pm +f3c010af1de08141c91e3aedf53181da usr/share/perl5/Smokeping/probes/EchoPingLDAP.pm +e8ee4043da2e34980783301350fb6ee8 usr/share/perl5/Smokeping/probes/EchoPingPlugin.pm +5cae2fd9ad9ff93c9a2969cf60903f46 usr/share/perl5/Smokeping/probes/EchoPingSmtp.pm +4f389d382ac14503322c617e37e7636c usr/share/perl5/Smokeping/probes/EchoPingWhois.pm +2c9a0cac05ddd312a5656dd3eeed4462 usr/share/perl5/Smokeping/probes/FPing.pm +8f77dbf0c925913ce83e184a4e6187d4 usr/share/perl5/Smokeping/probes/FPing6.pm +c16790651d98eb85ecc2692d001a23dd usr/share/perl5/Smokeping/probes/FPingContinuous.pm +1521777598df8965907927eb92c3e408 usr/share/perl5/Smokeping/probes/FTPtransfer.pm +583202540b57e6883d7a120477559e69 usr/share/perl5/Smokeping/probes/IOSPing.pm +6c3e91d404bae0191320c425e3c9cada usr/share/perl5/Smokeping/probes/IRTT.pm +2243990ce8eed9db07845671a7a46f37 usr/share/perl5/Smokeping/probes/LDAP.pm +947f5dd1457ebcb7f5901ec475428e77 usr/share/perl5/Smokeping/probes/NFSping.pm +d1bb3426744b26fcec326b1652f175c0 usr/share/perl5/Smokeping/probes/OpenSSHEOSPing.pm +3965ee85c715e289737f2278236590b1 usr/share/perl5/Smokeping/probes/OpenSSHJunOSPing.pm +5534b5594c794a8e35d81c42f9f104fb usr/share/perl5/Smokeping/probes/Qstat.pm +0abb73c4155c1b1aac6bdc84da4e35d1 usr/share/perl5/Smokeping/probes/Radius.pm +2f9f3f0fdae60d0b812ed8494bb495a4 usr/share/perl5/Smokeping/probes/RemoteFPing.pm +3ee5f11dd635f54d04137db332ba8186 usr/share/perl5/Smokeping/probes/SSH.pm +382cd82f0b8c779ba3fc0e78180b7456 usr/share/perl5/Smokeping/probes/SendEmail.pm +303869aad39ec0eaa977dc665b4be679 usr/share/perl5/Smokeping/probes/SipSak.pm +1e4fccbd6802b2a2e40d6960c3b06c8d usr/share/perl5/Smokeping/probes/TCPPing.pm +40718aab8cdbc7cb4760386476e8c1cd usr/share/perl5/Smokeping/probes/TacacsPlus.pm +59c2a5701010c38c00f95e2a3eb6dd40 usr/share/perl5/Smokeping/probes/TelnetIOSPing.pm +4818fed56c1d7afd5b887f164a682630 usr/share/perl5/Smokeping/probes/TelnetJunOSPing.pm +9f581fbab087d0a576260f0d79273310 usr/share/perl5/Smokeping/probes/TraceroutePing.pm +b079e26ad4e054dc5fde13c9c473fea0 usr/share/perl5/Smokeping/probes/WebProxyFilter.pm +fa25895772c5d14031e36ef1164bd138 usr/share/perl5/Smokeping/probes/base.pm +2300f76af8d86de1a640c03a70375497 usr/share/perl5/Smokeping/probes/basefork.pm +5ebc965d50d4601f51239caeddf0e352 usr/share/perl5/Smokeping/probes/basevars.pm +1bfbd2c8d1b646fda4cd915b72dec62d usr/share/perl5/Smokeping/probes/passwordchecker.pm +f3148ac862ddf308ffdfa6b98b1e4454 usr/share/perl5/Smokeping/probes/skel.pm +ab05eee799a3f7dd3ad55552ebcf9005 usr/share/perl5/Smokeping/sorters/Loss.pm +b0ee00e7ded5d2244074da936081a5f8 usr/share/perl5/Smokeping/sorters/Max.pm +8df66ecffb3d99a83853a95fcb93ca9e usr/share/perl5/Smokeping/sorters/Median.pm +b7b48ab6ee96cade6e4aee63a6229963 usr/share/perl5/Smokeping/sorters/StdDev.pm +e4590791ff48d9d3c2e8af7d4cc89537 usr/share/perl5/Smokeping/sorters/base.pm +23dedc7a0521f63f8f55ed2840efedad usr/share/smokeping/smokeping.cgi +5a3a81cf4d5c006de7b39e149e8aac30 usr/share/smokeping/www/css/smokeping-print.css +6d82c4e7262a8b71c47e3221b72174b5 usr/share/smokeping/www/css/smokeping-screen.css +fb004124bf1ed724b26e6e188db7604e usr/share/smokeping/www/js/prototype.js +b3194289aa4d19188e036ec01d4d2c12 usr/share/smokeping/www/js/smokeping.js +477e7d2bee062d9fa4b1e773d7c98d1e usr/share/smokeping/www/smokeping.fcgi.dist diff --git a/debian/smokeping/DEBIAN/postinst b/debian/smokeping/DEBIAN/postinst new file mode 100755 index 0000000..0baa9cb --- /dev/null +++ b/debian/smokeping/DEBIAN/postinst @@ -0,0 +1,125 @@ +#! /bin/sh +# postinst script for smokeping +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package +# +# 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'. + +setup_permissions() { + # Smokeping.cgi is run as user www-data, so we need it to be able + # to write in /var/cache/smokeping/images and in /var/lib/smokeping/__cgi + + chown smokeping:smokeping /var/lib/smokeping + chown www-data /var/cache/smokeping/images + chown smokeping:www-data /var/lib/smokeping/__cgi + chmod 2775 /var/lib/smokeping/__cgi + chown smokeping:www-data /etc/smokeping/smokeping_secrets + chmod 640 /etc/smokeping/smokeping_secrets +} + + +# OK, let's go +case "$1" in + configure|reconfigure) + + getent passwd smokeping > /dev/null || \ + adduser --system --group --home /var/lib/smokeping --no-create-home --gecos "SmokePing daemon" smokeping + setup_permissions + if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then + . /usr/share/apache2/apache2-maintscript-helper + apache2_invoke enmod cgi + fi + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +# Automatically added by dh_apache2/UNDECLARED +if true; then + if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then + . /usr/share/apache2/apache2-maintscript-helper + for conf in smokeping ; do + apache2_invoke enconf $conf || exit 1 + done + fi +fi +# End automatically added section +# Automatically added by dh_installdeb/13.24.2 +dpkg-maintscript-helper mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf -- "$@" +# End automatically added section +# Automatically added by dh_installinit/13.24.2 +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + if [ -z "$DPKG_ROOT" ] && [ -x "/etc/init.d/smokeping" ]; then + update-rc.d smokeping defaults >/dev/null + if [ -n "$2" ]; then + _dh_action=restart + else + _dh_action=start + fi + invoke-rc.d --skip-systemd-native smokeping $_dh_action || exit 1 + fi +fi +# End automatically added section +# Automatically added by dh_installsystemd/13.24.2 +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + # The following line should be removed in trixie or trixie+1 + deb-systemd-helper unmask 'smokeping.service' >/dev/null || true + + # was-enabled defaults to true, so new installations run enable. + if deb-systemd-helper --quiet was-enabled 'smokeping.service'; then + # Enables the unit on first installation, creates new + # symlinks on upgrades if the unit file has changed. + deb-systemd-helper enable 'smokeping.service' >/dev/null || true + else + # Update the statefile to add new symlinks (if any), which need to be + # cleaned up on purge. Also remove old symlinks. + deb-systemd-helper update-state 'smokeping.service' >/dev/null || true + fi +fi +# End automatically added section +# Automatically added by dh_installsystemd/13.24.2 +if [ "$1" = "configure" ] || [ "$1" = "abort-upgrade" ] || [ "$1" = "abort-deconfigure" ] || [ "$1" = "abort-remove" ] ; then + if [ -d /run/systemd/system ]; then + systemctl --system daemon-reload >/dev/null || true + if [ -n "$2" ]; then + _dh_action=restart + else + _dh_action=start + fi + deb-systemd-invoke $_dh_action 'smokeping.service' >/dev/null || true + fi +fi +# End automatically added section + + +exit 0 + + diff --git a/debian/smokeping/DEBIAN/postrm b/debian/smokeping/DEBIAN/postrm new file mode 100755 index 0000000..783a3e7 --- /dev/null +++ b/debian/smokeping/DEBIAN/postrm @@ -0,0 +1,97 @@ +#! /bin/sh +# postrm script for smoke +# +# 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 http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + + purge) + + rm -rf /var/run/smokeping + rm -rf /var/cache/smokeping + rm -rf /var/lib/smokeping + + for f in basepage.html smokemail tmail config + do + file=/etc/smokeping/$f + if command -v ucf >/dev/null 2>&1; then + ucf --purge $file || true + fi + if command -v ucfr >/dev/null 2>&1; then + ucfr --purge smokeping $file || true + fi + rm -f $file $file.ucf-old $file.ucf-new $file.ucf-dist + done + for f in Alerts Database General pathnames Presentation Probes Slaves Targets + do + file=/etc/smokeping/config.d/$f + if command -v ucf >/dev/null 2>&1; then + ucf --purge $file || true + fi + if command -v ucfr >/dev/null 2>&1; then + ucfr --purge smokeping $file || true + fi + rm -f $file $file.ucf-old $file.ucf-new $file.ucf-dist + done + + [ ! -d /etc/smokeping/config.d ] || rmdir --ignore-fail-on-non-empty --parents /etc/smokeping/config.d + +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +# Automatically added by dh_installinit/13.24.2 +if [ "$1" = "remove" ] && [ -x "/etc/init.d/smokeping" ] ; then + chmod -x "/etc/init.d/smokeping" >/dev/null || true +fi +if [ -z "$DPKG_ROOT" ] && [ "$1" = "purge" ] ; then + update-rc.d smokeping remove >/dev/null +fi +# End automatically added section +# Automatically added by dh_installdeb/13.24.2 +dpkg-maintscript-helper mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf -- "$@" +# End automatically added section +# Automatically added by dh_installsystemd/13.24.2 +if [ "$1" = remove ] && [ -d /run/systemd/system ] ; then + systemctl --system daemon-reload >/dev/null || true +fi +# End automatically added section +# Automatically added by dh_installsystemd/13.24.2 +if [ "$1" = "purge" ]; then + if [ -x "/usr/bin/deb-systemd-helper" ]; then + deb-systemd-helper purge 'smokeping.service' >/dev/null || true + fi +fi +# End automatically added section +# Automatically added by dh_apache2/UNDECLARED +if [ "$1" = "purge" ] ; then + if true; then + if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then + . /usr/share/apache2/apache2-maintscript-helper + + for conf in smokeping ; do + apache2_invoke disconf $conf || exit 1 + done + fi + fi +fi +# End automatically added section + + +exit 0 diff --git a/debian/smokeping/DEBIAN/preinst b/debian/smokeping/DEBIAN/preinst new file mode 100755 index 0000000..6cadef1 --- /dev/null +++ b/debian/smokeping/DEBIAN/preinst @@ -0,0 +1,57 @@ +#!/bin/sh +# preinst script for smokeping +# +# see: dh_installdeb(1) + +set -e + +# summary of how this script can be called: +# * `install' +# * `install' +# * `upgrade' +# * `abort-upgrade' +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package + + +case "$1" in + install|upgrade) + IFS=":" + ucfq -w /etc/smokeping/basepage.html \ + /etc/smokeping/smokemail \ + /etc/smokeping/config.d/Alerts \ + /etc/smokeping/config.d/Presentation \ + /etc/smokeping/config.d/pathnames \ + /etc/smokeping/config.d/Targets \ + /etc/smokeping/config.d/General \ + /etc/smokeping/config.d/Slaves \ + | while read file package exists changed; do + if [ "$package" = "smokeping" -a "$changed" = "No" ]; then + rm -f "$file" + fi + done + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +# Automatically added by dh_installdeb/13.24.2 +dpkg-maintscript-helper mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf -- "$@" +# End automatically added section +# Automatically added by dh_installinit/13.24.2 +if [ "$1" = "install" ] && [ -n "$2" ] && [ -e "/etc/init.d/smokeping" ] ; then + chmod +x "/etc/init.d/smokeping" >/dev/null || true +fi +# End automatically added section + + +exit 0 diff --git a/debian/smokeping/DEBIAN/prerm b/debian/smokeping/DEBIAN/prerm new file mode 100755 index 0000000..87ae25c --- /dev/null +++ b/debian/smokeping/DEBIAN/prerm @@ -0,0 +1,28 @@ +#!/bin/sh +set -e +# Automatically added by dh_installsystemd/13.24.2 +if [ -z "$DPKG_ROOT" ] && [ "$1" = remove ] && [ -d /run/systemd/system ] ; then + deb-systemd-invoke stop 'smokeping.service' >/dev/null || true +fi +# End automatically added section +# Automatically added by dh_installinit/13.24.2 +if [ -z "$DPKG_ROOT" ] && [ "$1" = remove ] && [ -x "/etc/init.d/smokeping" ] ; then + invoke-rc.d --skip-systemd-native smokeping stop || exit 1 +fi +# End automatically added section +# Automatically added by dh_installdeb/13.24.2 +dpkg-maintscript-helper mv_conffile /etc/smokeping/apache2.conf /etc/apache2/conf-available/smokeping.conf -- "$@" +# End automatically added section +# Automatically added by dh_apache2/UNDECLARED +if [ "$1" = "remove" ] || [ "$1" = "deconfigure" ] ; then + if true; then + if [ -e /usr/share/apache2/apache2-maintscript-helper ] ; then + . /usr/share/apache2/apache2-maintscript-helper + + for conf in smokeping ; do + apache2_invoke disconf $conf || exit 1 + done + fi + fi +fi +# End automatically added section diff --git a/debian/smokeping/etc/apache2/conf-available/smokeping.conf b/debian/smokeping/etc/apache2/conf-available/smokeping.conf new file mode 100644 index 0000000..c712682 --- /dev/null +++ b/debian/smokeping/etc/apache2/conf-available/smokeping.conf @@ -0,0 +1,9 @@ +ScriptAlias /smokeping/smokeping.cgi /usr/lib/cgi-bin/smokeping.cgi +Alias /smokeping /usr/share/smokeping/www + + + Options FollowSymLinks + Require all granted + DirectoryIndex smokeping.cgi + + diff --git a/debian/smokeping/etc/default/smokeping b/debian/smokeping/etc/default/smokeping new file mode 100644 index 0000000..b027b0c --- /dev/null +++ b/debian/smokeping/etc/default/smokeping @@ -0,0 +1,16 @@ +# /etc/default/smokeping: Startup configuration for smokeping(1) +# +# select master or slave mode +MODE=master +# in master mode, the rest of the configuration is in +# /etc/smokeping/config +# +# in slave mode, uncomment and set the following variables too +# see smokeping(1) +# +# Mandatory configuration +# MASTER_URL=http://somewhere/cgi-bin/smokeping.cgi +# SHARED_SECRET=/etc/smokeping/slavesecrets.conf +# +# Optional configuration +# SLAVE_NAME=myslave diff --git a/debian/smokeping/etc/init.d/smokeping b/debian/smokeping/etc/init.d/smokeping new file mode 100755 index 0000000..e2e4b0b --- /dev/null +++ b/debian/smokeping/etc/init.d/smokeping @@ -0,0 +1,196 @@ +#!/bin/sh +# +# /etc/init.d/smokeping +# +### BEGIN INIT INFO +# Provides: smokeping +# Required-Start: $syslog $network $remote_fs +# Should-Start: sshd apache +# Required-Stop: $syslog $network $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start or stop the smokeping latency logging system daemon +# Description: SmokePing is a latency logging and graphing system +# that consists of a daemon process which organizes +# the latency measurements and a CGI which presents +# the graphs. This script is used to start or stop +# the daemon. +### END INIT INFO +# + +set -e + +# Source LSB init functions +. /lib/lsb/init-functions + +DAEMON=/usr/sbin/smokeping +NAME=smokeping +DESC="latency logger daemon" +CONFIG=/etc/smokeping/config +PIDFILE=/var/run/smokeping/$NAME.pid +DAEMON_USER=smokeping +DEFAULTS=/etc/default/smokeping +MODE=master +DAEMON_ARGS="--config=$CONFIG" + +# LC_ALL prevents resetting LC_NUMERIC which in turn interferes +# with Smokeping internal regexps matching floating point numbers +unset LC_ALL + +# Check whether the binary is still present: +test -f "$DAEMON" || exit 0 + +# source defaults for master vs. slave mode +if [ -f "$DEFAULTS" ] +then + . "$DEFAULTS" +fi + +check_slave() { + if [ "$MODE" != "slave" ] + then + return + fi + if [ -z "$SHARED_SECRET" ] + then + log_progress_msg "(missing \$SHARED_SECRET setting)" + log_end_msg 6 # program is not configured + exit 6 + fi + if [ ! -r "$SHARED_SECRET" ] + then + log_progress_msg "(invalid \$SHARED_SECRET setting)" + log_end_msg 2 # invalid or excess argument(s) + exit 2 + fi + if [ -z "$MASTER_URL" ] + then + log_progress_msg "(missing \$MASTER_URL setting)" + log_end_msg 6 # program is not configured + exit 6 + fi + DAEMON_ARGS="$DAEMON_ARGS --master-url $MASTER_URL --shared-secret $SHARED_SECRET" + if [ -n "$SLAVE_NAME" ] + then + DAEMON_ARGS="$DAEMON_ARGS --slave-name $SLAVE_NAME" + fi + DAEMON_ARGS="$DAEMON_ARGS --cache-dir /var/lib/smokeping" + DAEMON_ARGS="$DAEMON_ARGS --pid-dir /var/run/smokeping" +} + +check_config () { + echo "Checking smokeping configuration file syntax..." + # Check whether the configuration file is available + if [ ! -r "$CONFIG" ] && [ "$MODE" = "master" ] + then + log_progress_msg "($CONFIG does not exist)" + log_end_msg 6 # program is not configured + exit 6 + fi + if [ ! -d /var/run/smokeping ]; then + mkdir /var/run/smokeping + chown ${DAEMON_USER}.root /var/run/smokeping + chmod 0755 /var/run/smokeping + fi + ${DAEMON} --config=${CONFIG} --check || exit 6 +} + +case "$1" in + start) + check_config + log_daemon_msg "Starting $DESC" $NAME + check_slave + set +e + pidofproc -p "$PIDFILE" "$DAEMON" > /dev/null + STATUS=$? + set -e + if [ "$STATUS" = 0 ] + then + log_progress_msg "already running" + log_end_msg $STATUS + exit $STATUS + fi + + set +e + start-stop-daemon --start --quiet --exec $DAEMON --oknodo \ + --chuid $DAEMON_USER --pidfile $PIDFILE \ + -- $DAEMON_ARGS \ + | logger -p daemon.notice -t $NAME + STATUS=$? + set -e + + log_end_msg $STATUS + exit $STATUS + ;; + + + stop) + log_daemon_msg "Shutting down $DESC" $NAME + + set +e + start-stop-daemon --oknodo --stop --retry 3 --quiet --pidfile $PIDFILE --user $DAEMON_USER --signal 15 + STATUS=$? + set -e + + log_end_msg $STATUS + exit $STATUS + ;; + + + restart) + # Restart service (if running) or start service + $0 stop + $0 start + ;; + + + reload|force-reload) + check_config + log_action_begin_msg "Reloading $DESC configuration" + set +e + $DAEMON --reload $DAEMON_ARGS | logger -p daemon.notice -t smokeping + STATUS=$? + set -e + + if [ "$STATUS" = 0 ] + then + log_action_end_msg 0 "If the CGI has problems reloading, see README.Debian." + else + log_action_end_msg $STATUS + fi + exit $STATUS + ;; + + check) + check_config + ;; + + status) + log_daemon_msg "Checking $DESC status" $NAME + # Use pidofproc to check the status of the service, + # pidofproc returns the exit status code of 0 when it the process is + # running. + + # LSB defined exit status codes for status: + # 0 program is running or service is OK + # 1 program is dead and /var/run pid file exists + # 2 program is dead and /var/lock lock file exists + # 3 program is not running + # 4 program or service status is unknown + # 5-199 reserved (5-99 LSB, 100-149 distribution, 150-199 applications) + + set +e + pidofproc -p "$PIDFILE" "$DAEMON" > /dev/null + STATUS=$? + log_progress_msg "(status $STATUS)" + log_end_msg 0 + set -e + exit $STATUS + ;; + + + *) + echo "Usage: $0 {start|stop|status|restart|force-reload|reload}" + exit 1 + ;; +esac diff --git a/debian/smokeping/etc/smokeping/basepage.html b/debian/smokeping/etc/smokeping/basepage.html new file mode 100644 index 0000000..2c0694f --- /dev/null +++ b/debian/smokeping/etc/smokeping/basepage.html @@ -0,0 +1,65 @@ + + + + + + SmokePing Latency Page for <##title##> + + + + + + + + + + +
+

<##title##>

+

<##remark##>

+ +
+ <##overview##> +
+ +
+ <##body##> +
+
+
+ + + + + + + + + diff --git a/debian/smokeping/etc/smokeping/config b/debian/smokeping/etc/smokeping/config new file mode 100644 index 0000000..79a3613 --- /dev/null +++ b/debian/smokeping/etc/smokeping/config @@ -0,0 +1,7 @@ +@include /etc/smokeping/config.d/General +@include /etc/smokeping/config.d/Alerts +@include /etc/smokeping/config.d/Database +@include /etc/smokeping/config.d/Presentation +@include /etc/smokeping/config.d/Probes +@include /etc/smokeping/config.d/Slaves +@include /etc/smokeping/config.d/Targets diff --git a/debian/smokeping/etc/smokeping/config.d/Alerts b/debian/smokeping/etc/smokeping/config.d/Alerts new file mode 100644 index 0000000..cbcfc41 --- /dev/null +++ b/debian/smokeping/etc/smokeping/config.d/Alerts @@ -0,0 +1,10 @@ +*** Alerts *** +to = alertee@address.somewhere +from = smokealert@company.xy + ++someloss +type = loss +# in percent +pattern = >0%,*12*,>0%,*12*,>0% +comment = loss 3 times in a row + diff --git a/debian/smokeping/etc/smokeping/config.d/Database b/debian/smokeping/etc/smokeping/config.d/Database new file mode 100644 index 0000000..f57f553 --- /dev/null +++ b/debian/smokeping/etc/smokeping/config.d/Database @@ -0,0 +1,15 @@ +*** Database *** + +step = 300 +pings = 20 + +# consfn mrhb steps total + +AVERAGE 0.5 1 28800 +AVERAGE 0.5 12 9600 + MIN 0.5 12 9600 + MAX 0.5 12 9600 +AVERAGE 0.5 144 2400 + MAX 0.5 144 2400 + MIN 0.5 144 2400 + diff --git a/debian/smokeping/etc/smokeping/config.d/General b/debian/smokeping/etc/smokeping/config.d/General new file mode 100644 index 0000000..018b663 --- /dev/null +++ b/debian/smokeping/etc/smokeping/config.d/General @@ -0,0 +1,16 @@ +*** General *** + +owner = Peter Random +contact = some@address.nowhere +mailhost = my.mail.host +# NOTE: do not put the Image Cache below cgi-bin +# since all files under cgi-bin will be executed ... this is not +# good for images. +cgiurl = http://some.url/smokeping.cgi +# specify this to get syslog logging +syslogfacility = local0 +# each probe is now run in its own process +# disable this to revert to the old behaviour +# concurrentprobes = no + +@include /etc/smokeping/config.d/pathnames diff --git a/debian/smokeping/etc/smokeping/config.d/Presentation b/debian/smokeping/etc/smokeping/config.d/Presentation new file mode 100644 index 0000000..c731efb --- /dev/null +++ b/debian/smokeping/etc/smokeping/config.d/Presentation @@ -0,0 +1,60 @@ +*** Presentation *** + +template = /usr/etc/basepage.html.dist +htmltitle = yes +graphborders = no +# If enabled, treat all filter menu queries as literal strings instead of regex +literalsearch = no + ++ charts + +menu = Charts +title = The most interesting destinations + +++ stddev +sorter = StdDev(entries=>4) +title = Top Standard Deviation +menu = Std Deviation +format = Standard Deviation %f + +++ max +sorter = Max(entries=>5) +title = Top Max Roundtrip Time +menu = by Max +format = Max Roundtrip Time %f seconds + +++ loss +sorter = Loss(entries=>5) +title = Top Packet Loss +menu = Loss +format = Packets Lost %f + +++ median +sorter = Median(entries=>5) +title = Top Median Roundtrip Time +menu = by Median +format = Median RTT %f seconds + ++ overview + +width = 600 +height = 50 +range = 10h + ++ detail + +width = 600 +height = 200 +unison_tolerance = 2 + +"Last 3 Hours" 3h +"Last 30 Hours" 30h +"Last 10 Days" 10d +"Last 360 Days" 360d + +#+ hierarchies +#++ owner +#title = Host Owner +#++ location +#title = Location + diff --git a/debian/smokeping/etc/smokeping/config.d/Probes b/debian/smokeping/etc/smokeping/config.d/Probes new file mode 100644 index 0000000..b95e9ac --- /dev/null +++ b/debian/smokeping/etc/smokeping/config.d/Probes @@ -0,0 +1,6 @@ +*** Probes *** + ++ FPing + +binary = /usr/sbin/fping + diff --git a/debian/smokeping/etc/smokeping/config.d/Slaves b/debian/smokeping/etc/smokeping/config.d/Slaves new file mode 100644 index 0000000..ad9c5fd --- /dev/null +++ b/debian/smokeping/etc/smokeping/config.d/Slaves @@ -0,0 +1,10 @@ +*** Slaves *** +secrets=/usr/etc/smokeping_secrets.dist ++boomer +display_name=boomer +color=0000ff + ++slave2 +display_name=another +color=00ff00 + diff --git a/debian/smokeping/etc/smokeping/config.d/Targets b/debian/smokeping/etc/smokeping/config.d/Targets new file mode 100644 index 0000000..494eda2 --- /dev/null +++ b/debian/smokeping/etc/smokeping/config.d/Targets @@ -0,0 +1,26 @@ +*** Targets *** + +probe = FPing + +menu = Top +title = Network Latency Grapher +remark = Welcome to the SmokePing website of xxx Company. \ + Here you will learn all about the latency of our network. + ++ Test +menu= Targets +#parents = owner:/Test/James location:/ + +++ James + +menu = James +title =James +alerts = someloss +slaves = boomer slave2 +host = james.address + +++ MultiHost + +menu = Multihost +title = James and James as seen from Boomer +host = /Test/James /Test/James~boomer diff --git a/debian/smokeping/etc/smokeping/config.d/pathnames b/debian/smokeping/etc/smokeping/config.d/pathnames new file mode 100644 index 0000000..1aba4cf --- /dev/null +++ b/debian/smokeping/etc/smokeping/config.d/pathnames @@ -0,0 +1,8 @@ +sendmail = /usr/sbin/sendmail +imgcache = /usr/cache +imgurl = cache +datadir = /usr/data +piddir = /usr/var +smokemail = /usr/etc/smokemail.dist +tmail = /usr/etc/tmail.dist +dyndir = /var/lib/smokeping/__cgi diff --git a/debian/smokeping/etc/smokeping/smokemail b/debian/smokeping/etc/smokeping/smokemail new file mode 100644 index 0000000..129be0f --- /dev/null +++ b/debian/smokeping/etc/smokeping/smokemail @@ -0,0 +1,65 @@ +From: <##FROM##> +To: <##TO##> +Subject: SmokePing Agent + +Hi, + +Please execute the attached Perl Script on your computer. It will register +your IP with SmokePing. You have to rerun this script at least every time +your IP changes. You can run the script as often as you want. + +The script is written in Perl. If you don't have Perl available on your +system, you must have a Windows Box. You can easily fix this problem by +downloading ActivePerl from www.activestate.com + +As soon as you have run the SmokePing Agent, the SmokePing server will +start monitoring your host. Check out: +<##URL##>?target=<##PATH##> + +Cheers +<##OWNER##> + +------------8<------------------------ +#!/usr/bin/perl -w + +my $url = '<##URL##>'; +my $path = '<##PATH##>'; +my $secret = '<##SECRET##>'; + +use strict; +use IO::Socket; + +my $post="target=${path}&secret=${secret}"; +my $clen=length $post; + +$url =~ m|http://([^/]+)(/.+)|; +my $host = $1; +my $script = $2; + +my $remote = IO::Socket::INET->new( Proto => "tcp", + PeerAddr => $host, + PeerPort => "http(80)", + ); +exit 0 unless $remote; +$remote->autoflush(1); + +print $remote <<"REQUEST"; +POST $script HTTP/1.0\r +User-Agent: smokeping-agent/1.0\r +Host: ${host}:80\r +Pragma: no-cache\r +Content-Length: ${clen}\r +Content-Type: application/x-www-form-urlencoded\r +\r +${post}\r +REQUEST + +my $head = 1; +while (<$remote>) { + /^\s*$/ && do {$head=0;next}; + print unless $head; +} + +close $remote; +exit; +------------8<------------------------ diff --git a/debian/smokeping/etc/smokeping/smokeping_secrets b/debian/smokeping/etc/smokeping/smokeping_secrets new file mode 100644 index 0000000..6cf6a43 --- /dev/null +++ b/debian/smokeping/etc/smokeping/smokeping_secrets @@ -0,0 +1,3 @@ +host1:mysecret +host2:yoursecret +boomer:lkasdf93uhhfdfddf diff --git a/debian/smokeping/etc/smokeping/tmail b/debian/smokeping/etc/smokeping/tmail new file mode 100644 index 0000000..a9d7bbf --- /dev/null +++ b/debian/smokeping/etc/smokeping/tmail @@ -0,0 +1,132 @@ +MIME-Version: 1.0 +Content-Type: text/html + + + +IT System Availability Report + + + + + +
+Put your logo hereXXXX IT System Availability
+

+

+


+

+<##SUMMARY##> +

+

+ + + + + + + +
Quarterly DetailMonthly DetailWeekly DetailDaily Detail
+
+

+

+<##DAYDETAIL##> +
+

+

+<##WEEKDETAIL##> +
+

+

+<##MONTHDETAIL##> +
+

+

+<##QUARTERDETAIL##> +
+ diff --git a/debian/smokeping/usr/lib/BER.pm b/debian/smokeping/usr/lib/BER.pm new file mode 100644 index 0000000..739b48d --- /dev/null +++ b/debian/smokeping/usr/lib/BER.pm @@ -0,0 +1,913 @@ +### -*- mode: Perl -*- +###################################################################### +### BER (Basic Encoding Rules) encoding and decoding. +###################################################################### +### Copyright (c) 1995-2008, Simon Leinen. +### +### This program is free software; you can redistribute it under the +### "Artistic License 2.0" included in this distribution +### (file "Artistic"). +###################################################################### +### This module implements encoding and decoding of ASN.1-based data +### structures using the Basic Encoding Rules (BER). Only the subset +### necessary for SNMP is implemented. +###################################################################### +### Created by: Simon Leinen +### +### Contributions and fixes by: +### +### Andrzej Tobola : Added long String decode +### Tobias Oetiker : Added 5 Byte Integer decode ... +### Dave Rand : Added SysUpTime decode +### Philippe Simonet : Support larger subids +### Yufang HU : Support even larger subids +### Mike Mitchell : New generalized encode_int() +### Mike Diehn : encode_ip_address() +### Rik Hoorelbeke : encode_oid() fix +### Brett T Warden : pretty UInteger32 +### Bert Driehuis : Handle SNMPv2 exception codes +### Jakob Ilves (/IlvJa) : PDU decoding +### Jan Kasprzak : Fix for PDU syntax check +### Milen Pavlov : Recognize variant length for ints +###################################################################### + +package BER; + +require 5.002; + +use strict; +use vars qw(@ISA @EXPORT $VERSION $pretty_print_timeticks + %pretty_printer %default_printer $errmsg); +use Exporter; + +$VERSION = '1.05'; + +@ISA = qw(Exporter); + +@EXPORT = qw(context_flag constructor_flag + encode_int encode_int_0 encode_null encode_oid + encode_sequence encode_tagged_sequence + encode_string encode_ip_address encode_timeticks + encode_uinteger32 encode_counter32 encode_counter64 + encode_gauge32 + decode_sequence decode_by_template + pretty_print pretty_print_timeticks + hex_string hex_string_of_type + encoded_oid_prefix_p errmsg + register_pretty_printer unregister_pretty_printer); + +### Variables + +## Bind this to zero if you want to avoid that TimeTicks are converted +## into "human readable" strings containing days, hours, minutes and +## seconds. +## +## If the variable is zero, pretty_print will simply return an +## unsigned integer representing hundredths of seconds. +## +$pretty_print_timeticks = 1; + +### Prototypes +sub encode_header ($$); +sub encode_int_0 (); +sub encode_int ($); +sub encode_oid (@); +sub encode_null (); +sub encode_sequence (@); +sub encode_tagged_sequence ($@); +sub encode_string ($); +sub encode_ip_address ($); +sub encode_timeticks ($); +sub pretty_print ($); +sub pretty_using_decoder ($$); +sub pretty_string ($); +sub pretty_intlike ($); +sub pretty_unsignedlike ($); +sub pretty_oid ($); +sub pretty_uptime ($); +sub pretty_uptime_value ($); +sub pretty_ip_address ($); +sub pretty_generic_sequence ($); +sub register_pretty_printer ($); +sub unregister_pretty_printer ($); +sub hex_string ($); +sub hex_string_of_type ($$); +sub decode_oid ($); +sub decode_by_template; +sub decode_by_template_2; +sub decode_sequence ($); +sub decode_int ($); +sub decode_intlike ($); +sub decode_unsignedlike ($); +sub decode_intlike_s ($$); +sub decode_string ($); +sub decode_length ($@); +sub encoded_oid_prefix_p ($$); +sub decode_subid ($$$); +sub decode_generic_tlv ($); +sub error (@); +sub template_error ($$$); + +sub version () { $VERSION; } + +### Flags for different types of tags + +sub universal_flag { 0x00 } +sub application_flag { 0x40 } +sub context_flag { 0x80 } +sub private_flag { 0xc0 } + +sub primitive_flag { 0x00 } +sub constructor_flag { 0x20 } + +### Universal tags + +sub boolean_tag { 0x01 } +sub int_tag { 0x02 } +sub bit_string_tag { 0x03 } +sub octet_string_tag { 0x04 } +sub null_tag { 0x05 } +sub object_id_tag { 0x06 } +sub sequence_tag { 0x10 } +sub set_tag { 0x11 } +sub uptime_tag { 0x43 } + +### Flag for length octet announcing multi-byte length field + +sub long_length { 0x80 } + +### SNMP specific tags + +sub snmp_ip_address_tag { 0x00 | application_flag () } +sub snmp_counter32_tag { 0x01 | application_flag () } +sub snmp_gauge32_tag { 0x02 | application_flag () } +sub snmp_timeticks_tag { 0x03 | application_flag () } +sub snmp_opaque_tag { 0x04 | application_flag () } +sub snmp_nsap_address_tag { 0x05 | application_flag () } +sub snmp_counter64_tag { 0x06 | application_flag () } +sub snmp_uinteger32_tag { 0x07 | application_flag () } + +## Error codes (SNMPv2 and later) +## +sub snmp_nosuchobject { context_flag () | 0x00 } +sub snmp_nosuchinstance { context_flag () | 0x01 } +sub snmp_endofmibview { context_flag () | 0x02 } + +### pretty-printer initialization code. Create a hash with +### the most common types of pretty-printer routines. + +BEGIN { + $default_printer{int_tag()} = \&pretty_intlike; + $default_printer{snmp_counter32_tag()} = \&pretty_unsignedlike; + $default_printer{snmp_gauge32_tag()} = \&pretty_unsignedlike; + $default_printer{snmp_counter64_tag()} = \&pretty_unsignedlike; + $default_printer{snmp_uinteger32_tag()} = \&pretty_unsignedlike; + $default_printer{octet_string_tag()} = \&pretty_string; + $default_printer{object_id_tag()} = \&pretty_oid; + $default_printer{snmp_ip_address_tag()} = \&pretty_ip_address; + + %pretty_printer = %default_printer; +} + +#### Encoding + +sub encode_header ($$) { + my ($type,$length) = @_; + return pack ("C C", $type, $length) if $length < 128; + return pack ("C C C", $type, long_length | 1, $length) if $length < 256; + return pack ("C C n", $type, long_length | 2, $length) if $length < 65536; + return error ("Cannot encode length $length yet"); +} + +sub encode_int_0 () { + return pack ("C C C", 2, 1, 0); +} + +sub encode_int ($) { + return encode_intlike ($_[0], int_tag); +} + +sub encode_uinteger32 ($) { + return encode_intlike ($_[0], snmp_uinteger32_tag); +} + +sub encode_counter32 ($) { + return encode_intlike ($_[0], snmp_counter32_tag); +} + +sub encode_counter64 ($) { + return encode_intlike ($_[0], snmp_counter64_tag); +} + +sub encode_gauge32 ($) { + return encode_intlike ($_[0], snmp_gauge32_tag); +} + +sub encode_intlike ($$) { + my ($int, $tag)=@_; + my ($sign, $val, @vals); + $sign = ($int >= 0) ? 0 : 0xff; + if (ref $int && $int->isa ("Math::BigInt")) { + for(;;) { + $val = $int->copy()->bmod (256); + unshift(@vals, $val); + return encode_header ($tag, $#vals + 1).pack ("C*", @vals) + if ($int >= -128 && $int < 128); + $int->bsub ($sign)->bdiv (256); + } + } else { + for(;;) { + $val = $int & 0xff; + unshift(@vals, $val); + return encode_header ($tag, $#vals + 1).pack ("C*", @vals) + if ($int >= -128 && $int < 128); + $int -= $sign, $int = int($int / 256); + } + } +} + +sub encode_oid (@) { + my @oid = @_; + my ($result,$subid); + + $result = ''; + ## Ignore leading empty sub-ID. The favourite reason for + ## those to occur is that people cut&paste numeric OIDs from + ## CMU/UCD SNMP including the leading dot. + shift @oid if $oid[0] eq ''; + + return error ("Object ID too short: ", join('.',@oid)) + if $#oid < 1; + ## The first two subids in an Object ID are encoded as a single + ## byte in BER, according to a funny convention. This poses + ## restrictions on the ranges of those subids. In the past, I + ## didn't check for those. But since so many people try to use + ## OIDs in CMU/UCD SNMP's format and leave out the mib-2 or + ## enterprises prefix, I introduced this check to catch those + ## errors. + ## + return error ("first subid too big in Object ID ", join('.',@oid)) + if $oid[0] > 2; + $result = shift (@oid) * 40; + $result += shift @oid; + return error ("second subid too big in Object ID ", join('.',@oid)) + if $result > 255; + $result = pack ("C", $result); + foreach $subid (@oid) { + if ( ($subid>=0) && ($subid<128) ){ #7 bits long subid + $result .= pack ("C", $subid); + } elsif ( ($subid>=128) && ($subid<16384) ){ #14 bits long subid + $result .= pack ("CC", 0x80 | $subid >> 7, $subid & 0x7f); + } + elsif ( ($subid>=16384) && ($subid<2097152) ) {#21 bits long subid + $result .= pack ("CCC", + 0x80 | (($subid>>14) & 0x7f), + 0x80 | (($subid>>7) & 0x7f), + $subid & 0x7f); + } elsif ( ($subid>=2097152) && ($subid<268435456) ){ #28 bits long subid + $result .= pack ("CCCC", + 0x80 | (($subid>>21) & 0x7f), + 0x80 | (($subid>>14) & 0x7f), + 0x80 | (($subid>>7) & 0x7f), + $subid & 0x7f); + } elsif ( ($subid>=268435456) && ($subid<4294967296) ){ #32 bits long subid + $result .= pack ("CCCCC", + 0x80 | (($subid>>28) & 0x0f), #mask the bits beyond 32 + 0x80 | (($subid>>21) & 0x7f), + 0x80 | (($subid>>14) & 0x7f), + 0x80 | (($subid>>7) & 0x7f), + $subid & 0x7f); + } else { + return error ("Cannot encode subid $subid"); + } + } + encode_header (object_id_tag, length $result).$result; +} + +sub encode_null () { encode_header (null_tag, 0); } +sub encode_sequence (@) { encode_tagged_sequence (sequence_tag, @_); } + +sub encode_tagged_sequence ($@) { + my ($tag,$result); + + $tag = shift @_; + $result = join '',@_; + return encode_header ($tag | constructor_flag, length $result).$result; +} + +sub encode_string ($) { + my ($string)=@_; + return encode_header (octet_string_tag, length $string).$string; +} + +sub encode_ip_address ($) { + my ($addr)=@_; + my @octets; + + if (length $addr == 4) { + ## Four bytes... let's suppose that this is a binary IP address + ## in network byte order. + return encode_header (snmp_ip_address_tag, length $addr).$addr; + } elsif (@octets = ($addr =~ /^([0-9]+)\.([0-9]+)\.([0-9]+)\.([0-9]+)$/)) { + return encode_ip_address (pack ("CCCC", @octets)); + } else { + return error ("IP address must be four bytes long or a dotted-quad"); + } +} + +sub encode_timeticks ($) { + my ($tt) = @_; + return encode_intlike ($tt, snmp_timeticks_tag); +} + +#### Decoding + +sub pretty_print ($) { + my ($packet) = @_; + return undef unless defined $packet; + my $result = ord (substr ($packet, 0, 1)); + if (exists ($pretty_printer{$result})) { + my $c_ref = $pretty_printer{$result}; + return &$c_ref ($packet); + } + return ($pretty_print_timeticks + ? pretty_uptime ($packet) + : pretty_unsignedlike ($packet)) + if $result == uptime_tag; + return "(null)" if $result == null_tag; + return error ("Exception code: noSuchObject") if $result == snmp_nosuchobject; + return error ("Exception code: noSuchInstance") if $result == snmp_nosuchinstance; + return error ("Exception code: endOfMibView") if $result == snmp_endofmibview; + + # IlvJa + # pretty print sequences and their contents. + + my $ctx_cons_flags = context_flag | constructor_flag; + + if($result == (&constructor_flag | &sequence_tag) # sequence + || $result == (0 | $ctx_cons_flags) #get_request + || $result == (1 | $ctx_cons_flags) #getnext_request + || $result == (2 | $ctx_cons_flags) #response + || $result == (3 | $ctx_cons_flags) #set_request + || $result == (4 | $ctx_cons_flags) #trap_request + || $result == (5 | $ctx_cons_flags) #getbulk_request + || $result == (6 | $ctx_cons_flags) #inform_request + || $result == (7 | $ctx_cons_flags) #trap2_request + ) + { + my $pretty_result = pretty_generic_sequence($packet); + $pretty_result =~ s/^/ /gm; #Indent. + + my $seq_type_desc = + { + (constructor_flag | sequence_tag) => "Sequence", + (0 | $ctx_cons_flags) => "GetRequest", + (1 | $ctx_cons_flags) => "GetNextRequest", + (2 | $ctx_cons_flags) => "Response", + (3 | $ctx_cons_flags) => "SetRequest", + (4 | $ctx_cons_flags) => "Trap", + (5 | $ctx_cons_flags) => "GetBulkRequest", + (6 | $ctx_cons_flags) => "InformRequest", + (7 | $ctx_cons_flags) => "SNMPv2-Trap", + (8 | $ctx_cons_flags) => "Report", + }->{($result)}; + + return $seq_type_desc . "{\n" . $pretty_result . "\n}"; + } + + return sprintf ("#", $result); +} + +sub pretty_using_decoder ($$) { + my ($decoder, $packet) = @_; + my ($decoded,$rest); + ($decoded,$rest) = &$decoder ($packet); + return error ("Junk after object") unless $rest eq ''; + return $decoded; +} + +sub pretty_string ($) { + pretty_using_decoder (\&decode_string, $_[0]); +} + +sub pretty_intlike ($) { + my $decoded = pretty_using_decoder (\&decode_intlike, $_[0]); + $decoded; +} + +sub pretty_unsignedlike ($) { + return pretty_using_decoder (\&decode_unsignedlike, $_[0]); +} + +sub pretty_oid ($) { + my ($oid) = shift; + my ($result,$subid,$next); + my (@oid); + $result = ord (substr ($oid, 0, 1)); + return error ("Object ID expected") unless $result == object_id_tag; + ($result, $oid) = decode_length ($oid, 1); + return error ("inconsistent length in OID") unless $result == length $oid; + @oid = (); + $subid = ord (substr ($oid, 0, 1)); + push @oid, int ($subid / 40); + push @oid, $subid % 40; + $oid = substr ($oid, 1); + while ($oid ne '') { + $subid = ord (substr ($oid, 0, 1)); + if ($subid < 128) { + $oid = substr ($oid, 1); + push @oid, $subid; + } else { + $next = $subid; + $subid = 0; + while ($next >= 128) { + $subid = ($subid << 7) + ($next & 0x7f); + $oid = substr ($oid, 1); + $next = ord (substr ($oid, 0, 1)); + } + $subid = ($subid << 7) + $next; + $oid = substr ($oid, 1); + push @oid, $subid; + } + } + join ('.', @oid); +} + +sub pretty_uptime ($) { + my ($packet,$uptime); + + ($uptime,$packet) = &decode_unsignedlike (@_); + pretty_uptime_value ($uptime); +} + +sub pretty_uptime_value ($) { + my ($uptime) = @_; + my ($seconds,$minutes,$hours,$days,$result); + ## We divide the uptime by hundred since we're not interested in + ## sub-second precision. + $uptime = int ($uptime / 100); + + $days = int ($uptime / (60 * 60 * 24)); + $uptime %= (60 * 60 * 24); + + $hours = int ($uptime / (60 * 60)); + $uptime %= (60 * 60); + + $minutes = int ($uptime / 60); + $seconds = $uptime % 60; + + if ($days == 0){ + $result = sprintf ("%d:%02d:%02d", $hours, $minutes, $seconds); + } elsif ($days == 1) { + $result = sprintf ("%d day, %d:%02d:%02d", + $days, $hours, $minutes, $seconds); + } else { + $result = sprintf ("%d days, %d:%02d:%02d", + $days, $hours, $minutes, $seconds); + } + return $result; +} + + +sub pretty_ip_address ($) { + my $pdu = shift; + my ($length, $rest); + return error ("IP Address tag (".snmp_ip_address_tag.") expected") + unless ord (substr ($pdu, 0, 1)) == snmp_ip_address_tag; + ($length,$pdu) = decode_length ($pdu, 1); + return error ("Length of IP address should be four") + unless $length == 4; + sprintf "%d.%d.%d.%d", unpack ("CCCC", $pdu); +} + +# IlvJa +# Returns a string with the pretty prints of all +# the elements in the sequence. +sub pretty_generic_sequence ($) { + my ($pdu) = shift; + + my $rest; + + my $type = ord substr ($pdu, 0 ,1); + my $flags = context_flag | constructor_flag; + + return error (sprintf ("Tag 0x%x is not a valid sequence tag",$type)) + unless ($type == (&constructor_flag | &sequence_tag) # sequence + || $type == (0 | $flags) #get_request + || $type == (1 | $flags) #getnext_request + || $type == (2 | $flags) #response + || $type == (3 | $flags) #set_request + || $type == (4 | $flags) #trap_request + || $type == (5 | $flags) #getbulk_request + || $type == (6 | $flags) #inform_request + || $type == (7 | $flags) #trap2_request + ); + + my $curelem; + my $pretty_result; # Holds the pretty printed sequence. + my $pretty_elem; # Holds the pretty printed current elem. + my $first_elem = 'true'; + + # Cut away the first Tag and Length from $packet and then + # init $rest with that. + (undef, $rest) = decode_length ($pdu, 1); + while($rest) + { + ($curelem,$rest) = decode_generic_tlv($rest); + $pretty_elem = pretty_print($curelem); + + $pretty_result .= "\n" if not $first_elem; + $pretty_result .= $pretty_elem; + + # The rest of the iterations are not related to the + # first element of the sequence so.. + $first_elem = '' if $first_elem; + } + return $pretty_result; +} + +sub hex_string ($) { + &hex_string_of_type ($_[0], octet_string_tag); +} + +sub hex_string_of_type ($$) { + my ($pdu, $wanted_type) = @_; + my ($length); + return error ("BER tag ".$wanted_type." expected") + unless ord (substr ($pdu, 0, 1)) == $wanted_type; + ($length,$pdu) = decode_length ($pdu, 1); + hex_string_aux ($pdu); +} + +sub hex_string_aux ($) { + my ($binary_string) = @_; + my ($c, $result); + $result = ''; + for $c (unpack "C*", $binary_string) { + $result .= sprintf "%02x", $c; + } + $result; +} + +sub decode_oid ($) { + my ($pdu) = @_; + my ($result,$pdu_rest); + my (@result); + $result = ord (substr ($pdu, 0, 1)); + return error ("Object ID expected") unless $result == object_id_tag; + ($result, $pdu_rest) = decode_length ($pdu, 1); + return error ("Short PDU") + if $result > length $pdu_rest; + @result = (substr ($pdu, 0, $result + (length ($pdu) - length ($pdu_rest))), + substr ($pdu_rest, $result)); + @result; +} + +# IlvJa +# This takes a PDU and returns a two element list consisting of +# the first element found in the PDU (whatever it is) and the +# rest of the PDU +sub decode_generic_tlv ($) { + my ($pdu) = @_; + my (@result); + my ($elemlength,$pdu_rest) = decode_length ($pdu, 1); + @result = (# Extract the first element. + substr ($pdu, 0, $elemlength + (length ($pdu) + - length ($pdu_rest) + ) + ), + #Extract the rest of the PDU. + substr ($pdu_rest, $elemlength) + ); + @result; +} + +sub decode_by_template { + my ($pdu) = shift; + local ($_) = shift; + return decode_by_template_2 ($pdu, $_, 0, 0, @_); +} + +my $template_debug = 0; + +sub decode_by_template_2 { + my ($pdu, $template, $pdu_index, $template_index); + local ($_); + $pdu = shift; + $template = $_ = shift; + $pdu_index = shift; + $template_index = shift; + my (@results); + my ($length,$expected,$read,$rest); + return undef unless defined $pdu; + while (0 < length ($_)) { + if (substr ($_, 0, 1) eq '%') { + print STDERR "template $_ ", length $pdu," bytes remaining\n" + if $template_debug; + $_ = substr ($_,1); + ++$template_index; + if (($expected) = /^(\d*|\*)\{(.*)/) { + ## %{ + $template_index += length ($expected) + 1; + print STDERR "%{\n" if $template_debug; + $_ = $2; + $expected = shift | constructor_flag if ($expected eq '*'); + $expected = sequence_tag | constructor_flag + if $expected eq ''; + return template_error ("Unexpected end of PDU", + $template, $template_index) + if !defined $pdu or $pdu eq ''; + return template_error ("Expected sequence tag $expected, got ". + ord (substr ($pdu, 0, 1)), + $template, + $template_index) + unless (ord (substr ($pdu, 0, 1)) == $expected); + (($length,$pdu) = decode_length ($pdu, 1)) + || return template_error ("cannot read length", + $template, $template_index); + return template_error ("Expected length $length, got ".length $pdu , + $template, $template_index) + unless length $pdu == $length; + } elsif (($expected,$rest) = /^(\*|)s(.*)/) { + ## %s + $template_index += length ($expected) + 1; + ($expected = shift) if $expected eq '*'; + (($read,$pdu) = decode_string ($pdu)) + || return template_error ("cannot read string", + $template, $template_index); + print STDERR "%s => $read\n" if $template_debug; + if ($expected eq '') { + push @results, $read; + } else { + return template_error ("Expected $expected, read $read", + $template, $template_index) + unless $expected eq $read; + } + $_ = $rest; + } elsif (($rest) = /^A(.*)/) { + ## %A + $template_index += 1; + { + my ($tag, $length, $value); + $tag = ord (substr ($pdu, 0, 1)); + return error ("Expected IP address, got tag ".$tag) + unless $tag == snmp_ip_address_tag; + ($length, $pdu) = decode_length ($pdu, 1); + return error ("Inconsistent length of InetAddress encoding") + if $length > length $pdu; + return template_error ("IP address must be four bytes long", + $template, $template_index) + unless $length == 4; + $read = substr ($pdu, 0, $length); + $pdu = substr ($pdu, $length); + } + print STDERR "%A => $read\n" if $template_debug; + push @results, $read; + $_ = $rest; + } elsif (/^O(.*)/) { + ## %O + $template_index += 1; + $_ = $1; + (($read,$pdu) = decode_oid ($pdu)) + || return template_error ("cannot read OID", + $template, $template_index); + print STDERR "%O => ".pretty_oid ($read)."\n" + if $template_debug; + push @results, $read; + } elsif (($expected,$rest) = /^(\d*|\*|)i(.*)/) { + ## %i + $template_index += length ($expected) + 1; + print STDERR "%i\n" if $template_debug; + $_ = $rest; + (($read,$pdu) = decode_int ($pdu)) + || return template_error ("cannot read int", + $template, $template_index); + if ($expected eq '') { + push @results, $read; + } else { + $expected = int (shift) if $expected eq '*'; + return template_error (sprintf ("Expected %d (0x%x), got %d (0x%x)", + $expected, $expected, $read, $read), + $template, $template_index) + unless ($expected == $read) + } + } elsif (($rest) = /^u(.*)/) { + ## %u + $template_index += 1; + print STDERR "%u\n" if $template_debug; + $_ = $rest; + (($read,$pdu) = decode_unsignedlike ($pdu)) + || return template_error ("cannot read uptime", + $template, $template_index); + push @results, $read; + } elsif (/^\@(.*)/) { + ## %@ + $template_index += 1; + print STDERR "%@\n" if $template_debug; + $_ = $1; + push @results, $pdu; + $pdu = ''; + } else { + return template_error ("Unknown decoding directive in template: $_", + $template, $template_index); + } + } else { + if (substr ($_, 0, 1) ne substr ($pdu, 0, 1)) { + return template_error ("Expected ".substr ($_, 0, 1).", got ".substr ($pdu, 0, 1), + $template, $template_index); + } + $_ = substr ($_,1); + $pdu = substr ($pdu,1); + } + } + return template_error ("PDU too long", $template, $template_index) + if length ($pdu) > 0; + return template_error ("PDU too short", $template, $template_index) + if length ($_) > 0; + @results; +} + +sub decode_sequence ($) { + my ($pdu) = @_; + my ($result); + my (@result); + $result = ord (substr ($pdu, 0, 1)); + return error ("Sequence expected") + unless $result == (sequence_tag | constructor_flag); + ($result, $pdu) = decode_length ($pdu, 1); + return error ("Short PDU") + if $result > length $pdu; + @result = (substr ($pdu, 0, $result), substr ($pdu, $result)); + @result; +} + +sub decode_int ($) { + my ($pdu) = @_; + my $tag = ord (substr ($pdu, 0, 1)); + return error ("Integer expected, found tag ".$tag) + unless $tag == int_tag; + decode_intlike ($pdu); +} + +sub decode_intlike ($) { + decode_intlike_s ($_[0], 1); +} + +sub decode_unsignedlike ($) { + decode_intlike_s ($_[0], 0); +} + +my $have_math_bigint_p = 0; + +sub decode_intlike_s ($$) { + my ($pdu, $signedp) = @_; + my ($length,$result); + ($length,$pdu) = decode_length ($pdu, 1); + my $ptr = 0; + $result = unpack ($signedp ? "c" : "C", substr ($pdu, $ptr++, 1)); + if ($length > 5 || ($length == 5 && $result > 0)) { + require 'Math/BigInt.pm' unless $have_math_bigint_p++; + $result = new Math::BigInt ($result); + } + while (--$length > 0) { + $result *= 256; + $result += unpack ("C", substr ($pdu, $ptr++, 1)); + } + ($result, substr ($pdu, $ptr)); +} + +sub decode_string ($) { + my ($pdu) = shift; + my ($result); + $result = ord (substr ($pdu, 0, 1)); + return error ("Expected octet string, got tag ".$result) + unless $result == octet_string_tag; + ($result, $pdu) = decode_length ($pdu, 1); + return error ("Short PDU") + if $result > length $pdu; + return (substr ($pdu, 0, $result), substr ($pdu, $result)); +} + +sub decode_length ($@) { + my ($pdu) = shift; + my $index = shift || 0; + my ($result); + my (@result); + $result = ord (substr ($pdu, $index, 1)); + if ($result & long_length) { + if ($result == (long_length | 1)) { + @result = (ord (substr ($pdu, $index+1, 1)), substr ($pdu, $index+2)); + } elsif ($result == (long_length | 2)) { + @result = ((ord (substr ($pdu, $index+1, 1)) << 8) + + ord (substr ($pdu, $index+2, 1)), substr ($pdu, $index+3)); + } else { + return error ("Unsupported length"); + } + } else { + @result = ($result, substr ($pdu, $index+1)); + } + @result; +} + +# This takes a hashref that specifies functions to call when +# the specified value type is being printed. It returns the +# number of functions that were registered. +sub register_pretty_printer($) +{ + my ($h_ref) = shift; + my ($type, $val, $cnt); + + $cnt = 0; + while(($type, $val) = each %$h_ref) { + if (ref $val eq "CODE") { + $pretty_printer{$type} = $val; + $cnt++; + } + } + return($cnt); +} + +# This takes a hashref that specifies functions to call when +# the specified value type is being printed. It removes the +# functions from the list for the types specified. +# It returns the number of functions that were unregistered. +sub unregister_pretty_printer($) +{ + my ($h_ref) = shift; + my ($type, $val, $cnt); + + $cnt = 0; + while(($type, $val) = each %$h_ref) { + if ((exists ($pretty_printer{$type})) + && ($pretty_printer{$type} == $val)) { + if (exists($default_printer{$type})) { + $pretty_printer{$type} = $default_printer{$type}; + } else { + delete $pretty_printer{$type}; + } + $cnt++; + } + } + return($cnt); +} + +#### OID prefix check + +### encoded_oid_prefix_p OID1 OID2 +### +### OID1 and OID2 should be BER-encoded OIDs. +### The function returns non-zero iff OID1 is a prefix of OID2. +### This can be used in the termination condition of a loop that walks +### a table using GetNext or GetBulk. +### +sub encoded_oid_prefix_p ($$) { + my ($oid1, $oid2) = @_; + my ($i1, $i2); + my ($l1, $l2); + my ($subid1, $subid2); + return error ("OID tag expected") unless ord (substr ($oid1, 0, 1)) == object_id_tag; + return error ("OID tag expected") unless ord (substr ($oid2, 0, 1)) == object_id_tag; + ($l1,$oid1) = decode_length ($oid1, 1); + ($l2,$oid2) = decode_length ($oid2, 1); + for ($i1 = 0, $i2 = 0; + $i1 < $l1 && $i2 < $l2; + ++$i1, ++$i2) { + ($subid1,$i1) = &decode_subid ($oid1, $i1, $l1); + ($subid2,$i2) = &decode_subid ($oid2, $i2, $l2); + return 0 unless $subid1 == $subid2; + } + return $i2 if $i1 == $l1; + return 0; +} + +### decode_subid OID INDEX +### +### Decodes a subid field from a BER-encoded object ID. +### Returns two values: the field, and the index of the last byte that +### was actually decoded. +### +sub decode_subid ($$$) { + my ($oid, $i, $l) = @_; + my $subid = 0; + my $next; + + while (($next = ord (substr ($oid, $i, 1))) >= 128) { + $subid = ($subid << 7) + ($next & 0x7f); + ++$i; + return error ("decoding object ID: short field") + unless $i < $l; + } + return (($subid << 7) + $next, $i); +} + +sub error (@) { + $errmsg = join ("",@_); + return undef; +} + +sub template_error ($$$) { + my ($errmsg, $template, $index) = @_; + return error ($errmsg."\n ".$template."\n ".(' ' x $index)."^"); +} + +1; diff --git a/debian/smokeping/usr/lib/SNMP_Session.pm b/debian/smokeping/usr/lib/SNMP_Session.pm new file mode 100644 index 0000000..4b9ccf9 --- /dev/null +++ b/debian/smokeping/usr/lib/SNMP_Session.pm @@ -0,0 +1,1123 @@ +### -*- mode: Perl -*- +###################################################################### +### SNMP Request/Response Handling +###################################################################### +### Copyright (c) 1995-2008, Simon Leinen. +### +### This program is free software; you can redistribute it under the +### "Artistic License 2.0" included in this distribution +### (file "Artistic"). +###################################################################### +### The abstract class SNMP_Session defines objects that can be used +### to communicate with SNMP entities. It has methods to send +### requests to and receive responses from an agent. +### +### Two instantiable subclasses are defined: +### SNMPv1_Session implements SNMPv1 (RFC 1157) functionality +### SNMPv2c_Session implements community-based SNMPv2. +###################################################################### +### Created by: Simon Leinen +### +### Contributions and fixes by: +### +### Matthew Trunnell +### Tobias Oetiker +### Heine Peters +### Daniel L. Needles +### Mike Mitchell +### Clinton Wong +### Alan Nichols +### Mike McCauley +### Andrew W. Elble +### Brett T Warden : pretty UInteger32 +### Michael Deegan +### Sergio Macedo +### Jakob Ilves (/IlvJa) : PDU capture +### Valerio Bontempi : IPv6 support +### Lorenzo Colitti : IPv6 support +### Philippe Simonet : Export avoid... +### Luc Pauwels : use_16bit_request_ids +### Andrew Cornford-Matheson : inform +### Gerry Dalton : strict subs bug +### Mike Fischer : pass MSG_DONTWAIT to recv() +###################################################################### + +package SNMP_Session; + +require 5.002; + +use strict; +use Exporter; +use vars qw(@ISA $VERSION @EXPORT $errmsg + $suppress_warnings + $default_avoid_negative_request_ids + $default_use_16bit_request_ids); +use Socket; +use BER '1.05'; +use Carp; + +sub map_table ($$$ ); +sub map_table_4 ($$$$); +sub map_table_start_end ($$$$$$); +sub index_compare ($$); +sub oid_diff ($$); + +$VERSION = '1.13'; + +@ISA = qw(Exporter); + +@EXPORT = qw(errmsg suppress_warnings index_compare oid_diff recycle_socket ipv6available); + +my $default_debug = 0; + +### Default initial timeout (in seconds) waiting for a response PDU +### after a request is sent. Note that when a request is retried, the +### timeout is increased by BACKOFF (see below). +### +my $default_timeout = 2.0; + +### Default number of attempts to get a reply for an SNMP request. If +### no response is received after TIMEOUT seconds, the request is +### resent and a new response awaited with a longer timeout (see the +### documentation on BACKOFF below). The "retries" value should be at +### least 1, because the first attempt counts, too (the name "retries" +### is confusing, sorry for that). +### +my $default_retries = 5; + +### Default backoff factor for SNMP_Session objects. This factor is +### used to increase the TIMEOUT every time an SNMP request is +### retried. +### +my $default_backoff = 1.0; + +### Default value for maxRepetitions. This specifies how many table +### rows are requested in getBulk requests. Used when walking tables +### using getBulk (only available in SNMPv2(c) and later). If this is +### too small, then a table walk will need unnecessarily many +### request/response exchanges. If it is too big, the agent may +### compute many variables after the end of the table. It is +### recommended to set this explicitly for each table walk by using +### map_table_4(). +### +my $default_max_repetitions = 12; + +### Default value for "avoid_negative_request_ids". +### +### Set this to non-zero if you have agents that have trouble with +### negative request IDs, and don't forget to complain to your agent +### vendor. According to the spec (RFC 1905), the request-id is an +### Integer32, i.e. its range is from -(2^31) to (2^31)-1. However, +### some agents erroneously encode the response ID as an unsigned, +### which prevents this code from matching such responses to requests. +### +$SNMP_Session::default_avoid_negative_request_ids = 0; + +### Default value for "use_16bit_request_ids". +### +### Set this to non-zero if you have agents that use 16bit request IDs, +### and don't forget to complain to your agent vendor. +### +$SNMP_Session::default_use_16bit_request_ids = 0; + +### Whether all SNMP_Session objects should share a single UDP socket. +### +$SNMP_Session::recycle_socket = 0; + +### IPv6 initialization code: check that IPv6 libraries are available, +### and if so load them. + +### We store the length of an IPv6 socket address structure in the class +### so we can determine if a socket address is IPv4 or IPv6 just by checking +### its length. The proper way to do this would be to use sockaddr_family(), +### but this function is only available in recent versions of Socket.pm. +my $ipv6_addr_len; + +### Flags to be passed to recv() when non-blocking behavior is +### desired. On most POSIX-like systems this will be set to +### MSG_DONTWAIT, on other systems we leave it at zero. +### +my $dont_wait_flags; + +BEGIN { + $ipv6_addr_len = undef; + $SNMP_Session::ipv6available = 0; + $dont_wait_flags = 0; + + if (eval {local $SIG{__DIE__};require Socket6;} && + eval {local $SIG{__DIE__};require IO::Socket::INET6; IO::Socket::INET6->VERSION("1.26");}) { + import Socket6; + $ipv6_addr_len = length(pack_sockaddr_in6(161, inet_pton(AF_INET6(), "::1"))); + $SNMP_Session::ipv6available = 1; + } + eval 'local $SIG{__DIE__};local $SIG{__WARN__};$dont_wait_flags = MSG_DONTWAIT();'; +} + +### Cache for reusable sockets. This is indexed by socket (address) +### family, so that we don't try to reuse an IPv4 socket for IPv6 or +### vice versa. +### +my %the_socket = (); + +$SNMP_Session::errmsg = ''; +$SNMP_Session::suppress_warnings = 0; + +sub get_request { 0 | context_flag () }; +sub getnext_request { 1 | context_flag () }; +sub get_response { 2 | context_flag () }; +sub set_request { 3 | context_flag () }; +sub trap_request { 4 | context_flag () }; +sub getbulk_request { 5 | context_flag () }; +sub inform_request { 6 | context_flag () }; +sub trap2_request { 7 | context_flag () }; + +sub standard_udp_port { 161 }; + +sub open +{ + return SNMPv1_Session::open (@_); +} + +sub timeout { $_[0]->{timeout} } +sub retries { $_[0]->{retries} } +sub backoff { $_[0]->{backoff} } +sub set_timeout { + my ($session, $timeout) = @_; + croak ("timeout ($timeout) must be a positive number") unless $timeout > 0.0; + $session->{'timeout'} = $timeout; +} +sub set_retries { + my ($session, $retries) = @_; + croak ("retries ($retries) must be a non-negative integer") + unless $retries == int ($retries) && $retries >= 0; + $session->{'retries'} = $retries; +} +sub set_backoff { + my ($session, $backoff) = @_; + croak ("backoff ($backoff) must be a number >= 1.0") + unless $backoff == int ($backoff) && $backoff >= 1.0; + $session->{'backoff'} = $backoff; +} + +sub encode_request_3 ($$$@) { + my($this, $reqtype, $encoded_oids_or_pairs, $i1, $i2) = @_; + my($request); + local($_); + + $this->{request_id} = ($this->{request_id} == 0x7fffffff) + ? -0x80000000 : $this->{request_id}+1; + $this->{request_id} += 0x80000000 + if ($this->{avoid_negative_request_ids} && $this->{request_id} < 0); + $this->{request_id} &= 0x0000ffff + if ($this->{use_16bit_request_ids}); + foreach $_ (@{$encoded_oids_or_pairs}) { + if (ref ($_) eq 'ARRAY') { + $_ = &encode_sequence ($_->[0], $_->[1]) + || return $this->ber_error ("encoding pair"); + } else { + $_ = &encode_sequence ($_, encode_null()) + || return $this->ber_error ("encoding value/null pair"); + } + } + $request = encode_tagged_sequence + ($reqtype, + encode_int ($this->{request_id}), + defined $i1 ? encode_int ($i1) : encode_int_0 (), + defined $i2 ? encode_int ($i2) : encode_int_0 (), + encode_sequence (@{$encoded_oids_or_pairs})) + || return $this->ber_error ("encoding request PDU"); + return $this->wrap_request ($request); +} + +sub encode_get_request { + my($this, @oids) = @_; + return encode_request_3 ($this, get_request, \@oids); +} + +sub encode_getnext_request { + my($this, @oids) = @_; + return encode_request_3 ($this, getnext_request, \@oids); +} + +sub encode_getbulk_request { + my($this, $non_repeaters, $max_repetitions, @oids) = @_; + return encode_request_3 ($this, getbulk_request, \@oids, + $non_repeaters, $max_repetitions); +} + +sub encode_set_request { + my($this, @encoded_pairs) = @_; + return encode_request_3 ($this, set_request, \@encoded_pairs); +} + +sub encode_trap_request ($$$$$$@) { + my($this, $ent, $agent, $gen, $spec, $dt, @pairs) = @_; + my($request); + local($_); + + foreach $_ (@pairs) { + if (ref ($_) eq 'ARRAY') { + $_ = &encode_sequence ($_->[0], $_->[1]) + || return $this->ber_error ("encoding pair"); + } else { + $_ = &encode_sequence ($_, encode_null()) + || return $this->ber_error ("encoding value/null pair"); + } + } + $request = encode_tagged_sequence + (trap_request, $ent, $agent, $gen, $spec, $dt, encode_sequence (@pairs)) + || return $this->ber_error ("encoding trap PDU"); + return $this->wrap_request ($request); +} + +sub encode_v2_trap_request ($@) { + my($this, @pairs) = @_; + + return encode_request_3($this, trap2_request, \@pairs); +} + +sub decode_get_response { + my($this, $response) = @_; + my @rest; + @{$this->{'unwrapped'}}; +} + +sub decode_trap_request ($$) { + my ($this, $trap) = @_; + my ($snmp_version, $community, $ent, $agent, $gen, $spec, $dt, + $request_id, $error_status, $error_index, + $bindings); + ($snmp_version, $community, + $ent, $agent, + $gen, $spec, $dt, + $bindings) + = decode_by_template ($trap, "%{%i%s%*{%O%A%i%i%u%{%@", + trap_request); + if (!defined $snmp_version) { + ($snmp_version, $community, + $request_id, $error_status, $error_index, + $bindings) + = decode_by_template ($trap, "%{%i%s%*{%i%i%i%{%@", + trap2_request); + if (!defined $snmp_version) { + ($snmp_version, $community,$request_id, $error_status, $error_index, $bindings) + = decode_by_template ($trap, "%{%i%s%*{%i%i%i%{%@", inform_request); + } + return $this->error_return ("v2 trap/inform request contained errorStatus/errorIndex " + .$error_status."/".$error_index) + if defined $error_status && defined $error_index + && ($error_status != 0 || $error_index != 0); + } + if (!defined $snmp_version) { + return $this->error_return ("BER error decoding trap:\n ".$BER::errmsg); + } + return ($community, $ent, $agent, $gen, $spec, $dt, $bindings); +} + +sub wait_for_response { + my($this) = shift; + my($timeout) = shift || 10.0; + my($rin,$win,$ein) = ('','',''); + my($rout,$wout,$eout); + vec($rin,$this->sockfileno,1) = 1; + select($rout=$rin,$wout=$win,$eout=$ein,$timeout); +} + +sub get_request_response ($@) { + my($this, @oids) = @_; + return $this->request_response_5 ($this->encode_get_request (@oids), + get_response, \@oids, 1); +} + +sub set_request_response ($@) { + my($this, @pairs) = @_; + return $this->request_response_5 ($this->encode_set_request (@pairs), + get_response, \@pairs, 1); +} + +sub getnext_request_response ($@) { + my($this,@oids) = @_; + return $this->request_response_5 ($this->encode_getnext_request (@oids), + get_response, \@oids, 1); +} + +sub getbulk_request_response ($$$@) { + my($this,$non_repeaters,$max_repetitions,@oids) = @_; + return $this->request_response_5 + ($this->encode_getbulk_request ($non_repeaters,$max_repetitions,@oids), + get_response, \@oids, 1); +} + +sub trap_request_send ($$$$$$@) { + my($this, $ent, $agent, $gen, $spec, $dt, @pairs) = @_; + my($req); + + $req = $this->encode_trap_request ($ent, $agent, $gen, $spec, $dt, @pairs); + ## Encoding may have returned an error. + return undef unless defined $req; + $this->send_query($req) + || return $this->error ("send_trap: $!"); + return 1; +} + +sub v2_trap_request_send ($$$@) { + my($this, $trap_oid, $dt, @pairs) = @_; + my @sysUptime_OID = ( 1,3,6,1,2,1,1,3 ); + my @snmpTrapOID_OID = ( 1,3,6,1,6,3,1,1,4,1 ); + my($req); + + unshift @pairs, [encode_oid (@snmpTrapOID_OID,0), + encode_oid (@{$trap_oid})]; + unshift @pairs, [encode_oid (@sysUptime_OID,0), + encode_timeticks ($dt)]; + $req = $this->encode_v2_trap_request (@pairs); + ## Encoding may have returned an error. + return undef unless defined $req; + $this->send_query($req) + || return $this->error ("send_trap: $!"); + return 1; +} + +sub request_response_5 ($$$$$) { + my ($this, $req, $response_tag, $oids, $errorp) = @_; + my $retries = $this->retries; + my $timeout = $this->timeout; + my ($nfound, $timeleft); + + ## Encoding may have returned an error. + return undef unless defined $req; + + $timeleft = $timeout; + while ($retries > 0) { + $this->send_query ($req) + || return $this->error ("send_query: $!"); + # IlvJa + # Add request pdu to capture_buffer + push @{$this->{'capture_buffer'}}, $req + if (defined $this->{'capture_buffer'} + and ref $this->{'capture_buffer'} eq 'ARRAY'); + # + wait_for_response: + ($nfound, $timeleft) = $this->wait_for_response($timeleft); + if ($nfound > 0) { + my($response_length); + + $response_length + = $this->receive_response_3 ($response_tag, $oids, $errorp, 1); + if ($response_length) { + # IlvJa + # Add response pdu to capture_buffer + push (@{$this->{'capture_buffer'}}, + substr($this->{'pdu_buffer'}, 0, $response_length) + ) + if (defined $this->{'capture_buffer'} + and ref $this->{'capture_buffer'} eq 'ARRAY'); + # + return $response_length; + } elsif (defined ($response_length)) { + goto wait_for_response; + # A response has been received, but for a different + # request ID or from a different IP address. + } else { + return undef; + } + } else { + ## No response received - retry + --$retries; + $timeout *= $this->backoff; + $timeleft = $timeout; + } + } + # IlvJa + # Add empty packet to capture_buffer + push @{$this->{'capture_buffer'}}, "" + if (defined $this->{'capture_buffer'} + and ref $this->{'capture_buffer'} eq 'ARRAY'); + # + $this->error ("no response received"); +} + +sub map_table ($$$) { + my ($session, $columns, $mapfn) = @_; + return $session->map_table_4 ($columns, $mapfn, + $session->default_max_repetitions ()); +} + +sub map_table_4 ($$$$) { + my ($session, $columns, $mapfn, $max_repetitions) = @_; + return $session->map_table_start_end ($columns, $mapfn, + "", undef, + $max_repetitions); +} + +sub map_table_start_end ($$$$$$) { + my ($session, $columns, $mapfn, $start, $end, $max_repetitions) = @_; + + my @encoded_oids; + my $call_counter = 0; + my $base_index = $start; + + do { + foreach (@encoded_oids = @{$columns}) { + $_=encode_oid (@{$_},split '\.',$base_index) + || return $session->ber_error ("encoding OID $base_index"); + } + if ($session->getnext_request_response (@encoded_oids)) { + my $response = $session->pdu_buffer; + my ($bindings) = $session->decode_get_response ($response); + my $smallest_index = undef; + my @collected_values = (); + + my @bases = @{$columns}; + while ($bindings ne '') { + my ($binding, $oid, $value); + my $base = shift @bases; + ($binding, $bindings) = decode_sequence ($bindings); + ($oid, $value) = decode_by_template ($binding, "%O%@"); + + my $out_index; + + $out_index = &oid_diff ($base, $oid); + my $cmp; + if (!defined $smallest_index + || ($cmp = index_compare ($out_index,$smallest_index)) == -1) { + $smallest_index = $out_index; + grep ($_=undef, @collected_values); + push @collected_values, $value; + } elsif ($cmp == 1) { + push @collected_values, undef; + } else { + push @collected_values, $value; + } + } + (++$call_counter, + &$mapfn ($smallest_index, @collected_values)) + if defined $smallest_index; + $base_index = $smallest_index; + } else { + return undef; + } + } + while (defined $base_index + && (!defined $end || index_compare ($base_index, $end) < 0)); + $call_counter; +} + +sub index_compare ($$) { + my ($i1, $i2) = @_; + $i1 = '' unless defined $i1; + $i2 = '' unless defined $i2; + if ($i1 eq '') { + return $i2 eq '' ? 0 : 1; + } elsif ($i2 eq '') { + return 1; + } elsif (!$i1) { + return $i2 eq '' ? 1 : !$i2 ? 0 : 1; + } elsif (!$i2) { + return -1; + } else { + my ($f1,$r1) = split('\.',$i1,2); + my ($f2,$r2) = split('\.',$i2,2); + + if ($f1 < $f2) { + return -1; + } elsif ($f1 > $f2) { + return 1; + } else { + return index_compare ($r1,$r2); + } + } +} + +sub oid_diff ($$) { + my($base, $full) = @_; + my $base_dotnot = join ('.',@{$base}); + my $full_dotnot = BER::pretty_oid ($full); + + return undef unless substr ($full_dotnot, 0, length $base_dotnot) + eq $base_dotnot + && substr ($full_dotnot, length $base_dotnot, 1) eq '.'; + substr ($full_dotnot, length ($base_dotnot)+1); +} + +# Pretty_address returns a human-readable representation of an IPv4 or IPv6 address. +sub pretty_address { + my($addr) = shift; + my($port, $addrunpack, $addrstr); + + # Disable strict subs to stop old versions of perl from + # complaining about AF_INET6 when Socket6 is not available + + if( (defined $ipv6_addr_len) && (length $addr == $ipv6_addr_len)) { + ($port,$addrunpack) = unpack_sockaddr_in6 ($addr); + $addrstr = inet_ntop (AF_INET6(), $addrunpack); + } else { + ($port,$addrunpack) = unpack_sockaddr_in ($addr); + $addrstr = inet_ntoa ($addrunpack); + } + + return sprintf ("[%s].%d", $addrstr, $port); +} + +sub version { $VERSION; } + + +sub error_return ($$) { + my ($this,$message) = @_; + $SNMP_Session::errmsg = $message; + unless ($SNMP_Session::suppress_warnings) { + $message =~ s/^/ /mg; + carp ("Error:\n".$message."\n"); + } + return undef; +} + +sub error ($$) { + my ($this,$message) = @_; + my $session = $this->to_string; + $SNMP_Session::errmsg = $message."\n".$session; + unless ($SNMP_Session::suppress_warnings) { + $session =~ s/^/ /mg; + $message =~ s/^/ /mg; + carp ("SNMP Error:\n".$SNMP_Session::errmsg."\n"); + } + return undef; +} + +sub ber_error ($$) { + my ($this,$type) = @_; + my ($errmsg) = $BER::errmsg; + + $errmsg =~ s/^/ /mg; + return $this->error ("$type:\n$errmsg"); +} + +package SNMPv1_Session; + +use strict qw(vars subs); # see above +use vars qw(@ISA); +use SNMP_Session; +use Socket; +use BER; +use IO::Socket; +use Carp; + +BEGIN { + if($SNMP_Session::ipv6available) { + import IO::Socket::INET6; + import Socket6; + } +} + +@ISA = qw(SNMP_Session); + +sub snmp_version { 0 } + +# Supports both IPv4 and IPv6. +# Numeric IPv6 addresses must be passed between square brackets [] +sub open { + my($this, + $remote_hostname,$community,$port, + $max_pdu_len,$local_port,$max_repetitions, + $local_hostname,$ipv4only) = @_; + my($remote_addr,$socket,$sockfamily); + + $ipv4only = 1 unless defined $ipv4only; + $sockfamily = AF_INET; + + $community = 'public' unless defined $community; + $port = SNMP_Session::standard_udp_port unless defined $port; + $max_pdu_len = 8000 unless defined $max_pdu_len; + $max_repetitions = $default_max_repetitions + unless defined $max_repetitions; + + if ($ipv4only || ! $SNMP_Session::ipv6available) { + # IPv4-only code, uses only Socket and INET calls + if (defined $remote_hostname) { + $remote_addr = inet_aton ($remote_hostname) + or return $this->error_return ("can't resolve \"$remote_hostname\" to IP address"); + } + if ($SNMP_Session::recycle_socket && exists $the_socket{$sockfamily}) { + $socket = $the_socket{$sockfamily}; + } else { + $socket = IO::Socket::INET->new(Proto => 17, + Type => SOCK_DGRAM, + LocalAddr => $local_hostname, + LocalPort => $local_port) + || return $this->error_return ("creating socket: $!"); + $the_socket{$sockfamily} = $socket + if $SNMP_Session::recycle_socket; + } + $remote_addr = pack_sockaddr_in ($port, $remote_addr) + if defined $remote_addr; + } else { + # IPv6-capable code. Will use IPv6 or IPv4 depending on the address. + # Uses Socket6 and INET6 calls. + + # If it's a numeric IPv6 addresses, remove square brackets + if ($remote_hostname =~ /^\[(.*)\]$/) { + $remote_hostname = $1; + } + + my (@res, $socktype_tmp, $proto_tmp, $canonname_tmp); + @res = getaddrinfo($remote_hostname, $port, AF_UNSPEC, SOCK_DGRAM); + ($sockfamily, $socktype_tmp, $proto_tmp, $remote_addr, $canonname_tmp) = @res; + if (scalar(@res) < 5) { + return $this->error_return ("can't resolve \"$remote_hostname\" to IPv6 address"); + } + + if ($SNMP_Session::recycle_socket && exists $the_socket{$sockfamily}) { + $socket = $the_socket{$sockfamily}; + } elsif ($sockfamily == AF_INET) { + $socket = IO::Socket::INET->new(Proto => 17, + Type => SOCK_DGRAM, + LocalAddr => $local_hostname, + LocalPort => $local_port) + || return $this->error_return ("creating socket: $!"); + } else { + $socket = IO::Socket::INET6->new(Proto => 17, + Type => SOCK_DGRAM, + LocalAddr => $local_hostname, + LocalPort => $local_port) + || return $this->error_return ("creating socket: $!"); + $the_socket{$sockfamily} = $socket + if $SNMP_Session::recycle_socket; + } + } + bless { + 'sock' => $socket, + 'sockfileno' => fileno ($socket), + 'community' => $community, + 'remote_hostname' => $remote_hostname, + 'remote_addr' => $remote_addr, + 'sockfamily' => $sockfamily, + 'max_pdu_len' => $max_pdu_len, + 'pdu_buffer' => '\0' x $max_pdu_len, + 'request_id' => (int (rand 0x10000) << 16) + + int (rand 0x10000) - 0x80000000, + 'timeout' => $default_timeout, + 'retries' => $default_retries, + 'backoff' => $default_backoff, + 'debug' => $default_debug, + 'error_status' => 0, + 'error_index' => 0, + 'default_max_repetitions' => $max_repetitions, + 'use_getbulk' => 1, + 'lenient_source_address_matching' => 1, + 'lenient_source_port_matching' => 1, + 'avoid_negative_request_ids' => $SNMP_Session::default_avoid_negative_request_ids, + 'use_16bit_request_ids' => $SNMP_Session::default_use_16bit_request_ids, + 'capture_buffer' => undef, + }; +} + +sub open_trap_session (@) { + my ($this, $port) = @_; + $port = 162 unless defined $port; + return $this->open (undef, "", 161, undef, $port); +} + +sub sock { $_[0]->{sock} } +sub sockfileno { $_[0]->{sockfileno} } +sub remote_addr { $_[0]->{remote_addr} } +sub pdu_buffer { $_[0]->{pdu_buffer} } +sub max_pdu_len { $_[0]->{max_pdu_len} } +sub default_max_repetitions { + defined $_[1] + ? $_[0]->{default_max_repetitions} = $_[1] + : $_[0]->{default_max_repetitions} } +sub debug { defined $_[1] ? $_[0]->{debug} = $_[1] : $_[0]->{debug} } + +sub close { + my($this) = shift; + ## Avoid closing the socket if it may be shared with other session + ## objects. + if (! exists $the_socket{$this->{sockfamily}} + or $this->sock ne $the_socket{$this->{sockfamily}}) { + close ($this->sock) || $this->error ("close: $!"); + } +} + +sub wrap_request { + my($this) = shift; + my($request) = shift; + + encode_sequence (encode_int ($this->snmp_version), + encode_string ($this->{community}), + $request) + || return $this->ber_error ("wrapping up request PDU"); +} + +my @error_status_code = qw(noError tooBig noSuchName badValue readOnly + genErr noAccess wrongType wrongLength + wrongEncoding wrongValue noCreation + inconsistentValue resourceUnavailable + commitFailed undoFailed authorizationError + notWritable inconsistentName); + +sub unwrap_response_5b { + my ($this,$response,$tag,$oids,$errorp) = @_; + my ($community,$request_id,@rest,$snmpver); + + ($snmpver,$community,$request_id, + $this->{error_status}, + $this->{error_index}, + @rest) + = decode_by_template ($response, "%{%i%s%*{%i%i%i%{%@", + $tag); + return $this->ber_error ("Error decoding response PDU") + unless defined $snmpver; + return $this->error ("Received SNMP response with unknown snmp-version field $snmpver") + unless $snmpver == $this->snmp_version; + if ($this->{error_status} != 0) { + if ($errorp) { + my ($oid, $errmsg); + $errmsg = $error_status_code[$this->{error_status}] || $this->{error_status}; + $oid = $oids->[$this->{error_index}-1] + if $this->{error_index} > 0 && $this->{error_index}-1 <= $#{$oids}; + $oid = $oid->[0] + if ref($oid) eq 'ARRAY'; + return ($community, $request_id, + $this->error ("Received SNMP response with error code\n" + ." error status: $errmsg\n" + ." index ".$this->{error_index} + .(defined $oid + ? " (OID: ".&BER::pretty_oid($oid).")" + : ""))); + } else { + if ($this->{error_index} == 1) { + @rest[$this->{error_index}-1..$this->{error_index}] = (); + } + } + } + ($community, $request_id, @rest); +} + +sub send_query ($$) { + my ($this,$query) = @_; + send ($this->sock,$query,0,$this->remote_addr); +} + +## Compare two sockaddr_in structures for equality. This is used when +## matching incoming responses with outstanding requests. Previous +## versions of the code simply did a bytewise comparison ("eq") of the +## two sockaddr_in structures, but this didn't work on some systems +## where sockaddr_in contains other elements than just the IP address +## and port number, notably FreeBSD. +## +## We allow for varying degrees of leniency when checking the source +## address. By default we now ignore it altogether, because there are +## agents that don't respond from UDP port 161, and there are agents +## that don't respond from the IP address the query had been sent to. +## +## The address family is stored in the session object. We could use +## sockaddr_family() to determine it from the sockaddr, but this function +## is only available in recent versions of Socket.pm. +sub sa_equal_p ($$$) { + my ($this, $sa1, $sa2) = @_; + my ($p1,$a1,$p2,$a2); + + # Disable strict subs to stop old versions of perl from + # complaining about AF_INET6 when Socket6 is not available + if($this->{'sockfamily'} == AF_INET) { + # IPv4 addresses + ($p1,$a1) = unpack_sockaddr_in ($sa1); + ($p2,$a2) = unpack_sockaddr_in ($sa2); + } elsif($this->{'sockfamily'} == AF_INET6()) { + # IPv6 addresses + ($p1,$a1) = unpack_sockaddr_in6 ($sa1); + ($p2,$a2) = unpack_sockaddr_in6 ($sa2); + } else { + return 0; + } + use strict "subs"; + + if (! $this->{'lenient_source_address_matching'}) { + return 0 if $a1 ne $a2; + } + if (! $this->{'lenient_source_port_matching'}) { + return 0 if $p1 != $p2; + } + return 1; +} + +sub receive_response_3 { + my ($this, $response_tag, $oids, $errorp, $dont_block_p) = @_; + my ($remote_addr); + my $flags = 0; + $flags = $dont_wait_flags if defined $dont_block_p and $dont_block_p; + $remote_addr = recv ($this->sock,$this->{'pdu_buffer'},$this->max_pdu_len,$flags); + return $this->error ("receiving response PDU: $!") + unless defined $remote_addr; + return $this->error ("short (".length $this->{'pdu_buffer'} + ." bytes) response PDU") + unless length $this->{'pdu_buffer'} > 2; + my $response = $this->{'pdu_buffer'}; + ## + ## Check whether the response came from the address we've sent the + ## request to. If this is not the case, we should probably ignore + ## it, as it may relate to another request. + ## + if (defined $this->{'remote_addr'}) { + if (! $this->sa_equal_p ($remote_addr, $this->{'remote_addr'})) { + if ($this->{'debug'} && !$SNMP_Session::recycle_socket) { + carp ("Response came from ".&SNMP_Session::pretty_address($remote_addr) + .", not ".&SNMP_Session::pretty_address($this->{'remote_addr'})) + unless $SNMP_Session::suppress_warnings; + } + return 0; + } + } + $this->{'last_sender_addr'} = $remote_addr; + my ($response_community, $response_id, @unwrapped) + = $this->unwrap_response_5b ($response, $response_tag, + $oids, $errorp); + if ($response_community ne $this->{community} + || $response_id ne $this->{request_id}) { + if ($this->{'debug'}) { + carp ("$response_community != $this->{community}") + unless $SNMP_Session::suppress_warnings + || $response_community eq $this->{community}; + carp ("$response_id != $this->{request_id}") + unless $SNMP_Session::suppress_warnings + || $response_id == $this->{request_id}; + } + return 0; + } + if (!defined $unwrapped[0]) { + $this->{'unwrapped'} = undef; + return undef; + } + $this->{'unwrapped'} = \@unwrapped; + return length $this->pdu_buffer; +} + +sub receive_trap { + my ($this) = @_; + my ($remote_addr, $iaddr, $port, $trap); + $remote_addr = recv ($this->sock,$this->{'pdu_buffer'},$this->max_pdu_len,0); + return undef unless $remote_addr; + + if( (defined $ipv6_addr_len) && (length $remote_addr == $ipv6_addr_len)) { + ($port,$iaddr) = unpack_sockaddr_in6($remote_addr); + } else { + ($port,$iaddr) = unpack_sockaddr_in($remote_addr); + } + + $trap = $this->{'pdu_buffer'}; + return ($trap, $iaddr, $port); +} + +sub describe { + my($this) = shift; + print $this->to_string (),"\n"; +} + +sub to_string { + my($this) = shift; + my ($class,$prefix); + + $class = ref($this); + $prefix = ' ' x (length ($class) + 2); + ($class + .(defined $this->{remote_hostname} + ? " (remote host: \"".$this->{remote_hostname}."\"" + ." ".&SNMP_Session::pretty_address ($this->remote_addr).")" + : " (no remote host specified)") + ."\n" + .$prefix." community: \"".$this->{'community'}."\"\n" + .$prefix." request ID: ".$this->{'request_id'}."\n" + .$prefix."PDU bufsize: ".$this->{'max_pdu_len'}." bytes\n" + .$prefix." timeout: ".$this->{timeout}."s\n" + .$prefix." retries: ".$this->{retries}."\n" + .$prefix." backoff: ".$this->{backoff}.")"); +## sprintf ("SNMP_Session: %s (size %d timeout %g)", +## &SNMP_Session::pretty_address ($this->remote_addr),$this->max_pdu_len, +## $this->timeout); +} + +### SNMP Agent support +### contributed by Mike McCauley +### +sub receive_request { + my ($this) = @_; + my ($remote_addr, $iaddr, $port, $request); + + $remote_addr = recv($this->sock, $this->{'pdu_buffer'}, + $this->{'max_pdu_len'}, 0); + return undef unless $remote_addr; + + if( (defined $ipv6_addr_len) && (length $remote_addr == $ipv6_addr_len)) { + ($port,$iaddr) = unpack_sockaddr_in6($remote_addr); + } else { + ($port,$iaddr) = unpack_sockaddr_in($remote_addr); + } + + $request = $this->{'pdu_buffer'}; + return ($request, $iaddr, $port); +} + +sub decode_request { + my ($this, $request) = @_; + my ($snmp_version, $community, $requestid, $errorstatus, $errorindex, $bindings); + + ($snmp_version, $community, $requestid, $errorstatus, $errorindex, $bindings) + = decode_by_template ($request, "%{%i%s%*{%i%i%i%@", SNMP_Session::get_request); + if (defined $snmp_version) + { + # Its a valid get_request + return(SNMP_Session::get_request, $requestid, $bindings, $community); + } + + ($snmp_version, $community, $requestid, $errorstatus, $errorindex, $bindings) + = decode_by_template ($request, "%{%i%s%*{%i%i%i%@", SNMP_Session::getnext_request); + if (defined $snmp_version) + { + # Its a valid getnext_request + return(SNMP_Session::getnext_request, $requestid, $bindings, $community); + } + + ($snmp_version, $community, $requestid, $errorstatus, $errorindex, $bindings) + = decode_by_template ($request, "%{%i%s%*{%i%i%i%@", SNMP_Session::set_request); + if (defined $snmp_version) + { + # Its a valid set_request + return(SNMP_Session::set_request, $requestid, $bindings, $community); + } + + # Something wrong with this packet + # Decode failed + return undef; +} + +package SNMPv2c_Session; +use strict qw(vars subs); # see above +use vars qw(@ISA); +use SNMP_Session; +use BER; +use Carp; + +@ISA = qw(SNMPv1_Session); + +sub snmp_version { 1 } + +sub open { + my $session = SNMPv1_Session::open (@_); + return undef unless defined $session; + return bless $session; +} + +## map_table_start_end using get-bulk +## +sub map_table_start_end ($$$$$$) { + my ($session, $columns, $mapfn, $start, $end, $max_repetitions) = @_; + + my @encoded_oids; + my $call_counter = 0; + my $base_index = $start; + my $ncols = @{$columns}; + my @collected_values = (); + + if (! $session->{'use_getbulk'}) { + return SNMP_Session::map_table_start_end + ($session, $columns, $mapfn, $start, $end, $max_repetitions); + } + $max_repetitions = $session->default_max_repetitions + unless defined $max_repetitions; + + for (;;) { + foreach (@encoded_oids = @{$columns}) { + $_=encode_oid (@{$_},split '\.',$base_index) + || return $session->ber_error ("encoding OID $base_index"); + } + if ($session->getbulk_request_response (0, $max_repetitions, + @encoded_oids)) { + my $response = $session->pdu_buffer; + my ($bindings) = $session->decode_get_response ($response); + my @colstack = (); + my $k = 0; + my $j; + + my $min_index = undef; + + my @bases = @{$columns}; + my $n_bindings = 0; + my $binding; + + ## Copy all bindings into the colstack. + ## The colstack is a vector of vectors. + ## It contains one vector for each "repeater" variable. + ## + while ($bindings ne '') { + ($binding, $bindings) = decode_sequence ($bindings); + my ($oid, $value) = decode_by_template ($binding, "%O%@"); + + push @{$colstack[$k]}, [$oid, $value]; + ++$k; $k = 0 if $k >= $ncols; + } + + ## Now collect rows from the column stack: + ## + ## Iterate through the column stacks to find the smallest + ## index, collecting the values for that index in + ## @collected_values. + ## + ## As long as a row can be assembled, the map function is + ## called on it and the iteration proceeds. + ## + $base_index = undef; + walk_rows_from_pdu: + for (;;) { + my $min_index = undef; + + for ($k = 0; $k < $ncols; ++$k) { + $collected_values[$k] = undef; + my $pair = $colstack[$k]->[0]; + unless (defined $pair) { + $min_index = undef; + last walk_rows_from_pdu; + } + my $this_index + = SNMP_Session::oid_diff ($columns->[$k], $pair->[0]); + if (defined $this_index) { + my $cmp + = !defined $min_index + ? -1 + : SNMP_Session::index_compare + ($this_index, $min_index); + if ($cmp == -1) { + for ($j = 0; $j < $k; ++$j) { + unshift (@{$colstack[$j]}, + [$min_index, + $collected_values[$j]]); + $collected_values[$j] = undef; + } + $min_index = $this_index; + } + if ($cmp <= 0) { + $collected_values[$k] = $pair->[1]; + shift @{$colstack[$k]}; + } + } + } + ($base_index = undef), last + if !defined $min_index; + last + if defined $end + and SNMP_Session::index_compare ($min_index, $end) >= 0; + &$mapfn ($min_index, @collected_values); + ++$call_counter; + $base_index = $min_index; + } + } else { + return undef; + } + last if !defined $base_index; + last + if defined $end + and SNMP_Session::index_compare ($base_index, $end) >= 0; + } + $call_counter; +} + +1; diff --git a/debian/smokeping/usr/lib/SNMP_util.pm b/debian/smokeping/usr/lib/SNMP_util.pm new file mode 100644 index 0000000..20226f5 --- /dev/null +++ b/debian/smokeping/usr/lib/SNMP_util.pm @@ -0,0 +1,1321 @@ +### - *- mode: Perl -*- +###################################################################### +### SNMP_util -- SNMP utilities using SNMP_Session.pm and BER.pm +###################################################################### +### Copyright (c) 1998-2008, Mike Mitchell. +### +### This program is free software; you can redistribute it under the +### "Artistic License 2.0" included in this distribution +### (file "Artistic"). +###################################################################### +### Created by: Mike Mitchell +### +### Contributions and fixes by: +### +### Tobias Oetiker : Basic layout +### Simon Leinen : SNMP_session.pm/BER.pm +### Jeff Allen : length() of undefined value +### Johannes Demel : MIB file parse problem +### Simon Leinen : more OIDs from Interface MIB +### Jacques Supcik : Specify local IP, port +### Tobias Oetiker : HASH as first OID to set SNMP options +### Simon Leinen : 'undefined port' bug +### Daniel McDonald : request for getbulk support +### Laurent Girod : code for snmpwalkhash +### Ian Duplisse : MIB parsing suggestions +### Jakob Ilves : return_array_refs for snmpwalk() +### Valerio Bontempi : IPv6 support +### Lorenzo Colitti : IPv6 support +### Joerg Kummer : TimeTicks support in snmpset() +### Christopher J. Tengi : Gauge32 support in snmpset() +### Nicolai Petri : hashref passing for snmpwalkhash() +###################################################################### + +package SNMP_util; + +require 5.004; + +use strict; +use vars qw(@ISA @EXPORT $VERSION); +use Exporter; +use Carp; + +use BER "1.02"; +use SNMP_Session "1.00"; +use Socket; + +$VERSION = '1.13'; + +@ISA = qw(Exporter); + +@EXPORT = qw(snmpget snmpgetnext snmpwalk snmpset snmptrap snmpgetbulk snmpmaptable snmpmaptable4 snmpwalkhash snmpmapOID snmpMIB_to_OID snmpLoad_OID_Cache snmpQueue_MIB_File); + +# The OID numbers from RFC1213 (MIB-II) and RFC1315 (Frame Relay) +# are pre-loaded below. +%SNMP_util::OIDS = + ( + 'iso' => '1', + 'org' => '1.3', + 'dod' => '1.3.6', + 'internet' => '1.3.6.1', + 'directory' => '1.3.6.1.1', + 'mgmt' => '1.3.6.1.2', + 'mib-2' => '1.3.6.1.2.1', + 'system' => '1.3.6.1.2.1.1', + 'sysDescr' => '1.3.6.1.2.1.1.1.0', + 'sysObjectID' => '1.3.6.1.2.1.1.2.0', + 'sysUpTime' => '1.3.6.1.2.1.1.3.0', + 'sysUptime' => '1.3.6.1.2.1.1.3.0', + 'sysContact' => '1.3.6.1.2.1.1.4.0', + 'sysName' => '1.3.6.1.2.1.1.5.0', + 'sysLocation' => '1.3.6.1.2.1.1.6.0', + 'sysServices' => '1.3.6.1.2.1.1.7.0', + 'interfaces' => '1.3.6.1.2.1.2', + 'ifNumber' => '1.3.6.1.2.1.2.1.0', + 'ifTable' => '1.3.6.1.2.1.2.2', + 'ifEntry' => '1.3.6.1.2.1.2.2.1', + 'ifIndex' => '1.3.6.1.2.1.2.2.1.1', + 'ifInOctets' => '1.3.6.1.2.1.2.2.1.10', + 'ifInUcastPkts' => '1.3.6.1.2.1.2.2.1.11', + 'ifInNUcastPkts' => '1.3.6.1.2.1.2.2.1.12', + 'ifInDiscards' => '1.3.6.1.2.1.2.2.1.13', + 'ifInErrors' => '1.3.6.1.2.1.2.2.1.14', + 'ifInUnknownProtos' => '1.3.6.1.2.1.2.2.1.15', + 'ifOutOctets' => '1.3.6.1.2.1.2.2.1.16', + 'ifOutUcastPkts' => '1.3.6.1.2.1.2.2.1.17', + 'ifOutNUcastPkts' => '1.3.6.1.2.1.2.2.1.18', + 'ifOutDiscards' => '1.3.6.1.2.1.2.2.1.19', + 'ifDescr' => '1.3.6.1.2.1.2.2.1.2', + 'ifOutErrors' => '1.3.6.1.2.1.2.2.1.20', + 'ifOutQLen' => '1.3.6.1.2.1.2.2.1.21', + 'ifSpecific' => '1.3.6.1.2.1.2.2.1.22', + 'ifType' => '1.3.6.1.2.1.2.2.1.3', + 'ifMtu' => '1.3.6.1.2.1.2.2.1.4', + 'ifSpeed' => '1.3.6.1.2.1.2.2.1.5', + 'ifPhysAddress' => '1.3.6.1.2.1.2.2.1.6', + 'ifAdminHack' => '1.3.6.1.2.1.2.2.1.7', + 'ifAdminStatus' => '1.3.6.1.2.1.2.2.1.7', + 'ifOperHack' => '1.3.6.1.2.1.2.2.1.8', + 'ifOperStatus' => '1.3.6.1.2.1.2.2.1.8', + 'ifLastChange' => '1.3.6.1.2.1.2.2.1.9', + 'at' => '1.3.6.1.2.1.3', + 'atTable' => '1.3.6.1.2.1.3.1', + 'atEntry' => '1.3.6.1.2.1.3.1.1', + 'atIfIndex' => '1.3.6.1.2.1.3.1.1.1', + 'atPhysAddress' => '1.3.6.1.2.1.3.1.1.2', + 'atNetAddress' => '1.3.6.1.2.1.3.1.1.3', + 'ip' => '1.3.6.1.2.1.4', + 'ipForwarding' => '1.3.6.1.2.1.4.1', + 'ipOutRequests' => '1.3.6.1.2.1.4.10', + 'ipOutDiscards' => '1.3.6.1.2.1.4.11', + 'ipOutNoRoutes' => '1.3.6.1.2.1.4.12', + 'ipReasmTimeout' => '1.3.6.1.2.1.4.13', + 'ipReasmReqds' => '1.3.6.1.2.1.4.14', + 'ipReasmOKs' => '1.3.6.1.2.1.4.15', + 'ipReasmFails' => '1.3.6.1.2.1.4.16', + 'ipFragOKs' => '1.3.6.1.2.1.4.17', + 'ipFragFails' => '1.3.6.1.2.1.4.18', + 'ipFragCreates' => '1.3.6.1.2.1.4.19', + 'ipDefaultTTL' => '1.3.6.1.2.1.4.2', + 'ipAddrTable' => '1.3.6.1.2.1.4.20', + 'ipAddrEntry' => '1.3.6.1.2.1.4.20.1', + 'ipAdEntAddr' => '1.3.6.1.2.1.4.20.1.1', + 'ipAdEntIfIndex' => '1.3.6.1.2.1.4.20.1.2', + 'ipAdEntNetMask' => '1.3.6.1.2.1.4.20.1.3', + 'ipAdEntBcastAddr' => '1.3.6.1.2.1.4.20.1.4', + 'ipAdEntReasmMaxSize' => '1.3.6.1.2.1.4.20.1.5', + 'ipRouteTable' => '1.3.6.1.2.1.4.21', + 'ipRouteEntry' => '1.3.6.1.2.1.4.21.1', + 'ipRouteDest' => '1.3.6.1.2.1.4.21.1.1', + 'ipRouteAge' => '1.3.6.1.2.1.4.21.1.10', + 'ipRouteMask' => '1.3.6.1.2.1.4.21.1.11', + 'ipRouteMetric5' => '1.3.6.1.2.1.4.21.1.12', + 'ipRouteInfo' => '1.3.6.1.2.1.4.21.1.13', + 'ipRouteIfIndex' => '1.3.6.1.2.1.4.21.1.2', + 'ipRouteMetric1' => '1.3.6.1.2.1.4.21.1.3', + 'ipRouteMetric2' => '1.3.6.1.2.1.4.21.1.4', + 'ipRouteMetric3' => '1.3.6.1.2.1.4.21.1.5', + 'ipRouteMetric4' => '1.3.6.1.2.1.4.21.1.6', + 'ipRouteNextHop' => '1.3.6.1.2.1.4.21.1.7', + 'ipRouteType' => '1.3.6.1.2.1.4.21.1.8', + 'ipRouteProto' => '1.3.6.1.2.1.4.21.1.9', + 'ipNetToMediaTable' => '1.3.6.1.2.1.4.22', + 'ipNetToMediaEntry' => '1.3.6.1.2.1.4.22.1', + 'ipNetToMediaIfIndex' => '1.3.6.1.2.1.4.22.1.1', + 'ipNetToMediaPhysAddress' => '1.3.6.1.2.1.4.22.1.2', + 'ipNetToMediaNetAddress' => '1.3.6.1.2.1.4.22.1.3', + 'ipNetToMediaType' => '1.3.6.1.2.1.4.22.1.4', + 'ipRoutingDiscards' => '1.3.6.1.2.1.4.23', + 'ipInReceives' => '1.3.6.1.2.1.4.3', + 'ipInHdrErrors' => '1.3.6.1.2.1.4.4', + 'ipInAddrErrors' => '1.3.6.1.2.1.4.5', + 'ipForwDatagrams' => '1.3.6.1.2.1.4.6', + 'ipInUnknownProtos' => '1.3.6.1.2.1.4.7', + 'ipInDiscards' => '1.3.6.1.2.1.4.8', + 'ipInDelivers' => '1.3.6.1.2.1.4.9', + 'icmp' => '1.3.6.1.2.1.5', + 'icmpInMsgs' => '1.3.6.1.2.1.5.1', + 'icmpInTimestamps' => '1.3.6.1.2.1.5.10', + 'icmpInTimestampReps' => '1.3.6.1.2.1.5.11', + 'icmpInAddrMasks' => '1.3.6.1.2.1.5.12', + 'icmpInAddrMaskReps' => '1.3.6.1.2.1.5.13', + 'icmpOutMsgs' => '1.3.6.1.2.1.5.14', + 'icmpOutErrors' => '1.3.6.1.2.1.5.15', + 'icmpOutDestUnreachs' => '1.3.6.1.2.1.5.16', + 'icmpOutTimeExcds' => '1.3.6.1.2.1.5.17', + 'icmpOutParmProbs' => '1.3.6.1.2.1.5.18', + 'icmpOutSrcQuenchs' => '1.3.6.1.2.1.5.19', + 'icmpInErrors' => '1.3.6.1.2.1.5.2', + 'icmpOutRedirects' => '1.3.6.1.2.1.5.20', + 'icmpOutEchos' => '1.3.6.1.2.1.5.21', + 'icmpOutEchoReps' => '1.3.6.1.2.1.5.22', + 'icmpOutTimestamps' => '1.3.6.1.2.1.5.23', + 'icmpOutTimestampReps' => '1.3.6.1.2.1.5.24', + 'icmpOutAddrMasks' => '1.3.6.1.2.1.5.25', + 'icmpOutAddrMaskReps' => '1.3.6.1.2.1.5.26', + 'icmpInDestUnreachs' => '1.3.6.1.2.1.5.3', + 'icmpInTimeExcds' => '1.3.6.1.2.1.5.4', + 'icmpInParmProbs' => '1.3.6.1.2.1.5.5', + 'icmpInSrcQuenchs' => '1.3.6.1.2.1.5.6', + 'icmpInRedirects' => '1.3.6.1.2.1.5.7', + 'icmpInEchos' => '1.3.6.1.2.1.5.8', + 'icmpInEchoReps' => '1.3.6.1.2.1.5.9', + 'tcp' => '1.3.6.1.2.1.6', + 'tcpRtoAlgorithm' => '1.3.6.1.2.1.6.1', + 'tcpInSegs' => '1.3.6.1.2.1.6.10', + 'tcpOutSegs' => '1.3.6.1.2.1.6.11', + 'tcpRetransSegs' => '1.3.6.1.2.1.6.12', + 'tcpConnTable' => '1.3.6.1.2.1.6.13', + 'tcpConnEntry' => '1.3.6.1.2.1.6.13.1', + 'tcpConnState' => '1.3.6.1.2.1.6.13.1.1', + 'tcpConnLocalAddress' => '1.3.6.1.2.1.6.13.1.2', + 'tcpConnLocalPort' => '1.3.6.1.2.1.6.13.1.3', + 'tcpConnRemAddress' => '1.3.6.1.2.1.6.13.1.4', + 'tcpConnRemPort' => '1.3.6.1.2.1.6.13.1.5', + 'tcpInErrs' => '1.3.6.1.2.1.6.14', + 'tcpOutRsts' => '1.3.6.1.2.1.6.15', + 'tcpRtoMin' => '1.3.6.1.2.1.6.2', + 'tcpRtoMax' => '1.3.6.1.2.1.6.3', + 'tcpMaxConn' => '1.3.6.1.2.1.6.4', + 'tcpActiveOpens' => '1.3.6.1.2.1.6.5', + 'tcpPassiveOpens' => '1.3.6.1.2.1.6.6', + 'tcpAttemptFails' => '1.3.6.1.2.1.6.7', + 'tcpEstabResets' => '1.3.6.1.2.1.6.8', + 'tcpCurrEstab' => '1.3.6.1.2.1.6.9', + 'udp' => '1.3.6.1.2.1.7', + 'udpInDatagrams' => '1.3.6.1.2.1.7.1', + 'udpNoPorts' => '1.3.6.1.2.1.7.2', + 'udpInErrors' => '1.3.6.1.2.1.7.3', + 'udpOutDatagrams' => '1.3.6.1.2.1.7.4', + 'udpTable' => '1.3.6.1.2.1.7.5', + 'udpEntry' => '1.3.6.1.2.1.7.5.1', + 'udpLocalAddress' => '1.3.6.1.2.1.7.5.1.1', + 'udpLocalPort' => '1.3.6.1.2.1.7.5.1.2', + 'egp' => '1.3.6.1.2.1.8', + 'egpInMsgs' => '1.3.6.1.2.1.8.1', + 'egpInErrors' => '1.3.6.1.2.1.8.2', + 'egpOutMsgs' => '1.3.6.1.2.1.8.3', + 'egpOutErrors' => '1.3.6.1.2.1.8.4', + 'egpNeighTable' => '1.3.6.1.2.1.8.5', + 'egpNeighEntry' => '1.3.6.1.2.1.8.5.1', + 'egpNeighState' => '1.3.6.1.2.1.8.5.1.1', + 'egpNeighStateUps' => '1.3.6.1.2.1.8.5.1.10', + 'egpNeighStateDowns' => '1.3.6.1.2.1.8.5.1.11', + 'egpNeighIntervalHello' => '1.3.6.1.2.1.8.5.1.12', + 'egpNeighIntervalPoll' => '1.3.6.1.2.1.8.5.1.13', + 'egpNeighMode' => '1.3.6.1.2.1.8.5.1.14', + 'egpNeighEventTrigger' => '1.3.6.1.2.1.8.5.1.15', + 'egpNeighAddr' => '1.3.6.1.2.1.8.5.1.2', + 'egpNeighAs' => '1.3.6.1.2.1.8.5.1.3', + 'egpNeighInMsgs' => '1.3.6.1.2.1.8.5.1.4', + 'egpNeighInErrs' => '1.3.6.1.2.1.8.5.1.5', + 'egpNeighOutMsgs' => '1.3.6.1.2.1.8.5.1.6', + 'egpNeighOutErrs' => '1.3.6.1.2.1.8.5.1.7', + 'egpNeighInErrMsgs' => '1.3.6.1.2.1.8.5.1.8', + 'egpNeighOutErrMsgs' => '1.3.6.1.2.1.8.5.1.9', + 'egpAs' => '1.3.6.1.2.1.8.6', + 'transmission' => '1.3.6.1.2.1.10', + 'frame-relay' => '1.3.6.1.2.1.10.32', + 'frDlcmiTable' => '1.3.6.1.2.1.10.32.1', + 'frDlcmiEntry' => '1.3.6.1.2.1.10.32.1.1', + 'frDlcmiIfIndex' => '1.3.6.1.2.1.10.32.1.1.1', + 'frDlcmiState' => '1.3.6.1.2.1.10.32.1.1.2', + 'frDlcmiAddress' => '1.3.6.1.2.1.10.32.1.1.3', + 'frDlcmiAddressLen' => '1.3.6.1.2.1.10.32.1.1.4', + 'frDlcmiPollingInterval' => '1.3.6.1.2.1.10.32.1.1.5', + 'frDlcmiFullEnquiryInterval' => '1.3.6.1.2.1.10.32.1.1.6', + 'frDlcmiErrorThreshold' => '1.3.6.1.2.1.10.32.1.1.7', + 'frDlcmiMonitoredEvents' => '1.3.6.1.2.1.10.32.1.1.8', + 'frDlcmiMaxSupportedVCs' => '1.3.6.1.2.1.10.32.1.1.9', + 'frDlcmiMulticast' => '1.3.6.1.2.1.10.32.1.1.10', + 'frCircuitTable' => '1.3.6.1.2.1.10.32.2', + 'frCircuitEntry' => '1.3.6.1.2.1.10.32.2.1', + 'frCircuitIfIndex' => '1.3.6.1.2.1.10.32.2.1.1', + 'frCircuitDlci' => '1.3.6.1.2.1.10.32.2.1.2', + 'frCircuitState' => '1.3.6.1.2.1.10.32.2.1.3', + 'frCircuitReceivedFECNs' => '1.3.6.1.2.1.10.32.2.1.4', + 'frCircuitReceivedBECNs' => '1.3.6.1.2.1.10.32.2.1.5', + 'frCircuitSentFrames' => '1.3.6.1.2.1.10.32.2.1.6', + 'frCircuitSentOctets' => '1.3.6.1.2.1.10.32.2.1.7', + 'frOutOctets' => '1.3.6.1.2.1.10.32.2.1.7', + 'frCircuitReceivedFrames' => '1.3.6.1.2.1.10.32.2.1.8', + 'frCircuitReceivedOctets' => '1.3.6.1.2.1.10.32.2.1.9', + 'frInOctets' => '1.3.6.1.2.1.10.32.2.1.9', + 'frCircuitCreationTime' => '1.3.6.1.2.1.10.32.2.1.10', + 'frCircuitLastTimeChange' => '1.3.6.1.2.1.10.32.2.1.11', + 'frCircuitCommittedBurst' => '1.3.6.1.2.1.10.32.2.1.12', + 'frCircuitExcessBurst' => '1.3.6.1.2.1.10.32.2.1.13', + 'frCircuitThroughput' => '1.3.6.1.2.1.10.32.2.1.14', + 'frErrTable' => '1.3.6.1.2.1.10.32.3', + 'frErrEntry' => '1.3.6.1.2.1.10.32.3.1', + 'frErrIfIndex' => '1.3.6.1.2.1.10.32.3.1.1', + 'frErrType' => '1.3.6.1.2.1.10.32.3.1.2', + 'frErrData' => '1.3.6.1.2.1.10.32.3.1.3', + 'frErrTime' => '1.3.6.1.2.1.10.32.3.1.4', + 'frame-relay-globals' => '1.3.6.1.2.1.10.32.4', + 'frTrapState' => '1.3.6.1.2.1.10.32.4.1', + 'snmp' => '1.3.6.1.2.1.11', + 'snmpInPkts' => '1.3.6.1.2.1.11.1', + 'snmpInBadValues' => '1.3.6.1.2.1.11.10', + 'snmpInReadOnlys' => '1.3.6.1.2.1.11.11', + 'snmpInGenErrs' => '1.3.6.1.2.1.11.12', + 'snmpInTotalReqVars' => '1.3.6.1.2.1.11.13', + 'snmpInTotalSetVars' => '1.3.6.1.2.1.11.14', + 'snmpInGetRequests' => '1.3.6.1.2.1.11.15', + 'snmpInGetNexts' => '1.3.6.1.2.1.11.16', + 'snmpInSetRequests' => '1.3.6.1.2.1.11.17', + 'snmpInGetResponses' => '1.3.6.1.2.1.11.18', + 'snmpInTraps' => '1.3.6.1.2.1.11.19', + 'snmpOutPkts' => '1.3.6.1.2.1.11.2', + 'snmpOutTooBigs' => '1.3.6.1.2.1.11.20', + 'snmpOutNoSuchNames' => '1.3.6.1.2.1.11.21', + 'snmpOutBadValues' => '1.3.6.1.2.1.11.22', + 'snmpOutGenErrs' => '1.3.6.1.2.1.11.24', + 'snmpOutGetRequests' => '1.3.6.1.2.1.11.25', + 'snmpOutGetNexts' => '1.3.6.1.2.1.11.26', + 'snmpOutSetRequests' => '1.3.6.1.2.1.11.27', + 'snmpOutGetResponses' => '1.3.6.1.2.1.11.28', + 'snmpOutTraps' => '1.3.6.1.2.1.11.29', + 'snmpInBadVersions' => '1.3.6.1.2.1.11.3', + 'snmpEnableAuthenTraps' => '1.3.6.1.2.1.11.30', + 'snmpInBadCommunityNames' => '1.3.6.1.2.1.11.4', + 'snmpInBadCommunityUses' => '1.3.6.1.2.1.11.5', + 'snmpInASNParseErrs' => '1.3.6.1.2.1.11.6', + 'snmpInTooBigs' => '1.3.6.1.2.1.11.8', + 'snmpInNoSuchNames' => '1.3.6.1.2.1.11.9', + 'ifName' => '1.3.6.1.2.1.31.1.1.1.1', + 'ifInMulticastPkts' => '1.3.6.1.2.1.31.1.1.1.2', + 'ifInBroadcastPkts' => '1.3.6.1.2.1.31.1.1.1.3', + 'ifOutMulticastPkts' => '1.3.6.1.2.1.31.1.1.1.4', + 'ifOutBroadcastPkts' => '1.3.6.1.2.1.31.1.1.1.5', + 'ifHCInOctets' => '1.3.6.1.2.1.31.1.1.1.6', + 'ifHCInUcastPkts' => '1.3.6.1.2.1.31.1.1.1.7', + 'ifHCInMulticastPkts' => '1.3.6.1.2.1.31.1.1.1.8', + 'ifHCInBroadcastPkts' => '1.3.6.1.2.1.31.1.1.1.9', + 'ifHCOutOctets' => '1.3.6.1.2.1.31.1.1.1.10', + 'ifHCOutUcastPkts' => '1.3.6.1.2.1.31.1.1.1.11', + 'ifHCOutMulticastPkts' => '1.3.6.1.2.1.31.1.1.1.12', + 'ifHCOutBroadcastPkts' => '1.3.6.1.2.1.31.1.1.1.13', + 'ifLinkUpDownTrapEnable' => '1.3.6.1.2.1.31.1.1.1.14', + 'ifHighSpeed' => '1.3.6.1.2.1.31.1.1.1.15', + 'ifPromiscuousMode' => '1.3.6.1.2.1.31.1.1.1.16', + 'ifConnectorPresent' => '1.3.6.1.2.1.31.1.1.1.17', + 'ifAlias' => '1.3.6.1.2.1.31.1.1.1.18', + 'ifCounterDiscontinuityTime' => '1.3.6.1.2.1.31.1.1.1.19', + 'experimental' => '1.3.6.1.3', + 'private' => '1.3.6.1.4', + 'enterprises' => '1.3.6.1.4.1', + ); + +# GIL +my %revOIDS = (); # Reversed %SNMP_util::OIDS hash +my $RevNeeded = 1; + +my $agent_start_time = time; + +undef $SNMP_util::Host; +undef $SNMP_util::Session; +undef $SNMP_util::Version; +undef $SNMP_util::LHost; +undef $SNMP_util::IPv4only; +$SNMP_util::Debug = 0; +$SNMP_util::CacheFile = "OID_cache.txt"; +$SNMP_util::CacheLoaded = 0; +$SNMP_util::Return_array_refs = 0; +$SNMP_util::Return_hash_refs = 0; + +srand(time + $$); + +### Prototypes +sub snmpget ($@); +sub snmpgetnext ($@); +sub snmpopen ($$$); +sub snmpwalk ($@); +sub snmpwalk_flg ($$@); +sub snmpset ($@); +sub snmptrap ($$$$$@); +sub snmpgetbulk ($$$@); +sub snmpmaptable ($$@); +sub snmpmaptable4 ($$$@); +sub snmpwalkhash ($$@); +sub toOID (@); +sub snmpmapOID (@); +sub snmpMIB_to_OID ($); +sub encode_oid_with_errmsg ($); +sub Check_OID ($); +sub snmpLoad_OID_Cache ($); +sub snmpQueue_MIB_File (@); +sub MIB_fill_OID ($); + +sub version () { $VERSION; } + +# +# Start an snmp session +# +sub snmpopen ($$$) { + my($host, $type, $vars) = @_; + my($nhost, $port, $community, $lhost, $lport, $nlhost); + my($timeout, $retries, $backoff, $version); + my $v4onlystr; + + $type = 0 if (!defined($type)); + $community = "public"; + $nlhost = ""; + + ($community, $host) = ($1, $2) if ($host =~ /^(.*)@([^@]+)$/); + + # We can't split on the : character because a numeric IPv6 + # address contains a variable number of :'s + my $opts; + if( ($host =~ /^(\[.*\]):(.*)$/) or ($host =~ /^(\[.*\])$/) ) { + # Numeric IPv6 address between [] + ($host, $opts) = ($1, $2); + } else { + # Hostname or numeric IPv4 address + ($host, $opts) = split(':', $host, 2); + } + ($port, $timeout, $retries, $backoff, $version, $v4onlystr) = split(':', $opts, 6) + if(defined($opts) and (length $opts > 0) ); + + undef($version) if (defined($version) and length($version) <= 0); + $v4onlystr = "" unless defined $v4onlystr; + $version = '1' unless defined $version; + if (defined($port) and ($port =~ /^([^!]*)!(.*)$/)) { + ($port, $lhost) = ($1, $2); + $nlhost = $lhost; + ($lhost, $lport) = ($1, $2) if ($lhost =~ /^(.*)!(.*)$/); + undef($lhost) if (defined($lhost) and (length($lhost) <= 0)); + undef($lport) if (defined($lport) and (length($lport) <= 0)); + } + undef($port) if (defined($port) and length($port) <= 0); + $port = 162 if ($type == 1 and !defined($port)); + $nhost = "$community\@$host"; + $nhost .= ":" . $port if (defined($port)); + + if ((!defined($SNMP_util::Session)) + or ($SNMP_util::Host ne $nhost) + or ($SNMP_util::Version ne $version) + or ($SNMP_util::LHost ne $nlhost) + or ($SNMP_util::IPv4only ne $v4onlystr)) { + if (defined($SNMP_util::Session)) { + $SNMP_util::Session->close(); + undef $SNMP_util::Session; + undef $SNMP_util::Host; + undef $SNMP_util::Version; + undef $SNMP_util::LHost; + undef $SNMP_util::IPv4only; + } + $SNMP_util::Session = ($version =~ /^2c?$/i) + ? SNMPv2c_Session->open($host, $community, $port, undef, + $lport, undef, $lhost, ($v4onlystr eq 'v4only') ? 1:0 ) + : SNMP_Session->open($host, $community, $port, undef, + $lport, undef, $lhost, ($v4onlystr eq 'v4only') ? 1:0 ); + ($SNMP_util::Host = $nhost, $SNMP_util::Version = $version, + $SNMP_util::LHost = $nlhost, $SNMP_util::IPv4only = $v4onlystr) if defined($SNMP_util::Session); + } + + if (defined($SNMP_util::Session)) { + if (ref $vars->[0] eq 'HASH') { + my $opts = shift @$vars; + foreach $type (keys %$opts) { + if ($type eq 'return_array_refs') { + $SNMP_util::Return_array_refs = $opts->{$type}; + } elsif ($type eq 'return_hash_refs') { + $SNMP_util::Return_hash_refs = $opts->{$type}; + } else { + if (exists $SNMP_util::Session->{$type}) { + if ($type eq 'timeout') { + $SNMP_util::Session->set_timeout($opts->{$type}); + } elsif ($type eq 'retries') { + $SNMP_util::Session->set_retries($opts->{$type}); + } elsif ($type eq 'backoff') { + $SNMP_util::Session->set_backoff($opts->{$type}); + } else { + $SNMP_util::Session->{$type} = $opts->{$type}; + } + } else { + carp "SNMPopen Unknown SNMP Option Key '$type'\n" + unless ($SNMP_Session::suppress_warnings > 1); + } + } + } + } + $SNMP_util::Session->set_timeout($timeout) + if (defined($timeout) and (length($timeout) > 0)); + $SNMP_util::Session->set_retries($retries) + if (defined($retries) and (length($retries) > 0)); + $SNMP_util::Session->set_backoff($backoff) + if (defined($backoff) and (length($backoff) > 0)); + } + return $SNMP_util::Session; +} + + +# +# A restricted snmpget. +# +sub snmpget ($@) { + my($host, @vars) = @_; + my(@enoid, $var, $response, $bindings, $binding, $value, $oid, @retvals); + my $session; + + $session = &snmpopen($host, 0, \@vars); + if (!defined($session)) { + carp "SNMPGET Problem for $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + + @enoid = &toOID(@vars); + return undef unless defined $enoid[0]; + + if ($session->get_request_response(@enoid)) { + $response = $session->pdu_buffer; + ($bindings) = $session->decode_get_response($response); + while ($bindings) { + ($binding, $bindings) = decode_sequence($bindings); + ($oid, $value) = decode_by_template($binding, "%O%@"); + my $tempo = pretty_print($value); + push @retvals, $tempo; + } + return wantarray ? @retvals : $retvals[0]; + } + $var = join(' ', @vars); + carp "SNMPGET Problem for $var on $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; +} + +# +# A restricted snmpgetnext. +# +sub snmpgetnext ($@) { + my($host, @vars) = @_; + my(@enoid, $var, $response, $bindings, $binding); + my($value, $upoid, $oid, @retvals); + my($noid); + my $session; + + $session = &snmpopen($host, 0, \@vars); + if (!defined($session)) { + carp "SNMPGETNEXT Problem for $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + + @enoid = &toOID(@vars); + return undef unless defined $enoid[0]; + + undef @vars; + undef @retvals; + foreach $noid (@enoid) { + $upoid = pretty_print($noid); + push(@vars, $upoid); + } + if ($session->getnext_request_response(@enoid)) { + $response = $session->pdu_buffer; + ($bindings) = $session->decode_get_response($response); + while ($bindings) { + ($binding, $bindings) = decode_sequence($bindings); + ($oid, $value) = decode_by_template($binding, "%O%@"); + my $tempo = pretty_print($oid); + my $tempv = pretty_print($value); + push @retvals, "$tempo:$tempv"; + } + return wantarray ? @retvals : $retvals[0]; + } else { + $var = join(' ', @vars); + carp "SNMPGETNEXT Problem for $var on $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } +} + +# +# A restricted snmpwalk. +# +sub snmpwalk ($@) { + my($host, @vars) = @_; + return(&snmpwalk_flg($host, undef, @vars)); +} + +# +# Walk the MIB, putting everything you find into hashes. +# +sub snmpwalkhash($$@) { +# my($host, $hash_sub, @vars) = @_; + return(&snmpwalk_flg( @_ )); +} + +sub snmpwalk_flg ($$@) { + my($host, $hash_sub, @vars) = @_; + my(@enoid, $var, $response, $bindings, $binding); + my($value, $upoid, $oid, @retvals, @retvaltmprefs); + my($got, @nnoid, $noid, $ok, $ix, @avars); + my $session; + my(%soid); + my(%done, %rethash, $h_ref); + + $session = &snmpopen($host, 0, \@vars); + if (!defined($session)) { + carp "SNMPWALK Problem for $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + + $h_ref = (ref $vars[$#vars] eq "HASH") ? pop(@vars) : \%rethash; + + @enoid = toOID(@vars); + return undef unless defined $enoid[0]; + + # GIL + # + # Create/Refresh a reversed hash with oid -> name + # + if (defined($hash_sub) and ($RevNeeded)) { + %revOIDS = reverse %SNMP_util::OIDS; + $RevNeeded = 0; + } + + $got = 0; + @nnoid = @enoid; + undef @vars; + foreach $noid (@enoid) { + $upoid = pretty_print($noid); + push(@vars, $upoid); + } + + # @vars is the original set of walked variables. + # @avars is the current set of walked variables as the + # walk goes on. + # @vars stays static while @avars may shrink as we reach end + # of walk for individual variables during PDU exchange. + + @avars = @vars; + + # IlvJa + # + # Create temporary array of refs to return vals. + + if ($SNMP_util::Return_array_refs) { + for($ix = 0;$ix < scalar @vars; $ix++) { + my $tmparray = []; + $retvaltmprefs[$ix] = $tmparray; + $retvals[$ix] = $tmparray; + } + } + + + while(($SNMP_util::Version ne '1' and $session->{'use_getbulk'}) + ? $session->getbulk_request_response(0, + $session->default_max_repetitions(), + @nnoid) + : $session->getnext_request_response(@nnoid)) + { + $got = 1; + $response = $session->pdu_buffer; + ($bindings) = $session->decode_get_response($response); + $ix = 0; + while ($bindings) { + ($binding, $bindings) = decode_sequence($bindings); + unless ($nnoid[$ix]) { # IlvJa + $ix = ++$ix % (scalar @avars); + next; + } + ($oid, $value) = decode_by_template($binding, "%O%@"); + $ok = 0; + my $tempo = pretty_print($oid); + $noid = $avars[$ix]; # IlvJa + if ($tempo =~ /^$noid\./ or $tempo eq $noid ) { + $ok = 1; + $upoid = $noid; + } else { + # IlvJa + # + # The walk for variable $vars[$ix] has been finished as + # $nnoid[$ix] no longer is in the $avar[$ix] OID tree. + # So we exclude this variable from further requests. + + $avars[$ix] = ""; + $nnoid[$ix] = ""; + $retvaltmprefs[$ix] = undef if $SNMP_util::Return_array_refs; + } + if ($ok) { + my $tmp = encode_oid_with_errmsg ($tempo); + return undef unless defined $tmp; + if (exists($done{$tmp})) { # GIL, Ilvja + # + # We've detected a loop for $nnoid[$ix], so mark it as finished. + # Exclude this variable from further requests. + # + $avars[$ix] = ""; + $nnoid[$ix] = ""; + $retvaltmprefs[$ix] = undef if $SNMP_util::Return_array_refs; + next; + } + $nnoid[$ix] = $tmp; # Keep on walking. (IlvJa) + my $tempv = pretty_print($value); + if (defined($hash_sub)) { + # + # extract name of the oid, if possible, the rest becomes the instance + # + my $inst = ""; + my $upo = $upoid; + while (!exists($revOIDS{$upo}) and length($upo)) { + $upo =~ s/(\.\d+?)$//; + if (defined($1) and length($1)) { + $inst = $1 . $inst; + } else { + $upo = ""; + last; + } + } + if (length($upo) and exists($revOIDS{$upo})) { + $upo = $revOIDS{$upo} . $inst; + } else { + $upo = $upoid; + } + + $inst = ""; + while (!exists($revOIDS{$tempo}) and length($tempo)) { + $tempo =~ s/(\.\d+?)$//; + if (defined($1) and length($1)) { + $inst = $1 . $inst; + } else { + $tempo = ""; + last; + } + } + if (length($tempo) and exists($revOIDS{$tempo})) { + $var = $revOIDS{$tempo}; + } else { + $var = pretty_print($oid); + } + # + # call hash_sub + # + &$hash_sub($h_ref, $host, $var, $tempo, $inst, + $tempv, $upo); + } else { + if ($SNMP_util::Return_array_refs) { + $tempo=~s/^$upoid\.//; + push @{$retvaltmprefs[$ix]}, "$tempo:$tempv"; + } else { + $tempo=~s/^$upoid\.// if ($#enoid <= 0); + push @retvals, "$tempo:$tempv"; + } + } + $done{$tmp} = 1; # GIL + } + $ix = ++$ix % (scalar @avars); + } + + # Ok, @nnoid should contain the remaining variables for the + # next request. Some or all entries in @nnoid might be the empty + # string. If the nth element in @nnoid is "" that means that + # the walk related to the nth variable in the last request has been + # completed and we should not include that var in subsequent reqs. + + # Clean up both @nnoid and @avars so "" elements are removed. + @nnoid = grep (($_), @nnoid); + @avars = grep (($_), @avars); + @retvaltmprefs = grep (($_), @retvaltmprefs); + + last if ($#nnoid < 0); # @nnoid empty means we are done walking. + } + if ($got) { + if (defined($hash_sub)) { + return ($h_ref) if ($SNMP_util::Return_hash_refs); + return (%$h_ref); + } else { + return (@retvals); + } + } else { + $var = join(' ', @vars); + carp "SNMPWALK Problem for $var on $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } +} + +# +# A restricted snmpset. +# +sub snmpset($@) { + my($host, @vars) = @_; + my(@enoid, $response, $bindings, $binding); + my($oid, @retvals, $type, $value, $val); + my $session; + + $session = &snmpopen($host, 0, \@vars); + if (!defined($session)) { + carp "SNMPSET Problem for $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + + while(@vars) { + ($oid) = toOID((shift @vars)); + $type = shift @vars; + $value = shift @vars; + $type =~ tr/A-Z/a-z/; + if ($type eq "int") { + $val = encode_int($value); + } elsif ($type eq "integer") { + $val = encode_int($value); + } elsif ($type eq "string") { + $val = encode_string($value); + } elsif ($type eq "octetstring") { + $val = encode_string($value); + } elsif ($type eq "octet string") { + $val = encode_string($value); + } elsif ($type eq "oid") { + $val = encode_oid_with_errmsg($value); + } elsif ($type eq "object id") { + $val = encode_oid_with_errmsg($value); + } elsif ($type eq "object identifier") { + $val = encode_oid_with_errmsg($value); + } elsif ($type eq "ipaddr") { + $val = encode_ip_address($value); + } elsif ($type eq "ip address") { + $val = encode_ip_address($value); + } elsif ($type eq "timeticks") { + $val = encode_timeticks($value); + } elsif ($type eq "uint") { + $val = encode_uinteger32($value); + } elsif ($type eq "uinteger") { + $val = encode_uinteger32($value); + } elsif ($type eq "uinteger32") { + $val = encode_uinteger32($value); + } elsif ($type eq "unsigned int") { + $val = encode_uinteger32($value); + } elsif ($type eq "unsigned integer") { + $val = encode_uinteger32($value); + } elsif ($type eq "unsigned integer32") { + $val = encode_uinteger32($value); + } elsif ($type eq "counter") { + $val = encode_counter32($value); + } elsif ($type eq "counter32") { + $val = encode_counter32($value); + } elsif ($type eq "counter64") { + $val = encode_counter64($value); + } elsif ($type eq "gauge") { + $val = encode_gauge32($value); + } elsif ($type eq "gauge32") { + $val = encode_gauge32($value); + } else { + carp "unknown SNMP type: $type\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + if (!defined($val)) { + carp "SNMP type $type value $value didn't encode properly\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + push @enoid, [$oid,$val]; + } + return undef unless defined $enoid[0]; + if ($session->set_request_response(@enoid)) { + $response = $session->pdu_buffer; + ($bindings) = $session->decode_get_response($response); + while ($bindings) { + ($binding, $bindings) = decode_sequence($bindings); + ($oid, $value) = decode_by_template($binding, "%O%@"); + my $tempo = pretty_print($value); + push @retvals, $tempo; + } + return wantarray ? @retvals : $retvals[0]; + } + return undef; +} + +# +# Send an SNMP trap +# +sub snmptrap($$$$$@) { + my($host, $ent, $agent, $gen, $spec, @vars) = @_; + my($oid, @retvals, $type, $value); + my(@enoid); + my $session; + + $session = &snmpopen($host, 1, \@vars); + if (!defined($session)) { + carp "SNMPTRAP Problem for $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + + if ($agent =~ /^\d+\.\d+\.\d+\.\d+(.*)/ ) { + $agent = pack("C*", split /\./, $agent); + } else { + $agent = inet_aton($agent); + } + push @enoid, toOID(($ent)); + push @enoid, encode_ip_address($agent); + push @enoid, encode_int($gen); + push @enoid, encode_int($spec); + push @enoid, encode_timeticks((time-$agent_start_time) * 100); + while(@vars) { + ($oid) = toOID((shift @vars)); + $type = shift @vars; + $value = shift @vars; + if ($type =~ /string/i) { + $value = encode_string($value); + push @enoid, [$oid,$value]; + } elsif ($type =~ /ipaddr/i) { + $value = encode_ip_address($value); + push @enoid, [$oid,$value]; + } elsif ($type =~ /int/i) { + $value = encode_int($value); + push @enoid, [$oid,$value]; + } elsif ($type =~ /oid/i) { + my $tmp = encode_oid_with_errmsg($value); + return undef unless defined $tmp; + push @enoid, [$oid,$tmp]; + } else { + carp "unknown SNMP type: $type\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + } + return($session->trap_request_send(@enoid)); +} + +# +# A restricted snmpgetbulk. +# +sub snmpgetbulk ($$$@) { + my($host, $nr, $mr, @vars) = @_; + my(@enoid, $var, $response, $bindings, $binding); + my($value, $upoid, $oid, @retvals); + my($noid); + my $session; + + $session = &snmpopen($host, 0, \@vars); + if (!defined($session)) { + carp "SNMPGETBULK Problem for $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + + @enoid = &toOID(@vars); + return undef unless defined $enoid[0]; + + undef @vars; + undef @retvals; + foreach $noid (@enoid) { + $upoid = pretty_print($noid); + push(@vars, $upoid); + } + if ($session->getbulk_request_response($nr, $mr, @enoid)) { + $response = $session->pdu_buffer; + ($bindings) = $session->decode_get_response($response); + while ($bindings) { + ($binding, $bindings) = decode_sequence($bindings); + ($oid, $value) = decode_by_template($binding, "%O%@"); + my $tempo = pretty_print($oid); + my $tempv = pretty_print($value); + push @retvals, "$tempo:$tempv"; + } + return (@retvals); + } else { + $var = join(' ', @vars); + carp "SNMPGETBULK Problem for $var on $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } +} + +# +# walk a table, calling a user-supplied function for each +# column of a table. +# +sub snmpmaptable($$@) { + my($host, $fun, @vars) = @_; + return snmpmaptable4($host, $fun, 0, @vars); +} + +sub snmpmaptable4($$$@) { + my($host, $fun, $max_reps, @vars) = @_; + my(@enoid, $var, $session); + + $session = &snmpopen($host, 0, \@vars); + if (!defined($session)) { + carp "SNMPMAPTABLE Problem for $host\n" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + + foreach $var (toOID(@vars)) { + push(@enoid, [split('\.', pretty_print($var))]); + } + + $max_reps = $session->default_max_repetitions() if ($max_reps <= 0); + + return $session->map_table_start_end( [@enoid], + sub() { + my ($ind, @vals) = @_; + my (@pvals, $val); + + foreach $val (@vals) { + push(@pvals, pretty_print($val)); + } + &$fun($ind, @pvals); + }, + "", undef, $max_reps); +} + + +# +# Given an OID in either ASN.1 or mixed text/ASN.1 notation, return an +# encoded OID. +# +sub toOID(@) { + my(@vars) = @_; + my($oid, $var, $tmp, $tmpv, @retvar); + + undef @retvar; + foreach $var (@vars) { + ($oid, $tmp) = &Check_OID($var); + if (!$oid and $SNMP_util::CacheLoaded == 0) { + $tmp = $SNMP_Session::suppress_warnings; + $SNMP_Session::suppress_warnings = 1000; + + &snmpLoad_OID_Cache($SNMP_util::CacheFile); + + $SNMP_util::CacheLoaded = 1; + $SNMP_Session::suppress_warnings = $tmp; + + ($oid, $tmp) = &Check_OID($var); + } + while (!$oid and $#SNMP_util::MIB_Files >= 0) { + $tmp = $SNMP_Session::suppress_warnings; + $SNMP_Session::suppress_warnings = 1000; + + snmpMIB_to_OID(shift(@SNMP_util::MIB_Files)); + + $SNMP_Session::suppress_warnings = $tmp; + + ($oid, $tmp) = &Check_OID($var); + if ($oid) { + open(CACHE, ">>$SNMP_util::CacheFile"); + print CACHE "$tmp\t$oid\n"; + close(CACHE); + } + } + if ($oid) { + $var =~ s/^$tmp/$oid/; + } else { + carp "Unknown SNMP var $var\n" + unless ($SNMP_Session::suppress_warnings > 1); + next; + } + while ($var =~ /\"([^\"]*)\"/) { + $tmp = sprintf("%d.%s", length($1), join(".", map(ord, split(//, $1)))); + $var =~ s/\"$1\"/$tmp/; + } + print "toOID: $var\n" if $SNMP_util::Debug; + $tmp = encode_oid_with_errmsg($var); + return undef unless defined $tmp; + push(@retvar, $tmp); + } + return @retvar; +} + +# +# Add passed-in text, OID pairs to the OID mapping table. +# +sub snmpmapOID(@) +{ + my(@vars) = @_; + my($oid, $txt); + + while($#vars >= 0) { + $txt = shift @vars; + $oid = shift @vars; + + next unless($txt =~ /^[a-zA-Z][\w\-]*(\.[a-zA-Z][\w\-])*$/); + next unless($oid =~ /^\d+(\.\d+)*$/); + + $SNMP_util::OIDS{$txt} = $oid; + $RevNeeded = 1; + print "snmpmapOID: $txt => $oid\n" if $SNMP_util::Debug; + } + + return undef; +} + +# +# Open the passed-in file name and read it in to populate +# the cache of text-to-OID map table. It expects lines +# with two fields, the first the textual string like "ifInOctets", +# and the second the OID value, like "1.3.6.1.2.1.2.2.1.10". +# +# blank lines and anything after a '#' or between '--' is ignored. +# +sub snmpLoad_OID_Cache ($) { + my($arg) = @_; + my($txt, $oid); + + if (!open(CACHE, $arg)) { + carp "snmpLoad_OID_Cache: Can't open $arg: $!" + unless ($SNMP_Session::suppress_warnings > 1); + return -1; + } + + while() { + s/#.*//; # '#' starts a comment + s/--.*--//g; # comment delimited by '--', like MIBs + s/--.*//; # comment started by '--' + next if (/^$/); + next unless (/\s/); # must have whitespace as separator + chomp; + ($txt, $oid) = split(' ', $_, 2); + $txt = $1 if ($txt =~ /^[\'\"](.*)[\'\"]/); + $oid = $1 if ($oid =~ /^[\'\"](.*)[\'\"]/); + if (($txt =~ /^\.?\d+(\.\d+)*\.?$/) + and ($oid !~ /^\.?\d+(\.\d+)*\.?$/)) { + my($a) = $oid; + $oid = $txt; + $txt = $a; + } + $oid =~ s/^\.//; + $oid =~ s/\.$//; + &snmpmapOID($txt, $oid); + } + close(CACHE); + return 0; +} + +# +# Check to see if an OID is in the text-to-OID cache. +# Returns the OID and the corresponding text as two separate +# elements. +# +sub Check_OID ($) { + my($var) = @_; + my($tmp, $tmpv, $oid); + + if ($var =~ /^[a-zA-Z][\w\-]*(\.[a-zA-Z][\w\-]*)*/) + { + $tmp = $&; + $tmpv = $tmp; + for (;;) { + last if exists($SNMP_util::OIDS{$tmpv}); + last if !($tmpv =~ s/^[^\.]*\.//); + } + $oid = $SNMP_util::OIDS{$tmpv}; + if ($oid) { + return ($oid, $tmp); + } else { + return undef; + } + } + return ($var, $var); +} + +# +# Save the passed-in list of MIB files until an OID can't be +# found in the existing table. At that time the MIB file will +# be loaded, and the lookup attempted again. +# +sub snmpQueue_MIB_File (@) { + my(@files) = @_; + my($file); + + foreach $file (@files) { + push(@SNMP_util::MIB_Files, $file); + } +} + +# +# Read in the passed MIB file, parsing it +# for their text-to-OID mappings +# +sub snmpMIB_to_OID ($) { + my($arg) = @_; + my($cnt, $quote, $buf, %tOIDs, $tgot); + my($var, @parts, $strt, $indx, $ind, $val); + + if (!open(MIB, $arg)) { + carp "snmpMIB_to_OID: Can't open $arg: $!" + unless ($SNMP_Session::suppress_warnings > 1); + return -1; + } + print "snmpMIB_to_OID: loading $arg\n" if $SNMP_util::Debug; + $cnt = 0; + $quote = 0; + $tgot = 0; + $buf = ''; + while() { + if ($quote) { + next unless /"/; + $quote = 0; + } else { + s/--.*--//g; # throw away comments (-- anything --) + s/^\s*--.*//; # throw away comments at start of line + } + chomp; + + $buf .= ' ' . $_; + + $buf =~ s/"[^"]*"//g; + if ($buf =~ /"/) { + $quote = 1; + next; + } + $buf =~ s/--.*--//g; # throw away comments (-- anything --) + $buf =~ s/--.*//; # throw away comments (-- anything EOL) + $buf =~ s/\s+/ /g; + if ($buf =~ /DEFINITIONS *::= *BEGIN/) { + $cnt += MIB_fill_OID(\%tOIDs) if ($tgot); + $buf = ''; + %tOIDs = (); + $tgot = 0; + next; + } + $buf =~ s/OBJECT-TYPE/OBJECT IDENTIFIER/; + $buf =~ s/OBJECT-IDENTITY/OBJECT IDENTIFIER/; + $buf =~ s/OBJECT-GROUP/OBJECT IDENTIFIER/; + $buf =~ s/MODULE-IDENTITY/OBJECT IDENTIFIER/; + $buf =~ s/NOTIFICATION-TYPE/OBJECT IDENTIFIER/; + $buf =~ s/ IMPORTS .*\;//; + $buf =~ s/ SEQUENCE *{.*}//; + $buf =~ s/ SYNTAX .*//; + $buf =~ s/ [\w\-]+ *::= *OBJECT IDENTIFIER//; + $buf =~ s/ OBJECT IDENTIFIER.*::= *{/ OBJECT IDENTIFIER ::= {/; + + if ($buf =~ / ([\w\-]+) OBJECT IDENTIFIER *::= *{([^}]+)}/) { + $var = $1; + $buf = $2; + $buf =~ s/ +$//; + $buf =~ s/\s+\(/\(/g; # remove spacing around '(' + $buf =~ s/\(\s+/\(/g; + $buf =~ s/\s+\)/\)/g; # remove spacing before ')' + @parts = split(' ', $buf); + $strt = ''; + foreach $indx (@parts) { + if ($indx =~ /([\w\-]+)\((\d+)\)/) { + $ind = $1; + $val = $2; + if (exists($tOIDs{$strt})) { + $tOIDs{$ind} = $tOIDs{$strt} . '.' . $val; + } elsif ($strt ne '') { + $tOIDs{$ind} = "${strt}.${val}"; + } else { + $tOIDs{$ind} = $val; + } + $strt = $ind; + $tgot = 1; + } elsif ($indx =~ /^\d+$/) { + if (exists($tOIDs{$strt})) { + $tOIDs{$var} = $tOIDs{$strt} . '.' . $indx; + } else { + $tOIDs{$var} = "${strt}.${indx}"; + } + $tgot = 1; + } else { + $strt = $indx; + } + } + $buf = ''; + } + } + $cnt += MIB_fill_OID(\%tOIDs) if ($tgot); + $RevNeeded = 1 if ($cnt > 0); + return $cnt; +} + +# +# Fill the OIDS hash with results from the MIB parsing +# +sub MIB_fill_OID ($) +{ + my($href) = @_; + my($cnt, $changed, @del, $var, $val, @parts, $indx); + my(%seen); + + $cnt = 0; + do { + $changed = 0; + @del = (); + foreach $var (keys %$href) { + $val = $href->{$var}; + @parts = split('\.', $val); + $val = ''; + foreach $indx (@parts) { + if ($indx =~ /^\d+$/) { + $val .= '.' . $indx; + } else { + if (exists($SNMP_util::OIDS{$indx})) { + $val = $SNMP_util::OIDS{$indx}; + } else { + $val .= '.' . $indx; + } + } + } + if ($val =~ /^[\d\.]+$/) { + $val =~ s/^\.+//; + if (!exists($SNMP_util::OIDS{$var}) + || (length($val) > length($SNMP_util::OIDS{$var}))) { + $SNMP_util::OIDS{$var} = $val; + print "'$var' => '$val'\n" if $SNMP_util::Debug; + $changed = 1; + $cnt++; + } + push @del, $var; + } + } + foreach $var (@del) { + delete $href->{$var}; + } + } while($changed); + + $Carp::CarpLevel++; + foreach $var (sort keys %$href) { + $val = $href->{$var}; + $val =~ s/\..*//; + next if (exists($seen{$val})); + $seen{$val} = 1; + $seen{$var} = 1; + carp "snmpMIB_to_OID: prefix \"$val\" unknown, load the parent MIB first.\n" + unless ($SNMP_Session::suppress_warnings > 1); + } + $Carp::CarpLevel--; + return $cnt; +} + + +sub encode_oid_with_errmsg ($) { + my ($oid) = @_; + my $tmp = encode_oid(split(/\./, $oid)); + if (! defined $tmp) { + carp "cannot encode Object ID $oid: $BER::errmsg" + unless ($SNMP_Session::suppress_warnings > 1); + return undef; + } + return $tmp; +} + +1; diff --git a/debian/smokeping/usr/lib/cgi-bin/smokeping.cgi b/debian/smokeping/usr/lib/cgi-bin/smokeping.cgi new file mode 100755 index 0000000..b13ae89 --- /dev/null +++ b/debian/smokeping/usr/lib/cgi-bin/smokeping.cgi @@ -0,0 +1,3 @@ +#!/bin/sh + +exec /usr/share/smokeping/smokeping.cgi /etc/smokeping/config diff --git a/debian/smokeping/usr/lib/systemd/system/smokeping.service b/debian/smokeping/usr/lib/systemd/system/smokeping.service new file mode 100644 index 0000000..93a87e5 --- /dev/null +++ b/debian/smokeping/usr/lib/systemd/system/smokeping.service @@ -0,0 +1,24 @@ +[Unit] +Description=Latency Logging and Graphing System +Documentation=man:smokeping(1) file:/usr/share/doc/smokeping/examples/systemd/slave_mode.conf +After=network.target + +[Service] +# It would in theory be simpler to run smokeping with the --nodaemon option and +# Type=simple, but smokeping does not work properly when in "slave" mode with +# --nodaemon set. +Type=forking +RuntimeDirectory=smokeping +PIDFile=/run/smokeping/smokeping.pid +User=smokeping +Group=smokeping + +# If you need to run smokeping in slave/master mode, see the example unit +# override in /usr/share/doc/smokeping/examples/systemd/slave_mode.conf +#ExecStart=/usr/sbin/smokeping --pid-dir=/run/smokeping +ExecStart=/usr/sbin/smokeping --config=/etc/smokeping/config --nodaemon + +ExecReload=/bin/kill -HUP $MAINPID + +[Install] +WantedBy=multi-user.target diff --git a/debian/smokeping/usr/sbin/smokeinfo b/debian/smokeping/usr/sbin/smokeinfo new file mode 100755 index 0000000..3a569ed --- /dev/null +++ b/debian/smokeping/usr/sbin/smokeinfo @@ -0,0 +1,143 @@ +#!/usr/bin/perl +use strict; +use warnings; + +use lib (split /:/, q{}); # PERL5LIB +use lib qw(/usr/share/perl5); # LIBDIR + +use Smokeping::Info; +use Getopt::Long 2.25 qw(:config no_ignore_case); +use Pod::Usage 1.14; + +'$Revision: 3879 $ ' =~ /Revision: (\S*)/; +my $Revision = $1; + +sub main() +{ + # parse options + my %opt = (mode=>'plain',separator=>';',format=>'%le',start=>'end-24h',end=>'now'); + + GetOptions(\%opt, 'help|h', 'man', 'version', 'noaction|no-action|n','no-head', + 'start=s','end=s','filter=s','mode=s','separator=s','format=s') or exit(1); + if($opt{help}) { pod2usage(1) } + if($opt{man}) { pod2usage(-exitstatus => 0, -verbose => 2) } + if($opt{version}) { print "smokeinfo $Revision\n"; exit(0) } + if($opt{noaction}) { die "ERROR: don't know how to \"no-action\".\n" } + my $config = shift @ARGV; + + my $si = Smokeping::Info->new($config); + my $nodes = $si->fetch_nodes(pattern=>$opt{filter},mode=>$opt{mode}); + my @rows = qw(med_avg med_min med_max med_now loss_avg loss_max loss_now); + print '# ',join $opt{separator}, 'node_path',@rows if not $opt{'no-head'}; + print "\n"; + for my $node (@$nodes) { + my $data = $si->stat_node($node,$opt{start},$opt{end}); + print join $opt{separator},$node->{path},map {defined $data->{$_} ? sprintf($opt{format},$data->{$_}) : '?'} @rows; + print "\n"; + } +} + +main; + +__END__ + +=head1 NAME + +smokeinfo - poll smokeping site for numeric information + +=head1 SYNOPSIS + +B path/to/config.cfg [I] + + --start x rrd graph start time. (default now-24h) + + --end y rrd graph end time. (default now) + + --filter pattern search pattern for node selection + + --mode plain (default) how to use the pattern + - plain + - recursive + - regexp + + --separator ; (default) + + --format %le (default) + + --no-head do not print a header + + --man show man-page and exit + -h, --help display this help and exit + --version output version information and exit + +=head1 DESCRIPTION + +SmokeInfo is a simple frontend to the L module. It provides +access to numeric data stored in the rrd files. + +Note that --start and --end are passed directly to rrd graph. This means +they work on the same syntax. + +=head2 Examples + +Get all data all nodes + + smokeinfo etc/config + +Only show nodes directly under /Customers + + smokeinfo --filter=/Customers/ etc/config + +Show all nodes under /Customers + + smokeinfo --mode=recursive --filter=/Customers/ etc/config + +Show all nodes with '_wlan_' in the name + + smokeinfo --mode=regexp --filter=_wlan_ etc/config + +=head1 SEE ALSO + +L + +=head1 COPYRIGHT + +Copyright (c) 2009 by OETIKER+PARTNER AG. All rights reserved. + +=head1 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 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., 675 Mass Ave, Cambridge, MA 02139, USA. + +=head1 AUTHOR + +Stobi@oetiker.chE> + +=head1 HISTORY + + 2009-01-05 to Initial Version + +=cut + +# Emacs Configuration +# +# Local Variables: +# mode: cperl +# eval: (cperl-set-style "PerlStyle") +# mode: flyspell +# mode: flyspell-prog +# End: +# +# vi: sw=4 et + diff --git a/debian/smokeping/usr/sbin/smokeping b/debian/smokeping/usr/sbin/smokeping new file mode 100755 index 0000000..d4466c7 --- /dev/null +++ b/debian/smokeping/usr/sbin/smokeping @@ -0,0 +1,184 @@ +#!/usr/bin/perl +# -*-perl-*- + +use strict; +use warnings; + +use FindBin; +use lib (split /:/, q{}); # PERL5LIB +use lib qw(/usr/share/perl5); # LIBDIR + +use Smokeping; + +Smokeping::main("$FindBin::RealBin/../etc/config"); + +=head1 NAME + +smokeping - Commandline tool for SmokePing + +=head1 SYNOPSIS + +B [ B<--email> | B<--makepod> | B<--version> | B<--restart> ] + + Options: + + --man[=x] Show the manpage for the program (or for probe x, if specified) + + --help Help :-) + + --email Send SmokePing Agents to all Targets marked DYNAMIC + + --config=x Use a config file different from the default + + --check Just check the config file syntax, don't start the daemon + + --makepod[=x] Create POD documentation on Config file (or for probe x, if specified) + + --version Show SmokePing Version + + --debug Run Only once and do not Fork + + --debug-daemon Start the daemon with debugging enabled + + --restart Restart SmokePing + + --reload Reload configuration in the running process without interrupting + any probes + + --nodaemon Do no daemonize the process (no fork) + + --filter=x Only measure entries which pass the filter x + + --logfile=x Append warnings to logfile x. + + --static[=x] Generates a static website in directory x. If x is left out, + pagedir from the config is used. + + --nosleep For debugging you may want to run SmokePing without sleep interval + + --gen-examples Generate the smokeping_examples document and example config files + (to be used while building inside the smokeping distribution) + With --check : check the syntax of the generated examples. + + --master-url=s Run smokeping in slave mode. Attach to master for config. + + --slave-name=s By default the slave will use whatever it thinks its name + is, when talking to its master. In some cases you may + probably want to override this. + + + --shared-secret=s File containing the shared secret for talking to the server. + + --cache-dir=s Directory for temporary data storage when running in slave mode. + + --pid-dir=s Directory for the PID file when running in slave mode. + (optional, defaults to --cache-dir) + +=head1 DESCRIPTION + +The B tool is the commandline part of the SmokePing system. Its +main function is to run as a daemon and send Pings to all the Targets you +have specified in the Config file. When you call B without +arguments it will start as a daemon and do its work. + +If called with an argument, then further functions can be activated, as seen +in the Synopsis above. The B<--email> function is explained in the +documentation on the config file. + +The B<--filter> option allows you to run the daemon on a big config file, +but have the config file filtered and only measure the entries that pass the +filter. This is useful for remote measurement. Run Smokeping with two +exclusive filters in two locations and rsync the rrds back to the webserver +host where you run the cgi. Filters act on the section names in the config +file. Multiple section names are concatenated with B like path names: + + *** targets *** + + A + .... + + B + ... + ++ C + +This gives + + /A + +and + + /B, /B/C + +If I want to monitor /A my filter would look like this: + + --filter=/A + +Filters follow regular expression syntax. The are always anchored at the tip of the string. +by adding a B to the front of the filter string you negate it. Matching entries will be excluded from monitoring. +Multiple B<--filter> arguments can be used to assemble complex filters: + + --filter=/A --filter=/B + +would include all the targets + + --filter=/A --filter=/B --filter=!/B/C + +would include all but /B/C. + +The B<--makepod> does get used internally to produce the +L. + +Please refer to L for detailed setup instructions. + +=head1 SETUP + +When installing SmokePing, this file has to be adjusted to fit your +local system. Three paths have to be entered. + +One pointing to your B installation + + use lib qw(/usr/pack/rrdtool-1.0.33-to/lib/perl); + +One pointing to the place where you have installed the SmokePing libraries + + use lib qw(/home/oetiker/public_html/smokeping/lib); + +The third path is the argument to the Smokeping::main command. It points to +the SmokePing configuration file. + + use Smokeping; + Smokeping::main("/home/oetiker/.smokeping/config"); + +=head1 SEE ALSO + +L, L, L, +L, L, L, +L, L, +How to read the graphs https://oss.oetiker.ch/smokeping/doc/reading.en.html + +=head1 COPYRIGHT + +Copyright (c) 2002 by Tobias Oetiker. All right reserved. + +=head1 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 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., 675 Mass Ave, Cambridge, MA +02139, USA. + +=head1 AUTHOR + +Tobias Oetiker Etobi@oetiker.chE + +=cut diff --git a/debian/smokeping/usr/sbin/tSmoke b/debian/smokeping/usr/sbin/tSmoke new file mode 100755 index 0000000..bcd004c --- /dev/null +++ b/debian/smokeping/usr/sbin/tSmoke @@ -0,0 +1,570 @@ +#!/usr/bin/perl +# +#----------------------------------------------- +# tSmoke.pl +# Dan McGinn-Combs, Sep 2003 +# tSmoke.v 0.4 2004/03 McGinn-Combs +#----------------------------------------------- +# +# Modified for Smokeping official distribution since 20050526 +# Original README follows +# +# tSmoke.v04.README +# - added downtime report (--downtime) +# - a few tweaks to the calculations to ensure it's consistent +# +# tSmoke.v03.README +# - Initial Release +# - The script, started through cron, will cull through a config file and +# determine which hosts are down at a point in time (Morning report) and +# send out an smtp message to a mobile phone (for example). +# +# - It will also cull through the same config file and, using an included html +# file (small change to General section of the config file), send an html +# message which shows the availability over the past day, week, month +# and quarter. +# +# - It can also show detail data depending on the setting of +# command line option "detail". +# +# tSmoke.v02.README +# - Local testing version +#----------------------------------------------- +# +# 1) This program is run via CRON or the command line +# 2) It extracts RRD information from a smokeping config file +# 3) It pulls data from RRD files to determine if anything is offline, that is returning 0 PINGs +# 4) tSmoke reports status via an SMTP alert +# 5) tSmoke also generates an SMTP mail showing historical view of availability +# +# Many thanks to the following people for their help and guidance: +# Jim Horwath of Agere Systems Inc. for his examples and pointers to Spreadsheet::WriteExcel +# Frank Harper the author of SLAMon, a tool for tracking Service Level Agreements +# Tobias Oetiker, or course, the author of Smokeping, RRDTool and MRTG +# +use strict; +use warnings; + +# We need to use +# -- Smokeping libraries +# -- RRDTool +# -- Getopt::Long +# +# Point the lib variables to your implementation + +use lib (split /:/, q{}); # PERL5LIB +use FindBin; +use lib qw(/usr/share/perl5); # LIBDIR + + +use Smokeping; +use Net::SMTP; +use Getopt::Long; +use Pod::Usage; +use RRDs; + +# Point to your Smokeping config file +my $cfgfile = (shift @ARGV) || "$FindBin::Bin/../etc/config"; + +# global variables +my $cfg; + +#this is designed to work on IPv4 only +my $havegetaddrinfo = 0; + +# we want opts everywhere +my %opt; + +#Hashes for the data +my (%Daily,%Weekly,%Monthly,%Quarterly); # the entries +my (%DailyC,%WeeklyC,%MonthlyC,%QuarterlyC); # a count of the entries + +###################### +### Moving Average ### +###################### +# Just a reminder of how to do a moving average if you ever want to +# PREV,UN,,UN,1,,IF,PREV,IF,,UN,1,,IF,-,,*,A,UN,1,A,IF,+ + +# Change Log: +# DMC - Added Quarterly Status +# DMC - Added HTML mail reporting and consolidated functions +# DMC = Added an external HTML mail template, tMail +my $RCS_VERSION = '$id: tSmoke.v 0.4 2004/03 McGinn-Combs'; + +sub test_mail($) { + my $cfg = shift; + my $mail = <<"EOF"; +Subject: tSmoke test +To: $cfg->{Alerts}{to} + +This is a test mail with 'tSmoke --testmail'. +EOF + print "Sending a test mail to $cfg->{Alerts}{to} from $cfg->{Alerts}{from}..."; + Smokeping::sendmail($cfg->{Alerts}{from}, $cfg->{Alerts}{to}, $mail); + print "done.\n"; +}; + +sub morning_update($) { + # Send out a morning summary of devices that are down + my $cfg = shift; + my $Body = ""; + my $TmpBody = ""; + my $To = ""; + if ( $opt{to} ) { $To = $opt{to}; } else { $To = $cfg->{Alerts}{to}; } + + # Get a list of the existing RRD Files + my @rrds = split ( /\n/,list_rrds($cfg->{Targets},"","") ); + my $Count = $#rrds + 1; + my $Down = 0; + + foreach my $target (@rrds) { + my $Loss = 0; + my ($start,$step,$names,$data) = RRDs::fetch "$target","AVERAGE","--start","-300"; + my $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + foreach my $line (@$data) { + $Loss += ( defined($$line[3]) ? $$line[3] : 0 ); + } + $Down += 1 if $Loss == 0; + $target =~ s/^([a-zA-Z0-9]*\/)*//; + $target =~ s/.rrd//; + $target =~ s/\~(.*)/ from $1/ if $target =~ m/\~/; + $TmpBody .= "$target\n" if $Loss == 0; + } + $Body = <{Alerts}{from},$To,$Body); +} + +sub weekly_update($) { + # Send out a formatted HTML Table of the + # Previous Day, Week, Month and Quarter Availability + # Get a list of the existing RRD Files + my @rrds = split ( /\n/,list_rrds($cfg->{Targets},"","") ); + + my $To = ""; + if ( $opt{to} ) { $To = $opt{to}; } else { $To = $cfg->{Alerts}{to}; } + + my $Body =''; + +# Calculations Based on the following: +# RRDs::graph "fake.png", +# '--start','-86400', +# '-end','-300', +# "DEF:loss=${rrd}:loss:AVERAGE", +# "CDEF:avail=loss,0,100,IF", or more precisely "CDEF:avail=loss,2,GE,0,100,IF" +# and adding in the check for unknown for systems just coming on line +# "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF" + # Arbitrarily a loss of 10% of Pings means the system was down + my $pings = $cfg->{Database}{pings} * .1; + + foreach my $target (@rrds) { + # Get an average Availability for each RRD file + my $ERR; + + my ($DAverage,$Dxsize,$Dysize) = RRDs::graph "fake.png", + "--start","-86400", + "--end","-600", + "--step","1008", + "DEF:loss=$target:loss:AVERAGE", + "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF", + "PRINT:avail:AVERAGE:%.2lf"; + $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + + my ($WAverage,$Wxsize,$Wysize) = RRDs::graph "fake.png", + "--start","-604800", + "--end","-600", + "--step","4320", + "DEF:loss=$target:loss:AVERAGE", + "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF", + "PRINT:avail:AVERAGE:%.2lf"; + $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + + my ($MAverage,$Mxsize,$Mysize) = RRDs::graph "fake.png", + "--start","-2592000", + "--end","-600", + "--step","4320", + "DEF:loss=$target:loss:AVERAGE", + "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF", + "PRINT:avail:AVERAGE:%.2lf"; + $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + + my ($QAverage,$Qxsize,$Qysize) = RRDs::graph "fake.png", + "--start","-7776000", + "--end","-600", + "--step","4320", + "DEF:loss=$target:loss:AVERAGE", + "CDEF:avail=loss,UN,0,loss,IF,$pings,GE,0,100,IF", + "PRINT:avail:AVERAGE:%.2lf"; + $ERR=RRDs::error; + die "ERROR while reading $_: $ERR\n" if $ERR; + + $target =~ s/$cfg->{General}{datadir}\///; + $target =~ s/.rrd//; + my @Path; + push @Path,split/\//,$target; + update_stats ( \@Path, @$DAverage[0], @$WAverage[0], @$MAverage[0], @$QAverage[0]); + } + + # Prepare the e-mail message + $Body = <{General}{tmail} or die "ERROR: can't read $cfg->{General}{tmail}\n"; + while (){ + my $Summary = Summary_Sheet(); + s/<##SUMMARY##>/$Summary/ig; + my $Daily = DetailSheet(86400); + s/<##DAYDETAIL##>/$Daily/ig; + my $Weekly = DetailSheet(604800); + s/<##WEEKDETAIL##>/$Weekly/ig; + my $Monthly = DetailSheet(2592000); + s/<##MONTHDETAIL##>/$Monthly/ig; + my $Quarterly = DetailSheet(7776000); + s/<##QUARTERDETAIL##>/$Quarterly/ig; + $Body .= $_; + } + close tSMOKE; + Smokeping::sendmail($cfg->{Alerts}{from}, $To, $Body); +} + +sub update_stats($$$$$); +sub update_stats($$$$$) { + # Update the uptime percentages in the Hash Arrays + my $Path = shift; + my $DAverage = shift; + my $WAverage = shift; + my $MAverage = shift; + my $QAverage = shift; + + #Enter everything once as it exists + #Trim off the rightmost component (hostname) and reenter the code + #If there is only one component, this is the final level + #This is an average of averages + + my $Ticket = join ( ".",@$Path); + $Daily { $Ticket } += $DAverage; + $Weekly { $Ticket } += $WAverage; + $Monthly { $Ticket } += $MAverage; + $Quarterly {$Ticket } += $QAverage; + $DailyC { $Ticket }++; + $WeeklyC { $Ticket }++; + $MonthlyC { $Ticket }++; + $QuarterlyC { $Ticket }++; + my $Length = @$Path; + @$Path = @$Path [ 0 .. $Length - 2 ]; + update_stats(\@$Path,$DAverage,$WAverage,$MAverage,$QAverage) if $Length > 1; +} + +sub Summary_Sheet() { + my $Body = ''; + + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= " + + + + \n"; + foreach (sort { $a cmp $b } keys %Monthly) { + next if ( $_ =~ /\./ ); + # this is a major section heading + $Body .= "\n"; + $Body .= ""; + $Body .= "" + if $Quarterly{$_}/$QuarterlyC{$_} >= 99 ; + $Body .= "" + if $Quarterly{$_}/$QuarterlyC{$_} > 95 and $Quarterly{$_}/$QuarterlyC{$_} < 99 ; + $Body .= "" + if $Quarterly{$_}/$QuarterlyC{$_} > 90 and $Quarterly{$_}/$QuarterlyC{$_} < 95 ; + $Body .= "" + if $Quarterly{$_}/$QuarterlyC{$_} < 90 ; + $Body .= "" + if $Monthly{$_}/$MonthlyC{$_} >= 99 ; + $Body .= "" + if $Monthly{$_}/$MonthlyC{$_} > 95 and $Monthly{$_}/$MonthlyC{$_} < 99 ; + $Body .= "" + if $Monthly{$_}/$MonthlyC{$_} > 90 and $Monthly{$_}/$MonthlyC{$_} < 95 ; + $Body .= "" + if $Monthly{$_}/$MonthlyC{$_} < 90 ; + $Body .= "" + if $Weekly{$_}/$WeeklyC{$_} >= 99; + $Body .= "" + if $Weekly{$_}/$WeeklyC{$_} > 95 and $Weekly{$_}/$WeeklyC{$_} < 99 ; + $Body .= "" + if $Weekly{$_}/$WeeklyC{$_} > 90 and $Weekly{$_}/$WeeklyC{$_} < 95 ; + $Body .= "" + if $Weekly{$_}/$WeeklyC{$_} < 90 ; + $Body .= "" + if $Daily{$_}/$DailyC{$_} >= 99; + $Body .= "" + if $Daily{$_}/$DailyC{$_} > 95 and $Daily{$_}/$DailyC{$_} < 99 ; + $Body .= "" + if $Daily{$_}/$DailyC{$_} > 90 and $Daily{$_}/$DailyC{$_} < 95 ; + $Body .= "" + if $Daily{$_}/$DailyC{$_} < 90 ; + $Body .= "\n"; + } + $Body .= "
IT Network Systems Availability Summary
Compiled: ". scalar(localtime) . "
ServicePast QuarterPast MonthPast WeekPast Day
$_" . sprintf('%.2f',$Quarterly{$_}/$QuarterlyC{$_}) . "%" . sprintf('%.2f',$Quarterly{$_}/$QuarterlyC{$_}) . "%" . sprintf('%.2f',$Quarterly{$_}/$QuarterlyC{$_}) . "%" . sprintf('%.2f',$Quarterly{$_}/$QuarterlyC{$_}) . "%" . sprintf('%.2f',$Monthly{$_}/$MonthlyC{$_}) . "%" . sprintf('%.2f',$Monthly{$_}/$MonthlyC{$_}) . "%" . sprintf('%.2f',$Monthly{$_}/$MonthlyC{$_}) . "%" . sprintf('%.2f',$Monthly{$_}/$MonthlyC{$_}) . "%" . sprintf('%.2f',$Weekly{$_}/$WeeklyC{$_}) . "%" . sprintf('%.2f',$Weekly{$_}/$WeeklyC{$_}) . "%" . sprintf('%.2f',$Weekly{$_}/$WeeklyC{$_}) . "%" . sprintf('%.2f',$Weekly{$_}/$WeeklyC{$_}) . "%" . sprintf('%.2f',$Daily{$_}/$DailyC{$_}) . "%" . sprintf('%.2f',$Daily{$_}/$DailyC{$_}) . "%" . sprintf('%.2f',$Daily{$_}/$DailyC{$_}) . "%" . sprintf('%.2f',$Daily{$_}/$DailyC{$_}) . "%
"; + $Body .= "

\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "
Legend:
if uptime > 99% then GREEN
if uptime > 95% but < 99% then BLUE
if uptime > 90% but < 95% then YELLOW
if uptime < 90% then RED
\n"; + return $Body; +} + +sub NumDots($) { + # Count the number of dots in a string + # There's probably a better way to do this + my $DNA = shift; + my $a = 0; + while($DNA =~ /\./ig){$a++} + return $a +} + +sub DetailSheet($) { + # Populate the table with details depending on the value of %opts{detail} + my $Seconds = shift; + my $Body = ''; + + return '' unless $opt{detail}; + + # Monthly/Weekly/Daily + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= " + + \n"; + + my %CornBeef; + my %CornBeefC; + + CASE: { + %CornBeef = %Daily, %CornBeefC = %DailyC, print "Doing Daily\n", last CASE if $Seconds == 86400; + %CornBeef = %Weekly, %CornBeefC = %WeeklyC, print "Doing Weekly\n", last CASE if $Seconds == 604800; + %CornBeef = %Monthly, %CornBeefC = %MonthlyC, print "Doing Monthly\n", last CASE if $Seconds == 2592000; + %CornBeef = %Quarterly, %CornBeefC = %QuarterlyC, print "Doing Quarterly\n", last CASE if $Seconds == 7776000; + } # end of CASE block + + foreach (sort { $a cmp $b } keys %CornBeef ) { + next if NumDots ($_) > $opt{detail}; + if ( $_ =~ /\./ ) { + #this is a sub section + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + } else { + # this is a non-sub section + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= "\n"; + $Body .= ""; + } + } + $Body .= "
IT Network Systems Availability Previous " . $Seconds/86400 . " Day(s)
Compiled: ". scalar(localtime) . "
ServiceSecondsPercent
$_" . sprintf('%.0f',(100 - $CornBeef{$_} / $CornBeefC{$_}) * ($Seconds/100)) . "" . sprintf('%.2f',$CornBeef{$_} / $CornBeefC{$_}) . "%
" . $_ . "" . sprintf('%.0f',(100 - $CornBeef{$_} / $CornBeefC{$_}) * ($Seconds/100)) . "" . sprintf('%.2f',$CornBeef{$_} / $CornBeefC{$_}) . "%
\n"; + return $Body; + } + +sub list_rrds($$$$$); +sub list_rrds($$$$$) { + # List the RRD's used by this configuration + my $tree = shift; + my $path = shift; + my $print = shift; + my $slaves = shift; + my $nomasterpoll = shift; + my $prline = ''; + if ( $opt{slaves} ) { + $slaves = $tree->{slaves} if exists( $tree->{slaves} ); + } else { + $slaves = ''; + } + $nomasterpoll = $tree->{nomasterpoll} if exists ( $tree->{nomasterpoll} ); + foreach my $rrds (keys %{$tree}) { + if (ref $tree->{$rrds} eq 'HASH'){ + $prline .= list_rrds( $tree->{$rrds}, $path."/$rrds", $print, $slaves, $nomasterpoll ); + } + if ($rrds eq 'host' and $tree->{$rrds} !~ m|/| ) { + if ( exists( $opt{slaves} ) && $slaves ) { + foreach( split( /\s+/, $slaves ) ) { + my $tslave = $_; + $prline .= "$cfg->{General}{datadir}$path~$tslave".".rrd\n" + if $opt{slaves} eq '' || grep( $tslave, split( ',', $opt{slaves} ) ); + } + $prline .= "$cfg->{General}{datadir}$path".".rrd\n" unless $nomasterpoll; + } else { + $prline .= "$cfg->{General}{datadir}$path".".rrd\n"; + } + } + } + return $prline; +} + +sub load_cfg ($) { + my $cfgfile = shift; +# my $parser = get_parser; + my $parser = Smokeping::get_parser; + $cfg = Smokeping::get_config $parser, $cfgfile; +} + +########################################################################### +# The Main Program +########################################################################### + +sub main($); +main($cfgfile); + +sub main ($) { + umask 022; + my $cfgfile = shift; + my $sendto; + GetOptions(\%opt, 'quiet','version','testmail','listrrds','to=s','detail=n','morning','weekly','help','man','slaves:s') or pod2usage(2); + if($opt{version}) { print "$RCS_VERSION\n"; exit(0) }; + if($opt{help}) { pod2usage(-verbose => 1); exit 0 }; + if($opt{man}) { pod2usage(-verbose => 2); exit 0 }; + load_cfg $cfgfile; + print "tSmoke for network managed by $cfg->{General}{owner}\nat $cfg->{General}{contact}\n(c) 2003 Dan McGinn-Combs\n" unless $opt{quiet}; + if($opt{testmail}) { test_mail($cfg) }; + if($opt{listrrds}) { print "List of Round Robin Databases used by this implementation\n"; + my @rrds = split ( /\n/,list_rrds($cfg->{Targets},"","","","") ); + foreach (@rrds) { + print "RRD: $_\n"; }; + } + if($opt{morning}) { morning_update($cfg) }; + if($opt{weekly}) { weekly_update($cfg) }; + exit 0; +} + +=head1 NAME + +tSmoke - Commandline tool for sending SmokePing information + +=head1 SYNOPSIS + +B [ B<--testmail> | B<--morning> | B<--weekly> | B<--version> | B<--help> | B<--man> | B<--slaves> ] + + Options: + + --man Show the manpage + --help Help :-) + --version Show SmokePing Version + --testmail Send a test message + --listrrds List the RRDs used by this Smokeping + --morning Send a morning synopsis + --weekly Send a weekly status report + --to E-mail address to send message (i.e. '--to=xyz@company.com.invalid' + --detail How much detail to send in weekly report (i.e. '--detail=1') + --quiet Do not print welcome + --slaves Enable slave support assumes all slaves unless csv list of slaves + is added (i.e. '--slaves' or '--slaves=slave1[,slave2...]') + +=head1 DESCRIPTION + +The B tool is a commandline tool which interfaces with the SmokePing system. +Its main function is to send a message indicating the current status of the systems +being monitored by Smokeping or an HTML mail file containing the status over the past day, +past week and past month including an overview. + +Typical crontab used to invoke this are + + # Quick morning alert to see what's down + 0 6 * * * /usr/local/smokeping/bin/tSmoke.pl --q --to=mobilephone@att.net.invalid --morning + # Weekly report on the percent availability of network systems with no detail + 0 8 * * * /usr/local/smokeping/bin/tSmoke.pl --q --to=mailbox@company.com.invalid --weekly --detail=0 + +=head1 SETUP + +When installing tSmoke, some variables must be adjusted to fit your local system. + +We need to use the following B: + +=over + +=item Smokeping + +=item RRDTool Perl bindings + +=item Getopt::Long + +=back + +Set up your libraries: + + use lib "/usr/local/smokeping/lib"; + use lib "/usr/local/rrdtool-1.0.39/lib/perl"; + +Point to your Smokeping B file + + my $cfgfile = "/usr/local/smokeping/etc/config"; + +Modify the Smokeping config file to include a path for tmail in the +General section: + + tmail = /usr/local/smokeping/etc/tmail + +=head1 SEE ALSO + +L, L + +=head1 COPYRIGHT + +Copyright (c) 2003 by Dan McGinn-Combs. All right reserved. + +=head1 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 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., 675 Mass Ave, Cambridge, MA +02139, USA. + +=head1 AUTHOR + +Dan McGinn-Combs Ed.mcginn-combs@mindspring.comE + +Modified for Smokeping official distribution by Niko Tyni Entyni@iki.fiE + +=cut + diff --git a/debian/smokeping/usr/share/doc/smokeping/README.Debian b/debian/smokeping/usr/share/doc/smokeping/README.Debian new file mode 100644 index 0000000..9d83ec2 --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/README.Debian @@ -0,0 +1,22 @@ +After installing the package you have to edit the files in +/etc/smokeping/config.d to set your preferences. + +Note that the domain names are bogus to avoid all the people who +install the package DoSing the same servers, but at the same time an +fping probe in localhost is enabled, so you can check if smokeping +works for you. + +You can also edit the file /etc/smokeping/basepage.html to suit your +needs. + +A FastCGI configuration might be desirable for large sites. Simply add +this to the Apache configuration, in /etc/apache2/conf-available/smokeping.conf: + + + SetHandler fcgid-script + + +Please refer to the smokeping_config man page to see all the available +options. + + -- Antoine Beaupré , Sat, 12 May 2018 16:02:25 -0400 diff --git a/debian/smokeping/usr/share/doc/smokeping/README.md b/debian/smokeping/usr/share/doc/smokeping/README.md new file mode 100644 index 0000000..08d772e --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/README.md @@ -0,0 +1,36 @@ +``` + ____ _ ____ _ +/ ___| _ __ ___ ___ | | _____| _ \(_)_ __ __ _ +\___ \| '_ ` _ \ / _ \| |/ / _ \ |_) | | '_ \ / _` | + ___) | | | | | | (_) | < __/ __/| | | | | (_| | +|____/|_| |_| |_|\___/|_|\_\___|_| |_|_| |_|\__, | + |___/ +``` + +Original Authors: Tobias Oetiker and Niko Tyni + +[![Build Test](https://github.com/oetiker/SmokePing/actions/workflows/build-test.yaml/badge.svg)](https://github.com/oetiker/SmokePing/actions/workflows/build-test.yaml) + +SmokePing is a latency logging and graphing and +alerting system. It consists of a daemon process which +organizes the latency measurements and a CGI which +presents the graphs. + +SmokePing is ... +================ + + * extensible through plug-in modules + + * easy to customize through a webtemplate and an extensive + configuration file. + + * written in perl and should readily port to any unix system + + * an RRDtool frontend + + * able to deal with DYNAMIC IP addresses as used with + Cable and ADSL internet. + + +cheers +tobi diff --git a/debian/smokeping/usr/share/doc/smokeping/TODO.Debian b/debian/smokeping/usr/share/doc/smokeping/TODO.Debian new file mode 100644 index 0000000..a98f07b --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/TODO.Debian @@ -0,0 +1,12 @@ +The following issues need to be fixed: + +* fast-cgi should be default +* review upstream changes since last release, esp. config changes +* do not prompt for modifications on the files: +- Slaves +- General +- basepage.html + - this is very hard. we would need to fix the checksum in + /var/lib/dpkg/status, which doesn't seem to be doable + programmatically. See dpkg/src/configure.c:336 to see how this + works better. diff --git a/debian/smokeping/usr/share/doc/smokeping/changelog.Debian.gz b/debian/smokeping/usr/share/doc/smokeping/changelog.Debian.gz new file mode 100644 index 0000000000000000000000000000000000000000..643a81ccf5ebb8592ef65b3376367b499422683e GIT binary patch literal 1678 zcmV;9266cxiwFP!000021D#jflG{WOec!L>N*= zwl&FUM$C-tH5C6&_l$hWk_1B4y4IHa-ltEueP>@`ugn@gsPaW#Jk-hzw@SD_@?K}< zISj@JQEU7N2De7j>^|vGs-ZhO1Na$ErQuh4^dWpPbUg$M(cIaYKXowAtB2D6yVtAX)&Kw=TYf%t)Um8 zY0*PyMSv|jgbvB6JX(tn9d>quGO0-k!T{ciuGdIuuG5#3~oK3 z32qlvM)8bXIHx34Ku{-)-5wl9u}2z(1Gd!Ie&@Iw6i5(C`xr4d!tWbM@zdL0G_RuW z53$y)TMtT04$7`z;$+qf7k2Q{b1D3oEX5Jv-uq>8FM;+k)-3;xFe*??C(|IYZc$Tx zVdZQGR!b-=Zhtw+qts8m6jWOp2_uD*{s3>1ndVn{c|kRSrWIyQc^X8CGAFNDc6U@h zUW?iXbf0O|Lr^Af#HRo^gSmiW3Qw?xs;H(=PM5RkvRFV?%!<2HdYw6=DW+wD72 zedbgL!BJD#&bCznJ#_)|cNe0Fg{YF$4Thso*4U0FlfU@>~X}PPb!a{?I~7+ z4SLVOejTB*&BQ=KB9HEWsrD={-cs$i5z{!`<4`lnNaeY549OKuSIgBPs`$g&?vx~G z$jixee*RA@$pFhbFG`{!8hSLuwo_gn!!kCEy`pmMI_h||)QMLJjrXyJJnL4-guc)soahU!1QBp^ zAmC~-D`%-U2@6bc8T%#X2(3S|cyEa-qCF`n(g>tWH<%OakynF{{pl5Rltc=I61v<7 z_quQ@-?t(JwD2T{=ja=|QDX&VoW09&sa-B(R6-MPWhmDeh#l92XAqK0ak5Y*)AG7_ zKTwEp0c8o_44OevKv68|uUx=G`t&AHRR0eYJEE*kE`iDb9^FPY2-J+D`GKCs+C8Hp zkKzZ(fmkT*;4l+>*4S(W#@gAT=UL(pdovdNepmhHL*0uMdV2nB@-p2=vIWfgg4rF zN4#A^)-fJ?IxI@ajG(9oqQe+<(&y=Xv8V4~ z69v%lL6l);h&`atR)ZeZ87uHoY=m!|>cfk>HX<5mwi@oDQQgq(Po8);WmM2554CD| zwZ!hSN(#ugcF+-eH6D{m8Ar%vUUV8Gx7@Wtuz81iVz<<3M*W7mkPe`MQ5AEg?N$>9 zFi?5(_Esxejr*N9%_}<7*%m{HuUvnCe@pm0P;y-0H~XELJwM%@UYVHJ_^l^GaEae7^Mzi<8{42A(z=jCuVX71bS9qsMA#Bng6?JLf=HZp zLqWpVwAU#2L}-uFzDTS>DjsRHDUah1297BLYrEZMbdHD*W0bdRP06W4pm;e9( literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/doc/smokeping/changelog.gz b/debian/smokeping/usr/share/doc/smokeping/changelog.gz new file mode 100644 index 0000000000000000000000000000000000000000..0405911c61eca72b8722bf959379c5d0f7d06c65 GIT binary patch literal 69175 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 Cw_5GfsL}4{_ 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/doc/smokeping/copyright b/debian/smokeping/usr/share/doc/smokeping/copyright new file mode 100644 index 0000000..c737217 --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/copyright @@ -0,0 +1,156 @@ +Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ +Upstream-Name: SmokePing +Source: https://github.com/oetiker/SmokePing +Comment: + The upstream source tarball is repacked to drop vendored javascript libraries. +Files-Excluded: + htdocs/js/cropper/* + htdocs/js/prototype.js + htdocs/js/scriptaculous/* + +Files: * +Copyright: 2001-2005 Tobias Oetiker +License: GPL-2+ + +Files: bin/tSmoke +Copyright: 2003 by Dan McGinn-Combs. All right reserved. +License: GPL-2+ + +Files: lib/Smokeping/Examples.pm lib/Smokeping/RRDtools.pm +Copyright: 2005 by Niko Tyni. +License: GPL-2+ + +Files: lib/Smokeping/matchers/Avgratio.pm lib/Smokeping/matchers/Median.pm lib/Smokeping/matchers/base.pm +Copyright: 2004 by OETIKER+PARTNER AG. All rights reserved. +License: GPL-2+ + +Files: lib/Smokeping/matchers/CheckLatency.pm lib/Smokeping/matchers/CheckLoss.pm +Copyright: 2006 Dylan C Vanderhoof, Semaphore Corporation +License: GPL-2+ + +Files: lib/BER.pm lib/SNMP_Session.pm +Copyright: 1995-2008, Simon Leinen. + . + This program is free software; you can redistribute it under the + "Artistic License 2.0" included in this distribution + (file "Artistic"). +License: Artistic-2.0 +Comment: These files are not used in the Debian version. The mentioned + "Artistic" license file is not present in the source repository. + +Files: debian/* +Copyright: Wed, 13 Feb 2002 23:11:07 +0100 Jose Carlos Garcia Sogo + 2018-2020 Gabriel Filion +License: GPL-2+ +Comment: The copyright mention was not updated throughout the years and there + are more authors and contributors that donated their time to maintaining those + files. + +License: GPL-2+ + On Debian systems, the full text of the GNU General Public + License version 2 can be found in the file + `/usr/share/common-licenses/GPL-2'. + +License: Artistic-2.0 + Copyright (c) 2000-2006, The Perl Foundation. + . + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + Preamble + . + This license establishes the terms under which a given free software Package may be copied, modified, distributed, and/or redistributed. The intent is that the Copyright Holder maintains some artistic control over the development of that Package while still keeping the Package available as open source and free software. + . + You are always permitted to make arrangements wholly outside of this license directly with the Copyright Holder of a given Package. If the terms of this license do not permit the full use that you propose to make of the Package, you should contact the Copyright Holder and seek a different licensing arrangement. + Definitions + . + "Copyright Holder" means the individual(s) or organization(s) named in the copyright notice for the entire Package. + . + "Contributor" means any party that has contributed code or other material to the Package, in accordance with the Copyright Holder's procedures. + . + "You" and "your" means any person who would like to copy, distribute, or modify the Package. + . + "Package" means the collection of files distributed by the Copyright Holder, and derivatives of that collection and/or of those files. A given Package may consist of either the Standard Version, or a Modified Version. + . + "Distribute" means providing a copy of the Package or making it accessible to anyone else, or in the case of a company or organization, to others outside of your company or organization. + . + "Distributor Fee" means any fee that you charge for Distributing this Package or providing support for this Package to another party. It does not mean licensing fees. + . + "Standard Version" refers to the Package if it has not been modified, or has been modified only in ways explicitly requested by the Copyright Holder. + . + "Modified Version" means the Package, if it has been changed, and such changes were not explicitly requested by the Copyright Holder. + . + "Original License" means this Artistic License as Distributed with the Standard Version of the Package, in its current version or as it may be modified by The Perl Foundation in the future. + . + "Source" form means the source code, documentation source, and configuration files for the Package. + . + "Compiled" form means the compiled bytecode, object code, binary, or any other form resulting from mechanical transformation or translation of the Source form. + Permission for Use and Modification Without Distribution + . + (1) You are permitted to use the Standard Version and create and use Modified Versions for any purpose without restriction, provided that you do not Distribute the Modified Version. + Permissions for Redistribution of the Standard Version + . + (2) You may Distribute verbatim copies of the Source form of the Standard Version of this Package in any medium without restriction, either gratis or for a Distributor Fee, provided that you duplicate all of the original copyright notices and associated disclaimers. At your discretion, such verbatim copies may or may not include a Compiled form of the Package. + . + (3) You may apply any bug fixes, portability changes, and other modifications made available from the Copyright Holder. The resulting Package will still be considered the Standard Version, and as such will be subject to the Original License. + Distribution of Modified Versions of the Package as Source + . + (4) You may Distribute your Modified Version as Source (either gratis or for a Distributor Fee, and with or without a Compiled form of the Modified Version) provided that you clearly document how it differs from the Standard Version, including, but not limited to, documenting any non-standard features, executables, or modules, and provided that you do at least ONE of the following: + . + (a) make the Modified Version available to the Copyright Holder of the Standard Version, under the Original License, so that the Copyright Holder may include your modifications in the Standard Version. + (b) ensure that installation of your Modified Version does not prevent the user installing or running the Standard Version. In addition, the Modified Version must bear a name that is different from the name of the Standard Version. + (c) allow anyone who receives a copy of the Modified Version to make the Source form of the Modified Version available to others under + (i) the Original License or + (ii) a license that permits the licensee to freely copy, modify and redistribute the Modified Version using the same licensing terms that apply to the copy that the licensee received, and requires that the Source form of the Modified Version, and of any works derived from it, be made freely available in that license fees are prohibited but Distributor Fees are allowed. + Distribution of Compiled Forms of the Standard Version or Modified Versions without the Source + . + (5) You may Distribute Compiled forms of the Standard Version without the Source, provided that you include complete instructions on how to get the Source of the Standard Version. Such instructions must be valid at the time of your distribution. If these instructions, at any time while you are carrying out such distribution, become invalid, you must provide new instructions on demand or cease further distribution. If you provide valid instructions or cease distribution within thirty days after you become aware that the instructions are invalid, then you do not forfeit any of your rights under this license. + . + (6) You may Distribute a Modified Version in Compiled form without the Source, provided that you comply with Section 4 with respect to the Source of the Modified Version. + Aggregating or Linking the Package + . + (7) You may aggregate the Package (either the Standard Version or Modified Version) with other packages and Distribute the resulting aggregation provided that you do not charge a licensing fee for the Package. Distributor Fees are permitted, and licensing fees for other components in the aggregation are permitted. The terms of this license apply to the use and Distribution of the Standard or Modified Versions as included in the aggregation. + . + (8) You are permitted to link Modified and Standard Versions with other works, to embed the Package in a larger work of your own, or to build stand-alone binary or bytecode versions of applications that include the Package, and Distribute the result without restriction, provided the result does not expose a direct interface to the Package. + Items That are Not Considered Part of a Modified Version + . + (9) Works (including, but not limited to, modules and scripts) that merely extend or make use of the Package, do not, by themselves, cause the Package to be a Modified Version. In addition, such works are not considered parts of the Package itself, and are not subject to the terms of this license. + General Provisions + . + (10) Any use, modification, and distribution of the Standard or Modified Versions is governed by this Artistic License. By using, modifying or distributing the Package, you accept this license. Do not use, modify, or distribute the Package, if you do not accept this license. + . + (11) If your Modified Version has been derived from a Modified Version made by someone other than you, you are nevertheless required to ensure that your Modified Version complies with the requirements of this license. + . + (12) This license does not grant you the right to use any trademark, service mark, tradename, or logo of the Copyright Holder. + . + (13) This license includes the non-exclusive, worldwide, free-of-charge patent license to make, have made, use, offer to sell, sell, import and otherwise transfer the Package with respect to any patent claims licensable by the Copyright Holder that are necessarily infringed by the Package. If you institute patent litigation (including a cross-claim or counterclaim) against any party alleging that the Package constitutes direct or contributory patent infringement, then this Artistic License to you shall terminate on the date that such litigation is filed. + . + (14) Disclaimer of Warranty: THE PACKAGE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS "AS IS' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED TO THE EXTENT PERMITTED BY YOUR LOCAL LAW. UNLESS REQUIRED BY LAW, NO COPYRIGHT HOLDER OR CONTRIBUTOR WILL BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING IN ANY WAY OUT OF THE USE OF THE PACKAGE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +License: BSD-3-clause + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + . + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + * Neither the name of the David Spurr nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + . + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + . + http://www.opensource.org/licenses/bsd-license.php + +License: Expat + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + . + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + . + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/config.echoping b/debian/smokeping/usr/share/doc/smokeping/examples/config.echoping new file mode 100644 index 0000000..e482bba --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/config.echoping @@ -0,0 +1,241 @@ +# This Smokeping example configuration file was automatically generated. +# +# Everything up to the Probes section is derived from a common template file. +# See the Probes and Targets sections for the actual example. +# +# This example is included in the smokeping_examples document. + +*** General *** + +owner = Peter Random +contact = some@address.nowhere +mailhost = my.mail.host +sendmail = /usr/sbin/sendmail +# NOTE: do not put the Image Cache below cgi-bin +# since all files under cgi-bin will be executed ... this is not +# good for images. +imgcache = /usr/cache +imgurl = cache +datadir = /usr/data +piddir = /usr/var +cgiurl = http://some.url/smokeping.cgi +smokemail = /usr/etc/smokemail.dist +tmail = /usr/etc/tmail.dist +# specify this to get syslog logging +syslogfacility = local0 +# each probe is now run in its own process +# disable this to revert to the old behaviour +# concurrentprobes = no + +*** Alerts *** +to = alertee@address.somewhere +from = smokealert@company.xy + ++someloss +type = loss +# in percent +pattern = >0%,*12*,>0%,*12*,>0% +comment = loss 3 times in a row + +*** Database *** + +step = 300 +pings = 20 + +# consfn mrhb steps total + +AVERAGE 0.5 1 28800 +AVERAGE 0.5 12 9600 + MIN 0.5 12 9600 + MAX 0.5 12 9600 +AVERAGE 0.5 144 2400 + MAX 0.5 144 2400 + MIN 0.5 144 2400 + +*** Presentation *** + +template = /usr/etc/basepage.html.dist +htmltitle = yes +graphborders = no +# If enabled, treat all filter menu queries as literal strings instead of regex +literalsearch = no + ++ charts + +menu = Charts +title = The most interesting destinations + +++ stddev +sorter = StdDev(entries=>4) +title = Top Standard Deviation +menu = Std Deviation +format = Standard Deviation %f + +++ max +sorter = Max(entries=>5) +title = Top Max Roundtrip Time +menu = by Max +format = Max Roundtrip Time %f seconds + +++ loss +sorter = Loss(entries=>5) +title = Top Packet Loss +menu = Loss +format = Packets Lost %f + +++ median +sorter = Median(entries=>5) +title = Top Median Roundtrip Time +menu = by Median +format = Median RTT %f seconds + ++ overview + +width = 600 +height = 50 +range = 10h + ++ detail + +width = 600 +height = 200 +unison_tolerance = 2 + +"Last 3 Hours" 3h +"Last 30 Hours" 30h +"Last 10 Days" 10d +"Last 360 Days" 360d + +#+ hierarchies +#++ owner +#title = Host Owner +#++ location +#title = Location + +# (The actual example starts here.) + +*** Probes *** + +# This example shows most of the echoping-derived probes in action. + ++ FPing +binary = /usr/bin/fping + +# these expect to find echoping in /usr/bin +# if not, you'll have to specify the location separately for each probe +# + EchoPing # uses TCP or UDP echo (port 7) +# + EchoPingDiscard # uses TCP or UDP discard (port 9) +# + EchoPingChargen # uses TCP chargen (port 19) ++ EchoPingSmtp # SMTP (25/tcp) for mail servers ++ EchoPingHttps # HTTPS (443/tcp) for web servers ++ EchoPingHttp # HTTP (80/tcp) for web servers and caches ++ EchoPingIcp # ICP (3130/udp) for caches +# these need at least echoping 6 with the corresponding plugins ++ EchoPingDNS # DNS (53/udp or tcp) servers ++ EchoPingLDAP # LDAP (389/tcp) servers ++ EchoPingWhois # Whois (43/tcp) servers + +*** Targets *** + +# All the servers are pinged both with ICMP (the FPing probe) +# and their respective echoping probe. The proxy server, www-cache, +# is probed with both HTTP requests and ICP requests for the same +# URL. + +# default probe +probe = FPing + +menu = Top +title = Network Latency Grapher +remark = Welcome to this SmokePing website. + ++ MyServers + +menu = My Servers +title = My Servers + +++ www-server +menu = www-server +title = Web Server (www-server) / ICMP +# probe = FPing propagated from top +host = www-server.example + ++++ http +menu = http +title = Web Server (www-server) / HTTP +probe = EchoPingHttp +host = www-server.example +# default url is / + ++++ https +menu = https +title = Web Server (www-server) / HTTPS +probe = EchoPingHttps +host = www-server.example + +++ cache +menu = www-cache +title = Web Cache (www-cache) / ICMP +host = www-cache.example + ++++ http +menu = http +title = www-cache / HTTP +probe = EchoPingHttp +host = www-cache.example +port = 8080 # use the squid port +url = http://www.somehost.example/ + ++++ icp +menu = icp +title = www-cache / ICP +probe = EchoPingIcp +host = www-cache.example +url = http://www.somehost.example/ + +++ mail +menu = mail-server +title = Mail Server (mail-server) / ICMP +host = mail-server.example + ++++ smtp +menu = mail-server / SMTP +title = Mail Server (mail-server) / SMTP +probe = EchoPingSmtp +host = mail-server.example + +++ ldap-server +menu = ldap-server +title = ldap-server / ICMP +host = ldap-server.example + ++++ ldap +menu = ldap-server / LDAP +title = LDAP Server (ldap-server) / LDAP +probe = EchoPingLDAP +ldap_request = (objectclass=*) +host = ldap-server.example + +++ name-server +menu = name-server +title = name-server / ICMP +host = name-server.example + ++++ DNS +menu = name-server / DNS +title = DNS Server (name-server) / DNS +probe = EchoPingDNS +dns_request = name.example +host = name-server.example + +++ whois-server +menu = whois-server +title = whois-server / ICMP +host = whois-server.example + ++++ Whois +menu = whois-server / Whois +title = Whois Server (whois-server) / Whois +probe = EchoPingWhois +whois_request = domain.example +host = whois-server.example diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/config.fping-instances b/debian/smokeping/usr/share/doc/smokeping/examples/config.fping-instances new file mode 100644 index 0000000..9e1956f --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/config.fping-instances @@ -0,0 +1,185 @@ +# This Smokeping example configuration file was automatically generated. +# +# Everything up to the Probes section is derived from a common template file. +# See the Probes and Targets sections for the actual example. +# +# This example is included in the smokeping_examples document. + +*** General *** + +owner = Peter Random +contact = some@address.nowhere +mailhost = my.mail.host +sendmail = /usr/sbin/sendmail +# NOTE: do not put the Image Cache below cgi-bin +# since all files under cgi-bin will be executed ... this is not +# good for images. +imgcache = /usr/cache +imgurl = cache +datadir = /usr/data +piddir = /usr/var +cgiurl = http://some.url/smokeping.cgi +smokemail = /usr/etc/smokemail.dist +tmail = /usr/etc/tmail.dist +# specify this to get syslog logging +syslogfacility = local0 +# each probe is now run in its own process +# disable this to revert to the old behaviour +# concurrentprobes = no + +*** Alerts *** +to = alertee@address.somewhere +from = smokealert@company.xy + ++someloss +type = loss +# in percent +pattern = >0%,*12*,>0%,*12*,>0% +comment = loss 3 times in a row + +*** Database *** + +step = 300 +pings = 20 + +# consfn mrhb steps total + +AVERAGE 0.5 1 28800 +AVERAGE 0.5 12 9600 + MIN 0.5 12 9600 + MAX 0.5 12 9600 +AVERAGE 0.5 144 2400 + MAX 0.5 144 2400 + MIN 0.5 144 2400 + +*** Presentation *** + +template = /usr/etc/basepage.html.dist +htmltitle = yes +graphborders = no +# If enabled, treat all filter menu queries as literal strings instead of regex +literalsearch = no + ++ charts + +menu = Charts +title = The most interesting destinations + +++ stddev +sorter = StdDev(entries=>4) +title = Top Standard Deviation +menu = Std Deviation +format = Standard Deviation %f + +++ max +sorter = Max(entries=>5) +title = Top Max Roundtrip Time +menu = by Max +format = Max Roundtrip Time %f seconds + +++ loss +sorter = Loss(entries=>5) +title = Top Packet Loss +menu = Loss +format = Packets Lost %f + +++ median +sorter = Median(entries=>5) +title = Top Median Roundtrip Time +menu = by Median +format = Median RTT %f seconds + ++ overview + +width = 600 +height = 50 +range = 10h + ++ detail + +width = 600 +height = 200 +unison_tolerance = 2 + +"Last 3 Hours" 3h +"Last 30 Hours" 30h +"Last 10 Days" 10d +"Last 360 Days" 360d + +#+ hierarchies +#++ owner +#title = Host Owner +#++ location +#title = Location + +# (The actual example starts here.) + +*** Probes *** + +# This example demonstrates the concept of probe instances. The FPingLarge +# and FPingNormal probes are independent of each other, they just use +# the same module, FPing. FPingNormal uses the default parameters, and +# so does FPingLarge except for the 5 kilobyte packetsize. Both use the +# same fping binary, and its path is configured FPing top section. +# +# The 'offset' parameters make sure the probes don't run at the same time - +# FPingNormal is run every 'full' 5 minutes (eg. 8:00, 8:05, 8:10 and so on, +# in wallclock time) while FPingLarge is run halfway through these intervals +# (eg. 8:02:30, 8:07:30 etc.) +# +# The top FPing section does not define a probe in itself because it +# has subsections. If we really wanted to have one probe named "FPing", +# we could do so by making a subsection by that name. + ++ FPing +binary = /usr/bin/fping + +++ FPingNormal +offset = 0% + +++ FPingLarge +packetsize = 5000 +offset = 50% + +*** Targets *** + +# The target section shows two host, myhost1.example and myhost2.example, +# being pinged with two differently sized ICMP packets. This time the tree +# is divided by the target host rather than the probe. + +probe = FPingNormal +menu = Top +title = Network Latency Grapher +remark = Welcome to this SmokePing website. + ++ network +menu = Net latency +title = Network latency (ICMP pings) + +++ myhost1 +menu = myhost1 +title = ICMP latency for myhost1 + ++++ normal +title = Normal packetsize (56 bytes) +probe = FPingNormal +host = myhost1.example + ++++ large +title = Large packetsize (5000 bytes) +probe = FPingLarge +host = myhost1.example + +++ myhost2 +menu = myhost2 +title = ICMP latency for myhost2 + ++++ normal +title = Normal packetsize (56 bytes) +probe = FPingNormal +host = myhost2.example + ++++ large +title = Large packetsize (5000 bytes) +probe = FPingLarge +host = myhost2.example diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/config.multiple-probes b/debian/smokeping/usr/share/doc/smokeping/examples/config.multiple-probes new file mode 100644 index 0000000..0097bbe --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/config.multiple-probes @@ -0,0 +1,189 @@ +# This Smokeping example configuration file was automatically generated. +# +# Everything up to the Probes section is derived from a common template file. +# See the Probes and Targets sections for the actual example. +# +# This example is included in the smokeping_examples document. + +*** General *** + +owner = Peter Random +contact = some@address.nowhere +mailhost = my.mail.host +sendmail = /usr/sbin/sendmail +# NOTE: do not put the Image Cache below cgi-bin +# since all files under cgi-bin will be executed ... this is not +# good for images. +imgcache = /usr/cache +imgurl = cache +datadir = /usr/data +piddir = /usr/var +cgiurl = http://some.url/smokeping.cgi +smokemail = /usr/etc/smokemail.dist +tmail = /usr/etc/tmail.dist +# specify this to get syslog logging +syslogfacility = local0 +# each probe is now run in its own process +# disable this to revert to the old behaviour +# concurrentprobes = no + +*** Alerts *** +to = alertee@address.somewhere +from = smokealert@company.xy + ++someloss +type = loss +# in percent +pattern = >0%,*12*,>0%,*12*,>0% +comment = loss 3 times in a row + +*** Database *** + +step = 300 +pings = 20 + +# consfn mrhb steps total + +AVERAGE 0.5 1 28800 +AVERAGE 0.5 12 9600 + MIN 0.5 12 9600 + MAX 0.5 12 9600 +AVERAGE 0.5 144 2400 + MAX 0.5 144 2400 + MIN 0.5 144 2400 + +*** Presentation *** + +template = /usr/etc/basepage.html.dist +htmltitle = yes +graphborders = no +# If enabled, treat all filter menu queries as literal strings instead of regex +literalsearch = no + ++ charts + +menu = Charts +title = The most interesting destinations + +++ stddev +sorter = StdDev(entries=>4) +title = Top Standard Deviation +menu = Std Deviation +format = Standard Deviation %f + +++ max +sorter = Max(entries=>5) +title = Top Max Roundtrip Time +menu = by Max +format = Max Roundtrip Time %f seconds + +++ loss +sorter = Loss(entries=>5) +title = Top Packet Loss +menu = Loss +format = Packets Lost %f + +++ median +sorter = Median(entries=>5) +title = Top Median Roundtrip Time +menu = by Median +format = Median RTT %f seconds + ++ overview + +width = 600 +height = 50 +range = 10h + ++ detail + +width = 600 +height = 200 +unison_tolerance = 2 + +"Last 3 Hours" 3h +"Last 30 Hours" 30h +"Last 10 Days" 10d +"Last 360 Days" 360d + +#+ hierarchies +#++ owner +#title = Host Owner +#++ location +#title = Location + +# (The actual example starts here.) + +*** Probes *** + +# Here we have three probes: FPing for the regular ICMP pings, +# DNS for name server latency measurement and EchoPingHttp +# for web servers. +# +# The FPing probe runs with the default parameters, except that the ICMP +# packet size is 1000 bytes instead of the default 56 bytes. +# +# The DNS and EchoPingHttp probes have been configured to be a bit more +# gentle with the servers, as they only do 5 queries (pings) instead of the +# default 20 (or whatever is specified in the Database section). However, +# DNS queries are made more often: 5 queries every 3 minutes instead of +# every 5 minutes. + ++ FPing +binary = /usr/bin/fping +packetsize = 1000 + ++ DNS +binary = /usr/bin/dig +lookup = name.example +pings = 5 +step = 180 + ++ EchoPingHttp +pings = 5 +url = /test-url + +*** Targets *** + +# The target tree has been divided by the probe used. This does not have +# to be the case: every target (sub)section can use a different probe, +# and the same probe can be used in different parts of the config tree. + +probe = FPing +menu = Top +title = Network Latency Grapher +remark = Welcome to this SmokePing website. + ++ network +menu = Net latency +title = Network latency (ICMP pings) + +++ myhost1 +host = myhost1.example +++ myhost2 +host = myhost2.example + ++ services +menu = Service latency +title = Service latency (DNS, HTTP) + +++ DNS +probe = DNS +menu = DNS latency +title = Service latency (DNS) + ++++ dns1 +host = dns1.example + ++++ dns2 +host = dns2.example + +++ HTTP +menu = HTTP latency +title = Service latency (HTTP) + ++++ www1 +host = www1.example + ++++ www2 +host = www2.example diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/config.simple b/debian/smokeping/usr/share/doc/smokeping/examples/config.simple new file mode 100644 index 0000000..c88776d --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/config.simple @@ -0,0 +1,156 @@ +# This Smokeping example configuration file was automatically generated. +# +# Everything up to the Probes section is derived from a common template file. +# See the Probes and Targets sections for the actual example. +# +# This example is included in the smokeping_examples document. + +*** General *** + +owner = Peter Random +contact = some@address.nowhere +mailhost = my.mail.host +sendmail = /usr/sbin/sendmail +# NOTE: do not put the Image Cache below cgi-bin +# since all files under cgi-bin will be executed ... this is not +# good for images. +imgcache = /usr/cache +imgurl = cache +datadir = /usr/data +piddir = /usr/var +cgiurl = http://some.url/smokeping.cgi +smokemail = /usr/etc/smokemail.dist +tmail = /usr/etc/tmail.dist +# specify this to get syslog logging +syslogfacility = local0 +# each probe is now run in its own process +# disable this to revert to the old behaviour +# concurrentprobes = no + +*** Alerts *** +to = alertee@address.somewhere +from = smokealert@company.xy + ++someloss +type = loss +# in percent +pattern = >0%,*12*,>0%,*12*,>0% +comment = loss 3 times in a row + +*** Database *** + +step = 300 +pings = 20 + +# consfn mrhb steps total + +AVERAGE 0.5 1 28800 +AVERAGE 0.5 12 9600 + MIN 0.5 12 9600 + MAX 0.5 12 9600 +AVERAGE 0.5 144 2400 + MAX 0.5 144 2400 + MIN 0.5 144 2400 + +*** Presentation *** + +template = /usr/etc/basepage.html.dist +htmltitle = yes +graphborders = no +# If enabled, treat all filter menu queries as literal strings instead of regex +literalsearch = no + ++ charts + +menu = Charts +title = The most interesting destinations + +++ stddev +sorter = StdDev(entries=>4) +title = Top Standard Deviation +menu = Std Deviation +format = Standard Deviation %f + +++ max +sorter = Max(entries=>5) +title = Top Max Roundtrip Time +menu = by Max +format = Max Roundtrip Time %f seconds + +++ loss +sorter = Loss(entries=>5) +title = Top Packet Loss +menu = Loss +format = Packets Lost %f + +++ median +sorter = Median(entries=>5) +title = Top Median Roundtrip Time +menu = by Median +format = Median RTT %f seconds + ++ overview + +width = 600 +height = 50 +range = 10h + ++ detail + +width = 600 +height = 200 +unison_tolerance = 2 + +"Last 3 Hours" 3h +"Last 30 Hours" 30h +"Last 10 Days" 10d +"Last 360 Days" 360d + +#+ hierarchies +#++ owner +#title = Host Owner +#++ location +#title = Location + +# (The actual example starts here.) + +*** Probes *** + +# Here we have just one probe, fping, pinging four hosts. +# +# The fping probe is using the default parameters, some of them supplied +# from the Database section ("step" and "pings"), and some of them by +# the probe module. + ++FPing +binary = /usr/bin/fping + +*** Targets *** + +# The hosts are located in two sites of two hosts each, and the +# configuration has been divided to site sections ('+') and host subsections +# ('++') accordingly. + +probe = FPing + +menu = Top +title = Network Latency Grapher +remark = Welcome to this SmokePing website. + ++ mysite1 +menu = Site 1 +title = Hosts in Site 1 + +++ myhost1 +host = myhost1.mysite1.example +++ myhost2 +host = myhost2.mysite1.example + ++ mysite2 +menu = Site 2 +title = Hosts in Site 2 + +++ myhost3 +host = myhost3.mysite2.example +++ myhost4 +host = myhost4.mysite2.example diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/config.targetvars-with-Curl b/debian/smokeping/usr/share/doc/smokeping/examples/config.targetvars-with-Curl new file mode 100644 index 0000000..8ddb12d --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/config.targetvars-with-Curl @@ -0,0 +1,210 @@ +# This Smokeping example configuration file was automatically generated. +# +# Everything up to the Probes section is derived from a common template file. +# See the Probes and Targets sections for the actual example. +# +# This example is included in the smokeping_examples document. + +*** General *** + +owner = Peter Random +contact = some@address.nowhere +mailhost = my.mail.host +sendmail = /usr/sbin/sendmail +# NOTE: do not put the Image Cache below cgi-bin +# since all files under cgi-bin will be executed ... this is not +# good for images. +imgcache = /usr/cache +imgurl = cache +datadir = /usr/data +piddir = /usr/var +cgiurl = http://some.url/smokeping.cgi +smokemail = /usr/etc/smokemail.dist +tmail = /usr/etc/tmail.dist +# specify this to get syslog logging +syslogfacility = local0 +# each probe is now run in its own process +# disable this to revert to the old behaviour +# concurrentprobes = no + +*** Alerts *** +to = alertee@address.somewhere +from = smokealert@company.xy + ++someloss +type = loss +# in percent +pattern = >0%,*12*,>0%,*12*,>0% +comment = loss 3 times in a row + +*** Database *** + +step = 300 +pings = 20 + +# consfn mrhb steps total + +AVERAGE 0.5 1 28800 +AVERAGE 0.5 12 9600 + MIN 0.5 12 9600 + MAX 0.5 12 9600 +AVERAGE 0.5 144 2400 + MAX 0.5 144 2400 + MIN 0.5 144 2400 + +*** Presentation *** + +template = /usr/etc/basepage.html.dist +htmltitle = yes +graphborders = no +# If enabled, treat all filter menu queries as literal strings instead of regex +literalsearch = no + ++ charts + +menu = Charts +title = The most interesting destinations + +++ stddev +sorter = StdDev(entries=>4) +title = Top Standard Deviation +menu = Std Deviation +format = Standard Deviation %f + +++ max +sorter = Max(entries=>5) +title = Top Max Roundtrip Time +menu = by Max +format = Max Roundtrip Time %f seconds + +++ loss +sorter = Loss(entries=>5) +title = Top Packet Loss +menu = Loss +format = Packets Lost %f + +++ median +sorter = Median(entries=>5) +title = Top Median Roundtrip Time +menu = by Median +format = Median RTT %f seconds + ++ overview + +width = 600 +height = 50 +range = 10h + ++ detail + +width = 600 +height = 200 +unison_tolerance = 2 + +"Last 3 Hours" 3h +"Last 30 Hours" 30h +"Last 10 Days" 10d +"Last 360 Days" 360d + +#+ hierarchies +#++ owner +#title = Host Owner +#++ location +#title = Location + +# (The actual example starts here.) + +*** Probes *** + +# This example explains the difference between probe- and target-specific +# variables. We use the Curl probe for this. +# +# Every probe supports at least some probe-specific variables. The values +# of these variables are common to all the targets of the probe, and +# they can only be configured in the Probes section. In this case, +# the probe-specific variables are "binary" and "step". +# +# Target-specific variables are supported by most probes, the most notable +# exception being the FPing probe and its derivatives. Target-specific +# variables can have different values for different targets. They can be +# configured in both Probes and Targets sections. The values assigned in the +# Probes section function become default values that can be overridden +# in the Targets section. +# +# The documentation of each probe states which of its variables are +# probe-specific and which are target-specific. +# +# In this case the "urlformat" variable is a target-specific one. It is +# also quite uncommon, because it can contain a placeholder for the "host" +# variable in the Targets section. This is not a general feature, its +# usage is only limited to the "urlformat" variable and the "%host%" escape. +# +# (The reason why the FPing probe does not support target-specific variables +# is simply the fact that the fping program measures all its targets in one +# go, so they all have the same parameters. The other probes ping their targets +# one at a time.) + ++ Curl +# probe-specific variables +binary = /usr/bin/curl +step = 60 + +# a default for this target-specific variable +urlformat = http://%host%/ + +*** Targets *** + +# The target tree is divided into an HTTP branch and an FTP one. +# The servers "myhost1.example" and "myhost2.example" are probed +# in both. The third server, "myhost3.example", only has an HTTP +# server, and it's in a non-standard port (8080). +# +# The "urlformat" variable is specified for the whole FTP branch +# as "ftp://%host%/". For the HTTP branch, the default from the +# Probes section is used, except for myhost3, which overrides +# it to tag the port number into the URL. +# +# The myhost3 assignment could just as well have included the hostname +# verbatim (ie. urlformat = http://myhost3.example:8080/) instead of +# using the %host% placeholder, but the host variable would still have +# been required (even though it wouldn't have been used for anything). + +probe = Curl +menu = Top +title = Network Latency Grapher +remark = Welcome to this SmokePing website. + ++ HTTP +menu = http +title = HTTP latency + +++ myhost1 +menu = myhost1 +title = HTTP latency for myhost1 +host = myhost1.example + +++ myhost2 +menu = myhost2 +title = HTTP latency for myhost2 +host = myhost2.example + +++ myhost3 +menu = myhost3 +title = HTTP latency for myhost3 (port 8080!) +host = myhost3.example +urlformat = http://%host%:8080/ + ++ FTP +menu = ftp +title = FTP latency +urlformat = ftp://%host%/ + +++ myhost1 +menu = myhost1 +title = FTP latency for myhost1 +host = myhost1.example + +++ myhost2 +menu = myhost2 +title = FTP latency for myhost2 +host = myhost2.example diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/config.template b/debian/smokeping/usr/share/doc/smokeping/examples/config.template new file mode 100644 index 0000000..8d5cbda --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/config.template @@ -0,0 +1,168 @@ +# This Smokeping example configuration file was automatically generated. +# +# Everything up to the Probes section is derived from a common template file. +# See the Probes and Targets sections for the actual example. +# +# This example is included in the smokeping_examples document. + +*** General *** + +owner = Peter Random +contact = some@address.nowhere +mailhost = my.mail.host +sendmail = /usr/sbin/sendmail +# NOTE: do not put the Image Cache below cgi-bin +# since all files under cgi-bin will be executed ... this is not +# good for images. +imgcache = /usr/cache +imgurl = cache +datadir = /usr/data +piddir = /usr/var +cgiurl = http://some.url/smokeping.cgi +smokemail = /usr/etc/smokemail.dist +tmail = /usr/etc/tmail.dist +# specify this to get syslog logging +syslogfacility = local0 +# each probe is now run in its own process +# disable this to revert to the old behaviour +# concurrentprobes = no + +*** Alerts *** +to = alertee@address.somewhere +from = smokealert@company.xy + ++someloss +type = loss +# in percent +pattern = >0%,*12*,>0%,*12*,>0% +comment = loss 3 times in a row + +*** Database *** + +step = 300 +pings = 20 + +# consfn mrhb steps total + +AVERAGE 0.5 1 28800 +AVERAGE 0.5 12 9600 + MIN 0.5 12 9600 + MAX 0.5 12 9600 +AVERAGE 0.5 144 2400 + MAX 0.5 144 2400 + MIN 0.5 144 2400 + +*** Presentation *** + +template = /usr/etc/basepage.html.dist +htmltitle = yes +graphborders = no +# If enabled, treat all filter menu queries as literal strings instead of regex +literalsearch = no + ++ charts + +menu = Charts +title = The most interesting destinations + +++ stddev +sorter = StdDev(entries=>4) +title = Top Standard Deviation +menu = Std Deviation +format = Standard Deviation %f + +++ max +sorter = Max(entries=>5) +title = Top Max Roundtrip Time +menu = by Max +format = Max Roundtrip Time %f seconds + +++ loss +sorter = Loss(entries=>5) +title = Top Packet Loss +menu = Loss +format = Packets Lost %f + +++ median +sorter = Median(entries=>5) +title = Top Median Roundtrip Time +menu = by Median +format = Median RTT %f seconds + ++ overview + +width = 600 +height = 50 +range = 10h + ++ detail + +width = 600 +height = 200 +unison_tolerance = 2 + +"Last 3 Hours" 3h +"Last 30 Hours" 30h +"Last 10 Days" 10d +"Last 360 Days" 360d + +#+ hierarchies +#++ owner +#title = Host Owner +#++ location +#title = Location + +# (The actual example starts here.) + +*** Probes *** + +# This is the template configuration file distributed with Smokeping. +# It is included in the examples as well for the sake of completeness. + + ++ FPing + +binary = /usr/sbin/fping + +*** Slaves *** +secrets=/usr/etc/smokeping_secrets.dist ++boomer +display_name=boomer +color=0000ff + ++slave2 +display_name=another +color=00ff00 + + +*** Targets *** + +# This is the template configuration file distributed with Smokeping. +# It is included in the examples as well for the sake of completeness. + + +probe = FPing + +menu = Top +title = Network Latency Grapher +remark = Welcome to the SmokePing website of xxx Company. \ + Here you will learn all about the latency of our network. + ++ Test +menu= Targets +#parents = owner:/Test/James location:/ + +++ James + +menu = James +title =James +alerts = someloss +slaves = boomer slave2 +host = james.address + +++ MultiHost + +menu = Multihost +title = James and James as seen from Boomer +host = /Test/James /Test/James~boomer + diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/lighttpd_45-smokeping.conf b/debian/smokeping/usr/share/doc/smokeping/examples/lighttpd_45-smokeping.conf new file mode 100644 index 0000000..a124b79 --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/lighttpd_45-smokeping.conf @@ -0,0 +1,22 @@ +# /etc/lighttpd/conf-available/45-smokeping.conf +# Configuration for smokeping CGI program + +server.modules += ( "mod_fastcgi", "mod_rewrite" ) + +$HTTP["url"] =~ "^/smokeping/" { + server.document-root = "/usr/share/" + url.rewrite-once = ( + "^/smokeping/($|\?)" => "/smokeping/smokeping.cgi?${qsa}", + "^/smokeping/(.*)" => "/smokeping/www/$1", + ) + fastcgi.server = ( + "/smokeping/smokeping.cgi" => ( + "localhost" => ( + "bin-path" => "/usr/lib/cgi-bin/smokeping.cgi", + "socket" => "/run/lighttpd/smokeping-fcgi.socket", + ) + ), + ) +} + +# vim: set ts=4 sw=4 et: diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/smokeping_secrets.dist b/debian/smokeping/usr/share/doc/smokeping/examples/smokeping_secrets.dist new file mode 100644 index 0000000..6cf6a43 --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/smokeping_secrets.dist @@ -0,0 +1,3 @@ +host1:mysecret +host2:yoursecret +boomer:lkasdf93uhhfdfddf diff --git a/debian/smokeping/usr/share/doc/smokeping/examples/systemd/slave_mode.conf b/debian/smokeping/usr/share/doc/smokeping/examples/systemd/slave_mode.conf new file mode 100644 index 0000000..a5f3190 --- /dev/null +++ b/debian/smokeping/usr/share/doc/smokeping/examples/systemd/slave_mode.conf @@ -0,0 +1,11 @@ +# If you need to run smokeping in a master/slave setup, you can create a +# drop-in override to add the required parameters to the daemon like shown +# below. +# +# To enable this, you'd need to create a directory +# /etc/systemd/system/smokeping.service.d/ and copy this file in that +# directory. Then, modify it according to your requirements. +# +[Service] +ExecStart= +ExecStart=/usr/sbin/smokeping --master-url=http://127.0.0.1/smokeping.fcgi --cache-dir=/var/lib/smokeping --shared-secret=/etc/smokeping/smokeping_secrets --pid-dir=/run/smokeping diff --git a/debian/smokeping/usr/share/man/man1/smokeinfo.1.gz b/debian/smokeping/usr/share/man/man1/smokeinfo.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..31e2c82c29e43fe25c7c59b34337a5d65379383e GIT binary patch literal 1908 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 JU^?d<002KOCnW#? literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man1/smokeping_cgi.1.gz b/debian/smokeping/usr/share/man/man1/smokeping_cgi.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..44aafd84f58606762f7e31a382f7b9f66fbf6ff4 GIT binary patch literal 2003 zcmV;^2Q2s>iwFP!000021FctWZ{xTT{;pp!HF~vkaMU>0bbHBWQN?E`Mw8gEo$LlM zu%#u+(nS)rBo(jG_P_TTN`4EjKtG(Z$(qCA%y8zJXBdCcqSGHwDOZuaB&$^%Us0%{ zv{+qIW#iMo@wVqfEvT%@g-t_|WgA+_LTX`UM9U3LRCIayAPTzh&w6L))Nz7YnwOcR zpZvdEoUjFFWoAVY2^~?XrO20=ymaF0-|6G|k)&BkF!?OC3zkeNLP?!&>gtqNXwzVB>3FWJ_OT%`rQNxeh@a8F@7X1 z7JuyR4oN;VD5BpuGR5!IDMDrOW2gU5LPp%THVG~1TcxZt1b+pWqf3Rd3F^TTTT5c4 z-38XEO{o9z6O5%2aWDS0@O;82G6cJ=)_&FIRePxy|M7g89V;GaZB?3T4NNFXNe1q- z!^pDKqWVa!)z~r=Yn9WAgKHalDpDXwB3MxvgqqjkEsBo6A|GyoZ?x!$ZyX5KpGMl= zIUb=XiKHQEWZu9TrG`G8by2`}mhI4oSR(nIWPvyknJN%bB(>%YIXgDB88$lp{O+Vn zi4@r7<&2l6S{fPJR25D%g9!J^c`+)n;JP>m&eYaPF7zv4?{fd;<0nqXWc&+KIF8Xd zl{T_V8&z?biFiXA6tJ#BX$)V4@H;O|u$XAOElmx83&P>!PWj-v?~CWYg^NQG4n%bO?YQWNU5v?M}nNZ=o} zVa1@a+K#sv^ambtRisuii;yb0r(F_8*28=-9Ju2FEA&d@I}SUJ%#?cNBf|1^1*k?! zCZj4u+N5jTNQ<>Wi-82+7hSzBx+eBA(JpVd40I3JITrQ);BfT%dK5h6!Pss&#!cFomuPkCB8# zEv4ly9tvYwQm57UG)IJHgAUIr2XvrEM%tnZx<6JDtBsT7eWtO*L7O@yyey z#^P)+f0`Vj&`G%M5SJ@68R6bsi+Ge+ST~&g2xt${V;e50Yrh>#kHgVQS)aVVDxr#Q z3ti{iZRlmj@2ItN=FIG&EWekM`<+iQP5@KJsTVV&G!-%lLaS`(t;+bZu}m{wai8YkT`(0A!EZBfE$SRa63FLgL0$bIVrFj$ z#U`d{ryV~6Gi(fLsj`S00^Juep@TH)f}_3z3hrm)*1M{2rHelubB=3Nlzj2;&c#Xh zh>&V&@168(Q~!GR!%6qO$*Kf{MsmCF!s?GFFVoTO-TWx3owVfuq|;SmsS}=HB=&mD zwR5#hQG>Cx=_~hBfEv|WoOBc*s&9Qi>JJ`ggCpaOteG$%Hbj*(;$uhrDz4NcNwBG5nR2#*A(ET+;Puks2>PRg=l>;}hMww`E3?Y6-&d?$b~f z#?f2J5|h-U!#z*g`>gSf;SQ_KoR%rW!vm@ech>pVL1V4U1m6+$6A*)s51kN?akS$8 z+yUJl+4jIt?D@FINt%{CEUE z7R@{;vs6Zaw8rBda7Wk=gK7T``oYcUel&mK$cLl(<6t(U;dn{`O@irs)PK4UrrzXf zIvLLfXv&$C|0AQ@9JsE}!KPl#e5Stb%f2Vv^BLSF(>KTGArsU8QK?Mv(}myX_8@gv zJTcI(-Qy9+HS~U?hF!d4L%&OZ{cu4K0%J6IL)rTHn^mXL3SS=r@9ezy)6ZRcngum< lgC}HpdW76s#BYQ{^wUR+_1{&~3t{rf`!9in?&OLO003U+;YI)e literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man1/tSmoke.1.gz b/debian/smokeping/usr/share/man/man1/tSmoke.1.gz new file mode 100644 index 0000000000000000000000000000000000000000..0e0b491293ddf6e49845aa78b8236c6a3f634017 GIT binary patch literal 2340 zcmV+<3ETD`iwFP!000021FcwXbKAHP{?1>qRqtv$BhiwR++E~26GfI|P5q)uavaa; zrlm+wLQN730a{Ue{qKDiAob!&W;&fyCXujM>@IeneL?(LgIX_Il&VN{$rLJ%PbpN9 z%obfLP2Bp0w>=+hz0#;OFft61WK9c^i6Sr}qWPLeD(ZHxgN$DL?N0lI4lQ9K(>xLM z(tq{(h$UDl6BA@nP(+j$B1q?n=vwmGAN2A3NYErFi2Ni9Yb@zJ2n8LkmLj8-pfJb| z43%1tKN`U>8IvJj=j6YBva5_&p6^>(pXMywtnn(3esfp$Ymj4o8zRWtNBsQ;eg; zs<0PWNwcK>+jkHq1?-;vd*=CsPoxQQ8;$MifL90eV)h@;7s)>34p+@mMQfnLAQz;e zKH0S_kp|I+YfXVIO>v=8TCi~kn(i_Q1PK@$WE!TX&b(Q6=r72Jn%)?jRRVzt@;t{a7zW@C89lK+6dkz=g z#>kwq(4t9eRkE4O;0bO}z`6>B)_f%^N|h!r4Re7ziCKhJsi0H@8T=WS3B`e4!Z3g1 zk=~P%&>9rXvEy(G<`73E?2Kgw!!{l}xHxcd9DcTV%L*zksBJM`1p~i8s&+bd=MY=P zMfcEhoSn6gj<&F}2QRj33mYfDUYeAK?6NNB!_3TP*^e{Rz~ZD~ji~t`>Q9h$c6PEa zjz2KxN4E1B?Sf9WGzMw?&3_BN!XI2p*z?2BG-V7?V>-FM{p)}_AWko-UeQVWr<4|r0bWNS(hX5O)dL4?c9R=Y@rWeTinzb0J*zV{N2a zi~1^stSA9;Sa4!XixwF-fbC77f%Di}WTi|VZf-}D;l%pq(qQ4pp3GmhjC({X`reBx$w75_dj` z4ZMU%J+rlfAukE}^^AUIzdFA*?e~fA`@dC}@;?ciZs&tZe>@ybhqpI-8Mi}kcvE0y zFYRnTvq@-6&$4{Al<+uQBZ?Tqk#^mT(Y6JzUZabkcMlEsJcJ`IGutd#W*wzq0|PWl zThVZm<%DHXpbFL4Qm&snncABR=1Wy3jVc_nH=t$@Ar&vD*H>hL7fZw_R2kx()#7Wh z$UM8w1B4|C)=kg;V&vHNZCB7^__kqE+PVhmeDFz%m2bf$(2(0Hut zTOZG5cI;y3=ZV8|m4|1kn!^S8Qf1D_3*xiF>S-SZGH zGlV}$EEcTprW>E0flmZ0w+Bq`2h5mDYx>qu@s*aV%}8=bYZ}$myDX2;+rK_OtJpCQNwj zWbEj>#%ncRZ;O{z=D1wxu!+pM4?LhC0O363xK1o>es~}4djgITa@%-@;F@a3qm2Z(WA^)D2k(tt>fblM!Y03;A-I1#dKeEsUQYMqZm12f zukv*v7fUqD@CcJ>`z2S_bJV-*@T1JK7RJ4~_AziKit)P;rU+Rh0PgR$I$ym44ZgDhJKTN`uR0o zV;sZV7h&rM>AaB90za>NUi+l;@=cTOCOrq;-W|L=-b1b!s0tQraoGJx_%J}R27Gf8g|y-dEBkJ69jJMX{s K7wq0+6952CrH?cK literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_matchers_Avgratio.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_matchers_Avgratio.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..b5682659ef1f4933b8b96c05bebcf4b4e738e729 GIT binary patch literal 1948 zcmV;N2V?jjiwFP!000021FctWbLzMi{_bCK%JdepB@S?Jx?OU^lx4{c(!U|U?y5nj-0f!;aj|Sz7?pTN`d%FGXd_aQdqxDb-qB12{r;_&(z)B|c6!vZf`v@7SkOoJ z)A+LZCE#5wO%8U(yJifOPhuY zEy$hC;Ft`_kgGFt&$o7z^2l*rtLtISx_%TJnbKC|Ya}2cBYrlH8yXrtI&K=`SI}zp z$L@ZU;7#K+_>C=dd`r6!OIF{tM*kpW#QxVLFBkMuC?hn%UdrWYQ>sjada%Tll2GL~ zfLCcE8hsu>nH2DQ^~=g}37K2mFPOlb;pmC%NrYihbrB@iUwte0xInw0LX(w4g+7iNYpv}$=T>gO4{5T zo}eg^pexFec@1MEH4Qp#6tEe`d-TDVK>SQ1g&*)trSK>adCnQKdWZ|bN}`8fYULX{)7}xL!6u< z*P=~3Rj`|pw?!Hhu&#WeHHTzXslsH1;Z;~2hpa-YL{K8U6!{E`m_koSaLnCjWVlrl zR=u28yh%8DYpA0FeugrIWBZIXubL$sCtoez(wy=u>R60d#lU|MRWn^X)527K)o4%kRV9;w=C+c-j^#|y>yzCvT;}6{V zz<$1yT~Y5KW02N=`8VeferGD-%ul}3k}*UL*X{RXxdyK#>RDvWkbUr>9|2MQ{&2ei zAf=*@*tEQ+|8+I>I=%DLZuhkFJ@wol+z#0dGio z3&Z%;+v&r6w9CMCcJ=~@24bIuw%V``cvO(2J4yf(p0UIt{3x|-87RLQ25=H`Z^IA|Brb{=hd1?iR^{|zJb##sA8oR) z?GdF$Eo?YT@W5VoWsU?~U&m5M(C$%$NK`KU|6qj_#EuqQ%UL*Ny2u5`NV&qf(JoEk zt4cD^FCS7+O{EANu<>N74UB*)R2n$7iCXv8iwjXMqje$Uz*?i)T4@1gd283TasM=4 zjOLTsax%R;3jK||;f!$GS}Lp~x4grGP{px&Wirs>rGPJdmCk04iz}<=to}r12kO48 zH?k!242U6xaG%juox96{*Y=A%hkKWUb-PT5hpEefYG)$%F@d-*2N~|n2k_WrcF6lD z8^8qQNsU@qRxT})HN3X*+nU&XX=X*f!T2V#S>rf3s%E{tS=Yd|rYhHtELF1q(@?eh zy`6pB$ENn;hVvLnKdKf=jXOtWqTHb)RR92M!6pMXU7@OW|7@QzTgF3LOXG*}k@17L z;mqYGGPqc9HE9X%Rpmu_@W$PPpvxsE1&2PbPWk6huW~%7<#lo^F*=Udvc^E^`0Ma? zb~8RgXeC49!5z<>*Nkpk}U)=Y54qRDr6R(avZ5-6(8~iky&YtFzFW1YX+V7>{CY9}Si^mp1?sYn! z_%SdYFDHK=&;L9d&X;%NISs$KxS_y=yi%h*(IVf9ptP}=P45=d`QmyqJF@adULNlN zd>X6FvbM!MXS2#-B}tK1w)1MdI5QjQlZTrt%(eMsE}^Aw(Pc*5j(Wia*q zTMeB<4clm=eYZ`2`Tm@4J-i);Ta;~tCvz?XZcJ{6)ai9U{?MlT#ju3#@E%#7A0f9C i0k~={0imfd@)`2a2IIe}a^(8a!1)(s3m{7g5C8yN*3!2C literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_matchers_CheckLatency.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_matchers_CheckLatency.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..23fab020326c48e40d65afe1815e5d655584ec92 GIT binary patch literal 1527 zcmVf`rY^?#|0I&&+H%tI^@BL&|k5JLHT`l2eLwtcpd4 zN|zk|!rMWJW8Ko}TsRepEL+n;7SaeOW16pNq~lKKN)&VwwvJkDYIwm!<;zUcarpDe z0c-GDCQcNwFflES6!|=p9WOrnMxP*zB~6wDm7k>X&XQel zXavVpLXJYar0`_rR|T(vF!Z`U%~{ubxljeIq?rSNoSb}eL6|t|eGbAR!B^63_WjZB zlH^PMBL0^vWBgVAAdbvlHG01h5b?k2B#fkoQafo0_6kl%lM3xpvk3Tw=j_@dmuAt&v=qd(hrv|K;5|!!f$~00?gqR8DEEY|>hn z>}D!ffI)-nI+E6MNM4mL-LiCi3a7J#Ral)%%B3iPXHsUA2%EyOaEC~Dr4_6S!zZ2r zPGSyqRKm|h6>w~aSbb2h=s5i1`BoS*18RAWZ<2vu5N&pj{7wT~X3%N)6K7|wgM&S- z{Kdh3?P*i#-!5HFLx!xw^)Pd@S@FZn)v##Syc64VQ1u;jot?E`s^bsb`GNiXn`}Vs zy^Kk^{m);+A$;Rj!pIN5(3CkuwJ_{-GBrnE%k{lna)<1oA4Vw{)#>z78Qoukl0~$p zV_ckG(EqtX?NG)R0EX!rXRS{6vUbTy|hjx=y6P8pwZ19 z#oF%o)AbTP&+nds*d!aKgf$S5s**Nk;k=HR>yw@p#Rlz~NQ zfa;;^?o~hddR((Z>ciL8{q$30O|=5q*j zLRRoJvEKNH{-ie^j;6z#YoDPDU)NN7Ca(oO%qibQHm+3_%YsB_nSSIlvhtyXc^*Qe zQ4pfp9|yA^$*s}!&bAj>A`!$U25hY12ZT%EP-g`M^gQTBc6PoEYZs?j2vu0ud^$Tv zOxtKstPiDPSU6l!S;S2GB)vn^6tFxh#1UayqTPvoFsX{tO1JfwYgugvCYB3-0m!Ww zn5Wv#;#}giBqJ1e^(F<}<-CnlXR*hpN>N!jmA$xHC5R1elth^n#xoR2>D`R(#>0;n z(-$e(Ns$n}Tm!FU!OfVuH0qA0!`|&>cTA((@#tpKN0*vN=?CF|Ae#7$0JvB> zp)y-VdxsQScmt literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_matchers_CheckLoss.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_matchers_CheckLoss.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..0ff216a3803bdac81c9ce031dab9c8e510b69a21 GIT binary patch literal 1525 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_matchers_ExpLoss.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_matchers_ExpLoss.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..9c55b9a21085808b0e1710652db8be2e862663fa GIT binary patch literal 1911 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_matchers_base.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_matchers_base.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..0bba496e647a04f75e7a87f35946aacedee3c0b6 GIT binary patch literal 2090 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 SOni3!Jo*<=LsDuO7XSdO!>^10 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonDNS.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonDNS.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..568199b70af8799e947430e94ff8341c063da5e5 GIT binary patch literal 3193 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonEchoICMP.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonEchoICMP.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..77d4f2081573fded4e7e9abebdc36b0de0fe1839 GIT binary patch literal 3814 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonTcpConnect.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_CiscoRTTMonTcpConnect.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..f5750289068705bec1cc5db21609036ac3e49f3a GIT binary patch literal 3499 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_DNS.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_DNS.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..9aec2b407a3176076a2a02ae75eb8692ddbdb15b GIT binary patch literal 2295 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingHttps.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingHttps.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..595b395b1f42d64469051f5961a5b5aa44398293 GIT binary patch literal 2760 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 O8~hglmr%t<8~^~v>08$T literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingIcp.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingIcp.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..34466b040a2e5ec312f061e93405376df7b94205 GIT binary patch literal 2361 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 Vy6(`A?RtKLe**%xPmb9e005@%GP?i( literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingPlugin.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingPlugin.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..923ab1a7b1998133769fe00d42a924359f3fe1e4 GIT binary patch literal 2589 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingSmtp.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingSmtp.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..f16e9d3fc297adf16e16f4079d60293605dba454 GIT binary patch literal 2259 zcmV;^2rTy>iwFP!000021Kn6{bKAHP{?1>q_Sl-((vJsa-GOA*-EGB_q5cB zDz3&<+jRIl-VP!hJFczHg;h(DWox>Ug{*{?2`$z%)ya7LMig`yjrK{O{Y*yrDQ2GB}IofZdLFqh$6@9a>2Y_$}3gSjjR@MKu%WP*&s?Sz4|eTiWGm6 z;`rD5-Aj^RIw_KSUb(=3r_>(h%eo9F9FIv|S+{OtGGl z>dF~#tL%ziJ%0gaN<#1WpK%ZoK8Ydl4a3c9z^lQcivJx%GTT1bJJlX(qIF`HqLgGH zKI?0iDU0aCwYI{Rp|sLDU9oZlL+=WO43bb*6b7p1UcI>3iLNMunB$KW?}(4A2>DM# z9dv>x2+B&*DOK>ifiO~rUX1n-z(JOE*#}(`c}KE<9?(n|&?u2r#U65etg;z4cB1*& z?jEhAz%DOmyfpQ~$fZ@faHJVXuq)@qq{M>b;siKWt&m()*GPNk`}faZusf#bui?V; z6qQp~M()vC*R1AB+`tVQxvrPe7&ghV(zPvX%cpQUOPPhyxujf*0{%?vj8b7%P%P>^ za(tr|q>749^c+rN0d`bF&r}sqtn=95bl}r*^4{fJQBieDBbVb%Fz^IYv$OAZcCb~Q zj(6ONqodL8?k26=i>I5lOB>I>UD})`?6NV}Lu})?co5qVi-XW9(VhdVUxC-r(ZM!5 z{y?1vtmh}RQ##ntI7!=Y{;Sx8Zww{u`N?~la}H5B%k{M^;rtH>=R%qfC(D(dVm-@k zNl$QgenvlYhz>>vhr|8-;pn$?5dA(H`4{+r)BO~M-Bi7;tAaSbf3J;IDUgg46*eDd zw_S;cWOKXUBY%;f*U~s{IEU=hpcHG$krce+U_>rgg~P@~FY6qcZK4+XL_!&I zWfh=C=9wjTEM?pyKS!d`gu@PNU>X6miZqoC^iSkrgo2>~3?99Q)ay-kwiqli3#gmWcQO z%lCu$H}vq~Lz+5E_z@H)KI+@l&=#r?)tZjzac!!{SUqm7q7qDPOxzFB12X9p;g!U5+(7|C(vchGq%p-aoU#zO|0c$i5Gh=_+c8xKWo zR~m~%CGim5hRLe9j)yws_f^Rr_w1iCp>&wv7+zLNSIV-Np7EN4#ej6=eQhZoBb ztIJYXJQF%!4NWPRj9i;s$FMhmz7j@xt$6@1A7t6Y;5Qnx^qbvnO>7B~!+{rt+6K$_PY`!xzyz9^D*qJ0wA)WGN~f=4pY&G7>FUqPX&vRB8pe+%Gs4-2Cid z$ydUy%CZ38Febw61Q7k!r*mXb!F8;PZyP* ze|&TsOs#pEg~EwSQ^^_zT{tu@JzK$cs=kJInDa*0E&ofeohkx;zPNZzsp1|8xv9G2 zv6@|sy|udw0kLrL+P-i$bGfUepqH(V@g|=|ivJjw6Z6?Po=Cu|e@VkeXc2fVkeLj- zD}Bo)2{iRp7tt>XYVgZ~N?#XL9w2Z}?P06$Twes&tEgp6(o zJnnTX1!QSosAQSp(%#&%LNLTpRUpJ7fedlgO--);c@{(j5%6Xf{LGC%-+#h64vhCxD7U)0i`gkSY6~g@!N1{oW5+kQ=DGJ|H7zzud-j={8{%+_wVc8 zQGIL0ImFEBrOuq^BARMr)S{JbT-Ak7Ll^V#Sr}0;^`_jfKd{>eG#=t5gaHrF!qz+Y zTKCkc>t~a`s*Vx{XDB}38{LV`Y}ck`Z!+G7rcI}~%Jf2HffM*SMzs+2C4?&KeBtrl ztMKi?ic$7|0#sj^R9x7b@o&rJ4bdkDLRW_O2HA)6UhdBv_jZ`~X3G1j5 he}fKZCnt3L!|XiVzC(A^pZF~x_zzH3oxn^M006^?eG32p literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingWhois.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_EchoPingWhois.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..9a544397cc2e91fd96ea47faa3b5f06a7663ae2a GIT binary patch literal 2574 zcmV+p3i0(HiwFP!000021MOLDbKJHO{?1>qWtyJs=%|-iZmUF|DzQ}GOk!ztijz*+ zs<YMszxO_w$~KK@!2bQJ9$>>tvO5auQ? zGfkgH&yJoj2jMcWRgtJFp|a8{Uu61N$S1$hPY@-V<|TpU8(oRAXcV9RK>De@XL8XGOB*l`H&f1=#(aH>1fM(fNi zRjJ8Ad^Xf9Gc}?Q*VYxb9Ho`b>6Vq7IQphA$RG`6RpFp&?$wKno#>V#h&g>r@s4`S zijekx~>P?YG-fz_|T z>*VBc%#MGc&d03h4`}CfxS?^9c7OS|ViSI0C}GdfzN2f-AqwZYz0)O}e}ix?w7WT5 zuIwe&->xi@^HUtYenmfZiVpV=kERC))BWGlVf6cG-@m~pMEi4;c3by#Qx(J!{=RXw zNr7dYs<8Srdr)h)*g`i_%mrah` zc2Ng@DxnP7vIHPJn7)ANXCoIlFo@ zJNs5V`%3DO!j2dQUu)%>3OYUr-^wDdQFbK?IR|yb&zB&>L?`&hzg1=p;5rg{^FO`5 zxSY@CBY7PWAp^c21o3a^>C>llDYo$=C`|lhWMxZSm_k)+I-$MBReMev!8s0f< z9`ORfak}Q!{>QvVS(aFRy1(D@`iQPq?4>NT4{XuBs*GANV&Rq|IMCt(sZ5gK>O$1C zTEbve-GXV0T+C(fuck<|=J6)_WDo4yMP_}%fHEt@O$+5ThnnBPbyO)^)~sthW%P-s znXZ8w@f2s{scPz##Ue3DJjE5nWK-P5Q=9Vpri5nBvwy~fQZ9nla32BoQK{=*{}DqOT;s^C zY?CD%HFh@OST$Mg-`XnW6Ux^&%==uRR5ylZ#nX}j_1eqfp(Kp<)3UM5gpjEO|6%KQo#9|q3mn&7= z`r0k6fn2^OIcsEa5a{)#_h7Otz+V^>q3IKLT#jCX=AIG#3u0K?8W${B=?Z?@C0t%A z!-B8sdku>f-zgKc$%)M;zTaf=t%}m)@p|${X?L?p2l^}y{eQyH&`t-zNQ0HG;Dgs_ z*TF!XgYCq^5Z)_G~cG?MsznYVhT4Lq!0`)dbUJdfT~cWmTw#5Os9n@ z@W^9e6zp8HkS^nS(-v%FS!QT7gyey&KQh^b-{-?b{0KZW#dgD^CtFhzw=3tLT(86I zV?r3bY^uJjI;`uXGVqU&Zj0g#xA9OoF=?tJmjY4k>?3^G4|Fn1OnU`2S<~3JCH~v1%qrA#+!UrDgMQrkhpi|kVFH= z{Yw@$LW{s_fy`u_U)cvPNx-+Sx`=*GP=lWrRQj->a+8DseSoe0u6!@Jj;^|477RBS zXpMMXf#0o<4i_|E+fIAn@yC;e_hDqUu3*^QSW7~-fY5Mq@;hPv%LL#co6hY>*p91sv~ zbK_6n`0TsQl|OV`PYr`pV74p?YZ;iwVAC5=D#wa7MQ#(n4Tr|*7v1d?r&sYmF(7PJ z_Jg|()_v1%40Z3R{%XZJ#H_YUn~CQly0p%jMJL-y)rHSOiFx=uj3~JDrfkOGwb``h=MBZmvgCr005wdY2F;4@{e_0|mF;!AX` zOon(1tZ->+6fTTwrvO2N_TFhFa2G&n0}0#!v$gzLsNHlcI5Z)<_#PqJYSp`K^Ok;0 z_6FulL;bD`m^`d)to^qDG*>$D-*)RQPTFKvKZ2u?iPM?iXQSbz9-svrk#?LbK0!ED zP>=U!AjCC`WrmXT;QAhX*gg=5q1{908jT)21h#gKVR>v`87 z%=_T|y);iSBVpF{f-XN;kW50%wjYItygOnq;Nd^9gt?CftC5J|j+fIN^99g;@NsC$ zP(3^Kx@`ZWL7{KW6@Lv!R&BpF2J@S2OD&?~kXgZxI)0+_pM*}oxqfwVH6G?#S{S@G zcb2Z#g`v-j8h`#^?o5=L7ye_|#q|${K%sbhkp94^4Bp!1XJ`H{MIayd(^-?0yy|BA z!IvJc3S4V!j6oaCJo^+&$*?b46!dWD031E?eVlujA|0EveW9{>OV literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_FPing.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_FPing.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..0010c6517794c10d94ccf34cb0719586d0a72e93 GIT binary patch literal 2976 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_FPing6.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_FPing6.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..a47b634289d6c256d81f9bcffa4efae30661dc6b GIT binary patch literal 2605 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 PRxA29A~7#s2N?hWqERfG literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_FPingContinuous.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_FPingContinuous.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..ce1c4b1c433b1c7608387e93a6c4bec911d2ce60 GIT binary patch literal 2718 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_IOSPing.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_IOSPing.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..a513c0e1816f4571210e7072b86f0f62d778d298 GIT binary patch literal 3039 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_LDAP.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_LDAP.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..5cd8f31d1776881c147965a1ff852bb0c5f6956d GIT binary patch literal 3142 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 g;x%%0?8Hwz&C@qk@0A$1Vk?gR2aEF9KsF!%0D&(tr~m)} literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_NFSping.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_NFSping.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..05161885404e1603b2aed04283219f3a516f2950 GIT binary patch literal 2258 zcmV;@2rc&?iwFP!000021I1WjbKAHP{mx&pRhr69Y+82C(^eOI&WY_tGnZInDQP-Y zn?fQe;!F|@09w&?`rrE&ASo$vI@eCxdd9J^fEK%Nci%1&&w6zDhgD-pjuc5b>Y-B#fkwwRX}H?khPQ2UKd8As#Go zL6U0Y9at%s(aY!OP^Kj8p8b6m#e|>467=?Zn^m7z{kfU_BZ_6ddvNPid!&ihm0gHR zlEwA;wq?0;h(4fo23wX=qYGNHaeYf~ON9)QFjkZnrWV1xS-BT4DaJJyA8EEHKC&Sc zei~`NyLg14WRkAQ0C|hcNLe}`93X)GJnym(wj}Zs$r5(JGF`%=L>j{gc|A_K92Um4?hU4SbF_!N4bonw?|6vxhBn zJ>2sr&dvt=`LELm5*nxhs84PEUAxk*~zs zZuYZv1wQk;-y>_0m3Pv5Z8(RV(~y*FDv%1it?2y`zW8U(7wB-_1O#bxdW;_{9JbSz4%aOE`!J18)=HwbDUyI(W?M%2V7KqR1s;l^ogb@;}FM{Fi3MU{Ag3ZM1!Kp`i`wBd$$! z97{ISb)K+|tQ!0x>fD9%59)tP#X6WC_P(O|GgZv&%zmNC$=r4k!&i%S%%A=v2;z6r z=i=qnG7Yn4MUuH)7?9!IUP$%sU+%3Q<9#Pj^npLw1+SJ~mw(GrcP zp2rJa92L-V4|t9m1?T=GaA1?#GJsVF-L+Ph3HM3#8jV@Q%Up(Qjr>?kf4kG5EzYH9{A4d8KF^AFNk^($D_*xAnjpq`5_!)W2)%t zlkh{ScVze#M)4=7z5=9ke)O^%j){XY9n0+4(@NnLkY+3}_Zbm@W?&spp$)pU0T+|f z3b0_%TF5Oi?nQU!uRQ?m7v6XpV&it`Zri@?jeuGUQg3!x^{5iaNs0XfnuEu{M|+jF zR?QLJ)Cf;UBHw3b(ws;rm<(of21SL+bJc8w5fvXTk0Rw_9mXZ?Pj{Uq#M^Q?DI0Zn zGwOa;@_fq5U1uh`o5JQ?x|IZwwqEdHr7&h;$iKt)A|NH0NfULik{bR8MtTr1W@*N2 zyAf=|wI%-oE%h*3@JRd*(BjPCX|glBMI2v|Gm!YHrDf1x2Y2}}TzS{;517 zBPQ>+eV(twt1jU#*}VCp9Se{Sz~BuYVWB8|lTI|Ztea_Qh_dAm1M&tr^Yh{$Qr;CF zDbdmJhG&4_iH88BCP*wk*2=2Z3Z%VL{J4*!J)dn|uT$JS*vG2MF-m$-Xl&h){wDk( zANmxSG*acmj>r2CWhPHwoPQysx6{u{deJMrYSPZ1*i0){hE&^{r4HE4M5U=@yEZ{s z=BU>^3Vm%S*1UTOYAS6 z-h*6#0ha;y6Ye(NEa*j-wdwk6J7;xeu$7RZoSJCV{2JbdKI)+7A><3h`z_@CuVL=3 z`}ROLivK%c(=Vx_=$BOy{d-l!?-ULyKUB73ighn~iwI6%j-e9Hiv)pvdpZ8sqec6~ z+0hkbU$jW~{~9R1+UqfnUc8;Yy1CsQMjII%&~t^M_C`8Pw1%ELtbfp96)&>$=rzcb gAFMoe)AM%z{s9ga3sJ@BUgyz20R#$*1ymIP0Q?nfrT_o{ literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_OpenSSHEOSPing.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_OpenSSHEOSPing.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..919748dc687cf7051990895d4f05065269983c6c GIT binary patch literal 2955 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_Qstat.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_Qstat.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..157d0a2ae62c3e01bd865b2d4c5ae765157f10d1 GIT binary patch literal 2409 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 bjOz&I|J^)ON$Lkh_R9MwyHxB4xfTEb6L7iP literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_Radius.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_Radius.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..e098d6229a769038b16ccb68825a46e25f62c7f2 GIT binary patch literal 2918 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 b$Av9;>6b`Z8JRGaFM@vo95NiH1sDJTdNU4j literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_SendEmail.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_SendEmail.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..88375cbfd554e6bb153766b2f293380ba28a7cd6 GIT binary patch literal 2234 zcmV;r2u1fFiwFP!000021GQLfbKAxd{*GU> z=JuGHknjJQuagvPr%kYx3dK~F<(zJ{(M|=O(PT~on;jp&R)&t!-a+q>c7!l2s=Czl zEPZ~o%MwJ&FesBLmr?DsswSmA7V^ng`Xp(lX;>3PzST~QC10zlrk(qlHgvCPs!TUf z<29v&0Sqg03Y7Yq(xW>$89pUxDze^ASk@2vwlH+3-2?%sDCmcfqTw6hcrKQZn7r!8HxsX?p|D0sLy+KC#fN^41Ls8)h^U2$UOkJSbc$(Zu>nn&Jbtz=f;O32ZnKp!rRmGUd{dL zem1XxX>$7=Di@XcL3@z~KGdBB#muQfIq;1Dh@Q@jpkijHO@*5F=>qgrMkT6bmY_T6 z>h$$_vUKS9IC=z7U%E8jC$(~!gaH+<0++FGfMmcuppw=ZsuEq`@hEzV_-WBG{ORg? zFzgQ{%9qlc2y;tBNP)cv$@m+3^5h8(L_dE8g^5p>mb8S4&E~%Nx26-q40_Hapuh)@ z^N}35Wlj(QAHL@w=@jQj9HLAG>*maZsCpgviQZ#AqmOEwp7nZiY9>DeFF+XK`IYZ{ z$G&nOLb+&zzhBnHOpj;;kjrgZ+Ix=SopObmFkoRw5yELPKU|Szm|RGnR?`^;CDcBZpFLL%Kk(c&jiNJ zI39KBSv<|GXK$)`%HO_nfYP^GO84x1`0A!V81=8OHmY}x-bqFrjA*HvhDP?L*aXr8 zTqBBJzXQ!7&oXW{S_dtSCjOApPqvYYn9i*AF{&)5ea7i&Q5UeARF*lOGs2`1*quB9Nm%fwCA?N1tz>&CRwIFJ|k49FaGi;l-o&D^4ot!@?*-h_M*&^+KliV~W7QDbL zv`-u7*w%L5qmRYHhoWk#ZF-NkDLslx8Lc*Sg3w7`v%7NF=6ajh4cHL|sYFCB$R6oe zK$MEI7WUTFMN%h0YOtn|YfSVq&Ve;&QPa#&VdC5?6XLp~?>G#|cqPUrvm&bIjRzAU z+#`Udv(8~_E&^|m zdr2X#@WvqM5;#EcL_&a6D{E%OqS`ecum_#wwQW`=&Rqw zyee+KBDZf6(n-l$wTj?XJ*yl)vEXO^H!l#GE_H|xS@;Mml4u1glPBQJ-g8T0io~u< z>Gvcx`F%;H|1GJ!EJ;#Z;N8e;r15Ntmuqujo2*avtSxBC9HMTqfUT=*X`SQ}@hL5E zMJ?WCyDYFvaWVcfN*{ayrjeTsg%(p`S_=w(HGm!r)<$vMlRi6(H&&f>%hoU2%>@4x zHNSPO%8Q5kfo+vR>NSjvA5K{udz5WKDP{l9N~9J{#k ztp`mgv3lb06OPq-yNK1=V!nwzt5I-U+KDO?G3d7-w7{UxL6B*xNd)w0!q-P5hSC2E z5`AXx;dt{_y%BB@I>~^^EiMdSj|PkN7|I<7dYiz*tt~3lOFDfsy1c>ytC6+Dqm| ziD03sULmYmGI{k5Y-PwG7T~ht>uL1f28*G;R2X#^5 IPHYtb0J&;(y#N3J literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_SipSak.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_SipSak.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..e3b8672d439bbfdccd337c00284ca5a1133d316a GIT binary patch literal 2393 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 Ly$mmw%N76tq=COO literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_TCPPing.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_TCPPing.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..d655001a072af8f92177d7da135e20038fa86420 GIT binary patch literal 2684 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_TacacsPlus.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_TacacsPlus.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..670bb518501ea6228e1b4730f1620b47bb4b1b3a GIT binary patch literal 2842 zcmV+#3+415iwFP!000021Kn9|bKAxd{*GUS*Y@m*11;cJkcW|AN@i9W)0|;FOi7GsM$@{)WZ$*Q9%IG?{iy?8%4 z{a&p5T4Iv?n&^9Pv?|IR(mu>NLF{LX%@*F5e|dX8y_{V3c-KUD3HkiMoBfU+KYmP8 z(TE>GVdB^Ai4_G0To-gi&v^lh7uxb_{}Hd(swi$v9!4?naYRozhM%kxRGTNrE4jA3 z$vxFu6en|?-`{2R8tBq^%JnK7Ky3Mc!XG$JUdr~W+?DCY-+n%v$!X($5SSy zF_I2a$_-F+cZ(O&OfNC1r;k(CLtS??SLGr%EY=) zwjS{{r5k5w_wHflcerr@V}Q6?u9JfK)5;XAbGixm>Hpki!Fw$+`s(!ZD1#mYGgw(W>-T#R7&>9S}%}bd4V8`IX1<*a`0aDc0tBb zJ?HtBUPmQ;s!tf~y3T;N-`#DpCTuxfZ96B^t$h zb`l7Cn1wrm_E3?FdorExNHw@GL#>ndsTKe_VJn0{56fDjJK=N&qf{IoGE0XAiWlqD z;Mi30C!Fwi8Q-`}c3&c|wQ@J(g5{+~TN%CFQl#pQiwFen%>F%mx=wclA>4II;s< z$Y%|hqf7f-#*Ar&6oj@vtmAC1?XA|%4qywrDS}f|B$My~dX(lL>-hI-Uww&et;b zsiZKZZd9DGVu8olX4%HVr`LAXjho}lfKE-$vyj6yH-l{wkqqi47nl6d{7D|X1F+Cw z2f7o`uy_WScX+@6sI0paNcDI>zL<<(es|h$@fxb{U6yMuVC>}Ws3}JHbXxUx&xFkc zb07Ia@x6;Ob4fv(XQ;C%^Bnrta~wx4_u60Lv`it>+B^NCITK@Nx<+7=&iA=j~FK|Tok-LzjA#SXH4Oq=OKnC%ftGv7mF%9 znjv|oRfUb53DD^%QVZnvBCe%CCuU<#I)OKoWY@qu<|_-1maBxyps6dKOO5rnJW1X^ddpnI zl5_^6t{g4d_r~|mwf%D1E1gAM+pF|a1YlV=_!STD*DMBGRNp%9iS|73_4Ee8_ghLxScN!4Et|Uv$-^9+@E{!SMzi~7{P9_rZPyID zUAxsp|8B!QzTbw8qz4<;UB#~SV7uIrZ4*ic>MiA5n212#QM)Tshwj8;0y>5^p6gy; z3g?}Mv1+-*Ez)HV*QO}qIS?J?O2DX+ox0r$wuyMq%lKQfz2BcS>jcW_eYdKd?0vyT zJrXpVWA0P8n2g8k_HsdFklTfx08H_{*N9@*?8uJxHm1gR=VGg$AaefM1)^H>v6jNRWjZKttZ=?FK~M12H{?8$SyY&aD;AS_w1W(z+!4s z!M9ZJdnffr+vV^vpf zKL4Ydxy+V}W7X92ho5sgNwMstsa>IKJJWf-Rtr;_O4lY+)3qAA?D+VVF4a-Gf3Sb3 zc4S~;i&bvar|D-$yObbOCbcdzU1e%j8C^_sb1cJ8f2BW3ni(}&DTsVyDp6MXm7W>3 zbF(z1x-n{|%VDh=Z&W%SLoqv7wMzX;rAOEDRPrfFQ<3#%N?Bi-g)P;!sirVMp=$HK zPSSa;o`095wmLua$*Za`j;6`QH^RBEJolu8jJzakcRZ z`<1+oJyp7TiTmJ49Y*G^k^|h>da0g2c?MzDK<}%6T_vf)pUf-B9Sk;4Lp}|s)z!a~ z)a2U>d#lY^JPN&-V9lfx|rS&<9;I^In+} zdO$N*LZi%76)hxkYFp=+*hw#6?(V6j(U|4qgpa=_jh+Uu#y+gHqQc^AisUA3pJw2j_D6q z_0?7R@l`#*!{I=bXxBm1Zz1dH)5C3X`~!79rk=OP&eY*%j38})@^8f>{K}z(mLGku zE{P#Em=x}vS;6=};5w(q|8QyY($u5#$(T3tDHdP8R6n;$9qu0)rn0}G& zhc`GW+MmI-qu1ic_EDH+th;O17fE-h+|tsG!dh|6jy{*;~=buP2=;796m zN!9b*-SAx3y0Uu82!gDka4Ls@UfC=|DuES^o-I|as|EIrk%Uqn{mqv1ym|ja`pF|m zj}N&E7l@HjDba1Jy`ky(j&(>=o`>O&8;1<}5w9)NwX4=~1!8`M74qZO>`LNrG{wpz zvdnnygD(!#gU6qz`1kM&F~L1Ew`E;db1Zmsadyy|{)VHEl=|qksu`!aIeV zqsla}*B~?uu_@5Qg<|zBLnTqkm9DUul!ef~Fu- z;KAqNpM-km!#3b^J76_qAc{;q+0p=jhYenXIzxaM2h*8@#b2LahL~f@h{~!05wLBEUCA@9Ryo{DhJqJ$ zONN{44|o`g9T9zPdH=!F-FqR4F|oo!;vbk3}a*|9x#ZFi1|DD#ZI3Ss3j*r1b7AATH*yhBO~W%1YgbCW&QqFU6ajNE)yaW5r?R(Z6ymrj3rATy@MMb(@ ziN}IPygTW6kOSDGCJ!$;oDo_iK?`^b^Xbyv@GiiCLL^AlF9BNe z%Ydf-JD`!o@lsnB*T2^|Hb`DV;oKqk=(dI(5-LL#i11HG*Mkp**YUU)`vXV$VDR6f z7=0c46N8WfEi-Vf7XcFtZKO-ygb*B-XH&W5B~n$1u>#Iev+nJpD~m`ES0P_Xh0ao9 z$!NSKk@YL>CMhlBqa3*ZU8f~ zhx<(X^Gu7jYpGV>Y;i0^k9I+f7n-y^M2uec4 zR-Vks-2uRLq!b-ROWRWj54?2>j&-My1wVNT-KiYVK>!fS$xN^G)aJHcw=f|2Iu(X> zukMudOY{ygbt`ytBsf(d4k7Ax#J)vpuPoY*k()HS$lX-uiKuipShlh9L!q*4ifKrO zL4{vGYBJpaPa@_AXdLYw8UL2W!`R(i8P`V0vz4wxAX5n4s%z_kUSA+in93*gaXENsC-9%m7RI*?v$&1No8Qs=+@n_=B$bGh z;b2Cbt%Weum@S=SZ}S#uhwMi%Y8W1kllEjEBJ~AtV@pAyEIWRenbGJ<&dH8n)N~Yz$1G-q()-L(YVY@{0d^XzzUc$SdNq)u_za+@Ag6~@i&%s2T_}R3^ zMa*cc&|azA@u)*aSFJF&gpLBM%iCejl?XkOFFEt(@-4zcnwZ709G2bCKd{GxKfjGX zJ0Nzg8SpiGjeLWgb+m!z{>GH!mZ)q?$}MV?Ybdf0^o1etWPal!CCl3(`GP~9i)hFX z7Qst8S<-VN8D=Eg7|6G#iQJmbdBg+4X|J`-$&U9B14tQWNXz`(fl$m=($ccl&23@p z4IdjyyJXlg>s0RY!l3vKG}qs`#QtO?*M-ZPoK#k3Lacdh>b8^J&Wk&lDvyySRQHWU zRa?&TCJR_C*h?(U4FGmN@m;c#1>t>B^3+V5#X`LEmWJJoz^m$7mg>!mi?^z3GE3!k zwT4mSN+n;_rVW^N=+M=@bM4rA=r_I;TB2Jo-c+`(rEiT_dneyzI*8>4Fp$vgt0M67 zxJ_kDBvymV(YP}F@-Wzw2jm32Gzht$16fn72JGn>-@eqA5v>MHYa&@q+?cJsjy}-wMz1v18OxyGo^c1e@KB_UcW4~}OgVryYIFab;_;KZK zIQZZ~YPF%hI=i+seMeEZmoxJ&T_zd_xUs#N%yQuZ=6xMpt+3wnYh;?Hoz|fg47D1< zBCyqU+n{6vldh9k@&yF3{V)@~d+ z1mV@P)jMx$_F|Axeb+YWkQn$-=v`q2@avjs4Id|ww2LL&2Ar6(kh@v%esg{)Og{8H zd1iiO;ip<&nO1==Msg`+1xg{f+9?xDnbg2i#_>R+ZGI}O>5EHq|CjTyle|)oR$62060n&rTB?ndZoI%D(c1z z&Zc7vMTz5q#)Zb%9Sq)C!Hg7gBlyHh!z)-1)?44M=nlFo3TwBrv$kT2!V(G#>E?A; zQBBu%a4lIVeMU+$WhNmJ{$xvu>e7JQDH$tRP#qlZCXuOB4urX_w1WhqcrFr4V>0p8 z%(2rcZm)Jc!ZN#{Nht01q^;v?u$kSsZDnG^1<}F4dRdSxTExH`3FJ5l-}!sW9qxy7 z?Fx!U&tHvIyXNyaBN?gQoG%F-;~*b(aFhUT+J+EDj~+{kC+6fs$*Y+0Z1~oXzW_w| zUnp%d1nHyV3lx{pgpWV_^Dg1$n#D3C7QgoL{}3b*CgNQDdV;)<)6hC$!Nbg~_+4%zV^iwFP!000021KnC}a~ro2{+#<2DASarBb_BVN)yHQSh1vvZY*&`#)+qF z6Oadzi0=;P15PsA>3{FD3)~C!5~nlimwLvQ4!|uIi)VMA-E%zaiQPxLA~T6P60S7M z#<9_p!qL)td4tkUg; zomKUca9gK#Aqyoewokj7rP|^4VOm#W%8F%aGO;4%`c{0OYamELS(#g?ntAnR`5<12 z7~34b7qfwUPl^ctCye%+jYqhYwGwBdgyk(Z6WWUBdpo$mewsGugD#2sAXE-Lpqa^` zQKHI{EW~o0b}1$X@$`JSBi2e{mL4bcXsfwZ3#U!aLlX?)Tp2x#3Ovxg@CGcZ-XxRd zJHVc8|Kro=WRCIW2~2pogy&SHRXbv1DpGSTuVDrQteb_hmX5@tOy!Eo(JHJ?mn6cP zOo>d%9QIsRsaQ(8hGKDJk>hKlv8ya;MaSSm&LK`z&~vGCDAri4f7bVK9R0|6%S%z7 zi9N=6xD5P;p)j-0GXqSOXGa5G@$A{&aM;3%Up#A{88%*i{pd0=B9k4FKg`^0mVY*L zJvo;^F*7Ds=e&S#|Ot+6w4(2fyE>!0+uq$B*!p@b|y`cX^?L!vjy z%sW-U_&?z~=gR&xRcWr=t17>ojOk9EVEOc1e0-fa*gH7f-QVBc`?ENRzmE6(J2c5B zID>l!-*;7+3%ccBD(mzT@r>Y#lOLxya%0>1^`=04y&2t^=SLBY29qIDUN^HOD$S^5;4_x_z+OuE2vXfIS`* zV_L}3s&haHoV>lb98X3QHt#t*CF~mpVMPSp{b=?l@#xVbFT>KW7@@(>Z*3cfvCBIv zo{2+xfJLlw^tAUGJtG6WQ_kvtDva&#?a>%~q`=b?|AZK=$d5367$klwrfbqZP0bA* z?^>2x&MBNAg$NwXAi9@2Nsw1yP9+y>;bghO#v!bbl*j+j`7*6O{1kuw7}CQ-YWz)N zWR!ELn@g+c4(OdxG_kWpVAE`(wTD8tU(eev4(%#nlCso2YVD2p=QB{ z|N0=_|MIIC{~mnJX1HhOmMm|Kzr}I<_wYm)Gv%XpZ-#LJNw;zFDS10`m=$(ysx%?n z(UB3cWR*Jq-o5*LF0zd`sh|7E4!1;7&Y-yJ)2B);Z6emj(luwBn11`exT5%tV!t{$ zoxHpnji;l_i!ImcjQ65Z?$nBsr@iH^(h6A{E=Sg~wZ|jed~X$}F9Z#;JS}r(VNwxc zVOiz$W|NoT9bRIht~F6Fe}EySLP=}}Th>!_2g5j;5<2|euyWv-RlR8sS^r(XonEx@0u*;N4gu;57Bd3P5Ir90MORhsy@Mn4 z!sLspECI8cHoypy0{RD?RT*?DqSFtOsr9u?E70~s9y|%qZwIky2!!2T{Sa`lBm%;h z#~b^o-q{~FKnpVDj~fYfn8>JW(hR1{*jCY6J4ZGoE+c>p_`y4Y+as09z*d6SP;iZb zAzH{*-!fDblq_V4#l&1_TZ*xZwai!Hq6{vMvle6t=JFhHJ!Wonnnw7E!^GfWERJr~ z@1Tgrfl?4`j6=R-48Tr10;x%+c%aOAt#D##;cov|oVxEK$4PimI*+w1pu=(8OW ze|3KU!Q0FwJTu5aV(S2Ak(aWVGvqcR?464E{ z1hV~3aAhR9HQ*K~l-Ew@e4wkV6S34pIk4|if1tX9?j3U*E*4FxQJHR6Xk&n=KdvvGeV2VYXNtmgt|62bQz#OJ`}{_w;(P0ZAcUU9nzkJ zORWi9_g=$TFFJ?9sX_FSbuHT`tn`H^!@nM0_aBO{<8deWdz$iK^xxtbT^+jfis zeUROX<}~7+%rgleh8wP5Bezo_ZO6>^||{LzB>aG=AJlV?qZ0CZb#s_eKy0D7wKz z-)F97Gmez0g8DmRUb%>$w+oOh1)0MP?2t00k|m#$I)Opck*}MhaGy9zs+LaF@w)5N ze(P{ot!yE?ZTpD4C!vr)#`Xqa^8wJMUf6a^wgffGsgXn;Y#G<&42~|3`6wThx=j#v zFM_vAS>|4M!Q932L-=h^8wyA05^_^rlR|fjT*SKhR$GiO+ln;UiX#Tj@|Z!5zz0V> ziayyN3UPi9^g_|=O!Ub?y+qO(bl~6_0Y4V6JzXi2 z{~|XpkgN?(9^;Mf4);rLdow}m801O360fVWSZ~DB0*@~;dWcQA`nbHauB@qS#rnDLT3$|X741CI!{kKtJRItZg4u`f_D-6Q0uL;j-iBgGbZd`_ z8V`>fEHq^cBun>EaNfDvDrL8v$td$^sNUs3;*HWj% zJ9pqqlzbORaP&a|L5+GfsMqmcsx$3cj??E(M8DyzG27@$p|11<(%vymcQVk{%p_Gx zB#~#l&t523qpY4M(p9K34gTs2=Zd3~&KGHwcnoCJrpwh0F79$-o3PId{QIoriJDid z6*rb|Y1qv0m6c65P`o+4dMnB*(WJaAH!x~gDfqk9yaH$SEil(P*Fd|zZ87S*jax6? zlp57}?qBVkd`Mw65c$-sB66fM^NcraQz{iGN^d$Emx}uOy&Zl)Y{g4GpG9dPsj{L+ zEi+~7muiAuYd{HtC3AeM`$^QBA!QR>&w`?i7`*)91R#5Rx8Fh#wxJSkwqY_*_fr`? znJJskRumtxpTC#hxQ0Ix5E6z9pDyk?*@Fv7tCmE{Hm4UDMxDO7_ z@rgg?lgE&T!T%7OkPAtml{#S^cc2YPpccOYTqyi>ZiQ5Y6r$-n{5iCy-l9zy!QZ%q zyqcWXMJP^7%|{P8lFMq*XK-#r%I302J7Nyh(W}8oaswgqU8g%Jyt9Jhyw5tw%7uhq zP<7?DJ_(US$fm?{ra<8zs*fNnB4I~ts*9#NnQxqTE?&q@Jd&jHgo7eHO6MHcxw|#U zDOyl*vVSm)LLpchkk7h)^%4ljOO}``m9V!ahT4ei_+nrYn5o4W`7&vTTPD_lpbW#d zsPBC<1Mxw@dWo0JT7=N+EdZYFzomDSJJ|E*8ZwSXFJF&Ez2>Vh!#T;d=Zkzh*2_mt z86-fPy4ix!!!J2)66*L{#OsjrwEv!tzW{{)pB{BO1o4>Y9_2vuQhTZGD$a9b2x|Nn+Jfa=EG6 z6e1ysH3={TXj{|ifA6ykP$C^Um+M@=)HAswL11^WyLk3lD4zDj-lIKHm{c7JSDE?z zdy$wl(~BcfyZPSl>2nlg+HvhnAzhZpJYR{0(yEe9rDC=cBa) zKZ)s%{6vNb{})F4YsEtZWvRrOsNi`EWg@fU<-slj*w6EI_Q94^-3p~)2P`uh7Nx4H z$U`j0WiH2uop^Hoa91pq#8-M9)2pp#RwXVonuo?1!oCW68J2jVxUd2i)hH=sb%nHN z-+%bwCAnjCaS9h+%yDw+%Bo$lGBugGl-F>BL9UxbSxZ}DQKoif?PwNe=W`NaO`$}g zq=rA|buQ-8E@4=__Q>(I$)HtMG^6EkA!iULYS=l?Gz?pNtbf+`={Wqr`KBvTorwd^ z@em9=VJLh#ZViuVCs5! zdE8?ont2fQ8_0U`;&E3T{lT0EWapi+Gx2ycMoHTIpZ-;}gFvd6JRGx+&-rA+$zc$_1o9q6({IJ2M~}pabuB{hk)7FUzJFNI_Nb!5c=kjzgKDiu@Cc}%jouk)GlXFa%30|#sa zAHXg;6+nt8fioBtIIe4dFCf%|+fq7U6VV^kG+P=}V~CoZjP~E1j`oKqZ$=TA-4!K} zOjAs;if6#n#jcpuyt+~hk~CXPCa*sZKAa2&r-M_`EG4GUvb-6F9O*p|aVyav8tflB zG81sbB$60HWHVPw&m+Jx!Qp5+mucP}Nd;NR*jM1Bf)HNG3N+f9?<46zI!c}otqh{% z5hMPt~nTYR8k<+1;>i zM4OW0gsOL+)D6A|91cIUO` z%0u6`?9ll|oHo2vmZj3vEQ;RqUKFl#ehb}Tk0E>Mv6!Dvd=`p{`gYRM%m^Q@DhGFrnOovi>vcPD|K`ku#UrlIZ!J14`) zE80XbM21R0V44zAWsZ6?0xfu}tgF&kPHt>2KyxMMAjn8Q>l>@cJ2&hH#*9_&X%*@0 z8c+0kvob8%Wz>x}kd0>7pbsWcQgcu@>a_y=xh0+!%e%|DQ+1J#t)P8x@y&4 zZp>9(dZP?;rpW7~yyF-RM@>D3UGHpj(l^6`%MkgHRbob>BCrriRM`Ro89WukQ@fjx z+ybAz9Sd)S-FWkk4;g7a>mfJt1q%k4712Oo;B{aO$c3cJz#!RssIt5@IztKFa4k(q zoxS$7U=tqd`8908{EAV}k_-4DYBHkMp1ar#Xtm}xm=JS#e-+;?;^%-5=L?(CY%5-cCG3!WT&*p{22T#xpmab1?Cq8Ri3_ADY!efGvLM_4*) z8q23FX9&6`dVZ+K&RjEnY}Z4;#&$oC>?xyxXYAg@qiscmr?Ep31csK(ZlEG=8H3{d zxjEO*?=k33G5>{DJ!ieX9d0Y-kzRCJ2iNl@1JWX?fsWcW_g=^@Np}*rSy30;R6gUu z)6jZt2B9>x-EFOY2t5ezjku9l>@Ox-`jKj@P(B+7ED6Rmllp?odbG^EpV>`;a1#=d z$!h{fc^|j1teY)SFtU_LQbo{9Y6)YQvU?OQ4d93`Ug-QXtK*j6A1taBs1vlASX_8< zlmuP_cNyXVpC;o_)VO5APmH-T#|u@mYa-nsG1G7R0I}2*eSe2Z>Vt{QWaz#BC%!_> z`^{wosq_8Jyt#3XIu=kZj$4F`Bc2*~{O!fW_q<9cezR4T+ED0s3E44|Ypg^txE5k3 z>;f)BGWk?zHfyZNG#=@vg*e)o+-0*&0KfwCEb&A0P@}?>{wDlBANqliN15Kf@%Z7^ zlstIA`N!8h?d+q0UUXVl>jTzw_Uov${Ntk=E-h-h8iv7XHb?EFdw_K~4ESd!*lg-4 zyhD;Vws!olymbI$dcM3o1<@lYhu(R1OLx@Fxv77pHqKNT+Q;s%H{p_-Pg2y%Ru;U; zX9?V`ZqVf0&+fKU&?@H_8SD{OMBWNwOr}svb3;cG$*%Q^~b zQ^wkH4P(9N90pTON3w?BJ^FNW(GP|8%Sd*3AC#f&Zi*ILf+;5@Tp<2_dOG7Mqrbt)riKXA*q6(ut`|z$y5hzo7M>m~JjLrsBtlGnt9J+J0*W zd(jykfX{mpZd^XQ1Of>;C48ekrAc?*8E~8Pver4%Sq3=1{@^M?BDZeg&PCtX6#LKi z;`eb*!|mS5(bWrp6O0}mE@3S!4LqKlM9cbi8;kcfM7L@CJ+|L_{rEK-30IQst@xo{ z^v0hjx}W1dZGCwX4%&u^>$;fv>H$vfZvpP}^`Ykv;p(%amWQAgg=V|j@ZrBwd&p}2 z6>D27k9c(PY=viRuCtpX+xi`#TP!xUdy$)&%maV^tZFnxg*DoJb_x>lP z;~wq^fAcMN+ubzKi++^E?uzCvqQQOdx$dFwhhlAa`RCZs-E6HQ+*=&Ko19-a$W?aQ;z!r^>C2TupE%Qm#sg|1YsV_IxzX5z`@M^(`CaC|sEqCF8@ zrFofYdKP~De4jOlmaAG7v8rM!E3NWHrY9mk{*8WuFxGTc5>(#kN{l62sz}q`dZi0m zYl>7ctf{e@!r2Ulr3uv(+LFTOcd{yY6@;Pax>>NUmwK5Nbf>EY9FSA3@9Q8;YI^l9 z2#W-NG|lI~KkQ!8{L)zwKk~{Y{!V2hw#=XIz50pZ5&3OMs?zkaF}1dY^9l~fhze7$ z5D%8rPLh~PF0fAP6}|fQ1(c;4cF+Gc4?@CEYzcY?gMKyS)o@YG{~d%n+ugXetKH(G zb!H<~YO**!+qNuAYeXNett&jTlvF0CB^x)i^tMQmK^n%Y!ot+tnKv)?!Xa@=AU@yFWy+5LrR(Q(GD_+`WVRclerV!B;M7USZi)o1k$3+ehRqY|Us&0|?;`{gC zzF>FEE>7XXiv*R^R925@V;VMdrS9McgIqU}wwA9Xs!UUtP0hQoJ4;xFHMyo-s{;N^ znv4=H>JaTepQk<$P-m&FyQVXb~26iTC0mC|v4bO)z9jEUl--?Q=a~eyI`(WTV zi2Rd7d9sH`)%j#kb{rp%_xJm>k{8eWwWN*H-!AK%rtGo_*TcM?&x-hL+R~`SroF{DOC$e)o>Sdgy?Z5n|;w${dP{N*{zNc%>AsSre=2n+*{s)9} zq3wrvdNHfa{pLK)*xk>t`}#Hg>NYwWA3Z-fJUkfxk&ePYhhz8346lg&=O}Jp`E^qj z#4-LyW9u{lnsKt?-Y3~wZEXL1wJCva^7I?zFmm)(ThWGn$Up;0v7sD^!A}HAbhIi2 zA7c|WIkMY^E&QpNGUUrDK%LN=lONB5?pBkDyVhj#$-U+WP-$z63SE>er^G!db;Tf{ z3V<+IRMHeubD?OzxH-GLnV!89PrsJ>q(Lhj1lKFny`1Q^!$2+@ubfMvI}bb8rn+Sr z1UNR^gmhY|bz3lj0&v+H9%Fo1q;V`AVPR4AmTR9}g`;9|mRex*iWG{vC>%`SNuX7< z0?=sIf_l#7PHoLuY#(OE+9651flAv%k=8LgcQy;AVm_i$)O-xziPW7+Gqp$osvFj- zTAM}!@{EIL(aLawysqogxx;zy>Mw6DW>?dz9q+Y5jmKk=q{WA{!1g<2&M}Qc(T^Ooy5_gWPk0Sqlvq7; z@1Xx_#;9XD6s@>br2ye9>2m+8qwt>gK1nLEdEZ<11zp1xiODh}A-z*oiXh=mXz7Fu zG3d6Hiz*Ua0#&PO3Bx?hvzD*^o)$^g+7CuX>8QK$U&Ao`n_qDdujM}5QFO&|OrLn}3$B!!tH-WPlf~>Gz81QKYO>nB_UJKR zQoeC+bI*SHfKN1X5ppYYj74Xb&mi^c*_IM&(OLAxw^x}igpw5DI3O{&U(yhij{cxwl z^P7{)>B-9<&UOL4lMaHbrYudxW0zR=P>;ntHJy1B|60^c!D(qAl0k6U6b=@I5Fiv$ zQ&pUto}+3B7H~h!n;bTk!P&i%IZh%lL6NZV)E9j(#G!4s*gn?F2El8yro7?a>0;=! zeG8u2qKL!Cj*tc^*P+W%7;%*=15W0E1J!_o zUO07(_g(Ga#U~P9Q^VP<*GF7Gikk*A)H{tED+{O{qS#}T58a@}$9ofHxZ(Bidztf4 z(!PQ7aRN`wQ{7k`>{!5{5z-sXsZb!!!Q zhoSfp9oNImgNujzkJcjC7U!SPt?le%!5}zoD%VbZ$#FC7YoYg#i>@!khUZrp9H$9@ zm|Jfb4raYO!4^|b;T_i8+q&a_?W{`+0m{qEQvrI*7f#Z99;DgDc(#$R9|lb)Ep|UK z`AJ+VDcH(ZQQYUVO7J%ZkfsrdA+&EHxb~%6N>IK2Uv;(g8$l0GY1#tK7``^#CT;Bk92Y1v#4+M%)A9xo&bS71y9WO=Egn!h*oBq0aEX)0l>p-d{Qv0z}{(a7J8 zIIR5Qz?(8)$VW9W>q!B(?F*F#hmG2gO#>*z*0g{ZRg5##((Z6J{w&zd#gBHeU+3BE zyOwBgyUoi$AoQ{U8zc}^#M3ebV!Vu2ZQB|0)?rUTJNRgM;bVq9Wc1SNdrH64=sWQs zI6>X!In!tc0#1x}#9yd_KZmvReK&3+H&q;`ex7fEEqDNI^JL0r%#+KWq>;~lr?CxF zEqN{QC>SK)`AkbASzMW>0E{`}rNME1s;vM*$fqg?9(!gG8zBpQSBLVzf)MccR<3`c zDq!?x?G^F?Vv6+G9dadkBOP2U2&H;43s~Hpv!!mbg~<%-L?t~NWf3UZrq zy&Y2=^Tl1(i~@Xq#NRLvG_)p#R+>LM;YZsmdh=Cl_2+kFLkEaN_ZLgY+zBjR=vip0}eA$GE(XR|GQ zY<-5(8~X`%cRg;eXO)e`db;wdQy2ANG{p zC$mo*4j^0dsQ#lzhYOj$PTpR>zPQ|-y}S&Enneomzd&Z(;=#8y*54Vo3ZvBv61W30 z$^VGmq-au^616Yie!r`e1v{TM{YR5EhqM74)Fw7)2I%Y&r!{|GWQRLYXap+x{|J0# aB6Z}eVGnpx``v6G2LA!XIf@YG8vp<(ak@AF literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_base.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_base.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..f5c4706a8568efcbc7fefbea52b9ccb6a3ee39e7 GIT binary patch literal 1720 zcmV;p21ofHiwFP!000021GQIebK5o&{?1>qr(TYVW3#eTPg^z4)Jg2KX0EZvQrvV- zcR5G|P1Gd70H9^fP5*nJ1*o^yooPF%W@HhI<>J|AU$D-mJv!JspxWeeNZy*F_=e^t zSNe8HtuGF~;_W1Z+G*=eExekGs#?;m)Y1wsbDAyb%H+f0cS6%~HaHv{Q9lUAs%|Pt z&$BO%pR$EuW$cB{h0Uq4Qq;3b4ukmQ6Md2_mo#n&CU2w-V97ONE~&pLrKW|XxzMSn z)=A2)t^iCGHnumM)>58V7J%XtWsX3Gduk$$z-*wxTUpH>7sS!=Ax10aD26m ztWqA)2esZ}%TZxXO}7j#b@WavWRL_{p&g*s5#Chyvs=n=%;`s(_QgjALh;i{)Ahk4 z1f`U8P8Q5N97f8~%fUVZm{!#~`+y~v4@ zc{%2#YiCZ*y)rt8#t^};nir!63yw=TAedSmQVV;Bv=7|BfANy(xVn4;3NH&(PHUaq zr=@8bW-0DLgF&vFxpai1Wb0*z~nLr6XhtA}Jeq)o421myS zhldA)FX<@zIvYgAD<}r6=P2Z^%6)4!aXf!)omT}q7bhlsJgpXD={Ec2vOy;cyWb#R zk&k!M1#8elwi!tDl4>LY?}WA?=cNw4FgNqIMkc##)#^k}6>_6YP!sg_^t-cU?aOc& zof!^;H`4=p#lNpBfn4Su6dF96EGw{&St9 zLrR)Syu42^$)|9Cpi*G=ezCkQ#OP=O5=&j*7}{WF@t zo5EC;SunVJVU?J1bHarL-^t*vuqw~l3r$kYOY*|r;)t$Ev6avNt8`Jd4Ow?cD$3H7Bb;F_p$KyY({Tr$6Od(HFC~1xQPeHw$-uzV$R`4(DT+> zpuy0@3N?y!A+(S8g1ndfSi%yw^rTdNle${^g|T;pfr~`YA}8utEg8MzTR8}KF()0! zMp!8GMZm{$lFdt@Z(|%Aqi`;_2ClqNIw9j?JQk{|68yrM4A)vP$1#d0NWK-(p$$T5 zJemqjNqaA=&ZFEFO=u2c0WhR55Dd=*!IMBi zF1#Qy|JW+0Rw$IlBM-V+(x31ltCZkPquIx%snA@5C}#IsCEbKS=0h5IL~SVjxZ@cn z(s7fVJ%}(ogVh#;IkyTX%{p$MeAftwXJ@#&oFaU6q0dmf^b`z znW&O*>=Hw${no3^`jOtJ1b>oV9%$XHHYG+Levx2aFo)EoT>^tU(<=srEs zo#DTRZ2CP_l>ELbqCZwed>Qj~aQbd?ae2La8FaEGU?y&K~WBsj(t88Ar OOnwH#SQDBv4*&q%a#@N1 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_basefork.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_basefork.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..3397cfa6069a6df0a81066db9eb253de46fe6534 GIT binary patch literal 2676 zcmV-)3XAn0iwFP!000021GQLxbKAHP{hyy=t7|Gdv3a(0p0>I;Qzy0?&E#T_<>Zp7 z+8iW;5^9oA0ML%6?RW3n1xZPconEJ@W^4%{u-G4O-!7Prd$jv_mr9%I0R?CC{70JF z%v7@h)gj;g13ykuEIY1)Embg6RTN8_=}J2lbVidUUD#|e_(@fCnC|WG9nh9cj7+&G zG(Am!INW9lB4rd*l_{6e!f91b3O$hNqi^&{(oEB6K@j;)J5iSWLQOSo-OhDIx0IbU5ru5c<@Y! zGr4tQz^w^$dim@*gc%LJ$Nv~7DdCfOg4|wjHR|)IKXK!KC8;hp7p|>pmo(8j^;5Ob z8M&|E7#<>82jzMgnJ4aQb7HNq6^DtRzmV8C&a14LANNU7X4U@yLZ|Li%t2G-Q_zI3LDgJgy#%Ll1+4o+#0-gQ(v?*3r?y zra1mUoky(aow+kQSj{m=+i(7JY{ECD688M?JzX(|s5dI@wO+va9}&)p_8%w8YvAmf zo?_kAEBeX;I@min+}+>b-TOTqq<>8J;^GS|7M;(K&`q|7+Ev7H{d?_$$-!U@P}q80 z+^VHtJ)bWZU^IF9BXA2`UTZJXunwrRn5mXj0u1~_=tEEEm2hHar*#QL`?RGzl~DnV z%oF4Wy*d8rH0kUa45C4UL1)o;mp1$A_?4t3_1ei^^4eT$df@yU<@^p!fO%gp7S;vHE0QI+Aao(lFCVixNpfb9)=T(_|*x8kOIq;I?@GeQq|=I=Ga`;K{BLp)gfrUOeQ+qYE+^|UMlVweRy+zF&d6G+|f<~ zU8q9)$@q8l`0?Y$i~JKaJo%)JN;4LN>4*+_0Hk;X3ZuP8JO(o?FnYST$0Jsp+2e@z z51ZZJv9*v<6!w;b2BnRfFp07WaF0bzb0*7R10bcCK?95zUwxR^lsGoq@u8qPL>nQIo%i1wiO(JqeMc4-CMNG#qjlj~IsoR`tK~A~U;n#D(sx>ba&kI)c{#ke z8lJz|z{=WuFL`4DN|Yagsbe)~PNA$d`2rg7l9?rpFx;ZCjzSQsE%h^t8h_2EjPn;c z3mWH_<9}}LZ>Mc-MzQj>6J04XOkvprm91y<9bSS=DM3Z>5on@$AdsU3xyhY@sL8@u zrASdc;3eutnSz0r3Onl0ib-XsjR9|n$0kqr7)y$TZo1*Yk zFJ%9UmD*?~xk0rCJ=EwcI8Bh67Z=IZy!JbhU!y6S2?LqTg*~&eaNB&%io4tafS|pu z3!TIg9r+4=ZQM!>9?RSTGKtB{3!MH`Lmqf$MJOxLaA8MXOg!9`ZwLlC-IWcbz(lNN zqUKHp6^7AqV=~L4{M4C==Kc!`4Zl(fpybxmMY+8);9hsFyaiplLLj%7d#Xp$vR+$0 zVlU|FkT*1lX*0oTDGH^?-omjVfxX4zW}^i&l-5i;-q+#G5&{Y^+LdoZk$u zy zgx5HJ7DhMul{AcDR*oyxXH(YYn$!EjTKz63nmR`xY%L`OLX(#0I(0IW=Q^egXE-`z zbTLdUb_X{d$>%lY+v1)yXEa1yH5y6x3x#tt}-cBylt~5X`|bci3FW30g{c2?g9yzeA(LaadWB7lXVMQ{KddEj2ok5Jl|hi zK#*K(*SFd!Fdr!^X^p)$lDkS6S~7UE`N3KaJ~~CWftCkb8OUssCFbZV(yJtDZ9oxe zFcF)bcgL5*;}@?_H@lr~wwH`zozmIewCsA30k&Q=8T5mQ8RFtbJ(=kxmvxhS(&OFB z0xGoehE9v*G?tebi~$#1OrESqNG5S;(@?FS8mD?3CI&9|k8N|wo!WXmkOf>x8g%n( zkQ=F>b4cP_T{1U8sx#jXQEkF4_a2-6qWej#oZ@bLcbX3wPxlpM4%yn`s$88E) zn#GQ2VNE4GAmvtIBwP@I&d5n(Go0dPE8>_D)`R{?a@+>oCm>2Y_-Thwt5tyk-%M^a zELNTY;6R|Z?611yMn$>E^0@zJxziW@wvFWDYR@O-?JJOELjz{sl+f(xSY#yPnT5yS zoL|KTOIOoqtaF)fl6NODVhZ1{P`XMLLWH=uAX7n+ntrN{H?0;(wP2Ja#@1D&^rku( ze&@h8F2E$yI2CiXThd>JKjNX^Fl*AJ%@>BJ+xJ2e{X64N8u)ee@kB2fs-vyPgVI0(!yVv8|%=MC2P*{k&>&}Hv`%TyVbtc`2G#u!lwpi82|uB$1@QC literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_basevars.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_basevars.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..056508e1eed422e30ee3071ece41f8d0a53d377b GIT binary patch literal 2005 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 IDaaWB016dZ2mk;8 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_probes_skel.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_probes_skel.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..18000f6132dbdd5da77e889322a2227d5e7b36b2 GIT binary patch literal 1977 zcmV;q2S)fGiwFP!000021GQIea~ro2{(iq=%haVLOBYIxrY&Q6qF7SInMC4`&lYSXF9k;ubhvAfuP_T|z^hmH=8s4|)CleZ?%zonVU zl%Dsg@%hmocsohKcHVeX39n|NESEHwT3X>{M$;t?P1f)KBs86-z2n{q?FGU}Rdp%p zRr<~8K1&EvMqcPl*ob@s%OJAA9a2$spg-rK(uJQAL|B&?)Qjq%bE^l1*qA!*|a#Dgh5QgUO% z1s2K|^!D`|2vZVvPkx>xDdCejg4|ALv+DAyJGGO4CaElU8MnArEN!$d-AvSy9MqTF zmX*pQ`f#nc*m9IxQ_-A_>pFU;6%Zt0tk4doR?)nP-b?3{Le2Rnn(T>BYzW0qOYN=| z4-k|>(iK^F-a#2DM{jzE2w=A?*XV;SnS3OvVFxTT8Wv^JTJ}(oh$5#rXOylduGZ(naoJBZONvfpK@MqqXlnYnDuypN_^9Q4# zRaoZOayW@8#8Cq~bERR}+GE|TZiM6DL%^H1WUr_fFy00OPaw5B$6;p=TlT8I7dXz& zdi(nuScQXEn{|Lql)qZ~iU#bmKIg;4PbT`s#CNbb=>#KId=T{;$T~Ya*%ikhnDc_| z`~~fbPBt_K>FSsNEnndamlF2;-~){rL(~~n=3drt{zrs!D&0qS5B$CY&-j|2*`$-+ z$?4JY@lo&hbdvrt?M22R7=x`>NaQxlePcCoJpa)+uX0o_1}5%!UM|GaZT5?0jY<}F zzXe`_$9w65H1Gj!1{A%d3LxN}P&VYO(4iJ)X4X_dvP)N`PGnR98%2VgpqulbE|c|L z`u%vBem~r1azujoNqQt2*Pt~g4FhA4G5Yh(?Qk?01>aqVjDz!9BD{r)dYnvtM+XN7 z?J<4?g^4d&e)|j!_m0l!lozT9a{!6*Er)M-u4A7Nc{9 z2_x8M0Cc&C*L5k4WOS!n=PY_N1SPBF2&XG!xxH}zikTSfe}8^AIRE~~%UyJ@shwoh z)U~lZ7X@`ku9h>-<_-QZ@C=46xW5Tv2536e36xH9*XS7gki|2jXN|RNRNF)VV8KcM zsH&!dO?7hlD8iuiAj$?q+-V?Qv@zZgp|nk+ZLN{iNzic7j>tlLP#m4Lr5`gNGgPQC z3juRNTayoL8Jt;#j+7M2dxjBrHu&5xa3{jN$R-Du3v@Y7)|B4yP!Wi`j!If1Yhl66 zeT>y|&dv&<=P`7(LF_|igDeV@T}a@F=!GiF1i!dUimn{QG0LL`$xR&%2B`4H162$o z3qKta!Y)cIxVk<_+*mlkxQjU^GgUVZ1gyR_F*IRbcYg@;NZDPL4pxT&E#r)9$G2q1 zfC=n(VuR1>NW_b=cEFoUntr(FA=+c*0z_U~<{1xgHS zY!iWFGp4M3wKY!dX6dGA&Py{DWfBbfJY84W`dqT=rkcjm7ftx`dCLXo|B|!MHSKFU ze>c9qz1y8FTH4m&e539Sjh9-{Ywhv#ow`?PuHGE3r>xHC@{-Pf9Nl(yhwwG^v(e{Y L%>3x}2oeAQSqIP7 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_sorters_Loss.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_sorters_Loss.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..c461dba2a39bf0d8adf2b1c1a26cdd6bd9cea9d2 GIT binary patch literal 1470 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_sorters_Median.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_sorters_Median.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..2287028559adf87c707ff6d8a857dffd68545633 GIT binary patch literal 1487 zcmV;=1u*&_iwFP!000021Fcq3Q`<%me%G(qdYalKMm451jft5kjt!au_Sgo(j30WI zPSzDk=iHqjo=*RJzdOko(l+fwGy~S{?R~qq`|Ym$MT7QV?o%#f-Xo)Ak{nYcV^OSn zRGMV}7rX8GPzy>Ub7n-uvTQ>uUU0<>k7>D~iHv)_3s%sP-#O@XspSMSk*_mOhyG7T zdltc=%nU1Hreazv&hll(drsW{Mvv#moMvkRnsPrNw&BSE8VMu9gTuPKJLro}U;R+<1PG;E&T{@%_Q$ zA#M*1i})XoOz~ehMW`%Zwg$fuBI4ef#1yAbr8Ha<>=ia0Z7QTmkq;{|l_ZhMUEo2O zlm>54046y6Ui`7}e8LlJ0&b(RTQ%*fxm1fkJ)dXK6`yErRqAXFb;Q=3G|XpDJ6FJvR? z?qrsv+h6;q>=nLoE3uIeKhoTCh#J1%>t$kzzLv{7zP25*r=>!qHJTrf1^VA1PR!5f zf2mTp(>>ZhIN0yJrmp|S?~v1;K-=A8gd(pyfGJf$HrKzG+K2>Q&5{=P53&cg(YyV0 zvqqP5yT{-%xO&I6LxUceC?P2}l!G94$F&q5rG@L0v5d+bEZ6?F4YHUr@Fw+8FLW7P z485;hXt7UYh4ONRYnWPbLs80<(RM`CO4Iq=fsL<+)9Y|};{tr<%90veVZ$4t>>N%F z;EK(zQ?W|9Hd{C)ORK2F8kL@N-(i0k&IZ$PG7ra>&)}cP8{Pm@%pq3SaFN*AtJ?x% zT1jP*2o#;jP`{Ij=VK}ydW#?EReiv|qk4;y`ZU-{T=#)!4vbvFZBf7${I?|>yI+?p ztL@-k0mNR+ovuCW*OzV84XA%|(Aj$qFW3JPkf(k<$$*vG#>~u4{>4dpk=Q86A_jl1 zxeM%IJh`2Qr)TqLVSSV$sB*ng$dI8{vHKmyrQp;DaWit7 z8vROhbw_mfL}lC~gy&7_>!xZ2PI5?m&!%olMKp zP6%WB_>U+ieB+2@E#ujy2+B!q+DhqqH_`P0+W`(u9fK2eerm1 zI9cnn+B(V=sCDIW&=m$S{Iz9KcWa}_u+XszlG;C3X#Uyj7DSRl5AGP!PR*%rODNFGM)|5mu8&1 zVfU4YCN3igT+9sSwCQRVRMZWw p5asDJ=2jvQS1tu8H0DO!LH^cY{Z3XZKT1!$zX0mw4C;sr001&y<9`4E literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_sorters_StdDev.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_sorters_StdDev.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..f2ae966715b3b625bc56da54037dfe689e7b1a42 GIT binary patch literal 1516 zcmV9eUm?{(f-SQO7l>5$m%?bj%ksHDqD7_ zu+jdnyzTi=3ksX3!m5Qxk_|0oCbh6Kr1^$MdD!V(iHwf?)V|GIg$$AaD>4J9X$fzZHT)&{xF+~SvxfM@K&bpw()#1Y0|X_O z)F%z*4K5>P=(N>D0P9Ken0>$!%FiS--~h5b1ENrB%?vp^R@np_4S#yE*Q8hq?DBHL zOH<5^Tv(N7PBeiCex-K!mbL-TF_1+HevEqQYu9TKBFR`NSGMF{6|KDb*^x$(5&%< za1wKvqXIZ1l>yizWA%Q$Ovk}Tmv5OS-KUnz@hTYj1yQwg;C33=()~`uX`Gz2_V#vZ z3;8|16AE5xN>DE&LCX2eC1`{dluN zmvg(v$Ytc}y)@1m^pJ@;B-w^iBna=gmLeB%=K5rqFNzddZv1T<6d@(Zo7h9W&~d<33cZw;7O~LQ@Q5gtoT1@uZ+tuGeQ@MnxRRvWR#@};C^=`NI_wIK z*Rfj0(pZ#uH9|tUR?b%vX^x^`rIG7L25!JzPi$LPiN~iYRMH$>*03Xt*;y??e{I-z zfX{l9?szbo4u;pyFh7ykye`IKX~ps4sNFeH^%(@Il;&BaP{k@iLl})bA7kdwoBc$u zsssER?I0`Ygt|M4YiAIZZh#Aw;VzKEJt1`84mWE%bFa7|!X0eqfP~Jr#JCOa?ZUdPinzypdV#5UD;<5^;plEWIKP-aBkxfP>hje_BMg=r zi#?PD3IZ83>`e#1_r|YA!FYPz8&h!ZBi|Epng(soNWGR}8KTQUw|711J-eZj)x2qp z;ej5!)FS0M5^2d{iY&URJmxmcj{;Z>6%Vv|!Gpze`~Mj=h^LW?Hl8YbY?a>f&GRIDaGRQOj?r#o7=&*R3e?UeKPxbPnjSRi z!(e(byqQvPeMcXH@i@4i-W|Jo1O0N7>!&+KwK!TP>CtMy+a5MP$gkG zbG2MZh2$WCQd@2QJ5ruVxPw%^W=GvI4=Oys@bJ)h8}KmyDu&)JhD{8=h2NxK-W<`D zz{C&M2wN8qU9G|;eqIICY9AcFZPLvoC{s7M0n6iOnOlmGxcOWmg@)3qd&u8etbfbP SmA{Bjy?+2J`2KXi3jhFgr}*0d literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man3/Smokeping_sorters_base.3.gz b/debian/smokeping/usr/share/man/man3/Smokeping_sorters_base.3.gz new file mode 100644 index 0000000000000000000000000000000000000000..ed9d56d593347833789f55b88154bdab0d72e5ba GIT binary patch literal 2352 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 W#b0_4v;Ot8>--O+G+E2$L;wK3QA7~{ literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man7/smokeping_extend.7.gz b/debian/smokeping/usr/share/man/man7/smokeping_extend.7.gz new file mode 100644 index 0000000000000000000000000000000000000000..0b29c07ee67ca634777b4cf582c088cb046427fb GIT binary patch literal 4929 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 literal 0 HcmV?d00001 diff --git a/debian/smokeping/usr/share/man/man7/smokeping_install.7.gz b/debian/smokeping/usr/share/man/man7/smokeping_install.7.gz new file mode 100644 index 0000000000000000000000000000000000000000..a5e455a66a74b48aa87deb3682086d99d1c3b8b8 GIT binary patch literal 3306 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 o4!Yf2Sb4aGT-U`1 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'";]/; + +$ENV{'LC_NUMERIC'}='C'; +if (setlocale(LC_NUMERIC,"") ne "C") { + if ($ENV{'LC_ALL'} eq 'C') { + # This has got to be a bug in perl/mod_perl, apache or libc + die("Your internationalization implementation on your operating system is " + . "not responding to your setup of LC_ALL to \"C\" as LC_NUMERIC is " + . "coming up as \"" . setlocale(LC_NUMERIC, "") . "\" leaving " + . "smokeping unable to compare numbers..."); + } + elsif ($ENV{'LC_ALL'} ne "") { + # This error is most likely setup related and easy to fix with proper + # setup of the operating system or multilanguage locale setup. Hint, + # setting LANG is better than setting LC_ALL... + die("Resetting LC_NUMERIC failed probably because your international " + . "setup of the LC_ALL to \"". $ENV{'LC_ALL'} . "\" is overriding " + . "LC_NUMERIC. Setting LC_ALL is not compatible with smokeping..."); + } + else { + # This is pretty nasty to figure out. Seems there are still lots + # of bugs in LOCALE behavior and if you get this error, you are + # affected by it. The worst is when "setlocale" is reading the + # environment variables of your webserver and not reading the PERL + # %ENV array like it should. + die("Something is wrong with the internationalization setup of your " + . "operating system, webserver, or the perl plugin to your webserver " + . "(like mod_perl) and smokeping can not compare numbers correctly. " + . "On unix, check your /etc/locale.gen and run sudo locale-gen, set " + . "LC_NUMERIC in your perl plugin config or even your webserver " + . "startup script to potentially fix or work around the problem..."); + } +} + + +use File::Basename; +use Smokeping::Examples; +use Smokeping::RRDtools; + +# global persistent variables for speedy +use vars qw($cfg $probes $VERSION $havegetaddrinfo $cgimode); + +$VERSION = "2.009000"; + +# we want opts everywhere +my %opt; + +BEGIN { + $havegetaddrinfo = 0; + eval 'use Socket6'; + $havegetaddrinfo = 1 unless $@; +} + +my $DEFAULTPRIORITY = 'info'; # default syslog priority + +my $logging = 0; # keeps track of whether we have a logging method enabled +my $influx = undef; # a handle to the InfluxDB::HTTP object (if any) + +sub find_libdir { + # find the directory where the probe and matcher modules are located + # by looking for 'Smokeping/probes/FPing.pm' in @INC + # + # yes, this is ugly. Suggestions welcome. + for (@INC) { + -f "$_/Smokeping/probes/FPing.pm" or next; + return $_; + } + return undef; +} + +sub do_log(@); +sub load_probe($$$$); + +sub dummyCGI::param { + return wantarray ? () : ""; +} + +sub dummyCGI::script_name { + return "sorry_no_script_name_when_running_offline"; +} + +sub load_probes ($){ + my $cfg = shift; + my %prbs; + foreach my $probe (keys %{$cfg->{Probes}}) { + my @subprobes = grep { ref $cfg->{Probes}{$probe}{$_} eq 'HASH' } keys %{$cfg->{Probes}{$probe}}; + if (@subprobes) { + my $modname = $probe; + for my $subprobe (@subprobes) { + $prbs{$subprobe} = load_probe($modname, $cfg->{Probes}{$probe}{$subprobe},$cfg, $subprobe); + } + } else { + $prbs{$probe} = load_probe($probe, $cfg->{Probes}{$probe},$cfg, $probe); + } + } + return \%prbs; +}; + +sub load_probe ($$$$) { + my $modname = shift; + my $properties = shift; + my $cfg = shift; + my $name = shift; + $name = $modname unless defined $name; + # just in case, make sure we have the module loaded. unless + # we are running as slave, this will already be the case + # after reading the config file + eval 'require Smokeping::probes::'.$modname; + die "$@\n" if $@; + my $rv; + eval '$rv = Smokeping::probes::'.$modname.'->new( $properties,$cfg,$name);'; + die "$@\n" if $@; + die "Failed to load Probe $name (module $modname)\n" unless defined $rv; + return $rv; +} + +sub snmpget_ident ($) { + my $host = shift; + $SNMP_Session::suppress_warnings = 10; # be silent + my @get = snmpget("${host}::1:1:1", qw(sysContact sysName sysLocation)); + return undef unless @get; + my $answer = join "/", grep { defined } @get; + $answer =~ s/\s+//g; + return $answer; +} + +sub cgiurl { + my ($q, $cfg) = @_; + my %url_of = ( + absolute => $cfg->{General}{cgiurl}, + relative => q{}, + original => $q->script_name, + ); + my $linkstyle = $cfg->{General}->{linkstyle}; + die('unknown value for $cfg->{General}->{linkstyle}: ' + . $linkstyle + ) unless exists $url_of{$linkstyle}; + return $url_of{$linkstyle}; +} + +sub hierarchy ($){ + my $q = shift; + my $hierarchy = ''; + my $h = $q->param('hierarchy'); + if ($q->param('hierarchy')){ + $h =~ s/$xssBadRx/_/g; + $hierarchy = 'hierarchy='.$h.';'; + }; + return $hierarchy; +} +sub lnk ($$) { + my ($q, $path) = @_; + if ($q->isa('dummyCGI')) { + return $path . ".html"; + } else { + return cgiurl($q, $cfg) . "?".hierarchy($q)."target=" . $path; + } +} + +sub dyndir ($) { + my $cfg = shift; + return $cfg->{General}{dyndir} || $cfg->{General}{datadir}; +} + +sub make_cgi_directories { + my $targets = shift; + my $dir = shift; + my $perms = shift; + while (my ($k, $v) = each %$targets) { + next if ref $v ne "HASH"; + if ( ! -d "$dir/$k" ) { + my $saved = umask 0; + mkdir "$dir/$k", oct($perms); + umask $saved; + } + make_cgi_directories($targets->{$k}, "$dir/$k", $perms); + } +} + +sub update_dynaddr ($$){ + my $cfg = shift; + my $q = shift; + my @target = split /\./, $q->param('target'); + my $secret = md5_base64($q->param('secret')); + my $address = $ENV{REMOTE_ADDR}; + my $targetptr = $cfg->{Targets}; + foreach my $step (@target){ + $step =~ s/$xssBadRx/_/g; + return "Error: Unknown target $step" + unless defined $targetptr->{$step}; + $targetptr = $targetptr->{$step}; + }; + return "Error: Invalid target or secret" + unless defined $targetptr->{host} and + $targetptr->{host} eq "DYNAMIC/${secret}"; + my $file = dyndir($cfg); + for (0..$#target-1) { + $file .= "/" . $target[$_]; + ( -d $file ) || mkdir $file, 0755; + } + $file.= "/" . $target[-1]; + my $prevaddress = "?"; + my $snmp = snmpget_ident $address; + if (-r "$file.adr" and not -z "$file.adr"){ + open(D, "<$file.adr") + or return "Error opening $file.adr: $!\n"; + chomp($prevaddress = ); + close D; + } + + if ( $prevaddress ne $address){ + open(D, ">$file.adr.new") + or return "Error writing $file.adr.new: $!"; + print D $address,"\n"; + close D; + rename "$file.adr.new","$file.adr"; + } + if ( $snmp ) { + open (D, ">$file.snmp.new") + or return "Error writing $file.snmp.new: $!"; + print D $snmp,"\n"; + close D; + rename "$file.snmp.new", "$file.snmp"; + } elsif ( -f "$file.snmp") { unlink "$file.snmp" }; + +} +sub sendmail ($$$){ + my $from = shift; + my $to = shift; + $to = $1 if $to =~ /<(.*?)>/; + my $body = shift; + if ($cfg->{General}{mailhost} and + my $smtp = Net::SMTP->new([split /\s*,\s*/, $cfg->{General}{mailhost}],Timeout=>5) ){ + $smtp->auth($cfg->{General}{mailuser}, $cfg->{General}{mailpass}) + if ($cfg->{General}{mailuser} and $cfg->{General}{mailpass}); + $smtp->mail($from); + $smtp->to(split(/\s*,\s*/, $to)); + $smtp->data(); + $smtp->datasend($body); + $smtp->dataend(); + $smtp->quit; + } elsif ($cfg->{General}{sendmail} or -x "/usr/lib/sendmail"){ + open (M, "|-") || exec (($cfg->{General}{sendmail} || "/usr/lib/sendmail"),"-f",$from,$to); + print M $body; + close M; + } else { + warn "ERROR: not sending mail to $to, as all methods failed\n"; + } +} + +sub sendsnpp ($$){ + my $to = shift; + my $msg = shift; + if ($cfg->{General}{snpphost} and + my $snpp = Net::SNPP->new($cfg->{General}{snpphost}, Timeout => 60)){ + $snpp->send( Pager => $to, + Message => $msg) || do_debuglog("ERROR - ". $snpp->message); + $snpp->quit; + } else { + warn "ERROR: not sending page to $to, as all SNPP setup failed\n"; + } +} + +sub panel_class { + if ($cfg->{Presentation}{graphborders} eq 'no') { + return 'panel-no-border'; + } else { + return 'panel'; + } +} + +sub panel_heading_class { + if ($cfg->{Presentation}{graphborders} eq 'no') { + return 'panel-heading-no-border'; + } else { + return 'panel-heading'; + } +} + +sub min ($$) { + my ($a, $b) = @_; + return $a < $b ? $a : $b; +} + +sub max ($$) { + my ($a, $b) = @_; + return $a < $b ? $b : $a; +} + +sub display_range ($$) { + # Turn inputs into range, i.e. (10,19) is turned into "10-19" + my $lower = shift; + my $upper = shift; + my $ret; + + # Only return actual range when there is a difference, otherwise return just lower bound + if ($upper < $lower) { + # Edgecase: Happens when $pings is less than 6 since there is no minimum value imposed on it + $ret = $upper; + } elsif ($upper > $lower) { + $ret = "$lower-$upper"; + } else { + $ret = $lower; + } + return $ret; +} + +sub init_alerts ($){ + my $cfg = shift; + foreach my $al (keys %{$cfg->{Alerts}}) { + my $x = $cfg->{Alerts}{$al}; + next unless ref $x eq 'HASH'; + if ($x->{type} eq 'matcher'){ + $x->{pattern} =~ /(\S+)\((.+)\)/ + or die "ERROR: Alert $al pattern entry '$_' is invalid\n"; + my $matcher = $1; + my $arg = $2; + die "ERROR: matcher $matcher: all matchers start with a capital letter since version 2.0\n" + unless $matcher =~ /^[A-Z]/; + eval 'require Smokeping::matchers::'.$matcher; + die "Matcher '$matcher' could not be loaded: $@\n" if $@; + my $hand; + eval "\$hand = Smokeping::matchers::$matcher->new($arg)"; + die "ERROR: Matcher '$matcher' could not be instantiated\nwith arguments $arg:\n$@\n" if $@; + $x->{minlength} = $hand->Length; + $x->{maxlength} = $x->{minlength}; + $x->{sub} = sub { $hand->Test(shift) } ; + } else { + my $sub_front = <{$x->{type}}; + for(1){ +SUB + my $sub; + my $sub_back = " return 1;\n }\n return 0;\n}\n"; + my @ops = split /\s*,\s*/, $x->{pattern}; + $x->{minlength} = scalar grep /^[!=><]/, @ops; + $x->{maxlength} = $x->{minlength}; + my $multis = scalar grep /^[*]/, @ops; + my $it = ""; + for(1..$multis){ + my $ind = " " x ($_-1); + my $extra = ""; + for (1..$_-1) { + $extra .= "-\$i$_"; + } + $sub .= <{maxlength}; + my $incr = 0; + for (@ops) { + my $extra = ""; + $it = " " x $multis; + for(1..$multis){ + $extra .= "-\$i$_"; + }; + /^(==|!=|<|>|<=|>=|\*)(\d+(?:\.\d*)?|U|S|\d*\*)(%?)(?:(<|>|<=|>=)(\d+(?:\.\d*)?)(%?))?$/ + or die "ERROR: Alert $al pattern entry '$_' is invalid\n"; + my $op = $1; + my $value = $2; + my $perc = $3; + my $op2 = $4; + my $value2 = $5; + my $perc2 = $6; + if ($op eq '*') { + if ($value =~ /^([1-9]\d*)\*$/) { + $value = $1; + $x->{maxlength} += $value; + $sub_front .= " my \$imax$multis = min(\@\$y - $x->{minlength}, $value);\n"; + $sub_back .= "\n"; + $sub .= <= min(\$maxlength$extra,\$imax$multis); +FOR + + $multis--; + next; + } else { + die "ERROR: multi-match operator * must be followed by Number* in Alert $al definition\n"; + } + } elsif ($value eq 'U') { + if ($op eq '==') { + $sub .= "$it next if defined \$y->[$i$extra];\n"; + } elsif ($op eq '!=') { + $sub .= "$it next unless defined \$y->[$i$extra];\n"; + } else { + die "ERROR: invalid operator $op in connection U in Alert $al definition\n"; + } + } elsif ($value eq 'S') { + if ($op eq '==') { + $sub .= "$it next unless defined \$y->[$i$extra] and \$y->[$i$extra] eq 'S';\n"; + } else { + die "ERROR: S is only valid with == operator in Alert $al definition\n"; + } + } elsif ($value eq '*') { + if ($op ne '==') { + die "ERROR: operator $op makes no sense with * in Alert $al definition\n"; + } # do nothing else ... + } else { + if ( $x->{type} eq 'loss') { + die "ERROR: loss should be specified in % (alert $al pattern)\n" unless $perc eq "%"; + } elsif ( $x->{type} eq 'rtt' ) { + $value /= 1000; + } else { + die "ERROR: unknown alert type $x->{type}\n"; + } + $sub .= <[$i$extra] +$it and \$y->[$i$extra] =~ /^\\d/ +$it and \$y->[$i$extra] $op $value +IF + if ($op2){ + if ( $x->{type} eq 'loss') { + die "ERROR: loss should be specified in % (alert $al pattern)\n" unless $perc2 eq "%"; + } elsif ( $x->{type} eq 'rtt' ) { + $value2 /= 1000; + } + $sub .= <[$i$extra] $op2 $value2 +IF + } + $sub .= "$it ;"; + } + $i++; + } + $sub_front .= "$it my \$minlength = $x->{minlength};\n"; + $sub_front .= "$it my \$maxlength = $x->{maxlength};\n"; + $sub_front .= "$it next if scalar \@\$y < \$minlength ;\n"; + do_debuglog(<{pattern} +$sub_front$sub$sub_back +COMP + $x->{sub} = eval ( $sub_front.$sub.$sub_back ); + die "ERROR: compiling alert pattern $al ($x->{pattern}): $@\n" if $@; + } + } +} + + +sub check_filter ($$) { + my $cfg = shift; + my $name = shift; + # remove the path prefix when filtering and make sure the path again starts with / + my $prefix = $cfg->{General}{datadir}; + $name =~ s|^${prefix}/*|/|; + # if there is a filter do neither schedule these nor make rrds + if ($opt{filter} && scalar @{$opt{filter}}){ + my $ok = 0; + for (@{$opt{filter}}){ + /^\!(.+)$/ && do { + my $rx = $1; + $name !~ /^$rx/ && do{ $ok = 1}; + next; + }; + /^(.+)$/ && do { + my $rx = $1; + $name =~ /^$rx/ && do {$ok = 1}; + next; + }; + } + return $ok; + }; + return 1; +} + +sub add_targets ($$$$); +sub add_targets ($$$$){ + my $cfg = shift; + my $probes = shift; + my $tree = shift; + my $name = shift; + die "Error: Invalid Probe: $tree->{probe}" unless defined $probes->{$tree->{probe}}; + my $probeobj = $probes->{$tree->{probe}}; + foreach my $prop (keys %{$tree}) { + if (ref $tree->{$prop} eq 'HASH'){ + add_targets $cfg, $probes, $tree->{$prop}, "$name/$prop"; + } + if ($prop eq 'host' and ( check_filter($cfg,$name) and $tree->{$prop} !~ m|^/| )) { + if($tree->{host} =~ /^DYNAMIC/) { + $probeobj->add($tree,$name); + } else { + $probeobj->add($tree,$tree->{host}); + } + } + } +} + + +sub init_target_tree ($$$$); # predeclare recursive subs +sub init_target_tree ($$$$) { + my $cfg = shift; + my $probes = shift; + my $tree = shift; + my $name = shift; + my $hierarchies = $cfg->{__hierarchies}; + die "Error: Invalid Probe: $tree->{probe}" unless defined $probes->{$tree->{probe}}; + my $probeobj = $probes->{$tree->{probe}}; + + if ($tree->{alerts}){ + die "ERROR: no Alerts section\n" + unless exists $cfg->{Alerts}; + $tree->{alerts} = [ split(/\s*,\s*/, $tree->{alerts}) ] unless ref $tree->{alerts} eq 'ARRAY'; + $tree->{fetchlength} = 0; + foreach my $al (@{$tree->{alerts}}) { + die "ERROR: alert $al ($name) is not defined\n" + unless defined $cfg->{Alerts}{$al}; + $tree->{fetchlength} = $cfg->{Alerts}{$al}{maxlength} + if $tree->{fetchlength} < $cfg->{Alerts}{$al}{maxlength}; + } + }; + # fill in menu and title if missing + $tree->{menu} ||= $tree->{host} || "unknown"; + $tree->{title} ||= $tree->{host} || "unknown"; + my $real_path = $name; + my $dataroot = $cfg->{General}{datadir}; + $real_path =~ s/^$dataroot\/*//; + my @real_path = split /\//, $real_path; + + foreach my $prop (keys %{$tree}) { + if (ref $tree->{$prop} eq 'HASH'){ + if (not -d $name and not $cgimode) { + mkdir $name, 0755 or die "ERROR: mkdir $name: $!\n"; + }; + + if (defined $tree->{$prop}{parents}){ + for my $parent (split /\s/, $tree->{$prop}{parents}){ + my($hierarchy,$path)=split /:/,$parent,2; + die "ERROR: unknown hierarchy $hierarchy in $name. Make sure it is listed in Presentation->hierarchies.\n" + unless $cfg->{Presentation}{hierarchies} and $cfg->{Presentation}{hierarchies}{$hierarchy}; + my @path = split /\/+/, $path; + shift @path; # drop empty root element; + if ( not exists $hierarchies->{$hierarchy} ){ + $hierarchies->{$hierarchy} = {}; + }; + my $point = $hierarchies->{$hierarchy}; + for my $item (@path){ + if (not exists $point->{$item}){ + $point->{$item} = {}; + } + $point = $point->{$item}; + }; + $point->{$prop}{__tree_link} = $tree->{$prop}; + $point->{$prop}{__real_path} = [ @real_path,$prop ]; + } + } + init_target_tree $cfg, $probes, $tree->{$prop}, "$name/$prop"; + } + if ($prop eq 'host' and check_filter($cfg,$name) and $tree->{$prop} !~ m|^/|) { + # print "init $name\n"; + my $step = $probeobj->step(); + # we have to do the add before calling the _pings method, it won't work otherwise + my $pings = $probeobj->_pings($tree); + my @slaves = (""); + + if ($tree->{slaves}){ + push @slaves, split /\s+/, $tree->{slaves}; + }; + for my $slave (@slaves){ + die "ERROR: slave '$slave' is not defined in the '*** Slaves ***' section!\n" + unless $slave eq '' or defined $cfg->{Slaves}{$slave}; + my $s = $slave ? "~".$slave : ""; + my @create = + ($name.$s.".rrd", "--start",(time-1),"--step",$step, + "DS:uptime:GAUGE:".(2*$step).":0:U", + "DS:loss:GAUGE:".(2*$step).":0:".$pings, + "DS:median:GAUGE:".(2*$step).":0:U", + (map { "DS:ping${_}:GAUGE:".(2*$step).":0:U" } + 1..$pings), + (map { "RRA:".(join ":", @{$_}) } @{$cfg->{Database}{_table}} )); + if (not -f $name.$s.".rrd"){ + unless ($cgimode) { + do_debuglog("Calling RRDs::create(@create)"); + RRDs::create(@create); + my $ERROR = RRDs::error(); + do_log "RRDs::create ERROR: $ERROR\n" if $ERROR; + } + } else { + shift @create; # remove the filename + my ($fatal, $comparison) = Smokeping::RRDtools::compare($name.$s.".rrd", \@create); + die("Error: RRD parameter mismatch ('$comparison'). You must delete $name$s.rrd or fix the configuration parameters.\n") + if $fatal; + warn("Warning: RRD parameter mismatch('$comparison'). Continuing anyway.\n") if $comparison and not $fatal; + Smokeping::RRDtools::tuneds($name.$s.".rrd", \@create); + } + } + } + } +}; + +sub enable_dynamic($$$$); +sub enable_dynamic($$$$){ + my $cfg = shift; + my $cfgfile = $cfg->{__cfgfile}; + my $tree = shift; + my $path = shift; + my $email = ($tree->{email} || shift); + my $print; + die "ERROR: smokemail property in $cfgfile not specified\n" unless defined $cfg->{General}{smokemail}; + die "ERROR: cgiurl property in $cfgfile not specified\n" unless defined $cfg->{General}{cgiurl}; + if (defined $tree->{host} and $tree->{host} eq 'DYNAMIC' ) { + if ( not defined $email ) { + warn "WARNING: No email address defined for $path\n"; + } else { + my $usepath = $path; + $usepath =~ s/\.$//; + my $secret = int(rand 1000000); + my $md5 = md5_base64($secret); + open C, "<$cfgfile" or die "ERROR: Reading $cfgfile: $!\n"; + open G, ">$cfgfile.new" or die "ERROR: Writing $cfgfile.new: $!\n"; + my $section ; + my @goal = split /\./, $usepath; + my $indent = "+"; + my $done; + while (){ + $done && do { print G; next }; + /^\s*\Q*** Targets ***\E\s*$/ && do{$section = 'match'}; + @goal && $section && /^\s*\Q${indent}\E\s*\Q$goal[0]\E/ && do { + $indent .= "+"; + shift @goal; + }; + (not @goal) && /^\s*host\s*=\s*DYNAMIC$/ && do { + print G "host = DYNAMIC/$md5\n"; + $done = 1; + next; + }; + print G; + } + close G; + rename "$cfgfile.new", $cfgfile; + close C; + my $body; + open SMOKE, $cfg->{General}{smokemail} or die "ERROR: can't read $cfg->{General}{smokemail}: $!\n"; + while (){ + s/<##PATH##>/$usepath/ig; + s/<##SECRET##>/$secret/ig; + s/<##URL##>/$cfg->{General}{cgiurl}/; + s/<##FROM##>/$cfg->{General}{contact}/; + s/<##OWNER##>/$cfg->{General}{owner}/; + s/<##TO##>/$email/; + $body .= $_; + } + close SMOKE; + + + my $mail; + print STDERR "Sending smoke-agent for $usepath to $email ... "; + sendmail $cfg->{General}{contact},$email,$body; + print STDERR "DONE\n"; + } + } + foreach my $prop ( keys %{$tree}) { + enable_dynamic $cfg, $tree->{$prop},"$path$prop.",$email if ref $tree->{$prop} eq 'HASH'; + } +}; + +sub get_tree($$){ + my $cfg = shift; + my $open = shift; + my $tree = $cfg->{Targets}; + for (@{$open}){ + $tree = $tree->{$_}; + } + return $tree; +} + +sub target_menu($$$$;$); +sub target_menu($$$$;$){ + my $tree = shift; + my $open = shift; + $open = [@$open]; # make a copy + my $path = shift; + my $filter = shift; + my $suffix = shift || ''; + my $print; + my $current = shift @{$open} || ""; + my @hashes; + foreach my $prop (sort {exists $tree->{$a}{_order} ? ($tree->{$a}{_order} <=> $tree->{$b}{_order}) : ($a cmp $b)} + grep { ref $tree->{$_} eq 'HASH' and not /^__/ } + keys %$tree) { + push @hashes, $prop; + } + return wantarray ? () : "" unless @hashes; + + $print .= qq{

\n" unless $filter; + if ($filter){ + if (wantarray()){ + return @matches; + } + else { + $print .= qq{\n"; + } + } + return $print; +}; + + +sub fill_template ($$;$){ + my $template = shift; + my $subst = shift; + my $data = shift; + if ($template){ + my $line = $/; + undef $/; + open I, $template or return undef; + $data = ; + close I; + $/ = $line; + } + foreach my $tag (keys %{$subst}) { + my $replace = $subst->{$tag} || ''; + $data =~ s/<##${tag}##>/$replace/g; + } + return $data; +} + +sub exp2seconds ($) { + my $x = shift; + $x =~/(\d+)s/ && return $1; + $x =~/(\d+)m/ && return $1*60; + $x =~/(\d+)h/ && return $1*60*60; + $x =~/(\d+)d/ && return $1*60*60*24; + $x =~/(\d+)w/ && return $1*60*60*24*7; + $x =~/(\d+)y/ && return $1*60*60*24*365; + return $x; +} + +sub calc_stddev { + my $rrd = shift; + my $id = shift; + my $pings = shift; + my @G = map {("DEF:pin${id}p${_}=${rrd}:ping${_}:AVERAGE","CDEF:p${id}p${_}=pin${id}p${_},UN,0,pin${id}p${_},IF")} 1..$pings; + push @G, "CDEF:pings${id}="."$pings,p${id}p1,UN,".join(",",map {"p${id}p$_,UN,+"} 2..$pings).",-"; + push @G, "CDEF:m${id}="."p${id}p1,".join(",",map {"p${id}p$_,+"} 2..$pings).",pings${id},/"; + push @G, "CDEF:sdev${id}=p${id}p1,m${id},-,DUP,*,".join(",",map {"p${id}p$_,m${id},-,DUP,*,+"} 2..$pings).",pings${id},/,SQRT"; + return @G; +} + +sub brighten_webcolor { + my $web = shift; + my @rgb = Smokeping::Colorspace::web_to_rgb($web); + my @hsl = Smokeping::Colorspace::rgb_to_hsl(@rgb); + $hsl[2] = (1 - $hsl[2]) * (2/3) + $hsl[2]; + @rgb = Smokeping::Colorspace::hsl_to_rgb(@hsl); + return Smokeping::Colorspace::rgb_to_web(@rgb); +} + +sub get_overview ($$$$){ + my $cfg = shift; + my $q = shift; + my $tree = shift; + my $open = shift; + + my $page =""; + + my $date = $cfg->{Presentation}{overview}{strftime} ? + POSIX::strftime($cfg->{Presentation}{overview}{strftime}, + localtime(time)) : scalar localtime(time); + + if ( $RRDs::VERSION >= 1.199908 ){ + $date =~ s|:|\\:|g; + } + foreach my $prop (sort {exists $tree->{$a}{_order} ? ($tree->{$a}{_order} <=> $tree->{$b}{_order}) : ($a cmp $b)} + grep { ref $tree->{$_} eq 'HASH' and not /^__/ } + keys %$tree) { + my @slaves; + + my $phys_tree = $tree->{$prop}; + my $phys_open = $open; + my $dir = ""; + if ($tree->{$prop}{__tree_link}){ + $phys_tree = $tree->{$prop}{__tree_link}; + $phys_open = [ @{$tree->{$prop}{__real_path}} ]; + pop @$phys_open; + } + + next unless $phys_tree->{host}; + next if $phys_tree->{hide} and $phys_tree->{hide} eq 'yes'; + + if (not $phys_tree->{nomasterpoll} or $phys_tree->{nomasterpoll} eq 'no'){ + @slaves = (""); + }; + + if ($phys_tree->{host} =~ m|^/|){ # multi host syntax + @slaves = split /\s+/, $phys_tree->{host}; + } + elsif ($phys_tree->{slaves}){ + push @slaves, split /\s+/,$phys_tree->{slaves}; + } + + next if 0 == @slaves; + + for (@$phys_open) { + $dir .= "/$_"; + mkdir $cfg->{General}{imgcache}.$dir, 0755 + unless -d $cfg->{General}{imgcache}.$dir; + die "ERROR: creating $cfg->{General}{imgcache}$dir: $!\n" + unless -d $cfg->{General}{imgcache}.$dir; + } + + my @G; #Graph 'script' + my $max = $cfg->{Presentation}{overview}{max_rtt} || "100000"; + my $probe = $probes->{$phys_tree->{probe}}; + my $pings = $probe->_pings($phys_tree); + my $i = 0; + my @colors = split /\s+/, $cfg->{Presentation}{multihost}{colors}; + my $ProbeUnit = $probe->ProbeUnit(); + my $ProbeDesc = $probe->ProbeDesc(); + for my $slave (@slaves){ + $i++; + my $rrd; + my $medc; + my $label; + if ($slave =~ m|^/|){ # multihost entry + $rrd = $cfg->{General}{datadir}.'/'.$slave.".rrd"; + $medc = shift @colors; + my @tree_path = split /\//,$slave; + shift @tree_path; + my ($host,$real_slave) = split /~/, $tree_path[-1]; #/ + $tree_path[-1]= $host; + my $tree = get_tree($cfg,\@tree_path); + # not all multihost entries must have the same number of pings + $probe = $probes->{$tree->{probe}}; + $pings = $probe->_pings($tree); + $label = $tree->{menu}; + + # if there are multiple probes ... lets say so ... + my $XProbeDesc = $probe->ProbeDesc(); + if (not $ProbeDesc or $ProbeDesc eq $XProbeDesc){ + $ProbeDesc = $XProbeDesc; + } + else { + $ProbeDesc = "various probes"; + } + my $XProbeUnit = $probe->ProbeUnit(); + if (not $ProbeUnit or $ProbeUnit eq $XProbeUnit){ + $ProbeUnit = $XProbeUnit; + } + else { + $ProbeUnit = "various units"; + } + + if ($real_slave){ + $label .= "<". $cfg->{Slaves}{$real_slave}{display_name}; + } + $label = sprintf("%-20s",$label); + push @colors, $medc; + } + else { + my $s = $slave ? "~".$slave : ""; + $rrd = $cfg->{General}{datadir}.$dir.'/'.$prop.$s.'.rrd'; + $medc = $slave ? $cfg->{Slaves}{$slave}{color} : ($cfg->{Presentation}{overview}{median_color} || shift @colors); + if ($#slaves > 0){ + $label = sprintf("%-25s","median RTT from ".($slave ? $cfg->{Slaves}{$slave}{display_name} : $cfg->{General}{display_name} || hostname)); + } + else { + $label = "med RTT" + } + }; + $label =~ s/:/\\:/g; + + my $sdc = $medc; + $sdc =~ s/^(......).*/${1}30/; + push @G, + "DEF:median$i=${rrd}:median:AVERAGE", + "DEF:loss$i=${rrd}:loss:AVERAGE", + "CDEF:ploss$i=loss$i,$pings,/,100,*", + "CDEF:dm$i=median$i,0,$max,LIMIT", + calc_stddev($rrd,$i,$pings), + "CDEF:dmlow$i=dm$i,sdev$i,2,/,-", + "CDEF:s2d$i=sdev$i", +# "CDEF:dm2=median,1.5,*,0,$max,LIMIT", +# "LINE1:dm2", # this is for kicking things down a bit + "AREA:dmlow$i", + "AREA:s2d${i}#${sdc}::STACK", + "LINE1:dm$i#${medc}:${label}", + "VDEF:avmed$i=median$i,AVERAGE", + "VDEF:avsd$i=sdev$i,AVERAGE", + "CDEF:msr$i=median$i,POP,avmed$i,avsd$i,/", + "VDEF:avmsr$i=msr$i,AVERAGE", + "GPRINT:avmed$i:%5.1lf %ss av md ", + "GPRINT:ploss$i:AVERAGE:%5.1lf %% av ls", + "GPRINT:avsd$i:%5.1lf %ss av sd", + "GPRINT:avmsr$i:%5.1lf %s am/as\\l"; + + } + my ($graphret,$xs,$ys) = RRDs::graph + ($cfg->{General}{imgcache}.$dir."/${prop}_mini.png", + # '--lazy', + '--start','-'.exp2seconds($cfg->{Presentation}{overview}{range}), + '--title',$cfg->{Presentation}{htmltitle} ne 'yes' ? $phys_tree->{title} : '', + '--height',$cfg->{Presentation}{overview}{height}, + '--width',$cfg->{Presentation}{overview}{width}, + '--vertical-label', $ProbeUnit, + '--imgformat','PNG', + Smokeping::Graphs::get_colors($cfg), + '--alt-autoscale-max', + '--alt-y-grid', + '--rigid', + '--lower-limit','0', + @G, + "COMMENT:$ProbeDesc", + "COMMENT:$date\\j"); + my $ERROR = RRDs::error(); + $page .= "
"; + $page .= "

".$phys_tree->{title}."

" + if $cfg->{Presentation}{htmltitle} eq 'yes'; + $page .= "
"; + if (defined $ERROR) { + $page .= "ERROR: $ERROR
".join("
", map {"'$_'"} @G); + } else { + $page.="". + "\"\"{General}{imgurl}.$dir."/${prop}_mini.png\">"; + } + $page .="
\n"; + } + return $page; +} + +sub findmax ($$) { + my $cfg = shift; + my $rrd = shift; +# my $pings = "ping".int($cfg->{Database}{pings}/1.1); + my %maxmedian; + my @maxmedian; + for (@{$cfg->{Presentation}{detail}{_table}}) { + my ($desc,$start) = @{$_}; + $start = exp2seconds($start); + my ($graphret,$xs,$ys) = RRDs::graph + ("dummy", '--start', -$start, + '--width',$cfg->{Presentation}{overview}{width}, + '--end','-'.int($start / $cfg->{Presentation}{detail}{width}), + "DEF:maxping=${rrd}:median:AVERAGE", + 'PRINT:maxping:MAX:%le' ); + my $ERROR = RRDs::error(); + do_log $ERROR if $ERROR; + my $val = $graphret->[0]; + $val = 0 if $val =~ /nan/i; + $maxmedian{$start} = $val; + push @maxmedian, $val; + } + my $med = (sort @maxmedian)[int(($#maxmedian) / 2 )]; + my $max = 0.000001; + foreach my $x ( keys %maxmedian ){ + if ( not defined $cfg->{Presentation}{detail}{unison_tolerance} or ( + $maxmedian{$x} <= $cfg->{Presentation}{detail}{unison_tolerance} * $med + and $maxmedian{$x} >= $med / $cfg->{Presentation}{detail}{unison_tolerance}) ){ + $max = $maxmedian{$x} unless $maxmedian{$x} < $max; + $maxmedian{$x} = undef; + }; + } + foreach my $x ( keys %maxmedian ){ + if (defined $maxmedian{$x}) { + $maxmedian{$x} *= 1.2; + } else { + $maxmedian{$x} = $max * 1.2; + } + + $maxmedian{$x} = $cfg->{Presentation}{detail}{max_rtt} + if $cfg->{Presentation}{detail}{max_rtt} + and $maxmedian{$x} > $cfg->{Presentation}{detail}{max_rtt} + }; + return \%maxmedian; +} + +sub smokecol ($) { + my $count = shift; + return [] unless $count > 2; + my $half = $count/2; + my @items; + my $itop=$count; + my $ibot=1; + for (; $itop > $ibot; $itop--,$ibot++){ + my $color = int(190/$half * ($half-$ibot))+50; + push @items, "CDEF:smoke${ibot}=cp${ibot},UN,UNKN,cp${itop},cp${ibot},-,IF"; + push @items, "AREA:cp${ibot}"; + push @items, "STACK:smoke${ibot}#".(sprintf("%02x",$color) x 3); + }; + return \@items; +} + +sub parse_datetime($){ + my $in = shift; + for ($in){ + $in =~ s/$xssBadRx/_/g; + /^(\d+)$/ && do { my $value = $1; $value = time if $value > 2**32; return $value}; + /^\s*(\d{4})-(\d{1,2})-(\d{1,2})(?:\s+(\d{1,2}):(\d{2})(?::(\d{2}))?)?\s*$/ && + return POSIX::mktime($6||0,$5||0,$4||0,$3,$2-1,$1-1900,0,0,-1); + /^now$/ && return time; + /([ -:a-z0-9]+)/ && return $1; + }; + return time; +} + +sub get_detail ($$$$;$){ + # when drawing the detail page there are three modes for doing it + + # a) 's' classic with several static graphs on the page + # b) 'n' navigator mode with one graph. below the graph one can specify the end time + # and the length of the graph. + # c) 'c' chart mode, one graph with a link to it's full page + # d) 'a' ajax mode, generate image based on given url and dump in on stdout + # + my $cfg = shift; + my $q = shift; + my $tree = shift; + my $open = shift; + my $mode = shift || $q->param('displaymode') || 's'; + $mode =~ s/$xssBadRx/_/g; + my $phys_tree = $tree; + my $phys_open = $open; + if ($tree->{__tree_link}){ + $phys_tree=$tree->{__tree_link}; + $phys_open = $tree->{__real_path}; + } + + if ($phys_tree->{host} and $phys_tree->{host} =~ m|^/|){ + return Smokeping::Graphs::get_multi_detail($cfg,$q,$tree,$open,$mode); + } + + # don't distinguish anymore ... tree is now phys_tree + $tree = $phys_tree; + + my @slaves; + if (not $tree->{nomasterpoll} or $tree->{nomasterpoll} eq 'no' or $mode eq 'a' or $mode eq 'n'){ + @slaves = (""); + }; + + if ($tree->{slaves} and $mode eq 's'){ + push @slaves, split /\s+/,$tree->{slaves}; + }; + + return "" if not defined $tree->{host} or 0 == @slaves; + + my $file = $mode eq 'c' ? (split(/~/, $open->[-1]))[0] : $open->[-1]; + my @dirs = @{$phys_open}; + pop @dirs; + my $dir = ""; + + return "
ERROR: ".(join ".", @dirs)." has no probe defined
" + unless $tree->{probe}; + + return "
ERROR: ".(join ".", @dirs)." $tree->{probe} is not known
" + unless $cfg->{__probes}{$tree->{probe}}; + + my $probe = $cfg->{__probes}{$tree->{probe}}; + my $ProbeDesc = $probe->ProbeDesc(); + my $ProbeUnit = $probe->ProbeUnit(); + my $pings = $probe->_pings($tree); + my $step = $probe->step(); + my $page; + + return "
ERROR: unknown displaymode $mode
" + unless $mode =~ /^[snca]$/; + + for (@dirs) { + $dir .= "/$_"; + mkdir $cfg->{General}{imgcache}.$dir, 0755 + unless -d $cfg->{General}{imgcache}.$dir; + die "ERROR: creating $cfg->{General}{imgcache}$dir: $!\n" + unless -d $cfg->{General}{imgcache}.$dir; + + } + my $base_rrd = $cfg->{General}{datadir}.$dir."/${file}"; + + my $imgbase; + my $imghref; + my $max = {}; + my @tasks; + my %lastheight; + + if ($mode eq 's'){ + # in nav mode there is only one graph, so the height calculation + # is not necessary. + $imgbase = $cfg->{General}{imgcache}."/".(join "/", @dirs)."/${file}"; + $imghref = $cfg->{General}{imgurl}."/".(join "/", @dirs)."/${file}"; + @tasks = @{$cfg->{Presentation}{detail}{_table}}; + for my $slave (@slaves){ + my $s = $slave ? "~$slave" : ""; + if (open (HG,"<${imgbase}.maxheight$s")){ + while (){ + chomp; + my @l = split / /; + $lastheight{$s}{$l[0]} = $l[1]; + } + close HG; + } + $max->{$s} = findmax $cfg, $base_rrd.$s.".rrd"; + if (open (HG,">${imgbase}.maxheight$s")){ + foreach my $size (keys %{$max->{$s}}){ + print HG "$s $max->{$s}{$size}\n"; + } + close HG; + } + } + } + elsif ($mode eq 'n' or $mode eq 'a') { + my $slave = (split(/~/, $open->[-1]))[1]; + my $name = $slave ? " as seen from ". $cfg->{Slaves}{$slave}{display_name} : ""; + mkdir $cfg->{General}{imgcache}."/__navcache",0755 unless -d $cfg->{General}{imgcache}."/__navcache"; + # remove old images after one hour + my $pattern = $cfg->{General}{imgcache}."/__navcache/*.png"; + for (glob $pattern){ + unlink $_ if time - (stat $_)[9] > 3600; + } + if ($mode eq 'n') { + $imgbase =$cfg->{General}{imgcache}."/__navcache/".time()."$$"; + $imghref =$cfg->{General}{imgurl}."/__navcache/".time()."$$"; + } else { + my $serial = int(rand(2000)); + $imgbase =$cfg->{General}{imgcache}."/__navcache/".$serial; + $imghref =$cfg->{General}{imgurl}."/__navcache/".$serial; + } + + $q->param('epoch_start',parse_datetime($q->param('start'))); + $q->param('epoch_end',parse_datetime($q->param('end'))); + my $title = $q->param('title') || ("Navigator Graph".$name); + @tasks = ([$title, parse_datetime($q->param('start')),parse_datetime($q->param('end'))]); + my ($graphret,$xs,$ys) = RRDs::graph + ("dummy", + '--start', $tasks[0][1], + '--end',$tasks[0][2], + "DEF:maxping=${base_rrd}.rrd:median:AVERAGE", + 'PRINT:maxping:MAX:%le' ); + my $ERROR = RRDs::error(); + return "
RRDtool did not understand your input: $ERROR.
" if $ERROR; + my $val = $graphret->[0]; + $val = 1 if $val =~ /nan/i; + $max->{''} = { $tasks[0][1] => $val * 1.5 }; + } else { + # chart mode + mkdir $cfg->{General}{imgcache}."/__chartscache",0755 unless -d $cfg->{General}{imgcache}."/__chartscache"; + # remove old images after one hour + my $pattern = $cfg->{General}{imgcache}."/__chartscache/*.png"; + for (glob $pattern){ + unlink $_ if time - (stat $_)[9] > 3600; + } + my $desc = join "/",@{$open}; + @tasks = ([$desc , 3600]); + $imgbase = $cfg->{General}{imgcache}."/__chartscache/".(join ".", @dirs).".${file}"; + $imghref = $cfg->{General}{imgurl}."/__chartscache/".(join ".", @dirs).".${file}"; + + my ($graphret,$xs,$ys) = RRDs::graph + ("dummy", + '--start', time()-3600, + '--end', time(), + "DEF:maxping=${base_rrd}.rrd:median:AVERAGE", + 'PRINT:maxping:MAX:%le' ); + my $ERROR = RRDs::error(); + return "
RRDtool did not understand your input: $ERROR.
" if $ERROR; + my $val = $graphret->[0]; + $val = 1 if $val =~ /nan/i; + $max->{''} = { $tasks[0][1] => $val * 1.5 }; + } + + my $smoke = $pings >= 3 + ? smokecol $pings : + [ 'COMMENT:(Not enough pings to draw any smoke.)\s', 'COMMENT:\s' ]; + # one \s doesn't seem to be enough + my @upargs; + my @upsmoke; + + my %lc; + my %lcback; + if ( defined $cfg->{Presentation}{detail}{loss_colors}{_table} ) { + for (@{$cfg->{Presentation}{detail}{loss_colors}{_table}}) { + my ($num,$col,$txt) = @{$_}; + $lc{$num} = [ $txt, "#".$col ]; + } + } else { + + my $p = $pings; + # Return either approximate percentage or impose a minimum value + my $per01 = max(int(0.01 * $p), 1); + my $per05 = max(int(0.05 * $p), 2); + my $per10 = max(int(0.10 * $p), 3); + my $per25 = max(int(0.25 * $p), 4); + my $per50 = max(int(0.50 * $p), 5); + + %lc = (0 => ['0', '#26ff00'], + $per01 => [display_range(1 , $per01), '#00b8ff'], + $per05 => [display_range($per01 + 1, $per05), '#0059ff'], + $per10 => [display_range($per05 + 1, $per10), '#7e00ff'], + $per25 => [display_range($per10 + 1, $per25), '#ff00ff'], + $per50 => [display_range($per25 + 1, $per50), '#ff5500'], + $p-1 => [display_range($per50 + 1, ($p-1)), '#ff0000'], + $p => ["$p/$p", '#a00000'] + ); + }; + # determine a more 'pastel' version of the ping colours; this is + # used for the optional loss background colouring + foreach my $key (keys %lc) { + if ($key == 0) { + $lcback{$key} = ""; + next; + } + my $web = $lc{$key}[1]; + my @rgb = Smokeping::Colorspace::web_to_rgb($web); + my @hsl = Smokeping::Colorspace::rgb_to_hsl(@rgb); + $hsl[2] = (1 - $hsl[2]) * (2/3) + $hsl[2]; + @rgb = Smokeping::Colorspace::hsl_to_rgb(@hsl); + $web = Smokeping::Colorspace::rgb_to_web(@rgb); + $lcback{$key} = $web; + } + + my %upt; + if ( defined $cfg->{Presentation}{detail}{uptime_colors}{_table} ) { + for (@{$cfg->{Presentation}{detail}{uptime_colors}{_table}}) { + my ($num,$col,$txt) = @{$_}; + $upt{$num} = [ $txt, "#".$col]; + } + } else { + %upt = (3600 => ['<1h', '#FFD3D3'], + 2*3600 => ['<2h', '#FFE4C7'], + 6*3600 => ['<6h', '#FFF9BA'], + 12*3600 => ['<12h','#F3FFC0'], + 24*3600 => ['<1d', '#E1FFCC'], + 7*24*3600 => ['<1w', '#BBFFCB'], + 30*24*3600 => ['<1m', '#BAFFF5'], + '1e100' => ['>1m', '#DAECFF'] + ); + } + + my $BS = ''; + if ( $RRDs::VERSION >= 1.199908 ){ + $ProbeDesc =~ s|:|\\:|g; + $BS = '\\'; + } + + for (@tasks) { + my ($desc,$start,$end) = @{$_}; + my %xs; + my %ys; + my $sigtime = ($end and $end =~ /^\d+$/) ? $end : time; + my $date = $cfg->{Presentation}{detail}{strftime} ? + POSIX::strftime($cfg->{Presentation}{detail}{strftime}, localtime($sigtime)) : scalar localtime($sigtime); + if ( $RRDs::VERSION >= 1.199908 ){ + $date =~ s|:|\\:|g; + } + $end ||= 'last'; + $start = exp2seconds($start) if $mode =~ /[s]/; + + my $startstr = $start =~ /^\d+$/ ? POSIX::strftime("%Y-%m-%d %H:%M",localtime($mode eq 'n' ? $start : time-$start)) : $start; + my $endstr = $end =~ /^\d+$/ ? POSIX::strftime("%Y-%m-%d %H:%M",localtime($mode eq 'n' ? $end : time)) : $end; + + my $realstart = ( $mode =~ /[sc]/ ? '-'.$start : $start); + + for my $slave (@slaves){ + my $s = $slave ? "~$slave" : ""; + my $swidth = $max->{$s}{$start} / $cfg->{Presentation}{detail}{height}; + my $rrd = $base_rrd.$s.".rrd"; + my $stddev = Smokeping::RRDhelpers::get_stddev($rrd,'median','AVERAGE',$realstart,$sigtime) || 0; + my @median = ("DEF:median=${rrd}:median:AVERAGE", + "CDEF:ploss=loss,$pings,/,100,*", + "VDEF:avmed=median,AVERAGE", + "CDEF:mesd=median,POP,avmed,$stddev,/", + 'GPRINT:avmed:median rtt\: %.1lf %ss avg', + 'GPRINT:median:MAX:%.1lf %ss max', + 'GPRINT:median:MIN:%.1lf %ss min', + 'GPRINT:median:LAST:%.1lf %ss now', + sprintf('COMMENT:%.1f ms sd',$stddev*1000.0), + 'GPRINT:mesd:AVERAGE:%.1lf %s am/s\l', + "LINE1:median#202020" + ); + push @median, ( "GPRINT:ploss:AVERAGE:packet loss\\: %.2lf %% avg", + "GPRINT:ploss:MAX:%.2lf %% max", + "GPRINT:ploss:MIN:%.2lf %% min", + 'GPRINT:ploss:LAST:%.2lf %% now\l', + 'COMMENT:loss color\:' + ); + my @lossargs = (); + my @losssmoke = (); + my $last = -1; + foreach my $loss (sort {$a <=> $b} keys %lc){ + next if $loss > $pings; + my $lvar = $loss; $lvar =~ s/\./d/g ; + push @median, + ( + "CDEF:me$lvar=loss,$last,GT,loss,$loss,LE,*,1,UNKN,IF,median,*", + "CDEF:meL$lvar=me$lvar,$swidth,-", + "CDEF:meH$lvar=me$lvar,0,*,$swidth,2,*,+", + "AREA:meL$lvar", + "STACK:meH$lvar$lc{$loss}[1]:$lc{$loss}[0]" + # "LINE2:me$lvar$lc{$loss}[1]:$lc{$loss}[0]" + ); + if ($cfg->{Presentation}{detail}{loss_background} and $cfg->{Presentation}{detail}{loss_background} eq 'yes') { + push @lossargs, + ( + "CDEF:lossbg$lvar=loss,$last,GT,loss,$loss,LE,*,INF,UNKN,IF", + "AREA:lossbg$lvar$lcback{$loss}", + ); + push @losssmoke, + ( + "CDEF:lossbgs$lvar=loss,$last,GT,loss,$loss,LE,*,cp2,UNKN,IF", + "AREA:lossbgs$lvar$lcback{$loss}", + ); + } + $last = $loss; + } + + # if we have uptime draw a colorful background or the graph showing the uptime + + my $cdir=dyndir($cfg)."/".(join "/", @dirs)."/"; + if ((not defined $cfg->{Presentation}{detail}{loss_background} or $cfg->{Presentation}{detail}{loss_background} ne 'yes') && + (-f "$cdir/${file}.adr")) { + @upsmoke = (); + @upargs = ("COMMENT:Link Up${BS}: ", + "DEF:uptime=${base_rrd}.rrd:uptime:AVERAGE", + "CDEF:duptime=uptime,86400,/", + 'GPRINT:duptime:LAST: %0.1lf days ('); + my $lastup = 0; + foreach my $uptime (sort {$a <=> $b} keys %upt){ + push @upargs, + ( + "CDEF:up$uptime=uptime,$lastup,GE,uptime,$uptime,LE,*,INF,UNKN,IF", + "AREA:up$uptime$upt{$uptime}[1]:$upt{$uptime}[0]" + ); + push @upsmoke, + ( + "CDEF:ups$uptime=uptime,$lastup,GE,uptime,$uptime,LE,*,cp2,UNKN,IF", + "AREA:ups$uptime$upt{$uptime}[1]" + ); + $lastup=$uptime; + } + + push @upargs, 'COMMENT:)\l'; + # map {print "$_
"} @upargs; + }; + my @log = (); + push @log, "--logarithmic" if $cfg->{Presentation}{detail}{logarithmic} and + $cfg->{Presentation}{detail}{logarithmic} eq 'yes'; + + my @lazy =(); + @lazy = ('--lazy') if $mode eq 's' and $lastheight{$s} and $lastheight{$s}{$start} and $lastheight{$s}{$start} == $max->{$s}{$start}; + my $timer_start = time(); + my $title = ""; + if ($cfg->{Presentation}{htmltitle} ne 'yes') { + $title = "$desc from " . ($s ? $cfg->{Slaves}{$slave}{display_name}: $cfg->{General}{display_name} || hostname) . " to $phys_tree->{title}"; + } + my @task = + ("${imgbase}${s}_${end}_${start}.png", + @lazy, + '--start',$realstart, + ($end ne 'last' ? ('--end',$end) : ()), + '--height',$cfg->{Presentation}{detail}{height}, + '--width',$cfg->{Presentation}{detail}{width}, + '--title',$title, + '--rigid', + '--upper-limit', $max->{$s}{$start}, + @log, + '--lower-limit',(@log ? ($max->{$s}{$start} > 0.01) ? '0.001' : '0.0001' : '0'), + '--vertical-label',$ProbeUnit, + '--imgformat','PNG', + Smokeping::Graphs::get_colors($cfg), + (map {"DEF:ping${_}=${rrd}:ping${_}:AVERAGE"} 1..$pings), + (map {"CDEF:cp${_}=ping${_},$max->{$s}{$start},LT,ping${_},INF,IF"} 1..$pings), + ("DEF:loss=${rrd}:loss:AVERAGE"), + @upargs,# draw the uptime bg color + @lossargs, # draw the loss bg color + @$smoke, + @upsmoke, # draw the rest of the uptime bg color + @losssmoke, # draw the rest of the loss bg color + @median,'COMMENT: \l', + # Gray background for times when no data was collected, so they can + # be distinguished from network being down. + ( $cfg->{Presentation}{detail}{nodata_color} ? ( + 'CDEF:nodata=loss,UN,INF,UNKN,IF', + "AREA:nodata#$cfg->{Presentation}{detail}{nodata_color}" ): + ()), + 'HRULE:0#000000', + "COMMENT:probe${BS}: $pings $ProbeDesc every ${step}s", + "COMMENT:$date\\j"); +# do_log ("***** begin task *****
"); +# do_log (@task); +# do_log ("***** end task *****
"); + + my $graphret; + ($graphret,$xs{$s},$ys{$s}) = RRDs::graph @task; + # die "
INFO:".join("
",@task)."
"; + my $ERROR = RRDs::error(); + if ($ERROR) { + return "
ERROR: $ERROR
".join("
",@task)."
"; + }; + } + + if ($mode eq 'a'){ # ajax mode + open my $img, "${imgbase}_${end}_${start}.png" or die "${imgbase}_${end}_${start}.png: $!"; + binmode $img; + print "Content-Type: image/png\n"; + my $data; + read($img,$data,(stat($img))[7]); + close $img; + print "Content-Length: ".length($data)."\n\n"; + print $data; + unlink "${imgbase}_${end}_${start}.png"; + return undef; + } + elsif ($mode eq 'n'){ # navigator mode + $page .= "
"; + if ($cfg->{Presentation}{htmltitle} eq 'yes') { + # TODO we generate this above to, maybe share code or store variable ? + $page .= "

$desc

"; + } + $page .= "
"; + $page .= qq|| ; + $page .= $q->start_form(-method=>'POST', -id=>'range_form', -action=>$cfg->{General}{cgiurl}) + . "

Time range: " + . $q->hidden(-name=>'epoch_start',-id=>'epoch_start') + . $q->hidden(-name=>'hierarchy',-id=>'hierarchy') + . $q->hidden(-name=>'epoch_end',-id=>'epoch_end') + . $q->hidden(-name=>'target',-id=>'target' ) + . $q->hidden(-name=>'displaymode',-default=>$mode ) + . $q->textfield(-name=>'start',-default=>$startstr) + . "  to  ".$q->textfield(-name=>'end',-default=>$endstr) + . " " + . $q->submit(-name=>'Generate!') + . "

" + . $q->end_form(); + $page .= "
\n"; + } elsif ($mode eq 's') { # classic mode + $startstr =~ s/\s/%20/g; + $endstr =~ s/\s/%20/g; + my $t = $q->param('target'); + $t =~ s/$xssBadRx/_/g; + for my $slave (@slaves){ + my $s = $slave ? "~$slave" : ""; + $page .= "
"; +# $page .= (time-$timer_start)."
"; +# $page .= join " ",map {"'$_'"} @task; + if ($cfg->{Presentation}{htmltitle} eq 'yes') { + # TODO we generate this above to, maybe share code or store variable ? + my $title = "$desc from " . ($s ? $cfg->{Slaves}{$slave}{display_name}: $cfg->{General}{display_name} || hostname); + $page .= "

$title

"; + } + $page .= "
"; + $page .= ( qq{' + . qq{}."" ); #" + $page .= "
\n"; + } + } else { # chart mode + $page .= qq{
}; + my $href= (split /~/, (join ".", @$open))[0]; #/ # the link is 'slave free' + $page .= ( qq{} + . qq{}."" ); #" + $page .= "
"; + + } + + } + return $page; +} + +sub get_charts ($$$){ + my $cfg = shift; + my $q = shift; + my $open = shift; + my $cache = $cfg->{__sortercache}; + + my $page = "

$cfg->{Presentation}{charts}{title}

"; + return $page."

Waiting for initial data ...

" unless $cache; + + my %charts; + for my $chart ( keys %{$cfg->{Presentation}{charts}} ) { + next unless ref $cfg->{Presentation}{charts}{$chart} eq 'HASH'; + $charts{$chart} = $cfg->{Presentation}{charts}{$chart}{__obj}->SortTree($cache->{$chart}); + } + if (not defined $open->[1]){ + for my $chart ( keys %charts ){ + $page .= "
"; + $page .= "

$cfg->{Presentation}{charts}{$chart}{title}

\n"; + if (not defined $charts{$chart}[0]){ + $page .= "

No targets returned by the sorter.

" + } else { + my $tree = $cfg->{Targets}; + my $chartentry = $charts{$chart}[0]; + for (@{$chartentry->{open}}) { + my ($host,$slave) = split(/~/, $_); + die "ERROR: Section '$host' does not exist.\n" + unless exists $tree->{$host}; + last unless ref $tree->{$host} eq 'HASH'; + $tree = $tree->{$host}; + } + $page .= get_detail($cfg,$q,$tree,$chartentry->{open},'c'); + } + $page .= "
\n"; + } + } else { + my $chart = $open->[1]; + $page = "

$cfg->{Presentation}{charts}{$chart}{title}

\n"; + if (not defined $charts{$chart}[0]){ + $page .= "

No targets returned by the sorter.

" + } else { + my $rank =1; + for my $chartentry (@{$charts{$chart}}){ + my $tree = $cfg->{Targets}; + for (@{$chartentry->{open}}) { + my ($host,$slave) = split(/~/, $_); + die "ERROR: Section '$_' does not exist.\n" + unless exists $tree->{$host}; + last unless ref $tree->{$host} eq 'HASH'; + $tree = $tree->{$host}; + } + $page .= "
"; + $page .= "

$rank."; + $page .= " ".sprintf($cfg->{Presentation}{charts}{$chart}{format},$chartentry->{value}) + if ($cfg->{Presentation}{charts}{$chart}{format}); + $page .= "

"; + $rank++; + $page .= get_detail($cfg,$q,$tree,$chartentry->{open},'c'); + $page .= "
\n"; + } + } + } + return $page; +} + +sub load_sortercache($){ + my $cfg = shift; + my %cache; + my $found; + for (glob "$cfg->{General}{datadir}/__sortercache/data*.storable"){ + # kill old caches ... + if ((time - (stat "$_")[9]) > $cfg->{Database}{step}*2){ + unlink $_; + next; + } + my $data = Storable::retrieve("$_"); + for my $chart (keys %$data){ + PATH: + for my $path (keys %{$data->{$chart}}){ + warn "Warning: Duplicate entry $chart/$path in sortercache\n" if defined $cache{$chart}{$path}; + my $root = $cfg->{Targets}; + for my $element (split /\//, $path){ + if (ref $root eq 'HASH' and defined $root->{$element}){ + $root = $root->{$element} + } + else { + warn "Warning: Dropping $chart/$path from sortercache\n"; + next PATH; + } + } + $cache{$chart}{$path} = $data->{$chart}{$path} + } + } + $found = 1; + } + return ( $found ? \%cache : undef ) +} + +sub hierarchy_switcher($$){ + my $q = shift; + my $cfg = shift; + my $print =$q->start_form(-name=>'hswitch',-method=>'get',-action=>cgiurl($q, $cfg)); + if ($cfg->{Presentation}{hierarchies}){ + $print .= "
"; + $print .= ""; + $print .= "
"; + $print .= $q->popup_menu(-name=>'hierarchy', + -onChange=>'hswitch.submit()', + -id=>'hierarchy', + -values=>[0, sort map {ref $cfg->{Presentation}{hierarchies}{$_} eq 'HASH' + ? $_ : () } keys %{$cfg->{Presentation}{hierarchies}}], + -labels=>{0=>'Default Hierarchy', + map {ref $cfg->{Presentation}{hierarchies}{$_} eq 'HASH' + ? ($_ => $cfg->{Presentation}{hierarchies}{$_}{title} ) + : () } keys %{$cfg->{Presentation}{hierarchies}} + } + ); + $print .= "
"; + } + $print .= "
"; + $print .= ""; + $print .= "
"; + $print .= $q->textfield (-name=>'filter', + -id=>'filter', + -placeholder=>'Filter menu...', + -onChange=>'hswitch.submit()', + -size=>15, + ); + $print .= '
'.$q->end_form(); + return $print; +} + +sub display_webpage($$){ + my $cfg = shift; + my $q = shift; + my $targ = ''; + my $t = $q->param('target'); + if ( $t and $t !~ /\.\./ and $t =~ /(\S+)/){ + $targ = $1; + $targ =~ s/$xssBadRx/_/g; + } + my ($path,$slave) = split(/~/,$targ); + if ($slave and $slave =~ /(\S+)/){ + die "ERROR: slave '$slave' is not defined in the '*** Slaves ***' section!\n" + unless defined $cfg->{Slaves}{$slave}; + $slave = $1; + } + my $hierarchy = $q->param('hierarchy'); + $hierarchy =~ s/$xssBadRx/_/g; + die "ERROR: unknown hierarchy $hierarchy\n" + if $hierarchy and not $cfg->{Presentation}{hierarchies}{$hierarchy}; + my $open = [ (split /\./,$path||'') ]; + my $open_orig = [@$open]; + $open_orig->[-1] .= '~'.$slave if $slave; + + my $filter; + if (($cfg->{Presentation}{literalsearch} || 'no') eq 'yes') { + $filter = $q->param('filter'); + } else { + ($filter) = ($q->param('filter') and $q->param('filter') =~ m{([- _0-9a-zA-Z\+\*\(\)\|\^\[\]\.\$]+)}); + } + + my $tree = $cfg->{Targets}; + if ($hierarchy){ + $tree = $cfg->{__hierarchies}{$hierarchy}; + }; + my $menu_root = $tree; + my $targets = $cfg->{Targets}; + my $step = $cfg->{__probes}{$targets->{probe}}->step(); + # lets see if the charts are opened + my $charts = 0; + $charts = 1 if defined $cfg->{Presentation}{charts} and $open->[0] and $open->[0] eq '_charts'; + if ($charts and ( not defined $cfg->{__sortercache} + or $cfg->{__sortercachekeeptime} < time )){ + # die "ERROR: Chart $open->[1] does not exit.\n" + # unless $cfg->{Presentation}{charts}{$open->[1]}; + $cfg->{__sortercache} = load_sortercache $cfg; + $cfg->{__sortercachekeeptime} = time + 60; + }; + if (not $charts){ + for (@$open) { + die "ERROR: Section '$_' does not exist (display webpage)." # .(join "", map {"$_=$ENV{$_}"} keys %ENV)."\n" + unless exists $tree->{$_}; + last unless ref $tree->{$_} eq 'HASH'; + $tree = $tree->{$_}; + } + } + gen_imgs($cfg); # create logos in imgcache + my $readversion = "?"; + $VERSION =~ /(\d+)\.(\d{3})(\d{3})/ and $readversion = sprintf("%d.%d.%d",$1,$2,$3); + my $menu = $targets; + + + if (defined $cfg->{Presentation}{charts} and not $hierarchy){ + my $order = 1; + $menu_root = { %{$menu_root}, + _charts => { + _order => -99, + menu => $cfg->{Presentation}{charts}{menu}, + map { $_ => { menu => $cfg->{Presentation}{charts}{$_}{menu}, _order => $order++ } } + sort + grep { ref $cfg->{Presentation}{charts}{$_} eq 'HASH' } keys %{$cfg->{Presentation}{charts}} + } + }; + } + + my $hierarchy_arg = ''; + if ($hierarchy){ + $hierarchy_arg = 'hierarchy='.uri_escape($hierarchy).';'; + + }; + my $filter_arg =''; + if ($filter){ + $filter_arg = 'filter='.uri_escape($filter).';'; + + }; + # if we are in a hierarchy, recover the original path + + my $display_tree = $tree->{__tree_link} ? $tree->{__tree_link} : $tree; + + my $authuser = $ENV{REMOTE_USER} || 'Guest'; + my $getdetailoutput = get_detail( $cfg,$q,$tree,$open_orig ); + return if not defined $getdetailoutput; + my $page = fill_template + ($cfg->{Presentation}{template}, + { + menu => hierarchy_switcher($q,$cfg). + target_menu( $menu_root, + [@$open], #copy this because it gets changed + cgiurl($q, $cfg) ."?${hierarchy_arg}${filter_arg}target=", + $filter + ), + title => $charts ? "" : $display_tree->{title}, + remark => $charts ? "" : ($display_tree->{remark} || ''), + overview => $charts ? get_charts($cfg,$q,$open) : get_overview( $cfg,$q,$tree,$open), + body => $charts ? "" : $getdetailoutput, + target_ip => $charts ? "" : ($display_tree->{host} || ''), + owner => $cfg->{General}{owner}, + contact => $cfg->{General}{contact}, + + author => 'Tobi Oetiker and Niko Tyni', + smokeping => 'SmokePing-'.$readversion.'', + + step => $step, + rrdlogo => 'RRDtool', + smokelogo => 'Smokeping', + authuser => $authuser, + } + ); + my $expi = $cfg->{Database}{step} > 120 ? $cfg->{Database}{step} : 120; + print $q->header(-type=>'text/html', + -expires=>'+'.$expi.'s', + -charset=> ( $cfg->{Presentation}{charset} || 'utf-8'), + -Content_length => length($page), + ); + print $page || "ERROR: Reading page template".$cfg->{Presentation}{template}.""; + +} + +# fetch all data. +sub run_probes($$) { + my $probes = shift; + my $justthisprobe = shift; + if (defined $justthisprobe) { + $probes->{$justthisprobe}->ping(); + } else { + foreach my $probe (keys %{$probes}) { + $probes->{$probe}->ping(); + } + } +} + +# report probe status +sub report_probes($$) { + my $probes = shift; + my $justthisprobe = shift; + if (defined $justthisprobe) { + $probes->{$justthisprobe}->report(); + } else { + foreach my $probe (keys %{$probes}){ + $probes->{$probe}->report(); + } + } +} + +sub load_sorters($){ + my $subcfg = shift; + foreach my $key ( keys %{$subcfg} ) { + my $x = $subcfg->{$key}; + next unless ref $x eq 'HASH'; + $x->{sorter} =~ /(\S+)\((.+)\)/; + my $sorter = $1; + my $arg = $2; + die "ERROR: sorter $sorter: all sorters start with a capital letter\n" + unless $sorter =~ /^[A-Z]/; + eval 'require Smokeping::sorters::'.$sorter; + die "Sorter '$sorter' could not be loaded: $@\n" if $@; + $x->{__obj} = eval "Smokeping::sorters::$sorter->new($arg)"; + die "ERROR: sorter $sorter: instantiation with Smokeping::sorters::$sorter->new($arg): $@\n" + if $@; + } +} + + + +sub update_sortercache($$$$$){ + my $cfg = shift; + return unless $cfg->{Presentation}{charts}; + my $cache = shift; + my $path = shift; + my $base = $cfg->{General}{datadir}; + $path =~ s/^$base\/?//; + my @updates = map {/U/ ? undef : 0.0+$_ } split /:/, shift; + my $alert = shift; + my %info; + $info{uptime} = shift @updates; + $info{loss} = shift @updates; + $info{median} = shift @updates; + $info{alert} = $alert; + $info{pings} = \@updates; + foreach my $chart ( keys %{$cfg->{Presentation}{charts}} ) { + next unless ref $cfg->{Presentation}{charts}{$chart} eq 'HASH'; + $cache->{$chart}{$path} = $cfg->{Presentation}{charts}{$chart}{__obj}->CalcValue(\%info); + } +} + +sub save_sortercache($$$){ + my $cfg = shift; + my $cache = shift; + my $probe = shift; + return unless $cfg->{Presentation}{charts}; + my $dir = $cfg->{General}{datadir}."/__sortercache"; + my $ext = ''; + $ext .= $probe if $probe; + $ext .= join "",@{$opt{filter}} if @{$opt{filter}}; + $ext =~ s/[^-_=0-9a-z]/_/gi; + $ext = ".$ext" if $ext; + mkdir $dir,0755 unless -d $dir; + Storable::store ($cache, "$dir/new$ext"); + rename "$dir/new$ext","$dir/data$ext.storable" +} + +sub rfc2822timedate($) { + my $time = shift; + my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime($time); + my @rfc2822_months = ("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", + "Aug", "Sep", "Oct", "Nov", "Dec"); + my @rfc2822_wdays = ("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"); + return sprintf("%s, %02d %s %04d %02d:%02d:%02d GMT", $rfc2822_wdays[$wday], + $mday, $rfc2822_months[$mon], $year + 1900, $hour, $min, $sec); +} + +sub check_alerts { + my $cfg = shift; + my $tree = shift; + my $pings = shift; + my $name = shift; + my $prop = shift; + my $loss = shift; + my $rtt = shift; + my $slave = shift; + my $gotalert; + my $s = ""; + if ($slave) { + $s = '~'.$slave + } + if ( $tree->{alerts} ) { + my $priority_done; + $tree->{'stack'.$s} = {loss=>['S'],rtt=>['S']} unless defined $tree->{'stack'.$s}; + my $x = $tree->{'stack'.$s}; + $loss = undef if $loss eq 'U'; + my $lossprct = $loss * 100 / $pings; + $rtt = undef if $rtt eq 'U'; + push @{$x->{loss}}, $lossprct; + push @{$x->{rtt}}, $rtt; + if (scalar @{$x->{loss}} > $tree->{fetchlength}){ + shift @{$x->{loss}}; + shift @{$x->{rtt}}; + } + for (sort { ($cfg->{Alerts}{$a}{priority}||0) + <=> ($cfg->{Alerts}{$b}{priority}||0)} @{$tree->{alerts}}) { + my $alert = $cfg->{Alerts}{$_}; + if ( not $alert ) { + do_log "WARNING: Empty alert in ".(join ",", @{$tree->{alerts}})." ($name)\n"; + next; + }; + if ( ref $alert->{sub} ne 'CODE' ) { + do_log "WARNING: Alert '$_' did not resolve to a Sub Ref. Skipping\n"; + next; + }; + my $prevmatch = $tree->{'prevmatch'.$s}{$_} || 0; + + # add the current state of an edge triggered alert to the + # data passed into a matcher, which allows for somewhat + # more intelligent alerting due to state awareness. + $x->{prevmatch} = $prevmatch; + my $priority = $alert->{priority}; + my $match = &{$alert->{sub}}($x) || 0; # Avgratio returns undef + $gotalert = $match unless $gotalert; + my $edgetrigger = $alert->{edgetrigger} eq 'yes'; + my $what; + if ($edgetrigger and ($prevmatch ? 0 : 1 ) != ($match ? 0 : 1)) { + $what = ($prevmatch == 0 ? "was raised" : "was cleared"); + } + if (not $edgetrigger and $match) { + $what = "is active"; + } + if ($what and (not defined $priority or not defined $priority_done )) { + $priority_done = $priority if $priority and not $priority_done; + # send something + my $from; + my $line = "$name/$prop"; + my $base = $cfg->{General}{datadir}; + $line =~ s|^$base/||; + $line =~ s|/host$||; + $line =~ s|/|.|g; + my $urlline = $cfg->{General}{cgiurl}."?target=".$line; + $line .= " [from $slave]" if $slave; + my $lossratio = "$loss/$pings"; + my $loss = "loss: ".join ", ",map {defined $_ ? (/^\d/ ? sprintf "%.0f%%", $_ :$_):"U" } @{$x->{loss}}; + my $rtt = "rtt: ".join ", ",map {defined $_ ? (/^\d/ ? sprintf "%.0fms", $_*1000 :$_):"U" } @{$x->{rtt}}; + my $time = time; + do_log("Alert $_ $what for $line $loss(${lossratio}) $rtt prevmatch: $prevmatch comment: $alert->{comment}"); + my @stamp = localtime($time); + my $stamp = localtime($time); + my @to; + foreach my $addr (map {$_ ? (split /\s*,\s*/,$_) : ()} $cfg->{Alerts}{to},$tree->{alertee},$alert->{to}){ + next unless $addr; + if ( $addr =~ /^\|(.+)/) { + my $cmd = $1; + # fork them in case they take a long time + my $pid; + unless ($pid = fork) { + unless (fork) { + $SIG{CHLD} = 'DEFAULT'; + if ($edgetrigger) { + exec $cmd,$_,$line,$loss,$rtt,$tree->{host}, (($what =~/raise/)? 1 : 0); + } else { + exec $cmd,$_,$line,$loss,$rtt,$tree->{host}; + } + die "exec failed!"; + } + exit 0; + } + waitpid($pid, 0); + } + elsif ( $addr =~ /^snpp:(.+)/ ) { + sendsnpp $1, <{comment} +$_ $what on $line +$loss +$rtt +SNPPALERT + } + elsif ( $addr =~ /^xmpp:(.+)/ ) { + my $xmpparg = "$1 -s '[Smokeping] Alert'"; + my $xmppalert = <{pattern} + +Data (old --> now) +$loss +$rtt + +Comment: $alert->{comment} + +************************************************** + + + + + +XMPPALERT + if (-x "/usr/bin/sendxmpp"){ + open (M, "|-") || exec ("/usr/bin/sendxmpp $xmpparg"); + print M $xmppalert; + close M; + } + else { + warn "Command sendxmpp not found. Try 'apt-get install sendxmpp' to install it. xmpp message with arg line $xmpparg could not be sent"; + } + } + else { + push @to, $addr; + } + }; + if (@to){ + my $default_mail = < <##WHAT##> on <##LINE##> + +<##STAMP##> + +Alert "<##ALERT##>" <##WHAT##> for <##URL##> + +Pattern +------- +<##PAT##> + +Data (old --> now) +------------------ +<##LOSS##> +<##RTT##> + +Comment +------- +<##COMMENT##> + +DOC + + my $mail = fill_template($alert->{mailtemplate}, + { + ALERT => $_, + WHAT => $what, + LINE => $line, + URL => $urlline, + STAMP => $stamp, + PAT => $alert->{pattern}, + LOSS => $loss, + RTT => $rtt, + COMMENT => $alert->{comment} + },$default_mail) || "Subject: smokeping failed to open mailtemplate '$alert->{mailtemplate}'\n\nsee subject\n"; + my $rfc2822stamp = rfc2822timedate($time); + my $to = join ",",@to; + sendmail $cfg->{Alerts}{from},$to, <{Alerts}{from} +Date: $rfc2822stamp +$mail +ALERT + } + } else { + do_debuglog("Alert \"$_\": no match for target $name\n"); + } + if ($match == 0) { + $tree->{'prevmatch'.$s}{$_} = $match; + } else { + $tree->{'prevmatch'.$s}{$_} += $match; + } + } + } # end alerts + return $gotalert; +} + + +sub update_rrds($$$$$$); +sub update_rrds($$$$$$) { + my $cfg = shift; + my $probes = shift; + my $tree = shift; + my $name = shift; + my $justthisprobe = shift; # if defined, update only the targets probed by this probe + my $sortercache = shift; + + my $probe = $tree->{probe}; + foreach my $prop (keys %{$tree}) { + if (ref $tree->{$prop} eq 'HASH'){ + update_rrds $cfg, $probes, $tree->{$prop}, $name."/$prop", $justthisprobe, $sortercache; + } + # if we are looking down a branch where no probe property is set there is no sense + # in further exploring it + next unless defined $probe; + next if defined $justthisprobe and $probe ne $justthisprobe; + my $probeobj = $probes->{$probe}; + my $pings = $probeobj->_pings($tree); + if ($prop eq 'host' and check_filter($cfg,$name) and $tree->{$prop} !~ m|^/|) { # skip multihost + my @updates; + if (not $tree->{nomasterpoll} or $tree->{nomasterpoll} eq 'no'){ + @updates = ([ "", time, $probeobj->rrdupdate_string($tree) ]); + } + if ($tree->{slaves}){ + my @slaves = split(/\s+/, $tree->{slaves}); + foreach my $slave (@slaves) { + my $lines = Smokeping::Master::get_slaveupdates($cfg, $name, $slave); + push @updates, @$lines; + } #foreach my $checkslave + } + for my $update (sort {$a->[1] <=> $b->[1]} @updates){ # make sure we put the updates in chronological order in + my $s = $update->[0] ? "~".$update->[0] : ""; + if ( $tree->{rawlog} ){ + my $file = POSIX::strftime $tree->{rawlog},localtime($update->[1]); + if (open LOG,">>$name$s.$file.csv"){ + print LOG time,"\t",join("\t",split /:/,$update->[2]),"\n"; + close LOG; + } else { + do_log "Warning: failed to open $name$s.$file for logging: $!\n"; + } + } + my @rrdupdate = ( + $name.$s.".rrd", + '--template', ( + join ":", "uptime", "loss", "median", + map { "ping${_}" } 1..$pings + ), + $update->[1].":".$update->[2] + ); + do_debuglog("Calling RRDs::update(@rrdupdate)"); + RRDs::update ( @rrdupdate ); + my $ERROR = RRDs::error(); + do_log "RRDs::update ERROR: $ERROR\n" if $ERROR; + + # insert in influxdb if needed + update_influxdb($name, $s, $pings, $tree, $update) if (defined $influx); + + # check alerts + my ($loss,$rtt) = (split /:/, $update->[2])[1,2]; + my $gotalert = check_alerts $cfg,$tree,$pings,$name,$prop,$loss,$rtt,$update->[0]; + update_sortercache $cfg,$sortercache,$name.$s,$update->[2],$gotalert; + } + } + } +} + +sub update_influxdb($$$$$); +sub update_influxdb($$$$$) { + my $name = shift; + my $s = shift; + my $pings = shift; + my $tree = shift; + my $update = shift; + + #for a slave cut out the first tilda + $s=~s/^~//; + + my @influx_data; + my %idata; + my %itags; + #measurements are stored in $update->[2] + #do_log("DBG: update->[2]: ".Dumper(\$update->[2])); + #do_log("DBG: update: ".Dumper(\$update)); + #timestamp is $update->[1] in unix timestamp format + my $unixtimestamp = $update->[1]; + my @measurements = split(/:/, $update->[2]); + my $i = 1; + + #Note, we force all measurement data to be float (scientific notation), + #because the data type is derived from the first ever data point, which might be wrong. + #in case of measurements with no value (e.g. 'U'), we skip the data point so that influx + #knows it's lacking a datapoint and can act accordingly + + #first 3 data points are as follows + $idata{uptime} = sprintf('%e', $measurements[0]) if($measurements[0] ne "U"); + + #if loss is indexed, it's easily searchable, but doesn't show up in Grafana graphs + #so save it both ways (loss is an integer, no need to make it float) + #loss is always a number, even when all other are unreachable, so no special treatment + my $loss = $measurements[1]; + $itags{loss} = $loss; + $idata{loss} = $loss; + #calculate loss as a percentage as well + my $loss_percent = int($loss/$pings*100); + $itags{loss_percent} = $loss_percent; + $idata{loss_percent} = $loss_percent; + + $idata{median} = sprintf('%e', $measurements[2]) if($measurements[2] ne "U"); + + #skip the first 3 items, since they were processed + splice(@measurements, 0, 3); + + my $min = $measurements[1]; #first value + my $max = undef; + + for (0..$pings-1){ + if ($measurements[$_] ne "U"){ + $idata{'ping'.(${_}+1)} = sprintf('%e', $measurements[$_]); + $min = $measurements[$_] if($measurements[$_] < $min); + $max = $measurements[$_] if($measurements[$_] > $max); + } + } + if ($min ne 'U'){ + $idata{min} = sprintf('%e', $min); + } + if (defined $max && $max ne 'U' ){ + $idata{"max"} = sprintf('%e', $max); + } + + + $itags{host} = $tree->{host}; + $itags{title} = $tree->{title}; + # remove datadir as a prefix + $itags{path} = $name; + $itags{path} =~ s/$cfg->{General}{datadir}//; + if ($s ne ""){ + #this is a slave + $itags{slave} = $s; + } + else{ + #to improve filtering in grafana, mark the master + $itags{slave} = "master"; + } + + #send also probe configuration parameters that are prefixed with influx_. + for my $parameter (sort keys %$tree){ + if($parameter=~/^influx_(.+)/){ + my $tag = "tag_".$1; + #only non-empty parameters get sent + if($tree->{$parameter} ne ""){ + #tags will be in the form "tag_location", based on what the user supplied + $itags{$tag} = $tree->{$parameter}; + } + } + } + + #for some reason, InfluxDB::HTTP has a bug and stores 0.000000e+00 as a string, not a float. + #this will cause measurement loss in InfluxDB + #so, we'll do a dirty hack and convert it to a very small non-zero value + # 'U' values are not affected by this (not inserted) + + for my $key (sort keys %idata){ + if($idata{$key} == 0){ + next if ($key eq "loss" or $key eq "loss_percent"); #loss was not a float, so no need for this + $idata{$key} = "0.1e-100"; #an arbitrary small number + } + } + + #do_debuglog("DBG: idata:".Dumper(\%idata).", itags:".Dumper(\%itags)); + #convert unixtimestamp from seconds to ms (since rrd have only second precision) + $unixtimestamp = $unixtimestamp."000"; #avoid a multiply + + push @influx_data, data2line( $tree->{probe}, \%idata, \%itags, $unixtimestamp); + + if(defined $influx){ + #do_debuglog("DBG: About to insert to influxdb: ".Dumper(\@influx_data)); + my $insert = $influx->write( + \@influx_data, + database => $cfg->{InfluxDB}{'database'}, + precision => 'ms' + ); + if(! $insert){ + do_log("Error inserting measurement into influxdb: $insert for ".Dumper(\@influx_data)) + } + } +} + +sub _deepcopy { + # this handles circular references on consecutive levels, + # but breaks if there are any levels in between + my $what = shift; + return $what unless ref $what; + for (ref $what) { + /^ARRAY$/ and return [ map { $_ eq $what ? $_ : _deepcopy($_) } @$what ]; + /^HASH$/ and return { map { $_ => $what->{$_} eq $what ? + $what->{$_} : _deepcopy($what->{$_}) } keys %$what }; + /^CODE$/ and return $what; # we don't need to copy the subs + } + die "Cannot _deepcopy reference type @{[ref $what]}"; +} + +sub get_parser () { + # The _dyn() stuff here is quite confusing, so here's a walkthrough: + # 1 Probe is defined in the Probes section + # 1.1 _dyn is called for the section to add the probe- and target-specific + # vars into the grammar for this section and its subsections (subprobes) + # 1.2 A _dyn sub is installed for all mandatory target-specific variables so + # that they are made non-mandatory in the Targets section if they are + # specified here. The %storedtargetvars hash holds this information. + # 1.3 If a probe section has any subsections (subprobes) defined, the main + # section turns into a template that just offers default values for + # the subprobes. Because of this a _dyn sub is installed for subprobe + # sections that makes any mandatory variables in the main section non-mandatory. + # 1.4 A similar _dyn sub as in 1.2 is installed for the subprobe target-specific + # variables as well. + # 2 Probe is selected in the Targets section top + # 2.1 _dyn is called for the section to add the probe- and target-specific + # vars into the grammar for this section and its subsections. Any _default + # values for the vars are removed, as they will be propagated from the Probes + # section. + # 2.2 Another _dyn sub is installed for the 'probe' variable in target subsections + # that behaves as 2.1 + # 2.3 A _dyn sub is installed for the 'host' variable that makes the mandatory + # variables mandatory only in those sections that have a 'host' setting. + # 2.4 A _sub sub is installed for the 'probe' variable in target subsections that + # bombs out if 'probe' is defined after any variables that depend on the + # current 'probe' setting. + + + my $KEYD_RE = '[-_0-9a-zA-Z]+'; + my $KEYDD_RE = '[-_0-9a-zA-Z.]+'; + my $PROBE_RE = '[A-Z][a-zA-Z]+'; + my $e = "="; + my %knownprobes; # the probes encountered so far + + # get a list of available probes for _dyndoc sections + my $libdir = find_libdir(); + my $probedir = $libdir . "/Smokeping/probes"; + my $matcherdir = $libdir . "/Smokeping/matchers"; + my $sorterdir = $libdir . "/Smokeping/sorters"; + + my $probelist; + my @matcherlist; + my @sorterlist; + + die("Can't find probe module directory") unless defined $probedir; + opendir(D, $probedir) or die("opendir $probedir: $!"); + for (readdir D) { + next unless s/\.pm$//; + next unless /^$PROBE_RE/; + $probelist->{$_} = "(See the L for details about each variable.)"; + } + closedir D; + + die("Can't find matcher module directory") unless defined $matcherdir; + opendir(D, $matcherdir) or die("opendir $matcherdir: $!"); + for (sort readdir D) { + next unless /[A-Z]/; + next unless s/\.pm$//; + push @matcherlist, $_; + } + + die("Can't find sorter module directory") unless defined $sorterdir; + opendir(D, $sorterdir) or die("opendir $sorterdir: $!"); + for (sort readdir D) { + next unless /[A-Z]/; + next unless s/\.pm$//; + push @sorterlist, $_; + } + + # The target-specific vars of each probe + # We need to store them to relay information from Probes section to Target section + # see 1.2 above + my %storedtargetvars; + + # the part of target section syntax that doesn't depend on the selected probe + my $TARGETCOMMON; # predeclare self-referencing structures + # the common variables + my $TARGETCOMMONVARS = [ qw (probe menu title alerts note email host remark rawlog alertee slaves menuextra parents hide nomasterpoll) ]; + $TARGETCOMMON = + { + _vars => $TARGETCOMMONVARS, + _inherited=> [ qw (probe alerts alertee slaves menuextra nomasterpoll) ], + _sections => [ "/$KEYD_RE/" ], + _recursive=> [ "/$KEYD_RE/" ], + _sub => sub { + my $val = shift; + return "PROBE_CONF sections are neither needed nor supported any longer. Please see the smokeping_upgrade document." + if $val eq 'PROBE_CONF'; + return undef; + }, + "/$KEYD_RE/" => {}, + _order => 1, + _varlist => 1, + _doc => < { + _doc => 'Comma separated list of alert names', + _re => '([^\s,]+(,[^\s,]+)*)?', + _re_error => 'Comma separated list of alert names', + }, + hide => { + _doc => <