Merge ~ahasenack/ubuntu/+source/apache2:cosmic-apache2-2.4.33-3 into ubuntu/+source/apache2:ubuntu/devel

Proposed by Andreas Hasenack on 2018-05-09
Status: Superseded
Proposed branch: ~ahasenack/ubuntu/+source/apache2:cosmic-apache2-2.4.33-3
Merge into: ubuntu/+source/apache2:ubuntu/devel
Diff against target: 469391 lines (+439712/-5008) (has conflicts)
2212 files modified
Apache-apr2.dsw (+41/-1)
Apache.dsw (+48/-0)
BuildBin.dsp (+2/-2)
CHANGES (+199/-2)
CMakeLists.txt (+1/-0)
LICENSE (+34/-0)
Makefile.win (+41/-0)
NOTICE (+5/-1)
acinclude.m4 (+2/-2)
build/config.guess (+22/-40)
build/config.sub (+10/-10)
build/installwinconf.awk (+2/-0)
build/ltmain.sh (+2018/-3506)
build/rpm/httpd.spec.in (+2/-15)
config.layout (+24/-0)
configure (+1976/-123)
debian/apache2-data.install (+2/-2)
debian/apache2-dev.install (+3/-3)
debian/apache2-dev.manpages (+1/-1)
debian/apache2-doc.install (+2/-1)
debian/apache2-utils.install (+6/-6)
debian/apache2-utils.manpages (+8/-8)
debian/apache2.dirs (+6/-2)
debian/apache2.docs (+1/-1)
debian/apache2.examples (+2/-2)
debian/apache2.install (+6/-6)
debian/apache2.links (+9/-9)
debian/apache2.maintscript (+1/-1)
debian/apache2.manpages (+6/-6)
debian/changelog (+132/-0)
debian/config-dir/mods-available/brotli.load (+1/-0)
debian/config-dir/mods-available/md.load (+1/-0)
debian/config-dir/mods-available/proxy_uwsgi.load (+2/-0)
debian/control (+99/-20)
debian/convert_docs (+6/-4)
debian/copyright (+0/-1)
debian/patches/customize_apxs.patch (+1/-1)
debian/patches/mod_http2_mem_usage_32bit.diff (+12/-0)
debian/patches/series (+7/-0)
debian/rules (+3/-5)
debian/source/include-binaries (+1/-0)
debian/source/lintian-overrides (+2/-0)
dev/null (+0/-20)
docs/manual/bind.html.de (+1/-1)
docs/manual/bind.html.en (+1/-1)
docs/manual/bind.html.fr (+1/-1)
docs/manual/bind.html.ja.utf8 (+1/-1)
docs/manual/bind.html.ko.euc-kr (+1/-1)
docs/manual/bind.html.tr.utf8 (+1/-1)
docs/manual/caching.html.en (+1/-1)
docs/manual/caching.html.fr (+1/-1)
docs/manual/caching.html.tr.utf8 (+1/-1)
docs/manual/configuring.html.de (+1/-1)
docs/manual/configuring.html.en (+1/-1)
docs/manual/configuring.html.fr (+1/-1)
docs/manual/configuring.html.ja.utf8 (+1/-1)
docs/manual/configuring.html.ko.euc-kr (+1/-1)
docs/manual/configuring.html.tr.utf8 (+1/-1)
docs/manual/content-negotiation.html.en (+1/-1)
docs/manual/content-negotiation.html.fr (+1/-1)
docs/manual/content-negotiation.html.ja.utf8 (+1/-1)
docs/manual/content-negotiation.html.ko.euc-kr (+1/-1)
docs/manual/content-negotiation.html.tr.utf8 (+1/-1)
docs/manual/convenience.map (+20/-0)
docs/manual/custom-error.html.en (+1/-1)
docs/manual/custom-error.html.es (+1/-1)
docs/manual/custom-error.html.fr (+1/-1)
docs/manual/custom-error.html.ja.utf8 (+1/-1)
docs/manual/custom-error.html.ko.euc-kr (+1/-1)
docs/manual/custom-error.html.tr.utf8 (+1/-1)
docs/manual/developer/API.html.en (+1/-1)
docs/manual/developer/debugging.html.en (+1/-1)
docs/manual/developer/documenting.html.en (+1/-1)
docs/manual/developer/documenting.html.zh-cn.utf8 (+1/-1)
docs/manual/developer/filters.html.en (+1/-1)
docs/manual/developer/hooks.html.en (+1/-1)
docs/manual/developer/index.html.en (+1/-1)
docs/manual/developer/index.html.zh-cn.utf8 (+1/-1)
docs/manual/developer/modguide.html.en (+1/-1)
docs/manual/developer/modules.html.en (+1/-1)
docs/manual/developer/modules.html.ja.utf8 (+1/-1)
docs/manual/developer/new_api_2_4.html.en (+1/-1)
docs/manual/developer/output-filters.html.en (+1/-1)
docs/manual/developer/request.html.en (+1/-1)
docs/manual/developer/thread_safety.html.en (+1/-1)
docs/manual/dns-caveats.html.en (+1/-1)
docs/manual/dns-caveats.html.fr (+1/-1)
docs/manual/dns-caveats.html.ja.utf8 (+1/-1)
docs/manual/dns-caveats.html.ko.euc-kr (+1/-1)
docs/manual/dns-caveats.html.tr.utf8 (+1/-1)
docs/manual/dso.html.en (+1/-1)
docs/manual/dso.html.fr (+1/-1)
docs/manual/dso.html.ja.utf8 (+1/-1)
docs/manual/dso.html.ko.euc-kr (+1/-1)
docs/manual/dso.html.tr.utf8 (+1/-1)
docs/manual/env.html.en (+1/-1)
docs/manual/env.html.fr (+1/-1)
docs/manual/env.html.ja.utf8 (+1/-1)
docs/manual/env.html.ko.euc-kr (+1/-1)
docs/manual/env.html.tr.utf8 (+1/-1)
docs/manual/expr.html.en (+1/-1)
docs/manual/expr.html.fr (+1/-1)
docs/manual/faq/index.html.en (+1/-1)
docs/manual/faq/index.html.es (+1/-1)
docs/manual/faq/index.html.fr (+1/-1)
docs/manual/faq/index.html.tr.utf8 (+1/-1)
docs/manual/faq/index.html.zh-cn.utf8 (+1/-1)
docs/manual/filter.html.en (+1/-1)
docs/manual/filter.html.es (+1/-1)
docs/manual/filter.html.fr (+1/-1)
docs/manual/filter.html.ja.utf8 (+1/-1)
docs/manual/filter.html.ko.euc-kr (+1/-1)
docs/manual/filter.html.tr.utf8 (+1/-1)
docs/manual/getting-started.html.en (+1/-1)
docs/manual/getting-started.html.fr (+1/-1)
docs/manual/glossary.html.de (+1/-1)
docs/manual/glossary.html.en (+1/-1)
docs/manual/glossary.html.es (+1/-1)
docs/manual/glossary.html.fr (+1/-1)
docs/manual/glossary.html.ja.utf8 (+1/-1)
docs/manual/glossary.html.ko.euc-kr (+1/-1)
docs/manual/glossary.html.tr.utf8 (+1/-1)
docs/manual/handler.html.en (+1/-1)
docs/manual/handler.html.es (+1/-1)
docs/manual/handler.html.fr (+1/-1)
docs/manual/handler.html.ja.utf8 (+1/-1)
docs/manual/handler.html.ko.euc-kr (+1/-1)
docs/manual/handler.html.tr.utf8 (+1/-1)
docs/manual/handler.html.zh-cn.utf8 (+1/-1)
docs/manual/howto/access.html.en (+1/-1)
docs/manual/howto/access.html.es (+1/-1)
docs/manual/howto/access.html.fr (+1/-1)
docs/manual/howto/auth.html.en (+1/-1)
docs/manual/howto/auth.html.es (+1/-1)
docs/manual/howto/auth.html.fr (+1/-1)
docs/manual/howto/auth.html.ja.utf8 (+1/-1)
docs/manual/howto/auth.html.ko.euc-kr (+1/-1)
docs/manual/howto/auth.html.tr.utf8 (+1/-1)
docs/manual/howto/cgi.html.en (+1/-1)
docs/manual/howto/cgi.html.es (+1/-1)
docs/manual/howto/cgi.html.fr (+1/-1)
docs/manual/howto/cgi.html.ja.utf8 (+1/-1)
docs/manual/howto/cgi.html.ko.euc-kr (+1/-1)
docs/manual/howto/htaccess.html.en (+1/-1)
docs/manual/howto/htaccess.html.es (+1/-1)
docs/manual/howto/htaccess.html.fr (+1/-1)
docs/manual/howto/htaccess.html.ja.utf8 (+1/-1)
docs/manual/howto/htaccess.html.ko.euc-kr (+1/-1)
docs/manual/howto/htaccess.html.pt-br (+1/-1)
docs/manual/howto/http2.html.en (+1/-1)
docs/manual/howto/http2.html.es (+1/-1)
docs/manual/howto/http2.html.fr (+1/-1)
docs/manual/howto/index.html.en (+1/-1)
docs/manual/howto/index.html.es (+1/-1)
docs/manual/howto/index.html.fr (+1/-1)
docs/manual/howto/index.html.ja.utf8 (+1/-1)
docs/manual/howto/index.html.ko.euc-kr (+1/-1)
docs/manual/howto/index.html.zh-cn.utf8 (+1/-1)
docs/manual/howto/public_html.html.en (+1/-1)
docs/manual/howto/public_html.html.es (+1/-1)
docs/manual/howto/public_html.html.fr (+1/-1)
docs/manual/howto/public_html.html.ja.utf8 (+1/-1)
docs/manual/howto/public_html.html.ko.euc-kr (+1/-1)
docs/manual/howto/public_html.html.tr.utf8 (+1/-1)
docs/manual/howto/reverse_proxy.html.en (+1/-1)
docs/manual/howto/ssi.html.en (+1/-1)
docs/manual/howto/ssi.html.fr (+1/-1)
docs/manual/howto/ssi.html.ja.utf8 (+1/-1)
docs/manual/howto/ssi.html.ko.euc-kr (+1/-1)
docs/manual/index.html.da (+1/-1)
docs/manual/index.html.de (+1/-1)
docs/manual/index.html.en (+1/-1)
docs/manual/index.html.es (+1/-1)
docs/manual/index.html.fr (+1/-1)
docs/manual/index.html.ja.utf8 (+1/-1)
docs/manual/index.html.ko.euc-kr (+1/-1)
docs/manual/index.html.pt-br (+1/-1)
docs/manual/index.html.tr.utf8 (+2/-2)
docs/manual/index.html.zh-cn.utf8 (+1/-1)
docs/manual/install.html.de (+1/-1)
docs/manual/install.html.en (+41/-9)
docs/manual/install.html.es (+5/-1)
docs/manual/install.html.fr (+34/-1)
docs/manual/install.html.ja.utf8 (+1/-1)
docs/manual/install.html.ko.euc-kr (+1/-1)
docs/manual/install.html.tr.utf8 (+2/-1)
docs/manual/invoking.html.de (+1/-1)
docs/manual/invoking.html.en (+1/-1)
docs/manual/invoking.html.es (+1/-1)
docs/manual/invoking.html.fr (+1/-1)
docs/manual/invoking.html.ja.utf8 (+1/-1)
docs/manual/invoking.html.ko.euc-kr (+1/-1)
docs/manual/invoking.html.tr.utf8 (+1/-1)
docs/manual/license.html.en (+1/-1)
docs/manual/logs.html.en (+1/-1)
docs/manual/logs.html.fr (+1/-1)
docs/manual/logs.html.ja.utf8 (+1/-1)
docs/manual/logs.html.ko.euc-kr (+1/-1)
docs/manual/logs.html.tr.utf8 (+1/-1)
docs/manual/misc/index.html.en (+1/-1)
docs/manual/misc/index.html.fr (+1/-1)
docs/manual/misc/index.html.ko.euc-kr (+1/-1)
docs/manual/misc/index.html.tr.utf8 (+1/-1)
docs/manual/misc/index.html.zh-cn.utf8 (+1/-1)
docs/manual/misc/password_encryptions.html.en (+1/-1)
docs/manual/misc/password_encryptions.html.fr (+1/-1)
docs/manual/misc/perf-tuning.html.en (+1/-1)
docs/manual/misc/perf-tuning.html.fr (+1/-1)
docs/manual/misc/perf-tuning.html.ko.euc-kr (+1/-1)
docs/manual/misc/perf-tuning.html.tr.utf8 (+1/-1)
docs/manual/misc/relevant_standards.html.en (+1/-1)
docs/manual/misc/relevant_standards.html.fr (+1/-1)
docs/manual/misc/relevant_standards.html.ko.euc-kr (+1/-1)
docs/manual/misc/security_tips.html.en (+1/-1)
docs/manual/misc/security_tips.html.fr (+1/-1)
docs/manual/misc/security_tips.html.ko.euc-kr (+1/-1)
docs/manual/misc/security_tips.html.tr.utf8 (+1/-1)
docs/manual/mod/core.html.de (+9/-3)
docs/manual/mod/core.html.en (+17/-12)
docs/manual/mod/core.html.es (+9/-3)
docs/manual/mod/core.html.fr (+19/-14)
docs/manual/mod/core.html.ja.utf8 (+9/-3)
docs/manual/mod/core.html.tr.utf8 (+38/-22)
docs/manual/mod/directive-dict.html.en (+1/-1)
docs/manual/mod/directive-dict.html.es (+1/-1)
docs/manual/mod/directive-dict.html.fr (+1/-1)
docs/manual/mod/directive-dict.html.ja.utf8 (+1/-1)
docs/manual/mod/directive-dict.html.ko.euc-kr (+1/-1)
docs/manual/mod/directive-dict.html.tr.utf8 (+1/-1)
docs/manual/mod/directives.html.de (+21/-1)
docs/manual/mod/directives.html.en (+21/-1)
docs/manual/mod/directives.html.es (+21/-1)
docs/manual/mod/directives.html.fr (+21/-1)
docs/manual/mod/directives.html.ja.utf8 (+21/-1)
docs/manual/mod/directives.html.ko.euc-kr (+21/-1)
docs/manual/mod/directives.html.tr.utf8 (+21/-1)
docs/manual/mod/directives.html.zh-cn.utf8 (+21/-1)
docs/manual/mod/event.html.en (+7/-2)
docs/manual/mod/event.html.fr (+9/-7)
docs/manual/mod/index.html.de (+5/-1)
docs/manual/mod/index.html.en (+5/-1)
docs/manual/mod/index.html.es (+5/-1)
docs/manual/mod/index.html.fr (+5/-1)
docs/manual/mod/index.html.ja.utf8 (+5/-1)
docs/manual/mod/index.html.ko.euc-kr (+5/-1)
docs/manual/mod/index.html.tr.utf8 (+5/-1)
docs/manual/mod/index.html.zh-cn.utf8 (+5/-1)
docs/manual/mod/mod_access_compat.html.en (+1/-1)
docs/manual/mod/mod_access_compat.html.fr (+1/-1)
docs/manual/mod/mod_access_compat.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_actions.html.de (+1/-1)
docs/manual/mod/mod_actions.html.en (+1/-1)
docs/manual/mod/mod_actions.html.fr (+1/-1)
docs/manual/mod/mod_actions.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_actions.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_alias.html.en (+1/-1)
docs/manual/mod/mod_alias.html.fr (+1/-1)
docs/manual/mod/mod_alias.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_alias.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_alias.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_allowmethods.html.en (+1/-1)
docs/manual/mod/mod_allowmethods.html.fr (+1/-1)
docs/manual/mod/mod_asis.html.en (+1/-1)
docs/manual/mod/mod_asis.html.fr (+1/-1)
docs/manual/mod/mod_asis.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_asis.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_auth_basic.html.en (+5/-5)
docs/manual/mod/mod_auth_basic.html.fr (+4/-4)
docs/manual/mod/mod_auth_basic.html.ja.utf8 (+2/-2)
docs/manual/mod/mod_auth_basic.html.ko.euc-kr (+2/-2)
docs/manual/mod/mod_auth_digest.html.en (+1/-1)
docs/manual/mod/mod_auth_digest.html.fr (+1/-1)
docs/manual/mod/mod_auth_digest.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_auth_form.html.en (+1/-1)
docs/manual/mod/mod_auth_form.html.fr (+1/-1)
docs/manual/mod/mod_authn_anon.html.en (+1/-1)
docs/manual/mod/mod_authn_anon.html.fr (+1/-1)
docs/manual/mod/mod_authn_anon.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_authn_anon.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_authn_core.html.en (+1/-1)
docs/manual/mod/mod_authn_core.html.fr (+1/-1)
docs/manual/mod/mod_authn_dbd.html.en (+1/-1)
docs/manual/mod/mod_authn_dbd.html.fr (+1/-1)
docs/manual/mod/mod_authn_dbm.html.en (+1/-1)
docs/manual/mod/mod_authn_dbm.html.fr (+1/-1)
docs/manual/mod/mod_authn_dbm.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_authn_dbm.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_authn_file.html.en (+1/-1)
docs/manual/mod/mod_authn_file.html.fr (+1/-1)
docs/manual/mod/mod_authn_file.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_authn_file.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_authn_socache.html.en (+1/-3)
docs/manual/mod/mod_authn_socache.html.fr (+2/-4)
docs/manual/mod/mod_authnz_fcgi.html.en (+1/-1)
docs/manual/mod/mod_authnz_ldap.html.en (+3/-3)
docs/manual/mod/mod_authnz_ldap.html.fr (+3/-3)
docs/manual/mod/mod_authz_core.html.en (+1/-1)
docs/manual/mod/mod_authz_core.html.fr (+1/-1)
docs/manual/mod/mod_authz_dbd.html.en (+1/-1)
docs/manual/mod/mod_authz_dbd.html.fr (+1/-1)
docs/manual/mod/mod_authz_dbm.html.en (+1/-1)
docs/manual/mod/mod_authz_dbm.html.fr (+1/-1)
docs/manual/mod/mod_authz_dbm.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_authz_groupfile.html.en (+1/-1)
docs/manual/mod/mod_authz_groupfile.html.fr (+1/-1)
docs/manual/mod/mod_authz_groupfile.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_authz_groupfile.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_authz_host.html.en (+1/-1)
docs/manual/mod/mod_authz_host.html.fr (+1/-1)
docs/manual/mod/mod_authz_owner.html.en (+1/-1)
docs/manual/mod/mod_authz_owner.html.fr (+1/-1)
docs/manual/mod/mod_authz_owner.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_authz_owner.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_authz_user.html.en (+1/-1)
docs/manual/mod/mod_authz_user.html.fr (+1/-1)
docs/manual/mod/mod_authz_user.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_authz_user.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_autoindex.html.en (+1/-1)
docs/manual/mod/mod_autoindex.html.fr (+1/-1)
docs/manual/mod/mod_autoindex.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_autoindex.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_autoindex.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_brotli.html.en (+1/-1)
docs/manual/mod/mod_buffer.html.en (+1/-1)
docs/manual/mod/mod_buffer.html.fr (+1/-1)
docs/manual/mod/mod_cache.html.en (+1/-1)
docs/manual/mod/mod_cache.html.fr (+1/-1)
docs/manual/mod/mod_cache.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_cache.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_cache_disk.html.en (+1/-1)
docs/manual/mod/mod_cache_disk.html.fr (+1/-1)
docs/manual/mod/mod_cache_disk.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_cache_disk.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_cache_socache.html.en (+1/-1)
docs/manual/mod/mod_cache_socache.html.fr (+1/-1)
docs/manual/mod/mod_cern_meta.html.en (+1/-1)
docs/manual/mod/mod_cern_meta.html.fr (+1/-1)
docs/manual/mod/mod_cern_meta.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_cgi.html.en (+1/-1)
docs/manual/mod/mod_cgi.html.fr (+1/-1)
docs/manual/mod/mod_cgi.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_cgi.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_cgid.html.en (+1/-1)
docs/manual/mod/mod_cgid.html.fr (+1/-1)
docs/manual/mod/mod_cgid.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_cgid.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_charset_lite.html.en (+1/-1)
docs/manual/mod/mod_charset_lite.html.fr (+1/-1)
docs/manual/mod/mod_charset_lite.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_data.html.en (+1/-1)
docs/manual/mod/mod_data.html.fr (+1/-1)
docs/manual/mod/mod_dav.html.en (+1/-1)
docs/manual/mod/mod_dav.html.fr (+1/-1)
docs/manual/mod/mod_dav.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_dav.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_dav_fs.html.en (+1/-1)
docs/manual/mod/mod_dav_fs.html.fr (+1/-1)
docs/manual/mod/mod_dav_fs.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_dav_fs.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_dav_lock.html.en (+1/-1)
docs/manual/mod/mod_dav_lock.html.fr (+1/-1)
docs/manual/mod/mod_dav_lock.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_dbd.html.en (+1/-1)
docs/manual/mod/mod_dbd.html.fr (+1/-1)
docs/manual/mod/mod_deflate.html.en (+1/-1)
docs/manual/mod/mod_deflate.html.fr (+1/-1)
docs/manual/mod/mod_deflate.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_deflate.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_dialup.html.en (+1/-1)
docs/manual/mod/mod_dialup.html.fr (+1/-1)
docs/manual/mod/mod_dir.html.en (+1/-1)
docs/manual/mod/mod_dir.html.fr (+1/-1)
docs/manual/mod/mod_dir.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_dir.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_dir.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_dumpio.html.en (+1/-1)
docs/manual/mod/mod_dumpio.html.fr (+1/-1)
docs/manual/mod/mod_dumpio.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_echo.html.en (+1/-1)
docs/manual/mod/mod_echo.html.fr (+1/-1)
docs/manual/mod/mod_echo.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_echo.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_env.html.en (+1/-1)
docs/manual/mod/mod_env.html.fr (+1/-1)
docs/manual/mod/mod_env.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_env.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_env.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_example_hooks.html.en (+1/-1)
docs/manual/mod/mod_example_hooks.html.fr (+1/-1)
docs/manual/mod/mod_example_hooks.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_expires.html.en (+1/-1)
docs/manual/mod/mod_expires.html.fr (+1/-1)
docs/manual/mod/mod_expires.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_expires.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_ext_filter.html.en (+2/-2)
docs/manual/mod/mod_ext_filter.html.fr (+2/-2)
docs/manual/mod/mod_ext_filter.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_ext_filter.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_file_cache.html.en (+1/-1)
docs/manual/mod/mod_file_cache.html.fr (+1/-1)
docs/manual/mod/mod_file_cache.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_filter.html.en (+5/-5)
docs/manual/mod/mod_filter.html.fr (+5/-5)
docs/manual/mod/mod_headers.html.en (+1/-1)
docs/manual/mod/mod_headers.html.fr (+1/-1)
docs/manual/mod/mod_headers.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_headers.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_heartbeat.html.en (+1/-1)
docs/manual/mod/mod_heartbeat.html.fr (+1/-1)
docs/manual/mod/mod_heartmonitor.html.en (+1/-1)
docs/manual/mod/mod_heartmonitor.html.fr (+1/-1)
docs/manual/mod/mod_http2.html.en (+1/-1)
docs/manual/mod/mod_ident.html.en (+1/-1)
docs/manual/mod/mod_ident.html.fr (+1/-1)
docs/manual/mod/mod_ident.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_ident.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_imagemap.html.en (+1/-1)
docs/manual/mod/mod_imagemap.html.fr (+1/-1)
docs/manual/mod/mod_imagemap.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_include.html.en (+1/-1)
docs/manual/mod/mod_include.html.fr (+1/-1)
docs/manual/mod/mod_include.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_info.html.en (+1/-1)
docs/manual/mod/mod_info.html.fr (+1/-1)
docs/manual/mod/mod_info.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_info.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_isapi.html.en (+1/-1)
docs/manual/mod/mod_isapi.html.fr (+1/-1)
docs/manual/mod/mod_isapi.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_lbmethod_bybusyness.html.en (+1/-1)
docs/manual/mod/mod_lbmethod_bybusyness.html.fr (+1/-1)
docs/manual/mod/mod_lbmethod_byrequests.html.en (+1/-1)
docs/manual/mod/mod_lbmethod_byrequests.html.fr (+1/-1)
docs/manual/mod/mod_lbmethod_bytraffic.html.en (+1/-1)
docs/manual/mod/mod_lbmethod_bytraffic.html.fr (+1/-1)
docs/manual/mod/mod_lbmethod_heartbeat.html.en (+1/-1)
docs/manual/mod/mod_lbmethod_heartbeat.html.fr (+1/-1)
docs/manual/mod/mod_ldap.html.en (+1/-1)
docs/manual/mod/mod_ldap.html.fr (+1/-1)
docs/manual/mod/mod_log_config.html.en (+1/-1)
docs/manual/mod/mod_log_config.html.fr (+1/-1)
docs/manual/mod/mod_log_config.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_log_config.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_log_config.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_log_debug.html.en (+2/-2)
docs/manual/mod/mod_log_debug.html.fr (+2/-2)
docs/manual/mod/mod_log_forensic.html.en (+1/-1)
docs/manual/mod/mod_log_forensic.html.fr (+1/-1)
docs/manual/mod/mod_log_forensic.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_log_forensic.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_logio.html.en (+2/-2)
docs/manual/mod/mod_logio.html.fr (+4/-2)
docs/manual/mod/mod_logio.html.ja.utf8 (+2/-2)
docs/manual/mod/mod_logio.html.ko.euc-kr (+2/-2)
docs/manual/mod/mod_logio.html.tr.utf8 (+2/-2)
docs/manual/mod/mod_lua.html.en (+1/-1)
docs/manual/mod/mod_lua.html.fr (+1/-1)
docs/manual/mod/mod_macro.html.en (+1/-1)
docs/manual/mod/mod_macro.html.fr (+1/-1)
docs/manual/mod/mod_md.html (+5/-0)
docs/manual/mod/mod_md.html.en (+657/-0)
docs/manual/mod/mod_mime.html.en (+2/-2)
docs/manual/mod/mod_mime.html.fr (+1/-1)
docs/manual/mod/mod_mime.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_mime_magic.html.en (+1/-1)
docs/manual/mod/mod_mime_magic.html.fr (+1/-1)
docs/manual/mod/mod_negotiation.html.en (+1/-1)
docs/manual/mod/mod_negotiation.html.fr (+1/-1)
docs/manual/mod/mod_negotiation.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_nw_ssl.html.en (+1/-1)
docs/manual/mod/mod_nw_ssl.html.fr (+1/-1)
docs/manual/mod/mod_privileges.html.en (+1/-1)
docs/manual/mod/mod_privileges.html.fr (+1/-1)
docs/manual/mod/mod_proxy.html.en (+2/-2)
docs/manual/mod/mod_proxy.html.fr (+3/-2)
docs/manual/mod/mod_proxy.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_proxy_ajp.html.en (+1/-1)
docs/manual/mod/mod_proxy_ajp.html.fr (+1/-1)
docs/manual/mod/mod_proxy_ajp.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_proxy_balancer.html.en (+1/-1)
docs/manual/mod/mod_proxy_balancer.html.fr (+1/-1)
docs/manual/mod/mod_proxy_balancer.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_proxy_connect.html.en (+1/-1)
docs/manual/mod/mod_proxy_connect.html.fr (+1/-1)
docs/manual/mod/mod_proxy_connect.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_proxy_express.html.en (+1/-1)
docs/manual/mod/mod_proxy_express.html.fr (+1/-1)
docs/manual/mod/mod_proxy_fcgi.html.en (+26/-1)
docs/manual/mod/mod_proxy_fcgi.html.fr (+29/-1)
docs/manual/mod/mod_proxy_fdpass.html.en (+1/-1)
docs/manual/mod/mod_proxy_fdpass.html.fr (+1/-1)
docs/manual/mod/mod_proxy_ftp.html.en (+1/-1)
docs/manual/mod/mod_proxy_ftp.html.fr (+1/-1)
docs/manual/mod/mod_proxy_hcheck.html.en (+1/-1)
docs/manual/mod/mod_proxy_html.html.en (+25/-25)
docs/manual/mod/mod_proxy_html.html.fr (+24/-24)
docs/manual/mod/mod_proxy_http.html.en (+1/-1)
docs/manual/mod/mod_proxy_http.html.fr (+1/-1)
docs/manual/mod/mod_proxy_http2.html.en (+1/-1)
docs/manual/mod/mod_proxy_scgi.html.en (+1/-1)
docs/manual/mod/mod_proxy_scgi.html.fr (+1/-1)
docs/manual/mod/mod_proxy_uwsgi.html (+5/-0)
docs/manual/mod/mod_proxy_uwsgi.html.en (+110/-0)
docs/manual/mod/mod_proxy_wstunnel.html.en (+1/-1)
docs/manual/mod/mod_ratelimit.html.en (+1/-1)
docs/manual/mod/mod_ratelimit.html.fr (+1/-1)
docs/manual/mod/mod_reflector.html.en (+1/-1)
docs/manual/mod/mod_reflector.html.fr (+1/-1)
docs/manual/mod/mod_remoteip.html.en (+81/-1)
docs/manual/mod/mod_remoteip.html.fr (+88/-8)
docs/manual/mod/mod_reqtimeout.html.en (+1/-1)
docs/manual/mod/mod_reqtimeout.html.fr (+1/-1)
docs/manual/mod/mod_request.html.en (+1/-1)
docs/manual/mod/mod_request.html.fr (+1/-1)
docs/manual/mod/mod_request.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_rewrite.html.en (+1/-1)
docs/manual/mod/mod_rewrite.html.fr (+1/-1)
docs/manual/mod/mod_sed.html.en (+1/-5)
docs/manual/mod/mod_sed.html.fr (+1/-6)
docs/manual/mod/mod_session.html.en (+1/-1)
docs/manual/mod/mod_session.html.fr (+1/-1)
docs/manual/mod/mod_session_cookie.html.en (+1/-1)
docs/manual/mod/mod_session_cookie.html.fr (+1/-1)
docs/manual/mod/mod_session_crypto.html.en (+1/-1)
docs/manual/mod/mod_session_crypto.html.fr (+1/-1)
docs/manual/mod/mod_session_dbd.html.en (+1/-1)
docs/manual/mod/mod_session_dbd.html.fr (+1/-1)
docs/manual/mod/mod_setenvif.html.en (+1/-1)
docs/manual/mod/mod_setenvif.html.fr (+1/-1)
docs/manual/mod/mod_setenvif.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_setenvif.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_setenvif.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_slotmem_plain.html.en (+1/-1)
docs/manual/mod/mod_slotmem_plain.html.fr (+1/-1)
docs/manual/mod/mod_slotmem_shm.html.en (+1/-1)
docs/manual/mod/mod_slotmem_shm.html.fr (+1/-1)
docs/manual/mod/mod_so.html.en (+1/-1)
docs/manual/mod/mod_so.html.fr (+1/-1)
docs/manual/mod/mod_so.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_so.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_so.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_socache_dbm.html.en (+1/-1)
docs/manual/mod/mod_socache_dbm.html.fr (+1/-1)
docs/manual/mod/mod_socache_dc.html.en (+1/-1)
docs/manual/mod/mod_socache_dc.html.fr (+1/-1)
docs/manual/mod/mod_socache_memcache.html.en (+1/-1)
docs/manual/mod/mod_socache_memcache.html.fr (+1/-1)
docs/manual/mod/mod_socache_shmcb.html.en (+1/-1)
docs/manual/mod/mod_socache_shmcb.html.fr (+1/-1)
docs/manual/mod/mod_speling.html.en (+1/-1)
docs/manual/mod/mod_speling.html.fr (+1/-1)
docs/manual/mod/mod_speling.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_speling.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_ssl.html.en (+24/-23)
docs/manual/mod/mod_ssl.html.fr (+24/-24)
docs/manual/mod/mod_status.html.en (+1/-1)
docs/manual/mod/mod_status.html.fr (+1/-1)
docs/manual/mod/mod_status.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_status.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_status.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_substitute.html.en (+13/-4)
docs/manual/mod/mod_substitute.html.fr (+12/-4)
docs/manual/mod/mod_suexec.html.en (+1/-1)
docs/manual/mod/mod_suexec.html.fr (+1/-1)
docs/manual/mod/mod_suexec.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_suexec.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_suexec.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_unique_id.html.en (+1/-1)
docs/manual/mod/mod_unique_id.html.fr (+1/-1)
docs/manual/mod/mod_unique_id.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_unique_id.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_unixd.html.en (+1/-1)
docs/manual/mod/mod_unixd.html.fr (+1/-1)
docs/manual/mod/mod_unixd.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_userdir.html.en (+1/-1)
docs/manual/mod/mod_userdir.html.fr (+1/-1)
docs/manual/mod/mod_userdir.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_userdir.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_userdir.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_usertrack.html.en (+1/-1)
docs/manual/mod/mod_usertrack.html.fr (+1/-1)
docs/manual/mod/mod_version.html.en (+1/-1)
docs/manual/mod/mod_version.html.ja.utf8 (+1/-1)
docs/manual/mod/mod_version.html.ko.euc-kr (+1/-1)
docs/manual/mod/mod_vhost_alias.html.en (+1/-1)
docs/manual/mod/mod_vhost_alias.html.fr (+1/-1)
docs/manual/mod/mod_vhost_alias.html.tr.utf8 (+1/-1)
docs/manual/mod/mod_watchdog.html.en (+1/-1)
docs/manual/mod/mod_xml2enc.html.en (+1/-1)
docs/manual/mod/mod_xml2enc.html.fr (+1/-1)
docs/manual/mod/module-dict.html.en (+1/-1)
docs/manual/mod/module-dict.html.fr (+1/-1)
docs/manual/mod/module-dict.html.ja.utf8 (+1/-1)
docs/manual/mod/module-dict.html.ko.euc-kr (+1/-1)
docs/manual/mod/module-dict.html.tr.utf8 (+1/-1)
docs/manual/mod/mpm_common.html.de (+1/-1)
docs/manual/mod/mpm_common.html.en (+1/-1)
docs/manual/mod/mpm_common.html.fr (+1/-1)
docs/manual/mod/mpm_common.html.ja.utf8 (+1/-1)
docs/manual/mod/mpm_common.html.tr.utf8 (+28/-2)
docs/manual/mod/mpm_netware.html.en (+1/-1)
docs/manual/mod/mpm_netware.html.fr (+1/-1)
docs/manual/mod/mpm_winnt.html.de (+1/-1)
docs/manual/mod/mpm_winnt.html.en (+1/-1)
docs/manual/mod/mpm_winnt.html.fr (+1/-1)
docs/manual/mod/mpm_winnt.html.ja.utf8 (+1/-1)
docs/manual/mod/mpmt_os2.html.en (+1/-1)
docs/manual/mod/mpmt_os2.html.fr (+1/-1)
docs/manual/mod/overrides.html.en (+65/-101)
docs/manual/mod/prefork.html.de (+1/-1)
docs/manual/mod/prefork.html.en (+1/-1)
docs/manual/mod/prefork.html.fr (+1/-1)
docs/manual/mod/prefork.html.ja.utf8 (+1/-1)
docs/manual/mod/prefork.html.tr.utf8 (+1/-1)
docs/manual/mod/quickreference.html.de (+35/-14)
docs/manual/mod/quickreference.html.en (+47/-26)
docs/manual/mod/quickreference.html.es (+35/-14)
docs/manual/mod/quickreference.html.fr (+37/-15)
docs/manual/mod/quickreference.html.ja.utf8 (+35/-14)
docs/manual/mod/quickreference.html.ko.euc-kr (+35/-14)
docs/manual/mod/quickreference.html.tr.utf8 (+37/-16)
docs/manual/mod/quickreference.html.zh-cn.utf8 (+35/-14)
docs/manual/mod/worker.html.de (+1/-1)
docs/manual/mod/worker.html.en (+1/-1)
docs/manual/mod/worker.html.fr (+1/-1)
docs/manual/mod/worker.html.ja.utf8 (+1/-1)
docs/manual/mod/worker.html.tr.utf8 (+1/-1)
docs/manual/mpm.html.de (+1/-1)
docs/manual/mpm.html.en (+1/-1)
docs/manual/mpm.html.es (+1/-1)
docs/manual/mpm.html.fr (+1/-1)
docs/manual/mpm.html.ja.utf8 (+1/-1)
docs/manual/mpm.html.ko.euc-kr (+1/-1)
docs/manual/mpm.html.tr.utf8 (+1/-1)
docs/manual/mpm.html.zh-cn.utf8 (+1/-1)
docs/manual/new_features_2_0.html.de (+1/-1)
docs/manual/new_features_2_0.html.en (+1/-1)
docs/manual/new_features_2_0.html.fr (+1/-1)
docs/manual/new_features_2_0.html.ja.utf8 (+1/-1)
docs/manual/new_features_2_0.html.ko.euc-kr (+1/-1)
docs/manual/new_features_2_0.html.pt-br (+1/-1)
docs/manual/new_features_2_0.html.ru.koi8-r (+1/-1)
docs/manual/new_features_2_0.html.tr.utf8 (+1/-1)
docs/manual/new_features_2_2.html.en (+1/-1)
docs/manual/new_features_2_2.html.fr (+1/-1)
docs/manual/new_features_2_2.html.ko.euc-kr (+1/-1)
docs/manual/new_features_2_2.html.pt-br (+1/-1)
docs/manual/new_features_2_2.html.tr.utf8 (+1/-1)
docs/manual/new_features_2_4.html.en (+1/-1)
docs/manual/new_features_2_4.html.fr (+1/-1)
docs/manual/new_features_2_4.html.tr.utf8 (+1/-1)
docs/manual/platform/ebcdic.html.en (+1/-1)
docs/manual/platform/ebcdic.html.ko.euc-kr (+1/-1)
docs/manual/platform/index.html.en (+1/-1)
docs/manual/platform/index.html.fr (+1/-1)
docs/manual/platform/index.html.ko.euc-kr (+1/-1)
docs/manual/platform/index.html.zh-cn.utf8 (+1/-1)
docs/manual/platform/netware.html.en (+1/-1)
docs/manual/platform/netware.html.fr (+1/-1)
docs/manual/platform/netware.html.ko.euc-kr (+1/-1)
docs/manual/platform/perf-hp.html.en (+1/-1)
docs/manual/platform/perf-hp.html.fr (+1/-1)
docs/manual/platform/perf-hp.html.ko.euc-kr (+1/-1)
docs/manual/platform/rpm.html.en (+1/-1)
docs/manual/platform/win_compiling.html.en (+1/-1)
docs/manual/platform/win_compiling.html.fr (+1/-1)
docs/manual/platform/win_compiling.html.ko.euc-kr (+1/-1)
docs/manual/platform/windows.html.en (+1/-1)
docs/manual/platform/windows.html.fr (+1/-1)
docs/manual/platform/windows.html.ko.euc-kr (+1/-1)
docs/manual/programs/ab.html.en (+1/-1)
docs/manual/programs/ab.html.fr (+1/-1)
docs/manual/programs/ab.html.ko.euc-kr (+1/-1)
docs/manual/programs/ab.html.tr.utf8 (+1/-1)
docs/manual/programs/apachectl.html.en (+1/-1)
docs/manual/programs/apachectl.html.fr (+1/-1)
docs/manual/programs/apachectl.html.ko.euc-kr (+1/-1)
docs/manual/programs/apachectl.html.tr.utf8 (+1/-1)
docs/manual/programs/apxs.html.en (+1/-1)
docs/manual/programs/apxs.html.fr (+1/-1)
docs/manual/programs/apxs.html.ko.euc-kr (+1/-1)
docs/manual/programs/apxs.html.tr.utf8 (+1/-1)
docs/manual/programs/configure.html.en (+1/-1)
docs/manual/programs/configure.html.fr (+1/-1)
docs/manual/programs/configure.html.ko.euc-kr (+1/-1)
docs/manual/programs/configure.html.tr.utf8 (+1/-1)
docs/manual/programs/dbmmanage.html.en (+1/-1)
docs/manual/programs/dbmmanage.html.fr (+1/-1)
docs/manual/programs/dbmmanage.html.ko.euc-kr (+1/-1)
docs/manual/programs/dbmmanage.html.tr.utf8 (+1/-1)
docs/manual/programs/fcgistarter.html.en (+1/-1)
docs/manual/programs/fcgistarter.html.fr (+1/-1)
docs/manual/programs/fcgistarter.html.tr.utf8 (+1/-1)
docs/manual/programs/htcacheclean.html.en (+1/-1)
docs/manual/programs/htcacheclean.html.fr (+1/-1)
docs/manual/programs/htcacheclean.html.ko.euc-kr (+1/-1)
docs/manual/programs/htcacheclean.html.tr.utf8 (+1/-1)
docs/manual/programs/htdbm.html.en (+1/-1)
docs/manual/programs/htdbm.html.fr (+1/-1)
docs/manual/programs/htdbm.html.tr.utf8 (+1/-1)
docs/manual/programs/htdigest.html.en (+1/-1)
docs/manual/programs/htdigest.html.fr (+1/-1)
docs/manual/programs/htdigest.html.ko.euc-kr (+1/-1)
docs/manual/programs/htdigest.html.tr.utf8 (+1/-1)
docs/manual/programs/htpasswd.html.en (+1/-1)
docs/manual/programs/htpasswd.html.fr (+1/-1)
docs/manual/programs/htpasswd.html.ko.euc-kr (+1/-1)
docs/manual/programs/htpasswd.html.tr.utf8 (+1/-1)
docs/manual/programs/httpd.html.en (+1/-1)
docs/manual/programs/httpd.html.fr (+1/-1)
docs/manual/programs/httpd.html.ko.euc-kr (+1/-1)
docs/manual/programs/httpd.html.tr.utf8 (+1/-1)
docs/manual/programs/httxt2dbm.html.en (+1/-1)
docs/manual/programs/httxt2dbm.html.fr (+1/-1)
docs/manual/programs/httxt2dbm.html.tr.utf8 (+1/-1)
docs/manual/programs/index.html.en (+1/-1)
docs/manual/programs/index.html.es (+1/-1)
docs/manual/programs/index.html.fr (+1/-1)
docs/manual/programs/index.html.ko.euc-kr (+1/-1)
docs/manual/programs/index.html.tr.utf8 (+1/-1)
docs/manual/programs/index.html.zh-cn.utf8 (+1/-1)
docs/manual/programs/log_server_status.html.en (+1/-1)
docs/manual/programs/logresolve.html.en (+1/-1)
docs/manual/programs/logresolve.html.fr (+1/-1)
docs/manual/programs/logresolve.html.ko.euc-kr (+1/-1)
docs/manual/programs/logresolve.html.tr.utf8 (+1/-1)
docs/manual/programs/other.html.en (+1/-1)
docs/manual/programs/other.html.fr (+1/-1)
docs/manual/programs/other.html.ko.euc-kr (+1/-1)
docs/manual/programs/other.html.tr.utf8 (+1/-1)
docs/manual/programs/rotatelogs.html.en (+1/-1)
docs/manual/programs/rotatelogs.html.fr (+1/-1)
docs/manual/programs/rotatelogs.html.ko.euc-kr (+1/-1)
docs/manual/programs/rotatelogs.html.tr.utf8 (+1/-1)
docs/manual/programs/split-logfile.html.en (+1/-1)
docs/manual/programs/suexec.html.en (+1/-1)
docs/manual/programs/suexec.html.ko.euc-kr (+1/-1)
docs/manual/programs/suexec.html.tr.utf8 (+1/-1)
docs/manual/rewrite/access.html.en (+1/-1)
docs/manual/rewrite/access.html.fr (+1/-1)
docs/manual/rewrite/advanced.html.en (+1/-1)
docs/manual/rewrite/advanced.html.fr (+1/-1)
docs/manual/rewrite/avoid.html.en (+1/-1)
docs/manual/rewrite/avoid.html.fr (+1/-1)
docs/manual/rewrite/flags.html.en (+1/-1)
docs/manual/rewrite/flags.html.fr (+1/-1)
docs/manual/rewrite/htaccess.html.en (+1/-1)
docs/manual/rewrite/htaccess.html.fr (+1/-1)
docs/manual/rewrite/index.html.en (+1/-1)
docs/manual/rewrite/index.html.fr (+1/-1)
docs/manual/rewrite/index.html.tr.utf8 (+1/-1)
docs/manual/rewrite/index.html.zh-cn.utf8 (+1/-1)
docs/manual/rewrite/intro.html.en (+1/-1)
docs/manual/rewrite/intro.html.fr (+1/-1)
docs/manual/rewrite/proxy.html.en (+1/-1)
docs/manual/rewrite/proxy.html.fr (+1/-1)
docs/manual/rewrite/remapping.html.en (+1/-1)
docs/manual/rewrite/remapping.html.fr (+1/-1)
docs/manual/rewrite/rewritemap.html.en (+1/-1)
docs/manual/rewrite/rewritemap.html.fr (+8/-4)
docs/manual/rewrite/tech.html.en (+1/-1)
docs/manual/rewrite/tech.html.fr (+1/-1)
docs/manual/rewrite/vhosts.html.en (+1/-1)
docs/manual/rewrite/vhosts.html.fr (+1/-1)
docs/manual/sections.html.en (+5/-5)
docs/manual/sections.html.fr (+2/-2)
docs/manual/sections.html.ja.utf8 (+1/-1)
docs/manual/sections.html.ko.euc-kr (+1/-1)
docs/manual/sections.html.tr.utf8 (+3/-2)
docs/manual/server-wide.html.en (+1/-1)
docs/manual/server-wide.html.fr (+1/-1)
docs/manual/server-wide.html.ja.utf8 (+1/-1)
docs/manual/server-wide.html.ko.euc-kr (+1/-1)
docs/manual/server-wide.html.tr.utf8 (+1/-1)
docs/manual/sitemap.html.de (+3/-1)
docs/manual/sitemap.html.en (+3/-1)
docs/manual/sitemap.html.es (+3/-1)
docs/manual/sitemap.html.fr (+3/-1)
docs/manual/sitemap.html.ja.utf8 (+3/-1)
docs/manual/sitemap.html.ko.euc-kr (+3/-1)
docs/manual/sitemap.html.tr.utf8 (+4/-2)
docs/manual/sitemap.html.zh-cn.utf8 (+3/-1)
docs/manual/socache.html.en (+1/-1)
docs/manual/socache.html.fr (+1/-1)
docs/manual/ssl/index.html.en (+1/-1)
docs/manual/ssl/index.html.fr (+1/-1)
docs/manual/ssl/index.html.ja.utf8 (+1/-1)
docs/manual/ssl/index.html.tr.utf8 (+1/-1)
docs/manual/ssl/index.html.zh-cn.utf8 (+1/-1)
docs/manual/ssl/ssl_compat.html.en (+1/-1)
docs/manual/ssl/ssl_compat.html.fr (+1/-1)
docs/manual/ssl/ssl_faq.html.en (+1/-1)
docs/manual/ssl/ssl_faq.html.fr (+1/-1)
docs/manual/ssl/ssl_howto.html.en (+1/-1)
docs/manual/ssl/ssl_howto.html.fr (+1/-1)
docs/manual/ssl/ssl_intro.html.en (+1/-1)
docs/manual/ssl/ssl_intro.html.fr (+1/-1)
docs/manual/ssl/ssl_intro.html.ja.utf8 (+1/-1)
docs/manual/stopping.html.de (+1/-1)
docs/manual/stopping.html.en (+1/-1)
docs/manual/stopping.html.es (+1/-1)
docs/manual/stopping.html.fr (+1/-1)
docs/manual/stopping.html.ja.utf8 (+1/-1)
docs/manual/stopping.html.ko.euc-kr (+1/-1)
docs/manual/stopping.html.tr.utf8 (+1/-1)
docs/manual/style/common.dtd (+5/-1)
docs/manual/style/latex/atbeginend.sty (+80/-0)
docs/manual/style/manualpage.dtd (+29/-0)
docs/manual/style/modulesynopsis.dtd (+92/-0)
docs/manual/style/scripts/MINIFY (+5/-0)
docs/manual/style/scripts/prettify.js (+1622/-0)
docs/manual/style/scripts/prettify.min.js (+124/-0)
docs/manual/style/sitemap.dtd (+42/-0)
docs/manual/style/version.ent (+24/-0)
docs/manual/suexec.html (+21/-0)
docs/manual/suexec.html.en (+643/-0)
docs/manual/suexec.html.fr (+689/-0)
docs/manual/suexec.html.ja.utf8 (+643/-0)
docs/manual/suexec.html.ko.euc-kr (+564/-0)
docs/manual/suexec.html.tr.utf8 (+583/-0)
docs/manual/upgrading.html (+9/-0)
docs/manual/upgrading.html.en (+537/-0)
docs/manual/upgrading.html.fr (+598/-0)
docs/manual/urlmapping.html (+21/-0)
docs/manual/urlmapping.html.en (+379/-0)
docs/manual/urlmapping.html.fr (+402/-0)
docs/manual/urlmapping.html.ja.utf8 (+318/-0)
docs/manual/urlmapping.html.ko.euc-kr (+277/-0)
docs/manual/urlmapping.html.tr.utf8 (+365/-0)
docs/manual/vhosts/details.html (+17/-0)
docs/manual/vhosts/details.html.en (+348/-0)
docs/manual/vhosts/details.html.fr (+369/-0)
docs/manual/vhosts/details.html.ko.euc-kr (+412/-0)
docs/manual/vhosts/details.html.tr.utf8 (+319/-0)
docs/manual/vhosts/examples.html (+21/-0)
docs/manual/vhosts/examples.html.en (+566/-0)
docs/manual/vhosts/examples.html.fr (+586/-0)
docs/manual/vhosts/examples.html.ja.utf8 (+680/-0)
docs/manual/vhosts/examples.html.ko.euc-kr (+657/-0)
docs/manual/vhosts/examples.html.tr.utf8 (+562/-0)
docs/manual/vhosts/fd-limits.html (+21/-0)
docs/manual/vhosts/fd-limits.html.en (+155/-0)
docs/manual/vhosts/fd-limits.html.fr (+167/-0)
docs/manual/vhosts/fd-limits.html.ja.utf8 (+157/-0)
docs/manual/vhosts/fd-limits.html.ko.euc-kr (+152/-0)
docs/manual/vhosts/fd-limits.html.tr.utf8 (+150/-0)
docs/manual/vhosts/index.html (+29/-0)
docs/manual/vhosts/index.html.de (+124/-0)
docs/manual/vhosts/index.html.en (+126/-0)
docs/manual/vhosts/index.html.fr (+127/-0)
docs/manual/vhosts/index.html.ja.utf8 (+120/-0)
docs/manual/vhosts/index.html.ko.euc-kr (+119/-0)
docs/manual/vhosts/index.html.tr.utf8 (+123/-0)
docs/manual/vhosts/index.html.zh-cn.utf8 (+105/-0)
docs/manual/vhosts/ip-based.html (+21/-0)
docs/manual/vhosts/ip-based.html.en (+210/-0)
docs/manual/vhosts/ip-based.html.fr (+213/-0)
docs/manual/vhosts/ip-based.html.ja.utf8 (+190/-0)
docs/manual/vhosts/ip-based.html.ko.euc-kr (+180/-0)
docs/manual/vhosts/ip-based.html.tr.utf8 (+211/-0)
docs/manual/vhosts/mass.html (+17/-0)
docs/manual/vhosts/mass.html.en (+348/-0)
docs/manual/vhosts/mass.html.fr (+363/-0)
docs/manual/vhosts/mass.html.ko.euc-kr (+453/-0)
docs/manual/vhosts/mass.html.tr.utf8 (+334/-0)
docs/manual/vhosts/name-based.html (+25/-0)
docs/manual/vhosts/name-based.html.de (+299/-0)
docs/manual/vhosts/name-based.html.en (+224/-0)
docs/manual/vhosts/name-based.html.fr (+267/-0)
docs/manual/vhosts/name-based.html.ja.utf8 (+303/-0)
docs/manual/vhosts/name-based.html.ko.euc-kr (+266/-0)
docs/manual/vhosts/name-based.html.tr.utf8 (+238/-0)
docs/server-status/README.md (+40/-0)
docs/server-status/server-status.lua (+1901/-0)
emacs-style (+12/-0)
httpd.dep (+68/-0)
httpd.dsp (+111/-0)
httpd.mak (+344/-0)
httpd.spec (+493/-0)
include/.indent.pro (+54/-0)
include/ap_compat.h (+30/-0)
include/ap_config.h (+206/-0)
include/ap_config_auto.h.in (+310/-0)
include/ap_config_layout.h.in (+64/-0)
include/ap_expr.h (+353/-0)
include/ap_hooks.h (+162/-0)
include/ap_listen.h (+163/-0)
include/ap_mmn.h (+554/-0)
include/ap_mpm.h (+235/-0)
include/ap_provider.h (+100/-0)
include/ap_regex.h (+275/-0)
include/ap_regkey.h (+219/-0)
include/ap_release.h (+83/-0)
include/ap_slotmem.h (+199/-0)
include/ap_socache.h (+230/-0)
include/apache_noprobes.h (+344/-0)
include/heartbeat.h (+60/-0)
include/http_config.h (+1408/-0)
include/http_connection.h (+168/-0)
include/http_core.h (+1049/-0)
include/http_log.h (+836/-0)
include/http_main.h (+88/-0)
include/http_protocol.h (+1021/-0)
include/http_request.h (+630/-0)
include/http_vhost.h (+119/-0)
include/httpd.h (+2405/-0)
include/mod_auth.h (+141/-0)
include/mod_core.h (+103/-0)
include/mod_request.h (+64/-0)
include/mpm_common.h (+470/-0)
include/scoreboard.h (+246/-0)
include/util_cfgtree.h (+98/-0)
include/util_charset.h (+72/-0)
include/util_cookies.h (+146/-0)
include/util_ebcdic.h (+92/-0)
include/util_fcgi.h (+280/-0)
include/util_filter.h (+639/-0)
include/util_ldap.h (+398/-0)
include/util_md5.h (+72/-0)
include/util_mutex.h (+223/-0)
include/util_script.h (+233/-0)
include/util_time.h (+117/-0)
include/util_varbuf.h (+197/-0)
include/util_xml.h (+51/-0)
libhttpd.dep (+2421/-0)
libhttpd.dsp (+846/-0)
libhttpd.mak (+1366/-0)
modules/Makefile.in (+6/-0)
modules/NWGNUmakefile (+121/-0)
modules/README (+67/-0)
modules/aaa/.indent.pro (+54/-0)
modules/aaa/Makefile.in (+3/-0)
modules/aaa/NWGNUaccesscompat (+248/-0)
modules/aaa/NWGNUallowmethods (+248/-0)
modules/aaa/NWGNUauthbasc (+248/-0)
modules/aaa/NWGNUauthdigt (+248/-0)
modules/aaa/NWGNUauthform (+250/-0)
modules/aaa/NWGNUauthnano (+248/-0)
modules/aaa/NWGNUauthndbd (+249/-0)
modules/aaa/NWGNUauthndbm (+248/-0)
modules/aaa/NWGNUauthnfil (+248/-0)
modules/aaa/NWGNUauthnsocache (+248/-0)
modules/aaa/NWGNUauthnzldap (+264/-0)
modules/aaa/NWGNUauthzdbd (+249/-0)
modules/aaa/NWGNUauthzdbm (+248/-0)
modules/aaa/NWGNUauthzgrp (+247/-0)
modules/aaa/NWGNUauthzusr (+247/-0)
modules/aaa/NWGNUmakefile (+270/-0)
modules/aaa/config.m4 (+84/-0)
modules/aaa/mod_access_compat.c (+377/-0)
modules/aaa/mod_access_compat.dep (+59/-0)
modules/aaa/mod_access_compat.dsp (+111/-0)
modules/aaa/mod_access_compat.mak (+353/-0)
modules/aaa/mod_allowmethods.c (+158/-0)
modules/aaa/mod_allowmethods.dep (+56/-0)
modules/aaa/mod_allowmethods.dsp (+111/-0)
modules/aaa/mod_allowmethods.mak (+353/-0)
modules/aaa/mod_auth_basic.c (+512/-0)
modules/aaa/mod_auth_basic.dep (+63/-0)
modules/aaa/mod_auth_basic.dsp (+111/-0)
modules/aaa/mod_auth_basic.mak (+353/-0)
modules/aaa/mod_auth_digest.c (+1976/-0)
modules/aaa/mod_auth_digest.dep (+68/-0)
modules/aaa/mod_auth_digest.dsp (+111/-0)
modules/aaa/mod_auth_digest.mak (+353/-0)
modules/aaa/mod_auth_form.c (+1333/-0)
modules/aaa/mod_auth_form.dep (+66/-0)
modules/aaa/mod_auth_form.dsp (+111/-0)
modules/aaa/mod_auth_form.mak (+353/-0)
modules/aaa/mod_authn_anon.c (+215/-0)
modules/aaa/mod_authn_anon.dep (+58/-0)
modules/aaa/mod_authn_anon.dsp (+111/-0)
modules/aaa/mod_authn_anon.mak (+381/-0)
modules/aaa/mod_authn_core.c (+386/-0)
modules/aaa/mod_authn_core.dep (+58/-0)
modules/aaa/mod_authn_core.dsp (+111/-0)
modules/aaa/mod_authn_core.mak (+381/-0)
modules/aaa/mod_authn_dbd.c (+309/-0)
modules/aaa/mod_authn_dbd.dep (+56/-0)
modules/aaa/mod_authn_dbd.dsp (+115/-0)
modules/aaa/mod_authn_dbd.mak (+409/-0)
modules/aaa/mod_authn_dbm.c (+208/-0)
modules/aaa/mod_authn_dbm.dep (+61/-0)
modules/aaa/mod_authn_dbm.dsp (+111/-0)
modules/aaa/mod_authn_dbm.mak (+381/-0)
modules/aaa/mod_authn_file.c (+194/-0)
modules/aaa/mod_authn_file.dep (+60/-0)
modules/aaa/mod_authn_file.dsp (+111/-0)
modules/aaa/mod_authn_file.mak (+381/-0)
modules/aaa/mod_authn_socache.c (+475/-0)
modules/aaa/mod_authn_socache.dep (+62/-0)
modules/aaa/mod_authn_socache.dsp (+111/-0)
modules/aaa/mod_authn_socache.mak (+353/-0)
modules/aaa/mod_authnz_fcgi.c (+1363/-0)
modules/aaa/mod_authnz_fcgi.dep (+61/-0)
modules/aaa/mod_authnz_fcgi.dsp (+119/-0)
modules/aaa/mod_authnz_fcgi.mak (+353/-0)
modules/aaa/mod_authnz_ldap.c (+1962/-0)
modules/aaa/mod_authnz_ldap.dep (+70/-0)
modules/aaa/mod_authnz_ldap.dsp (+111/-0)
modules/aaa/mod_authnz_ldap.mak (+381/-0)
modules/aaa/mod_authz_core.c (+1164/-0)
modules/aaa/mod_authz_core.dep (+60/-0)
modules/aaa/mod_authz_core.dsp (+111/-0)
modules/aaa/mod_authz_core.mak (+381/-0)
modules/aaa/mod_authz_dbd.c (+409/-0)
modules/aaa/mod_authz_dbd.dep (+61/-0)
modules/aaa/mod_authz_dbd.dsp (+119/-0)
modules/aaa/mod_authz_dbd.h (+44/-0)
modules/aaa/mod_authz_dbd.mak (+409/-0)
modules/aaa/mod_authz_dbm.c (+336/-0)
modules/aaa/mod_authz_dbm.dep (+62/-0)
modules/aaa/mod_authz_dbm.dsp (+111/-0)
modules/aaa/mod_authz_dbm.mak (+381/-0)
modules/aaa/mod_authz_groupfile.c (+331/-0)
modules/aaa/mod_authz_groupfile.dep (+61/-0)
modules/aaa/mod_authz_groupfile.dsp (+111/-0)
modules/aaa/mod_authz_groupfile.mak (+381/-0)
modules/aaa/mod_authz_host.c (+410/-0)
modules/aaa/mod_authz_host.dep (+60/-0)
modules/aaa/mod_authz_host.dsp (+111/-0)
modules/aaa/mod_authz_host.mak (+381/-0)
modules/aaa/mod_authz_owner.c (+189/-0)
modules/aaa/mod_authz_owner.dep (+59/-0)
modules/aaa/mod_authz_owner.dsp (+111/-0)
modules/aaa/mod_authz_owner.h (+27/-0)
modules/aaa/mod_authz_owner.mak (+381/-0)
modules/aaa/mod_authz_user.c (+146/-0)
modules/aaa/mod_authz_user.dep (+58/-0)
modules/aaa/mod_authz_user.dsp (+111/-0)
modules/aaa/mod_authz_user.mak (+381/-0)
modules/arch/netware/libprews.c (+79/-0)
modules/arch/netware/mod_netware.c (+206/-0)
modules/arch/netware/mod_nw_ssl.c (+1285/-0)
modules/arch/unix/Makefile.in (+3/-0)
modules/arch/unix/config5.m4 (+24/-0)
modules/arch/unix/mod_privileges.c (+588/-0)
modules/arch/unix/mod_unixd.c (+426/-0)
modules/arch/unix/mod_unixd.h (+41/-0)
modules/arch/win32/Makefile.in (+3/-0)
modules/arch/win32/config.m4 (+9/-0)
modules/arch/win32/mod_isapi.c (+1727/-0)
modules/arch/win32/mod_isapi.dep (+61/-0)
modules/arch/win32/mod_isapi.dsp (+115/-0)
modules/arch/win32/mod_isapi.h (+271/-0)
modules/arch/win32/mod_isapi.mak (+353/-0)
modules/arch/win32/mod_win32.c (+563/-0)
modules/cache/.indent.pro (+54/-0)
modules/cache/Makefile.in (+3/-0)
modules/cache/NWGNUcach_dsk (+262/-0)
modules/cache/NWGNUcach_socache (+263/-0)
modules/cache/NWGNUmakefile (+250/-0)
modules/cache/NWGNUmod_cach (+265/-0)
modules/cache/NWGNUsocachdbm (+261/-0)
modules/cache/NWGNUsocachmem (+261/-0)
modules/cache/NWGNUsocachshmcb (+261/-0)
modules/cache/cache_common.h (+56/-0)
modules/cache/cache_disk_common.h (+68/-0)
modules/cache/cache_socache_common.h (+57/-0)
modules/cache/cache_storage.c (+791/-0)
modules/cache/cache_storage.h (+76/-0)
modules/cache/cache_util.c (+1344/-0)
modules/cache/cache_util.h (+341/-0)
modules/cache/config.m4 (+142/-0)
modules/cache/mod_cache.c (+2717/-0)
modules/cache/mod_cache.dep (+194/-0)
modules/cache/mod_cache.dsp (+131/-0)
modules/cache/mod_cache.h (+192/-0)
modules/cache/mod_cache.mak (+370/-0)
modules/cache/mod_cache_disk.c (+1584/-0)
modules/cache/mod_cache_disk.dep (+59/-0)
modules/cache/mod_cache_disk.dsp (+115/-0)
modules/cache/mod_cache_disk.h (+91/-0)
modules/cache/mod_cache_disk.mak (+381/-0)
modules/cache/mod_cache_socache.c (+1543/-0)
modules/cache/mod_cache_socache.dep (+67/-0)
modules/cache/mod_cache_socache.dsp (+115/-0)
modules/cache/mod_cache_socache.mak (+381/-0)
modules/cache/mod_file_cache.c (+414/-0)
modules/cache/mod_file_cache.dep (+56/-0)
modules/cache/mod_file_cache.dsp (+111/-0)
modules/cache/mod_file_cache.exp (+1/-0)
modules/cache/mod_file_cache.mak (+353/-0)
modules/cache/mod_socache_dbm.c (+595/-0)
modules/cache/mod_socache_dbm.dep (+60/-0)
modules/cache/mod_socache_dbm.dsp (+111/-0)
modules/cache/mod_socache_dbm.mak (+353/-0)
modules/cache/mod_socache_dc.c (+198/-0)
modules/cache/mod_socache_dc.dep (+55/-0)
modules/cache/mod_socache_dc.dsp (+111/-0)
modules/cache/mod_socache_dc.mak (+353/-0)
modules/cache/mod_socache_memcache.c (+431/-0)
modules/cache/mod_socache_memcache.dep (+59/-0)
modules/cache/mod_socache_memcache.dsp (+111/-0)
modules/cache/mod_socache_memcache.mak (+353/-0)
modules/cache/mod_socache_shmcb.c (+1072/-0)
modules/cache/mod_socache_shmcb.dep (+56/-0)
modules/cache/mod_socache_shmcb.dsp (+111/-0)
modules/cache/mod_socache_shmcb.mak (+353/-0)
modules/cluster/Makefile.in (+3/-0)
modules/cluster/NWGNUmakefile (+246/-0)
modules/cluster/NWGNUmodheartbeat (+257/-0)
modules/cluster/NWGNUmodheartmonitor (+257/-0)
modules/cluster/README.heartbeat (+33/-0)
modules/cluster/README.heartmonitor (+30/-0)
modules/cluster/config5.m4 (+17/-0)
modules/cluster/mod_heartbeat.c (+228/-0)
modules/cluster/mod_heartbeat.dep (+55/-0)
modules/cluster/mod_heartbeat.dsp (+123/-0)
modules/cluster/mod_heartbeat.mak (+380/-0)
modules/cluster/mod_heartmonitor.c (+918/-0)
modules/cluster/mod_heartmonitor.dep (+63/-0)
modules/cluster/mod_heartmonitor.dsp (+123/-0)
modules/cluster/mod_heartmonitor.mak (+380/-0)
modules/config7.m4 (+56/-0)
modules/core/Makefile.in (+3/-0)
modules/core/NWGNUmakefile (+257/-0)
modules/core/config.m4 (+60/-0)
modules/core/mod_macro.c (+950/-0)
modules/core/mod_macro.dep (+45/-0)
modules/core/mod_macro.dsp (+111/-0)
modules/core/mod_macro.mak (+353/-0)
modules/core/mod_so.c (+442/-0)
modules/core/mod_so.h (+38/-0)
modules/core/mod_watchdog.c (+723/-0)
modules/core/mod_watchdog.dep (+59/-0)
modules/core/mod_watchdog.dsp (+115/-0)
modules/core/mod_watchdog.h (+213/-0)
modules/core/mod_watchdog.mak (+353/-0)
modules/core/test/Makefile (+67/-0)
modules/core/test/conf/inc63_1.conf (+5/-0)
modules/core/test/conf/inc63_2.conf (+3/-0)
modules/core/test/conf/test01.conf (+3/-0)
modules/core/test/conf/test02.conf (+3/-0)
modules/core/test/conf/test03.conf (+5/-0)
modules/core/test/conf/test04.conf (+5/-0)
modules/core/test/conf/test05.conf (+5/-0)
modules/core/test/conf/test06.conf (+6/-0)
modules/core/test/conf/test07.conf (+3/-0)
modules/core/test/conf/test08.conf (+3/-0)
modules/core/test/conf/test09.conf (+6/-0)
modules/core/test/conf/test10.conf (+10/-0)
modules/core/test/conf/test11.conf (+15/-0)
modules/core/test/conf/test12.conf (+12/-0)
modules/core/test/conf/test13.conf (+18/-0)
modules/core/test/conf/test14.conf (+23/-0)
modules/core/test/conf/test15.conf (+9/-0)
modules/core/test/conf/test16.conf (+11/-0)
modules/core/test/conf/test17.conf (+10/-0)
modules/core/test/conf/test18.conf (+10/-0)
modules/core/test/conf/test19.conf (+26/-0)
modules/core/test/conf/test20.conf (+11/-0)
modules/core/test/conf/test21.conf (+11/-0)
modules/core/test/conf/test22.conf (+11/-0)
modules/core/test/conf/test23.conf (+15/-0)
modules/core/test/conf/test24.conf (+23/-0)
modules/core/test/conf/test25.conf (+27/-0)
modules/core/test/conf/test26.conf (+19/-0)
modules/core/test/conf/test27.conf (+22/-0)
modules/core/test/conf/test28.conf (+13/-0)
modules/core/test/conf/test29.conf (+10/-0)
modules/core/test/conf/test30.conf (+12/-0)
modules/core/test/conf/test31.conf (+16/-0)
modules/core/test/conf/test32.conf (+7/-0)
modules/core/test/conf/test33.conf (+3/-0)
modules/core/test/conf/test34.conf (+14/-0)
modules/core/test/conf/test35.conf (+10/-0)
modules/core/test/conf/test36.conf (+12/-0)
modules/core/test/conf/test37.conf (+7/-0)
modules/core/test/conf/test38.conf (+10/-0)
modules/core/test/conf/test39.conf (+23/-0)
modules/core/test/conf/test40.conf (+33/-0)
modules/core/test/conf/test41.conf (+20/-0)
modules/core/test/conf/test42.conf (+13/-0)
modules/core/test/conf/test43.conf (+29/-0)
modules/core/test/conf/test44.conf (+19/-0)
modules/core/test/conf/test45.conf (+7/-0)
modules/core/test/conf/test46.conf (+11/-0)
modules/core/test/conf/test47.conf (+15/-0)
modules/core/test/conf/test48.conf (+23/-0)
modules/core/test/conf/test49.conf (+2/-0)
modules/core/test/conf/test50.conf (+5/-0)
modules/core/test/conf/test51.conf (+9/-0)
modules/core/test/conf/test52.conf (+8/-0)
modules/core/test/conf/test53.conf (+2/-0)
modules/core/test/conf/test54.conf (+6/-0)
modules/core/test/conf/test55.conf (+11/-0)
modules/core/test/conf/test56.conf (+18/-0)
modules/core/test/conf/test57.conf (+4/-0)
modules/core/test/conf/test58.conf (+4/-0)
modules/core/test/conf/test59.conf (+4/-0)
modules/core/test/conf/test60.conf (+17/-0)
modules/core/test/conf/test61.conf (+18/-0)
modules/core/test/conf/test62.conf (+25/-0)
modules/core/test/conf/test63.conf (+9/-0)
modules/core/test/conf/test64.conf (+5/-0)
modules/core/test/conf/test65.conf (+11/-0)
modules/core/test/conf/test66.conf (+7/-0)
modules/core/test/conf/test67.conf (+1/-0)
modules/core/test/conf/test68.conf (+5/-0)
modules/core/test/conf/test69.conf (+14/-0)
modules/core/test/ref/test01.out (+3/-0)
modules/core/test/ref/test02.out (+3/-0)
modules/core/test/ref/test03.out (+3/-0)
modules/core/test/ref/test04.out (+3/-0)
modules/core/test/ref/test05.out (+3/-0)
modules/core/test/ref/test06.out (+3/-0)
modules/core/test/ref/test07.out (+3/-0)
modules/core/test/ref/test08.out (+3/-0)
modules/core/test/ref/test09.out (+3/-0)
modules/core/test/ref/test10.out (+3/-0)
modules/core/test/ref/test11.out (+6/-0)
modules/core/test/ref/test12.out (+7/-0)
modules/core/test/ref/test13.out (+8/-0)
modules/core/test/ref/test14.out (+14/-0)
modules/core/test/ref/test15.out (+6/-0)
modules/core/test/ref/test16.out (+5/-0)
modules/core/test/ref/test17.out (+7/-0)
modules/core/test/ref/test18.out (+7/-0)
modules/core/test/ref/test19.out (+9/-0)
modules/core/test/ref/test20.out (+4/-0)
modules/core/test/ref/test21.out (+5/-0)
modules/core/test/ref/test22.out (+6/-0)
modules/core/test/ref/test23.out (+7/-0)
modules/core/test/ref/test24.out (+8/-0)
modules/core/test/ref/test25.out (+9/-0)
modules/core/test/ref/test26.out (+11/-0)
modules/core/test/ref/test27.out (+8/-0)
modules/core/test/ref/test28.out (+6/-0)
modules/core/test/ref/test29.out (+4/-0)
modules/core/test/ref/test30.out (+7/-0)
modules/core/test/ref/test31.out (+23/-0)
modules/core/test/ref/test32.out (+3/-0)
modules/core/test/ref/test33.out (+3/-0)
modules/core/test/ref/test34.out (+13/-0)
modules/core/test/ref/test35.out (+13/-0)
modules/core/test/ref/test36.out (+20/-0)
modules/core/test/ref/test37.out (+3/-0)
modules/core/test/ref/test38.out (+6/-0)
modules/core/test/ref/test39.out (+7/-0)
modules/core/test/ref/test40.out (+18/-0)
modules/core/test/ref/test41.out (+9/-0)
modules/core/test/ref/test42.out (+15/-0)
modules/core/test/ref/test43.out (+8/-0)
modules/core/test/ref/test44.out (+5/-0)
modules/core/test/ref/test45.out (+19/-0)
modules/core/test/ref/test46.out (+9/-0)
modules/core/test/ref/test47.out (+8/-0)
modules/core/test/ref/test48.out (+20/-0)
modules/core/test/ref/test49.out (+3/-0)
modules/core/test/ref/test50.out (+3/-0)
modules/core/test/ref/test51.out (+3/-0)
modules/core/test/ref/test52.out (+6/-0)
modules/core/test/ref/test53.out (+3/-0)
modules/core/test/ref/test54.out (+6/-0)
modules/core/test/ref/test55.out (+8/-0)
modules/core/test/ref/test56.out (+12/-0)
modules/core/test/ref/test57.out (+3/-0)
modules/core/test/ref/test58.out (+3/-0)
modules/core/test/ref/test59.out (+3/-0)
modules/core/test/ref/test60.out (+15/-0)
modules/core/test/ref/test61.out (+9/-0)
modules/core/test/ref/test62.out (+15/-0)
modules/core/test/ref/test63.out (+10/-0)
modules/core/test/ref/test64.out (+7/-0)
modules/core/test/ref/test65.out (+7/-0)
modules/core/test/ref/test66.out (+7/-0)
modules/core/test/ref/test67.out (+5/-0)
modules/core/test/ref/test68.out (+6/-0)
modules/core/test/ref/test69.out (+10/-0)
modules/database/Makefile.in (+3/-0)
modules/database/NWGNUmakefile (+262/-0)
modules/database/config.m4 (+8/-0)
modules/database/mod_dbd.c (+992/-0)
modules/database/mod_dbd.dep (+58/-0)
modules/database/mod_dbd.dsp (+115/-0)
modules/database/mod_dbd.h (+123/-0)
modules/database/mod_dbd.mak (+353/-0)
modules/dav/fs/Makefile.in (+3/-0)
modules/dav/fs/NWGNUmakefile (+269/-0)
modules/dav/fs/config6.m4 (+23/-0)
modules/dav/fs/dbm.c (+771/-0)
modules/dav/fs/lock.c (+1445/-0)
modules/dav/fs/mod_dav_fs.c (+108/-0)
modules/dav/fs/mod_dav_fs.dep (+203/-0)
modules/dav/fs/mod_dav_fs.dsp (+135/-0)
modules/dav/fs/mod_dav_fs.mak (+407/-0)
modules/dav/fs/repos.c (+2254/-0)
modules/dav/fs/repos.h (+84/-0)
modules/dav/lock/Makefile.in (+3/-0)
modules/dav/lock/NWGNUmakefile (+259/-0)
modules/dav/lock/config6.m4 (+17/-0)
modules/dav/lock/locks.c (+1211/-0)
modules/dav/lock/locks.h (+33/-0)
modules/dav/lock/mod_dav_lock.c (+104/-0)
modules/dav/lock/mod_dav_lock.dep (+100/-0)
modules/dav/lock/mod_dav_lock.dsp (+127/-0)
modules/dav/lock/mod_dav_lock.mak (+389/-0)
modules/dav/main/Makefile.in (+3/-0)
modules/dav/main/NWGNUmakefile (+268/-0)
modules/dav/main/config5.m4 (+21/-0)
modules/dav/main/liveprop.c (+140/-0)
modules/dav/main/mod_dav.c (+4946/-0)
modules/dav/main/mod_dav.dep (+354/-0)
modules/dav/main/mod_dav.dsp (+147/-0)
modules/dav/main/mod_dav.h (+2553/-0)
modules/dav/main/mod_dav.mak (+406/-0)
modules/dav/main/props.c (+1125/-0)
modules/dav/main/providers.c (+58/-0)
modules/dav/main/std_liveprop.c (+226/-0)
modules/dav/main/util.c (+2152/-0)
modules/dav/main/util_lock.c (+798/-0)
modules/debugging/Makefile.in (+3/-0)
modules/debugging/NWGNUmakefile (+246/-0)
modules/debugging/NWGNUmodbucketeer (+248/-0)
modules/debugging/NWGNUmoddumpio (+248/-0)
modules/debugging/README (+1/-0)
modules/debugging/config.m4 (+7/-0)
modules/debugging/mod_bucketeer.c (+187/-0)
modules/debugging/mod_bucketeer.dep (+53/-0)
modules/debugging/mod_bucketeer.dsp (+111/-0)
modules/debugging/mod_bucketeer.mak (+353/-0)
modules/debugging/mod_dumpio.c (+250/-0)
modules/debugging/mod_dumpio.dep (+50/-0)
modules/debugging/mod_dumpio.dsp (+111/-0)
modules/debugging/mod_dumpio.mak (+353/-0)
modules/echo/.indent.pro (+54/-0)
modules/echo/Makefile.in (+3/-0)
modules/echo/NWGNUmakefile (+257/-0)
modules/echo/config.m4 (+9/-0)
modules/echo/mod_echo.c (+218/-0)
modules/echo/mod_echo.dep (+56/-0)
modules/echo/mod_echo.dsp (+111/-0)
modules/echo/mod_echo.mak (+353/-0)
modules/examples/Makefile.in (+3/-0)
modules/examples/NWGNUcase_flt (+256/-0)
modules/examples/NWGNUcase_flt_in (+256/-0)
modules/examples/NWGNUexample_hooks (+257/-0)
modules/examples/NWGNUexample_ipc (+257/-0)
modules/examples/NWGNUmakefile (+257/-0)
modules/examples/README (+54/-0)
modules/examples/config.m4 (+9/-0)
modules/examples/mod_case_filter.c (+139/-0)
modules/examples/mod_case_filter.dep (+46/-0)
modules/examples/mod_case_filter.dsp (+111/-0)
modules/examples/mod_case_filter.mak (+353/-0)
modules/examples/mod_case_filter_in.c (+160/-0)
modules/examples/mod_case_filter_in.dep (+46/-0)
modules/examples/mod_case_filter_in.dsp (+111/-0)
modules/examples/mod_case_filter_in.mak (+353/-0)
modules/examples/mod_example_hooks.c (+1534/-0)
modules/examples/mod_example_hooks.dep (+62/-0)
modules/examples/mod_example_hooks.dsp (+111/-0)
modules/examples/mod_example_hooks.mak (+353/-0)
modules/examples/mod_example_ipc.c (+356/-0)
modules/examples/mod_example_ipc.dep (+56/-0)
modules/examples/mod_example_ipc.dsp (+111/-0)
modules/examples/mod_example_ipc.mak (+353/-0)
modules/experimental/.indent.pro (+54/-0)
modules/experimental/Makefile.in (+3/-0)
modules/experimental/NWGNUmakefile (+253/-0)
modules/experimental/config.m4 (+4/-0)
modules/filters/.indent.pro (+54/-0)
modules/filters/Makefile.in (+3/-0)
modules/filters/NWGNUcharsetl (+257/-0)
modules/filters/NWGNUdeflate (+279/-0)
modules/filters/NWGNUextfiltr (+248/-0)
modules/filters/NWGNUmakefile (+273/-0)
modules/filters/NWGNUmod_data (+248/-0)
modules/filters/NWGNUmod_filter (+248/-0)
modules/filters/NWGNUmod_request (+248/-0)
modules/filters/NWGNUmodbuffer (+256/-0)
modules/filters/NWGNUmodsed (+259/-0)
modules/filters/NWGNUproxyhtml (+261/-0)
modules/filters/NWGNUratelimit (+256/-0)
modules/filters/NWGNUreflector (+256/-0)
modules/filters/NWGNUreqtimeout (+256/-0)
modules/filters/NWGNUsubstitute (+256/-0)
modules/filters/NWGNUxml2enc (+258/-0)
modules/filters/config.m4 (+197/-0)
modules/filters/libsed.h (+172/-0)
modules/filters/mod_brotli.c (+592/-0)
modules/filters/mod_brotli.dep (+45/-0)
modules/filters/mod_brotli.dsp (+111/-0)
modules/filters/mod_brotli.mak (+353/-0)
modules/filters/mod_buffer.c (+353/-0)
modules/filters/mod_buffer.dep (+48/-0)
modules/filters/mod_buffer.dsp (+111/-0)
modules/filters/mod_buffer.mak (+353/-0)
modules/filters/mod_charset_lite.c (+1142/-0)
modules/filters/mod_charset_lite.dep (+60/-0)
modules/filters/mod_charset_lite.dsp (+111/-0)
modules/filters/mod_charset_lite.exp (+1/-0)
modules/filters/mod_charset_lite.mak (+353/-0)
modules/filters/mod_data.c (+255/-0)
modules/filters/mod_data.dep (+55/-0)
modules/filters/mod_data.dsp (+111/-0)
modules/filters/mod_data.mak (+353/-0)
modules/filters/mod_deflate.c (+1912/-0)
modules/filters/mod_deflate.dep (+52/-0)
modules/filters/mod_deflate.dsp (+111/-0)
modules/filters/mod_deflate.exp (+1/-0)
modules/filters/mod_deflate.mak (+353/-0)
modules/filters/mod_ext_filter.c (+956/-0)
modules/filters/mod_ext_filter.dep (+58/-0)
modules/filters/mod_ext_filter.dsp (+111/-0)
modules/filters/mod_ext_filter.exp (+1/-0)
modules/filters/mod_ext_filter.mak (+353/-0)
modules/filters/mod_filter.c (+767/-0)
modules/filters/mod_filter.dep (+50/-0)
modules/filters/mod_filter.dsp (+111/-0)
modules/filters/mod_filter.mak (+353/-0)
modules/filters/mod_include.c (+4236/-0)
modules/filters/mod_include.dep (+63/-0)
modules/filters/mod_include.dsp (+115/-0)
modules/filters/mod_include.exp (+1/-0)
modules/filters/mod_include.h (+120/-0)
modules/filters/mod_include.mak (+353/-0)
modules/filters/mod_proxy_html.c (+1329/-0)
modules/filters/mod_proxy_html.dep (+58/-0)
modules/filters/mod_proxy_html.dsp (+123/-0)
modules/filters/mod_proxy_html.mak (+352/-0)
modules/filters/mod_ratelimit.c (+356/-0)
modules/filters/mod_ratelimit.dep (+45/-0)
modules/filters/mod_ratelimit.dsp (+115/-0)
modules/filters/mod_ratelimit.h (+51/-0)
modules/filters/mod_ratelimit.mak (+353/-0)
modules/filters/mod_reflector.c (+226/-0)
modules/filters/mod_reflector.dep (+57/-0)
modules/filters/mod_reflector.dsp (+111/-0)
modules/filters/mod_reflector.mak (+353/-0)
modules/filters/mod_reqtimeout.c (+657/-0)
modules/filters/mod_reqtimeout.dep (+58/-0)
modules/filters/mod_reqtimeout.dsp (+111/-0)
modules/filters/mod_reqtimeout.mak (+353/-0)
modules/filters/mod_request.c (+397/-0)
modules/filters/mod_request.dep (+55/-0)
modules/filters/mod_request.dsp (+115/-0)
modules/filters/mod_request.mak (+353/-0)
modules/filters/mod_sed.c (+537/-0)
modules/filters/mod_sed.dep (+109/-0)
modules/filters/mod_sed.dsp (+135/-0)
modules/filters/mod_sed.mak (+380/-0)
modules/filters/mod_substitute.c (+730/-0)
modules/filters/mod_substitute.dep (+53/-0)
modules/filters/mod_substitute.dsp (+111/-0)
modules/filters/mod_substitute.mak (+353/-0)
modules/filters/mod_xml2enc.c (+631/-0)
modules/filters/mod_xml2enc.dep (+54/-0)
modules/filters/mod_xml2enc.dsp (+123/-0)
modules/filters/mod_xml2enc.h (+55/-0)
modules/filters/mod_xml2enc.mak (+352/-0)
modules/filters/regexp.c (+599/-0)
modules/filters/regexp.h (+112/-0)
modules/filters/sed.h (+61/-0)
modules/filters/sed0.c (+1026/-0)
modules/filters/sed1.c (+1020/-0)
modules/generators/.indent.pro (+54/-0)
modules/generators/Makefile.in (+3/-0)
modules/generators/NWGNUautoindex (+249/-0)
modules/generators/NWGNUinfo (+248/-0)
modules/generators/NWGNUmakefile (+249/-0)
modules/generators/NWGNUmod_asis (+249/-0)
modules/generators/NWGNUmod_cgi (+249/-0)
modules/generators/NWGNUstatus (+248/-0)
modules/generators/config5.m4 (+81/-0)
modules/generators/mod_asis.c (+128/-0)
modules/generators/mod_asis.dep (+56/-0)
modules/generators/mod_asis.dsp (+111/-0)
modules/generators/mod_asis.exp (+1/-0)
modules/generators/mod_asis.mak (+353/-0)
modules/generators/mod_autoindex.c (+2348/-0)
modules/generators/mod_autoindex.dep (+61/-0)
modules/generators/mod_autoindex.dsp (+111/-0)
modules/generators/mod_autoindex.exp (+1/-0)
modules/generators/mod_autoindex.mak (+353/-0)
modules/generators/mod_cgi.c (+1281/-0)
modules/generators/mod_cgi.dep (+64/-0)
modules/generators/mod_cgi.dsp (+115/-0)
modules/generators/mod_cgi.exp (+1/-0)
modules/generators/mod_cgi.h (+67/-0)
modules/generators/mod_cgi.mak (+353/-0)
modules/generators/mod_cgid.c (+1980/-0)
modules/generators/mod_cgid.exp (+1/-0)
modules/generators/mod_info.c (+1011/-0)
modules/generators/mod_info.dep (+66/-0)
modules/generators/mod_info.dsp (+111/-0)
modules/generators/mod_info.exp (+1/-0)
modules/generators/mod_info.mak (+353/-0)
modules/generators/mod_status.c (+1014/-0)
modules/generators/mod_status.dep (+60/-0)
modules/generators/mod_status.dsp (+111/-0)
modules/generators/mod_status.exp (+1/-0)
modules/generators/mod_status.h (+64/-0)
modules/generators/mod_status.mak (+353/-0)
modules/generators/mod_suexec.c (+139/-0)
modules/generators/mod_suexec.h (+33/-0)
modules/http/.indent.pro (+54/-0)
modules/http/Makefile.in (+3/-0)
modules/http/byterange_filter.c (+611/-0)
modules/http/chunk_filter.c (+196/-0)
modules/http/config.m4 (+20/-0)
modules/http/http_core.c (+328/-0)
modules/http/http_etag.c (+220/-0)
modules/http/http_filters.c (+1907/-0)
modules/http/http_protocol.c (+1690/-0)
modules/http/http_request.c (+843/-0)
modules/http/mod_mime.c (+1026/-0)
modules/http/mod_mime.dep (+55/-0)
modules/http/mod_mime.dsp (+111/-0)
modules/http/mod_mime.exp (+1/-0)
modules/http/mod_mime.mak (+353/-0)
modules/http2/.gitignore (+35/-0)
modules/http2/Makefile.in (+20/-0)
modules/http2/NWGNUmakefile (+246/-0)
modules/http2/NWGNUmod_http2 (+395/-0)
modules/http2/NWGNUproxyht2 (+288/-0)
modules/http2/README.h2 (+70/-0)
modules/http2/config2.m4 (+235/-0)
modules/http2/h2.h (+161/-0)
modules/http2/h2_alt_svc.c (+131/-0)
modules/http2/h2_alt_svc.h (+40/-0)
modules/http2/h2_bucket_beam.c (+1283/-0)
modules/http2/h2_bucket_beam.h (+406/-0)
modules/http2/h2_bucket_eos.c (+127/-0)
modules/http2/h2_bucket_eos.h (+32/-0)
modules/http2/h2_config.c (+678/-0)
modules/http2/h2_config.h (+104/-0)
modules/http2/h2_conn.c (+354/-0)
modules/http2/h2_conn.h (+77/-0)
modules/http2/h2_conn_io.c (+389/-0)
modules/http2/h2_conn_io.h (+77/-0)
modules/http2/h2_ctx.c (+121/-0)
modules/http2/h2_ctx.h (+78/-0)
modules/http2/h2_filter.c (+566/-0)
modules/http2/h2_filter.h (+73/-0)
modules/http2/h2_from_h1.c (+863/-0)
modules/http2/h2_from_h1.h (+50/-0)
modules/http2/h2_h2.c (+765/-0)
modules/http2/h2_h2.h (+79/-0)
modules/http2/h2_headers.c (+178/-0)
modules/http2/h2_headers.h (+77/-0)
modules/http2/h2_mplx.c (+1272/-0)
modules/http2/h2_mplx.h (+330/-0)
modules/http2/h2_ngn_shed.c (+392/-0)
modules/http2/h2_ngn_shed.h (+79/-0)
modules/http2/h2_private.h (+28/-0)
modules/http2/h2_proxy_session.c (+1584/-0)
modules/http2/h2_proxy_session.h (+128/-0)
modules/http2/h2_proxy_util.c (+1337/-0)
modules/http2/h2_proxy_util.h (+256/-0)
modules/http2/h2_push.c (+1060/-0)
modules/http2/h2_push.h (+120/-0)
modules/http2/h2_request.c (+338/-0)
modules/http2/h2_request.h (+48/-0)
modules/http2/h2_session.c (+2289/-0)
modules/http2/h2_session.h (+225/-0)
modules/http2/h2_stream.c (+1074/-0)
modules/http2/h2_stream.h (+306/-0)
modules/http2/h2_switch.c (+194/-0)
modules/http2/h2_switch.h (+30/-0)
modules/http2/h2_task.c (+762/-0)
modules/http2/h2_task.h (+127/-0)
modules/http2/h2_util.c (+2011/-0)
modules/http2/h2_util.h (+544/-0)
modules/http2/h2_version.h (+41/-0)
modules/http2/h2_workers.c (+383/-0)
modules/http2/h2_workers.h (+82/-0)
modules/http2/mod_http2.c (+387/-0)
modules/http2/mod_http2.dep (+1433/-0)
modules/http2/mod_http2.dsp (+195/-0)
modules/http2/mod_http2.h (+96/-0)
modules/http2/mod_http2.mak (+542/-0)
modules/http2/mod_proxy_http2.c (+674/-0)
modules/http2/mod_proxy_http2.dep (+208/-0)
modules/http2/mod_proxy_http2.dsp (+119/-0)
modules/http2/mod_proxy_http2.h (+21/-0)
modules/http2/mod_proxy_http2.mak (+427/-0)
modules/ldap/Makefile.in (+3/-0)
modules/ldap/NWGNUmakefile (+264/-0)
modules/ldap/README.ldap (+47/-0)
modules/ldap/config.m4 (+25/-0)
modules/ldap/mod_ldap.dep (+192/-0)
modules/ldap/mod_ldap.dsp (+127/-0)
modules/ldap/mod_ldap.mak (+371/-0)
modules/ldap/util_ldap.c (+3221/-0)
modules/ldap/util_ldap_cache.c (+467/-0)
modules/ldap/util_ldap_cache.h (+206/-0)
modules/ldap/util_ldap_cache_mgr.c (+901/-0)
modules/loggers/.indent.pro (+54/-0)
modules/loggers/Makefile.in (+3/-0)
modules/loggers/NWGNUforensic (+258/-0)
modules/loggers/NWGNUlogdebug (+258/-0)
modules/loggers/NWGNUmakefile (+247/-0)
modules/loggers/NWGNUmodlogio (+258/-0)
modules/loggers/config.m4 (+20/-0)
modules/loggers/mod_log_config.c (+1858/-0)
modules/loggers/mod_log_config.dep (+62/-0)
modules/loggers/mod_log_config.dsp (+111/-0)
modules/loggers/mod_log_config.exp (+1/-0)
modules/loggers/mod_log_config.h (+74/-0)
modules/loggers/mod_log_config.mak (+353/-0)
modules/loggers/mod_log_debug.c (+287/-0)
modules/loggers/mod_log_debug.dep (+54/-0)
modules/loggers/mod_log_debug.dsp (+111/-0)
modules/loggers/mod_log_debug.mak (+325/-0)
modules/loggers/mod_log_forensic.c (+289/-0)
modules/loggers/mod_log_forensic.dep (+53/-0)
modules/loggers/mod_log_forensic.dsp (+111/-0)
modules/loggers/mod_log_forensic.exp (+1/-0)
modules/loggers/mod_log_forensic.mak (+353/-0)
modules/loggers/mod_logio.c (+284/-0)
modules/loggers/mod_logio.dep (+59/-0)
modules/loggers/mod_logio.dsp (+111/-0)
modules/loggers/mod_logio.mak (+353/-0)
modules/lua/Makefile.in (+3/-0)
modules/lua/NWGNUmakefile (+287/-0)
modules/lua/README (+54/-0)
modules/lua/config.m4 (+121/-0)
modules/lua/docs/README (+12/-0)
modules/lua/docs/basic-configuration.txt (+141/-0)
modules/lua/docs/building-from-subversion.txt (+72/-0)
modules/lua/docs/running-developer-tests.txt (+16/-0)
modules/lua/docs/writing-handlers.txt (+49/-0)
modules/lua/lua_apr.c (+104/-0)
modules/lua/lua_apr.h (+36/-0)
modules/lua/lua_config.c (+277/-0)
modules/lua/lua_config.h (+31/-0)
modules/lua/lua_dbd.c (+843/-0)
modules/lua/lua_dbd.h (+66/-0)
modules/lua/lua_passwd.c (+178/-0)
modules/lua/lua_passwd.h (+90/-0)
modules/lua/lua_request.c (+3024/-0)
modules/lua/lua_request.h (+58/-0)
modules/lua/lua_vmprep.c (+551/-0)
modules/lua/lua_vmprep.h (+147/-0)
modules/lua/mod_lua.c (+2174/-0)
modules/lua/mod_lua.dep (+418/-0)
modules/lua/mod_lua.dsp (+163/-0)
modules/lua/mod_lua.h (+177/-0)
modules/lua/mod_lua.mak (+407/-0)
modules/lua/test/helpers.lua (+36/-0)
modules/lua/test/htdocs/config_tests.lua (+37/-0)
modules/lua/test/htdocs/filters.lua (+7/-0)
modules/lua/test/htdocs/find_me.txt (+1/-0)
modules/lua/test/htdocs/headers.lua (+6/-0)
modules/lua/test/htdocs/hooks.lua (+29/-0)
modules/lua/test/htdocs/other.lua (+21/-0)
modules/lua/test/htdocs/simple.lua (+4/-0)
modules/lua/test/htdocs/test.lua (+129/-0)
modules/lua/test/lib/kangaroo.lua (+19/-0)
modules/lua/test/moonunit.lua (+52/-0)
modules/lua/test/test.lua (+126/-0)
modules/lua/test/test_httpd.conf (+31/-0)
modules/mappers/.indent.pro (+54/-0)
modules/mappers/Makefile.in (+3/-0)
modules/mappers/NWGNUactions (+248/-0)
modules/mappers/NWGNUimagemap (+249/-0)
modules/mappers/NWGNUmakefile (+250/-0)
modules/mappers/NWGNUrewrite (+250/-0)
modules/mappers/NWGNUspeling (+248/-0)
modules/mappers/NWGNUuserdir (+249/-0)
modules/mappers/NWGNUvhost (+249/-0)
modules/mappers/config9.m4 (+19/-0)
modules/mappers/mod_actions.c (+230/-0)
modules/mappers/mod_actions.dep (+58/-0)
modules/mappers/mod_actions.dsp (+111/-0)
modules/mappers/mod_actions.exp (+1/-0)
modules/mappers/mod_actions.mak (+353/-0)
modules/mappers/mod_alias.c (+726/-0)
modules/mappers/mod_alias.dep (+51/-0)
modules/mappers/mod_alias.dsp (+111/-0)
modules/mappers/mod_alias.exp (+1/-0)
modules/mappers/mod_alias.mak (+353/-0)
modules/mappers/mod_dir.c (+417/-0)
modules/mappers/mod_dir.dep (+60/-0)
modules/mappers/mod_dir.dsp (+111/-0)
modules/mappers/mod_dir.exp (+1/-0)
modules/mappers/mod_dir.mak (+353/-0)
modules/mappers/mod_imagemap.c (+897/-0)
modules/mappers/mod_imagemap.dep (+60/-0)
modules/mappers/mod_imagemap.dsp (+111/-0)
modules/mappers/mod_imagemap.exp (+1/-0)
modules/mappers/mod_imagemap.mak (+353/-0)
modules/mappers/mod_negotiation.c (+3228/-0)
modules/mappers/mod_negotiation.dep (+58/-0)
modules/mappers/mod_negotiation.dsp (+111/-0)
modules/mappers/mod_negotiation.exp (+1/-0)
modules/mappers/mod_negotiation.mak (+353/-0)
modules/mappers/mod_rewrite.c (+5328/-0)
modules/mappers/mod_rewrite.dep (+65/-0)
modules/mappers/mod_rewrite.dsp (+111/-0)
modules/mappers/mod_rewrite.exp (+1/-0)
modules/mappers/mod_rewrite.h (+42/-0)
modules/mappers/mod_rewrite.mak (+353/-0)
modules/mappers/mod_speling.c (+533/-0)
modules/mappers/mod_speling.dep (+51/-0)
modules/mappers/mod_speling.dsp (+111/-0)
modules/mappers/mod_speling.exp (+1/-0)
modules/mappers/mod_speling.mak (+353/-0)
modules/mappers/mod_userdir.c (+390/-0)
modules/mappers/mod_userdir.dep (+46/-0)
modules/mappers/mod_userdir.dsp (+111/-0)
modules/mappers/mod_userdir.exp (+1/-0)
modules/mappers/mod_userdir.mak (+353/-0)
modules/mappers/mod_vhost_alias.c (+457/-0)
modules/mappers/mod_vhost_alias.dep (+50/-0)
modules/mappers/mod_vhost_alias.dsp (+111/-0)
modules/mappers/mod_vhost_alias.exp (+1/-0)
modules/mappers/mod_vhost_alias.mak (+353/-0)
modules/md/Makefile.in (+20/-0)
modules/md/config2.m4 (+297/-0)
modules/md/md.h (+290/-0)
modules/md/md_acme.c (+529/-0)
modules/md/md_acme.h (+267/-0)
modules/md/md_acme_acct.c (+670/-0)
modules/md/md_acme_acct.h (+49/-0)
modules/md/md_acme_authz.c (+723/-0)
modules/md/md_acme_authz.h (+104/-0)
modules/md/md_acme_drive.c (+1021/-0)
modules/md/md_core.c (+428/-0)
modules/md/md_crypt.c (+1315/-0)
modules/md/md_crypt.h (+135/-0)
modules/md/md_curl.c (+307/-0)
modules/md/md_curl.h (+24/-0)
modules/md/md_http.c (+245/-0)
modules/md/md_http.h (+102/-0)
modules/md/md_json.c (+1034/-0)
modules/md/md_json.h (+122/-0)
modules/md/md_jws.c (+106/-0)
modules/md/md_jws.h (+30/-0)
modules/md/md_log.c (+78/-0)
modules/md/md_log.h (+56/-0)
modules/md/md_reg.c (+996/-0)
modules/md/md_reg.h (+177/-0)
modules/md/md_store.c (+319/-0)
modules/md/md_store.h (+157/-0)
modules/md/md_store_fs.c (+883/-0)
modules/md/md_store_fs.h (+65/-0)
modules/md/md_util.c (+1254/-0)
modules/md/md_util.h (+148/-0)
modules/md/md_version.h (+42/-0)
modules/md/mod_md.c (+1442/-0)
modules/md/mod_md.dep (+5/-0)
modules/md/mod_md.dsp (+180/-0)
modules/md/mod_md.h (+50/-0)
modules/md/mod_md.mak (+520/-0)
modules/md/mod_md_config.c (+950/-0)
modules/md/mod_md_config.h (+102/-0)
modules/md/mod_md_os.c (+89/-0)
modules/md/mod_md_os.h (+37/-0)
modules/md/mod_md_private.h (+24/-0)
modules/metadata/.indent.pro (+54/-0)
modules/metadata/Makefile.in (+3/-0)
modules/metadata/NWGNUcernmeta (+248/-0)
modules/metadata/NWGNUexpires (+248/-0)
modules/metadata/NWGNUheaders (+249/-0)
modules/metadata/NWGNUmakefile (+254/-0)
modules/metadata/NWGNUmimemagi (+248/-0)
modules/metadata/NWGNUmodident (+248/-0)
modules/metadata/NWGNUmodversion (+248/-0)
modules/metadata/NWGNUremoteip (+248/-0)
modules/metadata/NWGNUuniqueid (+257/-0)
modules/metadata/NWGNUusertrk (+248/-0)
modules/metadata/config.m4 (+24/-0)
modules/metadata/mod_cern_meta.c (+371/-0)
modules/metadata/mod_cern_meta.dep (+55/-0)
modules/metadata/mod_cern_meta.dsp (+111/-0)
modules/metadata/mod_cern_meta.exp (+1/-0)
modules/metadata/mod_cern_meta.mak (+353/-0)
modules/metadata/mod_env.c (+190/-0)
modules/metadata/mod_env.dep (+47/-0)
modules/metadata/mod_env.dsp (+111/-0)
modules/metadata/mod_env.exp (+1/-0)
modules/metadata/mod_env.mak (+353/-0)
modules/metadata/mod_expires.c (+571/-0)
modules/metadata/mod_expires.dep (+54/-0)
modules/metadata/mod_expires.dsp (+111/-0)
modules/metadata/mod_expires.exp (+1/-0)
modules/metadata/mod_expires.mak (+353/-0)
modules/metadata/mod_headers.c (+1020/-0)
modules/metadata/mod_headers.dep (+57/-0)
modules/metadata/mod_headers.dsp (+111/-0)
modules/metadata/mod_headers.exp (+1/-0)
modules/metadata/mod_headers.mak (+353/-0)
modules/metadata/mod_ident.c (+344/-0)
modules/metadata/mod_ident.dep (+52/-0)
modules/metadata/mod_ident.dsp (+111/-0)
modules/metadata/mod_ident.exp (+1/-0)
modules/metadata/mod_ident.mak (+353/-0)
modules/metadata/mod_mime_magic.c (+2471/-0)
modules/metadata/mod_mime_magic.dep (+58/-0)
modules/metadata/mod_mime_magic.dsp (+111/-0)
modules/metadata/mod_mime_magic.exp (+1/-0)
modules/metadata/mod_mime_magic.mak (+353/-0)
modules/metadata/mod_remoteip.c (+1218/-0)
modules/metadata/mod_remoteip.dep (+53/-0)
modules/metadata/mod_remoteip.dsp (+111/-0)
modules/metadata/mod_remoteip.mak (+353/-0)
modules/metadata/mod_setenvif.c (+648/-0)
modules/metadata/mod_setenvif.dep (+56/-0)
modules/metadata/mod_setenvif.dsp (+111/-0)
modules/metadata/mod_setenvif.exp (+1/-0)
modules/metadata/mod_setenvif.mak (+353/-0)
modules/metadata/mod_unique_id.c (+316/-0)
modules/metadata/mod_unique_id.dep (+50/-0)
modules/metadata/mod_unique_id.dsp (+111/-0)
modules/metadata/mod_unique_id.exp (+1/-0)
modules/metadata/mod_unique_id.mak (+353/-0)
modules/metadata/mod_usertrack.c (+459/-0)
modules/metadata/mod_usertrack.dep (+51/-0)
modules/metadata/mod_usertrack.dsp (+111/-0)
modules/metadata/mod_usertrack.exp (+1/-0)
modules/metadata/mod_usertrack.mak (+353/-0)
modules/metadata/mod_version.c (+313/-0)
modules/metadata/mod_version.dep (+45/-0)
modules/metadata/mod_version.dsp (+111/-0)
modules/metadata/mod_version.exp (+1/-0)
modules/metadata/mod_version.mak (+353/-0)
modules/proxy/.indent.pro (+58/-0)
modules/proxy/CHANGES (+223/-0)
modules/proxy/Makefile.in (+4/-0)
modules/proxy/NWGNUmakefile (+259/-0)
modules/proxy/NWGNUproxy (+337/-0)
modules/proxy/NWGNUproxyajp (+264/-0)
modules/proxy/NWGNUproxybalancer (+260/-0)
modules/proxy/NWGNUproxycon (+251/-0)
modules/proxy/NWGNUproxyexpress (+256/-0)
modules/proxy/NWGNUproxyfcgi (+261/-0)
modules/proxy/NWGNUproxyftp (+260/-0)
modules/proxy/NWGNUproxyhcheck (+254/-0)
modules/proxy/NWGNUproxyhtp (+260/-0)
modules/proxy/NWGNUproxylbm_busy (+250/-0)
modules/proxy/NWGNUproxylbm_hb (+251/-0)
modules/proxy/NWGNUproxylbm_req (+251/-0)
modules/proxy/NWGNUproxylbm_traf (+251/-0)
modules/proxy/NWGNUproxyscgi (+260/-0)
modules/proxy/NWGNUproxywstunnel (+250/-0)
modules/proxy/ajp.h (+520/-0)
modules/proxy/ajp_header.c (+885/-0)
modules/proxy/ajp_header.h (+195/-0)
modules/proxy/ajp_link.c (+115/-0)
modules/proxy/ajp_msg.c (+641/-0)
modules/proxy/ajp_utils.c (+137/-0)
modules/proxy/balancers/Makefile.in (+3/-0)
modules/proxy/balancers/config2.m4 (+8/-0)
modules/proxy/balancers/mod_lbmethod_bybusyness.c (+161/-0)
modules/proxy/balancers/mod_lbmethod_bybusyness.dep (+76/-0)
modules/proxy/balancers/mod_lbmethod_bybusyness.dsp (+123/-0)
modules/proxy/balancers/mod_lbmethod_bybusyness.mak (+408/-0)
modules/proxy/balancers/mod_lbmethod_byrequests.c (+201/-0)
modules/proxy/balancers/mod_lbmethod_byrequests.dep (+76/-0)
modules/proxy/balancers/mod_lbmethod_byrequests.dsp (+123/-0)
modules/proxy/balancers/mod_lbmethod_byrequests.mak (+408/-0)
modules/proxy/balancers/mod_lbmethod_bytraffic.c (+170/-0)
modules/proxy/balancers/mod_lbmethod_bytraffic.dep (+76/-0)
modules/proxy/balancers/mod_lbmethod_bytraffic.dsp (+123/-0)
modules/proxy/balancers/mod_lbmethod_bytraffic.mak (+408/-0)
modules/proxy/balancers/mod_lbmethod_heartbeat.c (+467/-0)
modules/proxy/balancers/mod_lbmethod_heartbeat.dep (+77/-0)
modules/proxy/balancers/mod_lbmethod_heartbeat.dsp (+123/-0)
modules/proxy/balancers/mod_lbmethod_heartbeat.mak (+408/-0)
modules/proxy/config.m4 (+79/-0)
modules/proxy/libproxy.exp (+1/-0)
modules/proxy/mod_proxy.c (+3080/-0)
modules/proxy/mod_proxy.dep (+153/-0)
modules/proxy/mod_proxy.dsp (+127/-0)
modules/proxy/mod_proxy.h (+1246/-0)
modules/proxy/mod_proxy.mak (+361/-0)
modules/proxy/mod_proxy_ajp.c (+829/-0)
modules/proxy/mod_proxy_ajp.dep (+356/-0)
modules/proxy/mod_proxy_ajp.dsp (+151/-0)
modules/proxy/mod_proxy_ajp.mak (+416/-0)
modules/proxy/mod_proxy_balancer.c (+1936/-0)
modules/proxy/mod_proxy_balancer.dep (+76/-0)
modules/proxy/mod_proxy_balancer.dsp (+123/-0)
modules/proxy/mod_proxy_balancer.mak (+380/-0)
modules/proxy/mod_proxy_connect.c (+486/-0)
modules/proxy/mod_proxy_connect.dep (+73/-0)
modules/proxy/mod_proxy_connect.dsp (+123/-0)
modules/proxy/mod_proxy_connect.mak (+380/-0)
modules/proxy/mod_proxy_express.c (+221/-0)
modules/proxy/mod_proxy_express.dep (+74/-0)
modules/proxy/mod_proxy_express.dsp (+123/-0)
modules/proxy/mod_proxy_express.mak (+380/-0)
modules/proxy/mod_proxy_fcgi.c (+1200/-0)
modules/proxy/mod_proxy_fcgi.dep (+75/-0)
modules/proxy/mod_proxy_fcgi.dsp (+123/-0)
modules/proxy/mod_proxy_fcgi.mak (+380/-0)
modules/proxy/mod_proxy_fdpass.c (+241/-0)
modules/proxy/mod_proxy_fdpass.h (+41/-0)
modules/proxy/mod_proxy_ftp.c (+2125/-0)
modules/proxy/mod_proxy_ftp.dep (+74/-0)
modules/proxy/mod_proxy_ftp.dsp (+123/-0)
modules/proxy/mod_proxy_ftp.mak (+380/-0)
modules/proxy/mod_proxy_hcheck.c (+1225/-0)
modules/proxy/mod_proxy_hcheck.dep (+5/-0)
modules/proxy/mod_proxy_hcheck.dsp (+123/-0)
modules/proxy/mod_proxy_hcheck.mak (+380/-0)
modules/proxy/mod_proxy_http.c (+2043/-0)
modules/proxy/mod_proxy_http.dep (+73/-0)
modules/proxy/mod_proxy_http.dsp (+123/-0)
modules/proxy/mod_proxy_http.mak (+380/-0)
modules/proxy/mod_proxy_scgi.c (+674/-0)
modules/proxy/mod_proxy_scgi.dep (+75/-0)
modules/proxy/mod_proxy_scgi.dsp (+123/-0)
modules/proxy/mod_proxy_scgi.mak (+380/-0)
modules/proxy/mod_proxy_uwsgi.c (+551/-0)
modules/proxy/mod_proxy_uwsgi.dep (+75/-0)
modules/proxy/mod_proxy_uwsgi.dsp (+123/-0)
modules/proxy/mod_proxy_uwsgi.mak (+380/-0)
modules/proxy/mod_proxy_wstunnel.c (+391/-0)
modules/proxy/mod_proxy_wstunnel.dep (+73/-0)
modules/proxy/mod_proxy_wstunnel.dsp (+123/-0)
modules/proxy/mod_proxy_wstunnel.mak (+380/-0)
modules/proxy/proxy_util.c (+3889/-0)
modules/proxy/proxy_util.h (+45/-0)
modules/proxy/scgi.h (+36/-0)
modules/session/Makefile.in (+4/-0)
modules/session/NWGNUmakefile (+257/-0)
modules/session/NWGNUsession (+254/-0)
modules/session/NWGNUsession_cookie (+253/-0)
modules/session/NWGNUsession_crypto (+255/-0)
modules/session/NWGNUsession_dbd (+253/-0)
modules/session/config.m4 (+68/-0)
modules/session/mod_session.c (+671/-0)
modules/session/mod_session.dep (+56/-0)
modules/session/mod_session.dsp (+115/-0)
modules/session/mod_session.h (+186/-0)
modules/session/mod_session.mak (+353/-0)
modules/session/mod_session_cookie.c (+284/-0)
modules/session/mod_session_cookie.dep (+49/-0)
modules/session/mod_session_cookie.dsp (+111/-0)
modules/session/mod_session_cookie.mak (+381/-0)
modules/session/mod_session_crypto.c (+805/-0)
modules/session/mod_session_crypto.dep (+57/-0)
modules/session/mod_session_crypto.dsp (+111/-0)
modules/session/mod_session_crypto.mak (+381/-0)
modules/session/mod_session_dbd.c (+640/-0)
modules/session/mod_session_dbd.dep (+60/-0)
modules/session/mod_session_dbd.dsp (+111/-0)
modules/session/mod_session_dbd.mak (+409/-0)
modules/slotmem/Makefile.in (+3/-0)
modules/slotmem/NWGNUmakefile (+246/-0)
modules/slotmem/NWGNUslotmem_plain (+250/-0)
modules/slotmem/NWGNUslotmem_shm (+250/-0)
modules/slotmem/config.m4 (+10/-0)
modules/slotmem/mod_slotmem_plain.c (+343/-0)
modules/slotmem/mod_slotmem_plain.dep (+51/-0)
modules/slotmem/mod_slotmem_plain.dsp (+111/-0)
modules/slotmem/mod_slotmem_plain.mak (+353/-0)
modules/slotmem/mod_slotmem_shm.c (+880/-0)
modules/slotmem/mod_slotmem_shm.dep (+57/-0)
modules/slotmem/mod_slotmem_shm.dsp (+111/-0)
modules/slotmem/mod_slotmem_shm.mak (+353/-0)
modules/ssl/Makefile.in (+20/-0)
modules/ssl/NWGNUmakefile (+327/-0)
modules/ssl/README (+106/-0)
modules/ssl/README.dsov.fig (+346/-0)
modules/ssl/README.dsov.ps (+1138/-0)
modules/ssl/config.m4 (+57/-0)
modules/ssl/mod_ssl.c (+760/-0)
modules/ssl/mod_ssl.dep (+1086/-0)
modules/ssl/mod_ssl.dsp (+195/-0)
modules/ssl/mod_ssl.h (+91/-0)
modules/ssl/mod_ssl.mak (+500/-0)
modules/ssl/mod_ssl_openssl.h (+73/-0)
modules/ssl/ssl_engine_config.c (+2067/-0)
modules/ssl/ssl_engine_init.c (+2147/-0)
modules/ssl/ssl_engine_io.c (+2217/-0)
modules/ssl/ssl_engine_kernel.c (+2499/-0)
modules/ssl/ssl_engine_log.c (+238/-0)
modules/ssl/ssl_engine_mutex.c (+111/-0)
modules/ssl/ssl_engine_ocsp.c (+304/-0)
modules/ssl/ssl_engine_pphrase.c (+621/-0)
modules/ssl/ssl_engine_rand.c (+177/-0)
modules/ssl/ssl_engine_vars.c (+1252/-0)
modules/ssl/ssl_private.h (+1083/-0)
modules/ssl/ssl_scache.c (+239/-0)
modules/ssl/ssl_util.c (+471/-0)
modules/ssl/ssl_util_ocsp.c (+419/-0)
modules/ssl/ssl_util_ssl.c (+538/-0)
modules/ssl/ssl_util_ssl.h (+80/-0)
modules/ssl/ssl_util_stapling.c (+873/-0)
modules/test/.indent.pro (+54/-0)
modules/test/Makefile.in (+3/-0)
modules/test/NWGNUmakefile (+257/-0)
modules/test/NWGNUoptfnexport (+256/-0)
modules/test/NWGNUoptfnimport (+256/-0)
modules/test/NWGNUopthookexport (+256/-0)
modules/test/NWGNUopthookimport (+256/-0)
modules/test/README (+1/-0)
modules/test/config.m4 (+13/-0)
modules/test/mod_dialup.c (+306/-0)
modules/test/mod_optional_fn_export.c (+48/-0)
modules/test/mod_optional_fn_export.h (+19/-0)
modules/test/mod_optional_fn_import.c (+55/-0)
modules/test/mod_optional_hook_export.c (+44/-0)
modules/test/mod_optional_hook_export.h (+24/-0)
modules/test/mod_optional_hook_import.c (+45/-0)
os/.indent.pro (+54/-0)
os/Makefile.in (+4/-0)
os/bs2000/ebcdic.c (+210/-0)
os/bs2000/ebcdic.h (+33/-0)
os/bs2000/os.c (+136/-0)
os/bs2000/os.h (+40/-0)
os/config.m4 (+26/-0)
os/netware/modules.c (+117/-0)
os/netware/netware_config_layout.h (+31/-0)
os/netware/os.h (+57/-0)
os/netware/pre_nw.h (+70/-0)
os/netware/util_nw.c (+112/-0)
os/os2/Makefile.in (+5/-0)
os/os2/config.m4 (+3/-0)
os/os2/core.mk (+7/-0)
os/os2/core_header.def (+19/-0)
os/os2/os.h (+40/-0)
os/os2/util_os2.c (+39/-0)
os/unix/Makefile.in (+5/-0)
os/unix/config.m4 (+7/-0)
os/unix/os.h (+52/-0)
os/unix/unixd.c (+714/-0)
os/unix/unixd.h (+142/-0)
os/win32/BaseAddr.ref (+134/-0)
os/win32/Makefile.in (+5/-0)
os/win32/ap_regkey.c (+642/-0)
os/win32/modules.c (+56/-0)
os/win32/os.h (+139/-0)
os/win32/util_win32.c (+148/-0)
os/win32/win32_config_layout.h (+31/-0)
server/.indent.pro (+54/-0)
server/Makefile.in (+105/-0)
server/NWGNUmakefile (+261/-0)
server/buildmark.c (+29/-0)
server/config.c (+2728/-0)
server/config.m4 (+19/-0)
server/connection.c (+228/-0)
server/core.c (+5459/-0)
server/core_filters.c (+889/-0)
server/eoc_bucket.c (+55/-0)
server/eor_bucket.c (+102/-0)
server/error_bucket.c (+77/-0)
server/gen_test_char.c (+173/-0)
server/gen_test_char.dep (+7/-0)
server/gen_test_char.dsp (+94/-0)
server/gen_test_char.mak (+234/-0)
server/listen.c (+938/-0)
server/log.c (+1956/-0)
server/main.c (+850/-0)
server/mpm/MPM.NAMING (+14/-0)
server/mpm/Makefile.in (+4/-0)
server/mpm/config.m4 (+128/-0)
server/mpm/config2.m4 (+89/-0)
server/mpm/event/Makefile.in (+1/-0)
server/mpm/event/config.m4 (+15/-0)
server/mpm/event/config3.m4 (+7/-0)
server/mpm/event/event.c (+3874/-0)
server/mpm/event/mpm_default.h (+56/-0)
server/mpm/mpmt_os2/Makefile.in (+1/-0)
server/mpm/mpmt_os2/config.m4 (+10/-0)
server/mpm/mpmt_os2/config5.m4 (+3/-0)
server/mpm/mpmt_os2/mpm_default.h (+57/-0)
server/mpm/mpmt_os2/mpmt_os2.c (+614/-0)
server/mpm/mpmt_os2/mpmt_os2_child.c (+488/-0)
server/mpm/netware/mpm_default.h (+78/-0)
server/mpm/netware/mpm_netware.c (+1363/-0)
server/mpm/prefork/Makefile.in (+1/-0)
server/mpm/prefork/config.m4 (+7/-0)
server/mpm/prefork/config3.m4 (+1/-0)
server/mpm/prefork/mpm_default.h (+51/-0)
server/mpm/prefork/prefork.c (+1513/-0)
server/mpm/winnt/Makefile.in (+1/-0)
server/mpm/winnt/child.c (+1266/-0)
server/mpm/winnt/config.m4 (+10/-0)
server/mpm/winnt/config3.m4 (+2/-0)
server/mpm/winnt/mpm_default.h (+60/-0)
server/mpm/winnt/mpm_winnt.c (+1785/-0)
server/mpm/winnt/mpm_winnt.h (+96/-0)
server/mpm/winnt/nt_eventlog.c (+171/-0)
server/mpm/winnt/service.c (+1241/-0)
server/mpm/worker/Makefile.in (+2/-0)
server/mpm/worker/config.m4 (+11/-0)
server/mpm/worker/config3.m4 (+5/-0)
server/mpm/worker/mpm_default.h (+55/-0)
server/mpm/worker/worker.c (+2378/-0)
server/mpm_common.c (+571/-0)
server/mpm_fdqueue.c (+530/-0)
server/mpm_fdqueue.h (+110/-0)
server/mpm_unix.c (+1107/-0)
server/protocol.c (+2399/-0)
server/provider.c (+197/-0)
server/request.c (+2511/-0)
server/scoreboard.c (+672/-0)
server/util.c (+3309/-0)
server/util_cfgtree.c (+46/-0)
server/util_charset.c (+28/-0)
server/util_cookies.c (+290/-0)
server/util_debug.c (+236/-0)
server/util_ebcdic.c (+117/-0)
server/util_expr_eval.c (+1822/-0)
server/util_expr_parse.c (+2130/-0)
server/util_expr_parse.h (+104/-0)
server/util_expr_parse.y (+217/-0)
server/util_expr_private.h (+141/-0)
server/util_expr_scan.c (+2669/-0)
server/util_expr_scan.l (+400/-0)
server/util_fcgi.c (+290/-0)
server/util_filter.c (+732/-0)
server/util_md5.c (+166/-0)
server/util_mutex.c (+561/-0)
server/util_pcre.c (+343/-0)
server/util_regex.c (+210/-0)
server/util_script.c (+900/-0)
server/util_time.c (+306/-0)
server/util_xml.c (+140/-0)
server/vhost.c (+1267/-0)
srclib/Makefile.in (+5/-0)
support/.indent.pro (+54/-0)
support/Makefile.in (+89/-0)
support/NWGNUab (+330/-0)
support/NWGNUhtcacheclean (+253/-0)
support/NWGNUhtdbm (+252/-0)
support/NWGNUhtdigest (+251/-0)
support/NWGNUhtpasswd (+252/-0)
support/NWGNUhttxt2dbm (+251/-0)
support/NWGNUlogres (+258/-0)
support/NWGNUmakefile (+51/-0)
support/NWGNUrotlogs (+250/-0)
support/README (+65/-0)
support/SHA1/README.sha1 (+34/-0)
support/SHA1/convert-sha1.pl (+36/-0)
support/SHA1/htpasswd-sha1.pl (+22/-0)
support/SHA1/ldif-sha1.example (+19/-0)
support/ab.c (+2623/-0)
support/ab.dep (+37/-0)
support/ab.dsp (+106/-0)
support/ab.mak (+317/-0)
support/abs.dep (+37/-0)
support/abs.dsp (+144/-0)
support/abs.mak (+374/-0)
support/apachectl.in (+106/-0)
support/apxs.in (+791/-0)
support/check_forensic (+51/-0)
support/checkgid.c (+110/-0)
support/config.m4 (+151/-0)
support/dbmmanage.in (+312/-0)
support/envvars-std.in (+28/-0)
support/fcgistarter.c (+220/-0)
support/fcgistarter.dep (+29/-0)
support/fcgistarter.dsp (+106/-0)
support/fcgistarter.mak (+317/-0)
support/htcacheclean.c (+1829/-0)
support/htcacheclean.dep (+37/-0)
support/htcacheclean.dsp (+106/-0)
support/htcacheclean.mak (+317/-0)
support/htdbm.c (+472/-0)
support/htdbm.dep (+58/-0)
support/htdbm.dsp (+110/-0)
support/htdbm.mak (+326/-0)
support/htdigest.c (+303/-0)
support/htdigest.dep (+27/-0)
support/htdigest.dsp (+106/-0)
support/htdigest.mak (+317/-0)
support/htpasswd.c (+524/-0)
support/htpasswd.dep (+57/-0)
support/htpasswd.dsp (+110/-0)
support/htpasswd.mak (+326/-0)
support/httxt2dbm.c (+335/-0)
support/httxt2dbm.dep (+26/-0)
support/httxt2dbm.dsp (+106/-0)
support/httxt2dbm.mak (+317/-0)
support/list_hooks.pl (+101/-0)
support/log_server_status.in (+76/-0)
support/logresolve.c (+329/-0)
support/logresolve.dep (+26/-0)
support/logresolve.dsp (+106/-0)
support/logresolve.mak (+317/-0)
support/logresolve.pl.in (+225/-0)
support/passwd_common.c (+344/-0)
support/passwd_common.h (+128/-0)
support/phf_abuse_log.cgi.in (+38/-0)
support/rotatelogs.c (+753/-0)
support/rotatelogs.dep (+28/-0)
support/rotatelogs.dsp (+106/-0)
support/rotatelogs.mak (+317/-0)
support/split-logfile.in (+69/-0)
support/suexec.c (+652/-0)
support/suexec.h (+109/-0)
support/win32/ApacheMonitor.c (+1671/-0)
support/win32/ApacheMonitor.dep (+18/-0)
support/win32/ApacheMonitor.dsp (+143/-0)
support/win32/ApacheMonitor.h (+78/-0)
support/win32/ApacheMonitor.mak (+309/-0)
support/win32/ApacheMonitor.manifest (+10/-0)
support/win32/ApacheMonitor.rc (+103/-0)
support/win32/wintty.c (+374/-0)
support/win32/wintty.dep (+5/-0)
support/win32/wintty.dsp (+106/-0)
support/win32/wintty.mak (+317/-0)
test/.indent.pro (+54/-0)
test/Makefile.in (+20/-0)
test/README (+3/-0)
test/check_chunked (+58/-0)
test/cls.c (+182/-0)
test/make_sni.sh (+396/-0)
test/tcpdumpscii.txt (+50/-0)
test/test-writev.c (+101/-0)
test/test_find.c (+78/-0)
test/test_limits.c (+200/-0)
test/test_parser.c (+75/-0)
test/test_select.c (+46/-0)
test/time-sem.c (+591/-0)
Conflict in debian/apache2.dirs
Conflict in debian/changelog
Conflict in debian/control
Conflict in debian/patches/series
Reviewer Review Type Date Requested Status
Canonical Server Team 2018-05-09 Pending
Canonical Server packageset reviewers 2018-05-09 Pending
Review via email: mp+345310@code.launchpad.net

Description of the change

Standard merge from debian. Dropped some delta that was already applied upstream, but had to add a new delta because of a universe dependency that debian added (brotli).

I took a quick look at debian/patches/086_svn_cross_compiles, which we have been carrying for years. It is committed to apache trunk, but for some reason not yet in the release branches.

DEP8 tests pass.

Did a fresh install of the cosmic package, then php, setup an index.php that calls phpinfo(), then upgraded to this package and reloaded page, still worked.

There was some back and forth with enabling/disabling http2 and openssl 1.0/1.1, but it's finally enabled and I dropped the disable/enable sequence from the logical delta. End result is we still have http2 and openssl 1.1

PPA with test packages: ppa:ahasenack/apache-merge-2.4.33-3

To post a comment you must log in.

Unmerged commits

73a11ba... by Andreas Hasenack on 2018-05-09

update-maintainer

84a360f... by Andreas Hasenack on 2018-05-09

reconstruct-changelog

84be5b6... by Andreas Hasenack on 2018-05-09

merge-changelogs

13e587f... by Andreas Hasenack on 2018-05-09

  * Added changes:
    - disable the brotli module and remove build-depends on libbrotli-dev
      as this package is in universe

cc00e3e... by Andreas Hasenack on 2018-05-08

    - Avoid crashes, hangs and loops by fixing mod_ldap locking: (LP: #1752683)
      + added debian/patches/util_ldap_cache_lock_fix.patch
      [Already applied upstream]

16f4de4... by Andreas Hasenack on 2018-05-08

    - SECURITY UPDATE: insecure nonce generation
      + debian/patches/CVE-2018-1312.patch: actually use the secret when
        generating nonces in modules/aaa/mod_auth_digest.c.
      + CVE-2018-1312

383720d... by Andreas Hasenack on 2018-05-08

    - SECURITY UPDATE: mod_cache_socache DoS
      + debian/patches/CVE-2018-1303.patch: fix caching of empty headers up
        to carriage return in modules/cache/mod_cache_socache.c.
      + CVE-2018-1303

a5d3780... by Andreas Hasenack on 2018-05-08

    - SECURITY UPDATE: DoS via specially-crafted request
      + debian/patches/CVE-2018-1301.patch: ensure that read lines are NUL
        terminated on any error, not only on buffer full in
        server/protocol.c.
      + CVE-2018-1301

5bdef75... by Andreas Hasenack on 2018-05-08

    - SECURITY UPDATE: mod_session header manipulation
      + debian/patches/CVE-2018-1283.patch: strip Session header when
        SessionEnv is on in modules/session/mod_session.c.
      + CVE-2018-1283

0aec639... by Andreas Hasenack on 2018-05-08

    - SECURITY UPDATE: incorrect <FilesMatch> matching
      + debian/patches/CVE-2017-15715.patch: allow to configure
        global/default options for regexes, like caseless matching or
        extended format in include/ap_regex.h, server/core.c,
        server/util_pcre.c.
      + CVE-2017-15715

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
diff --git a/Apache-apr2.dsw b/Apache-apr2.dsw
index c3f75e6..fe2f526 100644
--- a/Apache-apr2.dsw
+++ b/Apache-apr2.dsw
@@ -291,6 +291,9 @@ Package=<4>
291 Project_Dep_Name mod_proxy_scgi291 Project_Dep_Name mod_proxy_scgi
292 End Project Dependency292 End Project Dependency
293 Begin Project Dependency293 Begin Project Dependency
294 Project_Dep_Name mod_proxy_uwsgi
295 End Project Dependency
296 Begin Project Dependency
294 Project_Dep_Name mod_proxy_wstunnel297 Project_Dep_Name mod_proxy_wstunnel
295 End Project Dependency298 End Project Dependency
296 Begin Project Dependency299 Begin Project Dependency
@@ -2086,6 +2089,24 @@ Package=<4>
20862089
2087###############################################################################2090###############################################################################
20882091
2092Project: "mod_md"=.\modules\md\mod_md.dsp - Package Owner=<4>
2093
2094Package=<5>
2095{{{
2096}}}
2097
2098Package=<4>
2099{{{
2100 Begin Project Dependency
2101 Project_Dep_Name libapr
2102 End Project Dependency
2103 Begin Project Dependency
2104 Project_Dep_Name libhttpd
2105 End Project Dependency
2106}}}
2107
2108###############################################################################
2109
2089Project: "mod_mime"=.\modules\http\mod_mime.dsp - Package Owner=<4>2110Project: "mod_mime"=.\modules\http\mod_mime.dsp - Package Owner=<4>
20902111
2091Package=<5>2112Package=<5>
@@ -2305,7 +2326,6 @@ Package=<4>
2305}}}2326}}}
23062327
2307###############################################################################2328###############################################################################
2308###############################################################################
23092329
2310Project: "mod_proxy_html"=.\modules\filters\mod_proxy_html.dsp - Package Owner=<4>2330Project: "mod_proxy_html"=.\modules\filters\mod_proxy_html.dsp - Package Owner=<4>
23112331
@@ -2389,6 +2409,26 @@ Package=<4>
2389 End Project Dependency2409 End Project Dependency
2390}}}2410}}}
23912411
2412###############################################################################
2413
2414Project: "mod_proxy_uwsgi"=.\modules\proxy\mod_proxy_uwsgi.dsp - Package Owner=<4>
2415
2416Package=<5>
2417{{{
2418}}}
2419
2420Package=<4>
2421{{{
2422 Begin Project Dependency
2423 Project_Dep_Name libapr
2424 End Project Dependency
2425 Begin Project Dependency
2426 Project_Dep_Name libhttpd
2427 End Project Dependency
2428 Begin Project Dependency
2429 Project_Dep_Name mod_proxy
2430 End Project Dependency
2431}}}
23922432
2393###############################################################################2433###############################################################################
23942434
diff --git a/Apache.dsw b/Apache.dsw
index 30866bc..a0be3ae 100644
--- a/Apache.dsw
+++ b/Apache.dsw
@@ -306,6 +306,9 @@ Package=<4>
306 Project_Dep_Name mod_proxy_scgi306 Project_Dep_Name mod_proxy_scgi
307 End Project Dependency307 End Project Dependency
308 Begin Project Dependency308 Begin Project Dependency
309 Project_Dep_Name mod_proxy_uwsgi
310 End Project Dependency
311 Begin Project Dependency
309 Project_Dep_Name mod_proxy_wstunnel312 Project_Dep_Name mod_proxy_wstunnel
310 End Project Dependency313 End Project Dependency
311 Begin Project Dependency314 Begin Project Dependency
@@ -2485,6 +2488,27 @@ Package=<4>
24852488
2486###############################################################################2489###############################################################################
24872490
2491Project: "mod_md"=.\modules\md\mod_md.dsp - Package Owner=<4>
2492
2493Package=<5>
2494{{{
2495}}}
2496
2497Package=<4>
2498{{{
2499 Begin Project Dependency
2500 Project_Dep_Name libapr
2501 End Project Dependency
2502 Begin Project Dependency
2503 Project_Dep_Name libaprutil
2504 End Project Dependency
2505 Begin Project Dependency
2506 Project_Dep_Name libhttpd
2507 End Project Dependency
2508}}}
2509
2510###############################################################################
2511
2488Project: "mod_mime"=.\modules\http\mod_mime.dsp - Package Owner=<4>2512Project: "mod_mime"=.\modules\http\mod_mime.dsp - Package Owner=<4>
24892513
2490Package=<5>2514Package=<5>
@@ -2834,6 +2858,30 @@ Package=<4>
28342858
2835###############################################################################2859###############################################################################
28362860
2861Project: "mod_proxy_uwsgi"=.\modules\proxy\mod_proxy_uwsgi.dsp - Package Owner=<4>
2862
2863Package=<5>
2864{{{
2865}}}
2866
2867Package=<4>
2868{{{
2869 Begin Project Dependency
2870 Project_Dep_Name libapr
2871 End Project Dependency
2872 Begin Project Dependency
2873 Project_Dep_Name libaprutil
2874 End Project Dependency
2875 Begin Project Dependency
2876 Project_Dep_Name libhttpd
2877 End Project Dependency
2878 Begin Project Dependency
2879 Project_Dep_Name mod_proxy
2880 End Project Dependency
2881}}}
2882
2883###############################################################################
2884
2837Project: "mod_proxy_wstunnel"=.\modules\proxy\mod_proxy_wstunnel.dsp - Package Owner=<4>2885Project: "mod_proxy_wstunnel"=.\modules\proxy\mod_proxy_wstunnel.dsp - Package Owner=<4>
28382886
2839Package=<5>2887Package=<5>
diff --git a/BuildBin.dsp b/BuildBin.dsp
index 173cffb..1559664 100644
--- a/BuildBin.dsp
+++ b/BuildBin.dsp
@@ -39,7 +39,7 @@ CFG=BuildBin - Win32 Debug
39# PROP Use_Debug_Libraries 039# PROP Use_Debug_Libraries 0
40# PROP Output_Dir ""40# PROP Output_Dir ""
41# PROP Intermediate_Dir ""41# PROP Intermediate_Dir ""
42# PROP Cmd_Line "NMAKE /f makefile.win INSTDIR="\Apache2" LONG=Release _trydb _trylua _tryxml _tryssl _tryzlib _trynghttp2 _trybrotli _dummy"42# PROP Cmd_Line "NMAKE /f makefile.win INSTDIR="\Apache2" LONG=Release _trydb _trylua _tryxml _tryssl _tryzlib _trynghttp2 _trybrotli _trymd _dummy"
43# PROP Rebuild_Opt ""43# PROP Rebuild_Opt ""
44# PROP Target_File "\Apache2\bin\httpd.exe"44# PROP Target_File "\Apache2\bin\httpd.exe"
45# PROP Bsc_Name ".\Browse\httpd.bsc"45# PROP Bsc_Name ".\Browse\httpd.bsc"
@@ -58,7 +58,7 @@ CFG=BuildBin - Win32 Debug
58# PROP Use_Debug_Libraries 158# PROP Use_Debug_Libraries 1
59# PROP Output_Dir ""59# PROP Output_Dir ""
60# PROP Intermediate_Dir ""60# PROP Intermediate_Dir ""
61# PROP Cmd_Line "NMAKE /f makefile.win INSTDIR="\Apache2" LONG=Debug _trydb _trylua _tryxml _tryssl _tryzlib _trynghttp2 _trybrotli _dummy"61# PROP Cmd_Line "NMAKE /f makefile.win INSTDIR="\Apache2" LONG=Debug _trydb _trylua _tryxml _tryssl _tryzlib _trynghttp2 _trybrotli _trymd _dummy"
62# PROP Rebuild_Opt ""62# PROP Rebuild_Opt ""
63# PROP Target_File "\Apache2\bin\httpd.exe"63# PROP Target_File "\Apache2\bin\httpd.exe"
64# PROP Bsc_Name ".\Browse\httpd.bsc"64# PROP Bsc_Name ".\Browse\httpd.bsc"
diff --git a/CHANGES b/CHANGES
index ab0cd5d..5430153 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,4 +1,195 @@
1 -*- coding: utf-8 -*-1 -*- coding: utf-8 -*-
2Changes with Apache 2.4.33
3
4 *) core: Fix request timeout logging and possible crash for error_log hooks.
5 [Yann Ylavic]
6
7 *) mod_slomem_shm: Fix failure to create balancers's slotmems in Windows MPM,
8 where children processes need to attach them instead since they are owned
9 by the parent process already. [Yann Ylavic]
10
11 *) ab: try all destination socket addresses returned by
12 apr_sockaddr_info_get instead of failing on first one when not available.
13 Needed for instance if localhost resolves to both ::1 and 127.0.0.1
14 e.g. if both are in /etc/hosts. [Jan Kaluza]
15
16 *) ab: Use only one connection to determine working destination socket
17 address. [Jan Kaluza]
18
19 *) ab: LibreSSL doesn't have or require Windows applink.c. [Gregg L. Smith]
20
21 *) htpasswd/htdigest: Disable support for bcrypt on EBCDIC platforms.
22 apr-util's bcrypt implementation doesn't tolerate EBCDIC. [Eric Covener]
23
24 *) htpasswd/htdbm: report the right limit when get_password() overflows.
25 [Yann Ylavic]
26
27 *) htpasswd: Don't fail in -v mode if password file is unwritable.
28 PR 61631. [Joe Orton]
29
30 *) htpasswd: don't point to (unused) stack memory on output
31 to make static analysers happy. PR 60634.
32 [Yann Ylavic, reported by shqking and Zhenwei Zou]
33
34Changes with Apache 2.4.32
35
36 *) mod_access_compat: Fail if a comment is found in an Allow or Deny
37 directive. [Jan Kaluza]
38
39 *) mod_authz_host: Ignore comments after "Require host", logging a
40 warning, or logging an error if the line is otherwise empty.
41 [Jan Kaluza, Joe Orton]
42
43 *) rotatelogs: Fix expansion of %Z in localtime (-l) mode, and fix
44 Y2K38 bug. [Joe Orton]
45
46 *) mod_ssl: Support SSL DN raw variable extraction without conversion
47 to UTF-8, using _RAW suffix on variable names. [Joe Orton]
48
49 *) ab: Fix https:// connection failures (regression in 2.4.30); fix
50 crash generating CSV output for large -n. [Joe Orton, Jan Kaluza]
51
52Changes with Apache 2.4.31
53
54 *) mod_proxy_fcgi: Add the support for mod_proxy's flushpackets and flushwait
55 parameters. [Luca Toscano, Ruediger Pluem, Yann Ylavic]
56
57 *) mod_ldap: Avoid possible crashes, hangs, and busy loops due to
58 improper merging of the cache lock in vhost config.
59 PR 43164 [Eric Covener]
60
61 *) mpm_event: Do lingering close in worker(s). [Yann Ylavic]
62
63 *) mpm_queue: Put fdqueue code in common for MPMs event and worker.
64 [Yann Ylavic]
65
66Changes with Apache 2.4.30
67
68 *) mod_session: Strip Session header when SessionEnv is on. [Yann Ylavic]
69
70 *) mod_cache_socache: Fix caching of empty headers up to carriage return.
71 [Yann Ylavic]
72
73 *) core: For consistency, ensure that read lines are NUL terminated on any
74 error, not only on buffer full. [Yann Ylavic]
75
76 *) mod_authnz_ldap: Fix language long names detection as short name.
77 [Yann Ylavic]
78
79 *) mod_proxy: Worker schemes and hostnames which are too large are no
80 longer fatal errors; it is logged and the truncated values are stored.
81 [Jim Jagielski]
82
83 *) regex: Allow to configure global/default options for regexes, like
84 caseless matching or extended format. [Yann Ylavic]
85
86 *) mod_auth_digest: Actually use the secret when generating nonces. This change
87 may cause problems if used with round robin load balancers. PR 54637
88 [Stefan Fritsch]
89
90 *) mod_proxy: Allow setting options to globally defined balancer from
91 ProxyPass used in VirtualHost. Balancers are now merged using the new
92 merge_balancers method which merges the balancers options. [Jan Kaluza]
93
94 *) logresolve: Fix incorrect behavior or segfault if -c flag is used
95 Fixes: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823259
96 [Stefan Fritsch]
97
98 *) mod_remoteip: Add support for PROXY protocol (code donated by Cloudzilla).
99 Add ability for PROXY protocol processing to be optional to donated code.
100 See also: http://www.haproxy.org/download/1.5/doc/proxy-protocol.txt
101 [Cloudzilla/roadrunner2@GitHub, Jim Jagielski, Daniel Ruggeri]
102
103 *) mod_proxy, mod_ssl: Handle SSLProxy* directives in <Proxy> sections,
104 allowing per backend TLS configuration. [Yann Ylavic]
105
106 *) mod_proxy_uwsgi: Add in UWSGI proxy (sub)module. [Roberto De Ioris,
107 Jim Jagielski]
108
109 *) mod_proxy_balancer,mod_slotmem_shm: Rework SHM reuse/deletion to not
110 depend on the number of restarts (non-Unix systems) and preserve shared
111 names as much as possible on configuration changes for SHMs and persisted
112 files. PR 62044. [Yann Ylavic, Jim Jagielski]
113
114 *) mod_http2: obsolete code removed, no more events on beam pool destruction,
115 discourage content encoders on http2-status response (where they do not work).
116 [Stefan Eissing]
117
118 *) mpm_event: Let the listener thread do its maintenance job on resources
119 shortage. PR 61979. [Yann Ylavic]
120
121 *) mpm_event: Wakeup the listener to re-enable listening sockets.
122 [Yann Ylavic]
123
124 *) mod_ssl: The SSLCompression directive will now give an error if used
125 with an OpenSSL build which does not support any compression methods.
126 [Joe Orton]
127
128 *) mpm_event,worker: Mask signals for threads created by modules in child
129 init, so that they don't receive (implicitely) the ones meant for the MPM.
130 PR 62009. [Armin Abfalterer <a.abfalterer gmail com>, Yann Ylavic]
131
132 *) mod_md: new experimental, module for managing domains across virtual hosts,
133 implementing the Let's Encrypt ACMEv1 protocol to signup and renew
134 certificates. Please read the modules documentation for further instructions
135 on how to use it. [Stefan Eissing]
136
137 *) mod_proxy_html: skip documents shorter than 4 bytes
138 PR 56286 [Micha Lenk <micha lenk info>]
139
140 *) core, mpm_event: Avoid a small memory leak of the scoreboard handle, for
141 the lifetime of the connection, each time it is processed by MPM event.
142 [Yann Ylavic]
143
144 *) mpm_event: Update scoreboard status for KeepAlive state. [Yann Ylavic]
145
146 *) mod_ldap: Fix a case where a full LDAP cache would continually fail to
147 purge old entries and log AH01323. PR61891.
148 [Hendrik Harms <hendrik.harms gmail.com>]
149
150 *) mpm_event: close connections not reported as handled by any module to
151 avoid losing track of them and leaking scoreboard entries. PR 61551.
152 [Yann Ylavic]
153
154 *) core: A signal received while stopping could have crashed the main
155 process. PR 61558. [Yann Ylavic]
156
157 *) mod_ssl: support for mod_md added. [Stefan Eissing]
158
159 *) mod_proxy_html: process parsed comments immediately.
160 Fixes bug (seen in the wild when used with IBM's HTTPD bundle)
161 where parsed comments may be lost. [Nick Kew]
162
163 *) mod_proxy_html: introduce doctype for HTML 5 [Nick Kew]
164
165 *) mod_proxy_html: fix typo-bug processing "strict" vs "transitional"
166 HTML/XHTML. PR 56457 [Nick Kew]
167
168 *) mpm_event: avoid a very unlikely race condition between the listener and
169 the workers when the latter fails to add a connection to the pollset.
170 [Yann Ylavic]
171
172 *) core: silently ignore a not existent file path when IncludeOptional
173 is used. PR 57585. [Alberto Murillo Silva <powerbsd yahoo.com>, Luca Toscano]
174
175 *) mod_macro: fix usability of globally defined macros in .htaccess files.
176 PR 57525. [Jose Kahan <jose w3.org>, Yann Ylavic]
177
178 *) mod_rewrite, core: add the Vary header when a condition evaluates to true
179 and the related RewriteRule is used in a Directory context
180 (triggering an internal redirect). [Luca Toscano]
181
182 *) ab: Make the TLS layer aware that the underlying socket is nonblocking,
183 and use/handle POLLOUT where needed to avoid busy IOs and recover write
184 errors when appropriate. [Yann Ylavic]
185
186 *) ab: Keep reading nonblocking to exhaust TCP or SSL buffers when previous
187 read was incomplete (the SSL case can cause the next poll() to timeout
188 since data are buffered already). PR 61301 [Luca Toscano, Yann Ylavic]
189
190 *) mod_http2: avoid unnecessary data retrieval for a trace log. Allow certain
191 information retrievals on null bucket beams where it makes sense. [Stefan Eissing]
192
2Changes with Apache 2.4.29193Changes with Apache 2.4.29
3194
4 *) mod_unique_id: Use output of the PRNG rather than IP address and195 *) mod_unique_id: Use output of the PRNG rather than IP address and
@@ -6,7 +197,7 @@ Changes with Apache 2.4.29
6 plus improving randomness for IPv6-only hosts. [Jan Kaluza]197 plus improving randomness for IPv6-only hosts. [Jan Kaluza]
7198
8 *) mod_rewrite, core: Avoid the 'Vary: Host' response header when HTTP_HOST199 *) mod_rewrite, core: Avoid the 'Vary: Host' response header when HTTP_HOST
9 is used in a condition that evaluates to true. PR 58231 [Luca Toscano]200 is used in a condition that evaluates to true. PR 58231 [Luca Toscano, Yann Ylavic]
10201
11 *) mod_http2: v0.10.12, removed optimization for mutex handling in bucket202 *) mod_http2: v0.10.12, removed optimization for mutex handling in bucket
12 beams that could lead to assertion failure in edge cases.203 beams that could lead to assertion failure in edge cases.
@@ -411,6 +602,9 @@ Changes with Apache 2.4.24 (not released)
411 *) mod_socache_memcache: Provide memcache stats to mod_status.602 *) mod_socache_memcache: Provide memcache stats to mod_status.
412 [Jim Jagielski]603 [Jim Jagielski]
413604
605 *) mod_file_cache: mod_file_cache should be able to serve files that
606 haven't had a Content-Type set via e.g. mod_mime. [Eric Covener]
607
414 *) http_filters: Fix potential looping in new check_headers() due to new608 *) http_filters: Fix potential looping in new check_headers() due to new
415 pattern of ap_die() from http header filter. Explicitly clear the609 pattern of ap_die() from http header filter. Explicitly clear the
416 previous headers and body.610 previous headers and body.
@@ -441,7 +635,7 @@ Changes with Apache 2.4.24 (not released)
441 *) core: New directive RegisterHttpMethod for registering non-standard635 *) core: New directive RegisterHttpMethod for registering non-standard
442 HTTP methods. [Stefan Fritsch]636 HTTP methods. [Stefan Fritsch]
443637
444 *) mod_socache_memcache: Pass expiration time through to memcached.638 *) mod_socache_memcache: Pass expiration time through to memcached. PR 55445.
445 [Faidon Liambotis <paravoid debian.org>, Joe Orton]639 [Faidon Liambotis <paravoid debian.org>, Joe Orton]
446640
447 *) mod_cache: Use the actual URI path and query-string for identifying the641 *) mod_cache: Use the actual URI path and query-string for identifying the
@@ -638,6 +832,9 @@ Changes with Apache 2.4.22
638832
639Changes with Apache 2.4.21833Changes with Apache 2.4.21
640834
835 *) core: Added support for HTTP code 451. PR 58985.
836 [Yehuda Katz <yehuda ymkatz.net>, Jim Jagielski]
837
641 *) ab: Use caseless matching for HTTP tokens (e.g. content-length). PR 59111.838 *) ab: Use caseless matching for HTTP tokens (e.g. content-length). PR 59111.
642 [Yann Ylavic]839 [Yann Ylavic]
643840
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3cd8a34..a571061 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -619,6 +619,7 @@ SET(LIBHTTPD_SOURCES
619 server/util.c619 server/util.c
620 server/util_cfgtree.c620 server/util_cfgtree.c
621 server/util_cookies.c621 server/util_cookies.c
622 server/util_debug.c
622 server/util_expr_eval.c623 server/util_expr_eval.c
623 server/util_expr_parse.c624 server/util_expr_parse.c
624 server/util_fcgi.c625 server/util_fcgi.c
diff --git a/LICENSE b/LICENSE
index de66166..0d72de2 100644
--- a/LICENSE
+++ b/LICENSE
@@ -322,6 +322,40 @@ For the server\util_md5.c component:
322 * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. 322 * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
323 */323 */
324324
325
326For the util_pcre.c and ap_regex.h components:
327
328 Copyright (c) 1997-2004 University of Cambridge
329
330-----------------------------------------------------------------------------
331Redistribution and use in source and binary forms, with or without
332modification, are permitted provided that the following conditions are met:
333
334 * Redistributions of source code must retain the above copyright notice,
335 this list of conditions and the following disclaimer.
336
337 * Redistributions in binary form must reproduce the above copyright
338 notice, this list of conditions and the following disclaimer in the
339 documentation and/or other materials provided with the distribution.
340
341 * Neither the name of the University of Cambridge nor the names of its
342 contributors may be used to endorse or promote products derived from
343 this software without specific prior written permission.
344
345THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
346AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
347IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
348ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
349LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
350CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
351SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
352INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
353CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
354ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
355POSSIBILITY OF SUCH DAMAGE.
356-----------------------------------------------------------------------------
357
358
325For the srclib\apr\include\apr_md5.h component: 359For the srclib\apr\include\apr_md5.h component:
326/*360/*
327 * This is work is derived from material Copyright RSA Data Security, Inc.361 * This is work is derived from material Copyright RSA Data Security, Inc.
diff --git a/Makefile.win b/Makefile.win
index 3444cca..afe7b2d 100644
--- a/Makefile.win
+++ b/Makefile.win
@@ -295,6 +295,30 @@ _trybrotli:
295295
296!ENDIF296!ENDIF
297297
298!IF EXIST("srclib\openssl") && EXIST("srclib\jansson") && EXIST("srclib\curl")
299
300_trymd:
301!IF $(USEMAK) == 1
302 cd modules\md
303 $(MAKE) $(MAKEOPT) $(SSLOPT) -f mod_md.mak CFG="mod_md - Win32 $(LONG)" RECURSE=0 $(CTARGET)
304 cd ..\..
305!ELSEIF $(USESLN) == 1
306 devenv $(TLP).sln /useenv $(CTARGET) $(LONG) /project mod_md
307!ELSE
308 @msdev $(TLP).dsw /USEENV /MAKE \
309 "mod_md - Win32 $(LONG)" /NORECURSE $(CTARGET)
310!ENDIF
311
312!ELSE
313# NOT EXIST("srclib\openssl") && EXIST("srclib\jansson") && EXIST("srclib\curl")
314
315_trymd:
316 @echo -----
317 @echo mod_md will not build unless OpenSSL, Jansson and Curl are built and placed
318 @echo in srclib. Example: srclib/openssl, srclib/jansson and srclib/curl
319
320!ENDIF
321
298_trydb:322_trydb:
299!IF $(USEMAK) == 1323!IF $(USEMAK) == 1
300 cd srclib\$(UTILDIR)\dbd324 cd srclib\$(UTILDIR)\dbd
@@ -586,6 +610,11 @@ _build:
586 $(MAKE) $(MAKEOPT) -f mod_userdir.mak CFG="mod_userdir - Win32 $(LONG)" RECURSE=0 $(CTARGET)610 $(MAKE) $(MAKEOPT) -f mod_userdir.mak CFG="mod_userdir - Win32 $(LONG)" RECURSE=0 $(CTARGET)
587 $(MAKE) $(MAKEOPT) -f mod_vhost_alias.mak CFG="mod_vhost_alias - Win32 $(LONG)" RECURSE=0 $(CTARGET)611 $(MAKE) $(MAKEOPT) -f mod_vhost_alias.mak CFG="mod_vhost_alias - Win32 $(LONG)" RECURSE=0 $(CTARGET)
588 cd ..\..612 cd ..\..
613!IF EXIST("srclib\openssl") && EXIST("srclib\jansson") && EXIST("srclib\curl")
614 cd modules\md
615 $(MAKE) $(MAKEOPT) $(SSLOPT) -f mod_md.mak CFG="mod_md - Win32 $(LONG)" RECURSE=0 $(CTARGET)
616 cd ..\..
617!ENDIF
589 cd modules\metadata618 cd modules\metadata
590 $(MAKE) $(MAKEOPT) -f mod_cern_meta.mak CFG="mod_cern_meta - Win32 $(LONG)" RECURSE=0 $(CTARGET)619 $(MAKE) $(MAKEOPT) -f mod_cern_meta.mak CFG="mod_cern_meta - Win32 $(LONG)" RECURSE=0 $(CTARGET)
591 $(MAKE) $(MAKEOPT) -f mod_env.mak CFG="mod_env - Win32 $(LONG)" RECURSE=0 $(CTARGET)620 $(MAKE) $(MAKEOPT) -f mod_env.mak CFG="mod_env - Win32 $(LONG)" RECURSE=0 $(CTARGET)
@@ -610,6 +639,7 @@ _build:
610 $(MAKE) $(MAKEOPT) -f mod_proxy_hcheck.mak CFG="mod_proxy_hcheck - Win32 $(LONG)" RECURSE=0 $(CTARGET)639 $(MAKE) $(MAKEOPT) -f mod_proxy_hcheck.mak CFG="mod_proxy_hcheck - Win32 $(LONG)" RECURSE=0 $(CTARGET)
611 $(MAKE) $(MAKEOPT) -f mod_proxy_http.mak CFG="mod_proxy_http - Win32 $(LONG)" RECURSE=0 $(CTARGET)640 $(MAKE) $(MAKEOPT) -f mod_proxy_http.mak CFG="mod_proxy_http - Win32 $(LONG)" RECURSE=0 $(CTARGET)
612 $(MAKE) $(MAKEOPT) -f mod_proxy_scgi.mak CFG="mod_proxy_scgi - Win32 $(LONG)" RECURSE=0 $(CTARGET)641 $(MAKE) $(MAKEOPT) -f mod_proxy_scgi.mak CFG="mod_proxy_scgi - Win32 $(LONG)" RECURSE=0 $(CTARGET)
642 $(MAKE) $(MAKEOPT) -f mod_proxy_uwsgi.mak CFG="mod_proxy_uwsgi - Win32 $(LONG)" RECURSE=0 $(CTARGET)
613 $(MAKE) $(MAKEOPT) -f mod_proxy_wstunnel.mak CFG="mod_proxy_wstunnel - Win32 $(LONG)" RECURSE=0 $(CTARGET)643 $(MAKE) $(MAKEOPT) -f mod_proxy_wstunnel.mak CFG="mod_proxy_wstunnel - Win32 $(LONG)" RECURSE=0 $(CTARGET)
614 cd ..\..644 cd ..\..
615 cd modules\proxy\balancers645 cd modules\proxy\balancers
@@ -871,6 +901,16 @@ _copybin:
871 copy modules\mappers\$(LONG)\mod_speling.$(src_so) "$(inst_so)" <.y901 copy modules\mappers\$(LONG)\mod_speling.$(src_so) "$(inst_so)" <.y
872 copy modules\mappers\$(LONG)\mod_userdir.$(src_so) "$(inst_so)" <.y902 copy modules\mappers\$(LONG)\mod_userdir.$(src_so) "$(inst_so)" <.y
873 copy modules\mappers\$(LONG)\mod_vhost_alias.$(src_so) "$(inst_so)" <.y903 copy modules\mappers\$(LONG)\mod_vhost_alias.$(src_so) "$(inst_so)" <.y
904!IF EXIST("srclib\openssl") && EXIST("srclib\jansson") && EXIST("srclib\curl")
905 copy modules\md\$(LONG)\mod_md.$(src_so) "$(inst_so)" <.y
906!IF "$(SHORT)" == "D"
907 -copy srclib\curl\bin\libcurl_debug.$(src_dll) "$(inst_dll)" <.y
908 -copy srclib\jansson\bin\jansson_d.$(src_dll) "$(inst_dll)" <.y
909!ELSE
910 -copy srclib\curl\bin\libcurl.$(src_dll) "$(inst_dll)" <.y
911 -copy srclib\jansson\bin\jansson.$(src_dll) "$(inst_dll)" <.y
912!ENDIF
913!ENDIF
874 copy modules\metadata\$(LONG)\mod_cern_meta.$(src_so) "$(inst_so)" <.y914 copy modules\metadata\$(LONG)\mod_cern_meta.$(src_so) "$(inst_so)" <.y
875 copy modules\metadata\$(LONG)\mod_env.$(src_so) "$(inst_so)" <.y915 copy modules\metadata\$(LONG)\mod_env.$(src_so) "$(inst_so)" <.y
876 copy modules\metadata\$(LONG)\mod_expires.$(src_so) "$(inst_so)" <.y916 copy modules\metadata\$(LONG)\mod_expires.$(src_so) "$(inst_so)" <.y
@@ -892,6 +932,7 @@ _copybin:
892 copy modules\proxy\$(LONG)\mod_proxy_hcheck.$(src_so) "$(inst_so)" <.y932 copy modules\proxy\$(LONG)\mod_proxy_hcheck.$(src_so) "$(inst_so)" <.y
893 copy modules\proxy\$(LONG)\mod_proxy_http.$(src_so) "$(inst_so)" <.y933 copy modules\proxy\$(LONG)\mod_proxy_http.$(src_so) "$(inst_so)" <.y
894 copy modules\proxy\$(LONG)\mod_proxy_scgi.$(src_so) "$(inst_so)" <.y934 copy modules\proxy\$(LONG)\mod_proxy_scgi.$(src_so) "$(inst_so)" <.y
935 copy modules\proxy\$(LONG)\mod_proxy_uwsgi.$(src_so) "$(inst_so)" <.y
895 copy modules\proxy\$(LONG)\mod_proxy_wstunnel.$(src_so) "$(inst_so)" <.y936 copy modules\proxy\$(LONG)\mod_proxy_wstunnel.$(src_so) "$(inst_so)" <.y
896 copy modules\proxy\balancers\$(LONG)\mod_lbmethod_bybusyness.$(src_so) "$(inst_so)" <.y937 copy modules\proxy\balancers\$(LONG)\mod_lbmethod_bybusyness.$(src_so) "$(inst_so)" <.y
897 copy modules\proxy\balancers\$(LONG)\mod_lbmethod_byrequests.$(src_so) "$(inst_so)" <.y938 copy modules\proxy\balancers\$(LONG)\mod_lbmethod_byrequests.$(src_so) "$(inst_so)" <.y
diff --git a/NOTICE b/NOTICE
index 01a492b..2c1a2e9 100644
--- a/NOTICE
+++ b/NOTICE
@@ -1,5 +1,5 @@
1Apache HTTP Server1Apache HTTP Server
2Copyright 2017 The Apache Software Foundation.2Copyright 2018 The Apache Software Foundation.
33
4This product includes software developed at4This product includes software developed at
5The Apache Software Foundation (http://www.apache.org/).5The Apache Software Foundation (http://www.apache.org/).
@@ -12,3 +12,7 @@ This software contains code derived from the RSA Data Security
12Inc. MD5 Message-Digest Algorithm, including various12Inc. MD5 Message-Digest Algorithm, including various
13modifications by Spyglass Inc., Carnegie Mellon University, and13modifications by Spyglass Inc., Carnegie Mellon University, and
14Bell Communications Research, Inc (Bellcore).14Bell Communications Research, Inc (Bellcore).
15
16This software contains code derived from the PCRE library pcreposix.c
17source code, written by Philip Hazel, Copyright 1997-2004
18by the University of Cambridge, England.
diff --git a/acinclude.m4 b/acinclude.m4
index 90ca74f..ce1d637 100644
--- a/acinclude.m4
+++ b/acinclude.m4
@@ -574,9 +574,9 @@ AC_DEFUN([APACHE_CHECK_OPENSSL],[
574 ap_openssl_libs="${ap_openssl_libs:--lssl -lcrypto} `$apr_config --libs`"574 ap_openssl_libs="${ap_openssl_libs:--lssl -lcrypto} `$apr_config --libs`"
575 APR_ADDTO(MOD_LDFLAGS, [$ap_openssl_libs])575 APR_ADDTO(MOD_LDFLAGS, [$ap_openssl_libs])
576 APR_ADDTO(LIBS, [$ap_openssl_libs])576 APR_ADDTO(LIBS, [$ap_openssl_libs])
577 APR_SETVAR(ab_LDFLAGS, [$MOD_LDFLAGS])577 APR_SETVAR(ab_LIBS, [$MOD_LDFLAGS])
578 APACHE_SUBST(ab_CFLAGS)578 APACHE_SUBST(ab_CFLAGS)
579 APACHE_SUBST(ab_LDFLAGS)579 APACHE_SUBST(ab_LIBS)
580580
581 dnl Run library and function checks581 dnl Run library and function checks
582 liberrors=""582 liberrors=""
diff --git a/build/config.guess b/build/config.guess
index 69ed3e5..8bd1095 100755
--- a/build/config.guess
+++ b/build/config.guess
@@ -2,7 +2,7 @@
2# Attempt to guess a canonical system name.2# Attempt to guess a canonical system name.
3# Copyright 1992-2017 Free Software Foundation, Inc.3# Copyright 1992-2017 Free Software Foundation, Inc.
44
5timestamp='2017-03-05'5timestamp='2017-09-16'
66
7# This file is free software; you can redistribute it and/or modify it7# This file is free software; you can redistribute it and/or modify it
8# under the terms of the GNU General Public License as published by8# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2017-03-05'
15# General Public License for more details.15# General Public License for more details.
16#16#
17# You should have received a copy of the GNU General Public License17# You should have received a copy of the GNU General Public License
18# along with this program; if not, see <http://www.gnu.org/licenses/>.18# along with this program; if not, see <https://www.gnu.org/licenses/>.
19#19#
20# As a special exception to the GNU General Public License, if you20# As a special exception to the GNU General Public License, if you
21# distribute this file as part of a program that contains a21# distribute this file as part of a program that contains a
@@ -27,7 +27,7 @@ timestamp='2017-03-05'
27# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.27# Originally written by Per Bothner; maintained since 2000 by Ben Elliston.
28#28#
29# You can get the latest version of this script from:29# You can get the latest version of this script from:
30# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess30# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
31#31#
32# Please send patches to <config-patches@gnu.org>.32# Please send patches to <config-patches@gnu.org>.
3333
@@ -259,6 +259,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
259 *:Sortix:*:*)259 *:Sortix:*:*)
260 echo ${UNAME_MACHINE}-unknown-sortix260 echo ${UNAME_MACHINE}-unknown-sortix
261 exit ;;261 exit ;;
262 *:Redox:*:*)
263 echo ${UNAME_MACHINE}-unknown-redox
264 exit ;;
262 alpha:OSF1:*:*)265 alpha:OSF1:*:*)
263 case $UNAME_RELEASE in266 case $UNAME_RELEASE in
264 *4.0)267 *4.0)
@@ -315,15 +318,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
315 exitcode=$?318 exitcode=$?
316 trap '' 0319 trap '' 0
317 exit $exitcode ;;320 exit $exitcode ;;
318 Alpha\ *:Windows_NT*:*)
319 # How do we know it's Interix rather than the generic POSIX subsystem?
320 # Should we change UNAME_MACHINE based on the output of uname instead
321 # of the specific Alpha model?
322 echo alpha-pc-interix
323 exit ;;
324 21064:Windows_NT:50:3)
325 echo alpha-dec-winnt3.5
326 exit ;;
327 Amiga*:UNIX_System_V:4.0:*)321 Amiga*:UNIX_System_V:4.0:*)
328 echo m68k-unknown-sysv4322 echo m68k-unknown-sysv4
329 exit ;;323 exit ;;
@@ -855,10 +849,6 @@ EOF
855 *:MSYS*:*)849 *:MSYS*:*)
856 echo ${UNAME_MACHINE}-pc-msys850 echo ${UNAME_MACHINE}-pc-msys
857 exit ;;851 exit ;;
858 i*:windows32*:*)
859 # uname -m includes "-pc" on this system.
860 echo ${UNAME_MACHINE}-mingw32
861 exit ;;
862 i*:PW*:*)852 i*:PW*:*)
863 echo ${UNAME_MACHINE}-pc-pw32853 echo ${UNAME_MACHINE}-pc-pw32
864 exit ;;854 exit ;;
@@ -874,27 +864,12 @@ EOF
874 echo ia64-unknown-interix${UNAME_RELEASE}864 echo ia64-unknown-interix${UNAME_RELEASE}
875 exit ;;865 exit ;;
876 esac ;;866 esac ;;
877 [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
878 echo i${UNAME_MACHINE}-pc-mks
879 exit ;;
880 8664:Windows_NT:*)
881 echo x86_64-pc-mks
882 exit ;;
883 i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
884 # How do we know it's Interix rather than the generic POSIX subsystem?
885 # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
886 # UNAME_MACHINE based on the output of uname instead of i386?
887 echo i586-pc-interix
888 exit ;;
889 i*:UWIN*:*)867 i*:UWIN*:*)
890 echo ${UNAME_MACHINE}-pc-uwin868 echo ${UNAME_MACHINE}-pc-uwin
891 exit ;;869 exit ;;
892 amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)870 amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
893 echo x86_64-unknown-cygwin871 echo x86_64-unknown-cygwin
894 exit ;;872 exit ;;
895 p*:CYGWIN*:*)
896 echo powerpcle-unknown-cygwin
897 exit ;;
898 prep*:SunOS:5.*:*)873 prep*:SunOS:5.*:*)
899 echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`874 echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
900 exit ;;875 exit ;;
@@ -1304,14 +1279,21 @@ EOF
1304 if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then1279 if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
1305 if [ "$CC_FOR_BUILD" != no_compiler_found ]; then1280 if [ "$CC_FOR_BUILD" != no_compiler_found ]; then
1306 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \1281 if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
1307 (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \1282 (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
1308 grep IS_64BIT_ARCH >/dev/null1283 grep IS_64BIT_ARCH >/dev/null
1309 then1284 then
1310 case $UNAME_PROCESSOR in1285 case $UNAME_PROCESSOR in
1311 i386) UNAME_PROCESSOR=x86_64 ;;1286 i386) UNAME_PROCESSOR=x86_64 ;;
1312 powerpc) UNAME_PROCESSOR=powerpc64 ;;1287 powerpc) UNAME_PROCESSOR=powerpc64 ;;
1313 esac1288 esac
1314 fi1289 fi
1290 # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc
1291 if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \
1292 (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \
1293 grep IS_PPC >/dev/null
1294 then
1295 UNAME_PROCESSOR=powerpc
1296 fi
1315 fi1297 fi
1316 elif test "$UNAME_PROCESSOR" = i386 ; then1298 elif test "$UNAME_PROCESSOR" = i386 ; then
1317 # Avoid executing cc on OS X 10.9, as it ships with a stub1299 # Avoid executing cc on OS X 10.9, as it ships with a stub
@@ -1335,16 +1317,16 @@ EOF
1335 *:QNX:*:4*)1317 *:QNX:*:4*)
1336 echo i386-pc-qnx1318 echo i386-pc-qnx
1337 exit ;;1319 exit ;;
1338 NEO-?:NONSTOP_KERNEL:*:*)1320 NEO-*:NONSTOP_KERNEL:*:*)
1339 echo neo-tandem-nsk${UNAME_RELEASE}1321 echo neo-tandem-nsk${UNAME_RELEASE}
1340 exit ;;1322 exit ;;
1341 NSE-*:NONSTOP_KERNEL:*:*)1323 NSE-*:NONSTOP_KERNEL:*:*)
1342 echo nse-tandem-nsk${UNAME_RELEASE}1324 echo nse-tandem-nsk${UNAME_RELEASE}
1343 exit ;;1325 exit ;;
1344 NSR-?:NONSTOP_KERNEL:*:*)1326 NSR-*:NONSTOP_KERNEL:*:*)
1345 echo nsr-tandem-nsk${UNAME_RELEASE}1327 echo nsr-tandem-nsk${UNAME_RELEASE}
1346 exit ;;1328 exit ;;
1347 NSX-?:NONSTOP_KERNEL:*:*)1329 NSX-*:NONSTOP_KERNEL:*:*)
1348 echo nsx-tandem-nsk${UNAME_RELEASE}1330 echo nsx-tandem-nsk${UNAME_RELEASE}
1349 exit ;;1331 exit ;;
1350 *:NonStop-UX:*:*)1332 *:NonStop-UX:*:*)
@@ -1422,12 +1404,12 @@ cat >&2 <<EOF
1422$0: unable to guess system type1404$0: unable to guess system type
14231405
1424This script (version $timestamp), has failed to recognize the1406This script (version $timestamp), has failed to recognize the
1425operating system you are using. If your script is old, overwrite1407operating system you are using. If your script is old, overwrite *all*
1426config.guess and config.sub with the latest versions from:1408copies of config.guess and config.sub with the latest versions from:
14271409
1428 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess1410 https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess
1429and1411and
1430 http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub1412 https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
14311413
1432If $0 has already been updated, send the following data and any1414If $0 has already been updated, send the following data and any
1433information you think might be pertinent to config-patches@gnu.org to1415information you think might be pertinent to config-patches@gnu.org to
diff --git a/build/config.sub b/build/config.sub
index 40ea5df..95dc3d0 100755
--- a/build/config.sub
+++ b/build/config.sub
@@ -2,7 +2,7 @@
2# Configuration validation subroutine script.2# Configuration validation subroutine script.
3# Copyright 1992-2017 Free Software Foundation, Inc.3# Copyright 1992-2017 Free Software Foundation, Inc.
44
5timestamp='2017-04-02'5timestamp='2017-09-16'
66
7# This file is free software; you can redistribute it and/or modify it7# This file is free software; you can redistribute it and/or modify it
8# under the terms of the GNU General Public License as published by8# under the terms of the GNU General Public License as published by
@@ -15,7 +15,7 @@ timestamp='2017-04-02'
15# General Public License for more details.15# General Public License for more details.
16#16#
17# You should have received a copy of the GNU General Public License17# You should have received a copy of the GNU General Public License
18# along with this program; if not, see <http://www.gnu.org/licenses/>.18# along with this program; if not, see <https://www.gnu.org/licenses/>.
19#19#
20# As a special exception to the GNU General Public License, if you20# As a special exception to the GNU General Public License, if you
21# distribute this file as part of a program that contains a21# distribute this file as part of a program that contains a
@@ -33,7 +33,7 @@ timestamp='2017-04-02'
33# Otherwise, we print the canonical config type on stdout and succeed.33# Otherwise, we print the canonical config type on stdout and succeed.
3434
35# You can get the latest version of this script from:35# You can get the latest version of this script from:
36# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub36# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
3737
38# This file is supposed to be the same for all GNU packages38# This file is supposed to be the same for all GNU packages
39# and recognize all the CPU types, system types and aliases39# and recognize all the CPU types, system types and aliases
@@ -229,9 +229,6 @@ case $os in
229 -ptx*)229 -ptx*)
230 basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`230 basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
231 ;;231 ;;
232 -windowsnt*)
233 os=`echo $os | sed -e 's/windowsnt/winnt/'`
234 ;;
235 -psos*)232 -psos*)
236 os=-psos233 os=-psos
237 ;;234 ;;
@@ -1259,6 +1256,9 @@ case $basic_machine in
1259 basic_machine=hppa1.1-winbond1256 basic_machine=hppa1.1-winbond
1260 os=-proelf1257 os=-proelf
1261 ;;1258 ;;
1259 x64)
1260 basic_machine=x86_64-pc
1261 ;;
1262 xbox)1262 xbox)
1263 basic_machine=i686-pc1263 basic_machine=i686-pc
1264 os=-mingw321264 os=-mingw32
@@ -1366,8 +1366,8 @@ esac
1366if [ x"$os" != x"" ]1366if [ x"$os" != x"" ]
1367then1367then
1368case $os in1368case $os in
1369 # First match some system type aliases1369 # First match some system type aliases that might get confused
1370 # that might get confused with valid system types.1370 # with valid system types.
1371 # -solaris* is a basic system type, with this one exception.1371 # -solaris* is a basic system type, with this one exception.
1372 -auroraux)1372 -auroraux)
1373 os=-auroraux1373 os=-auroraux
@@ -1387,9 +1387,9 @@ case $os in
1387 -gnu/linux*)1387 -gnu/linux*)
1388 os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`1388 os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
1389 ;;1389 ;;
1390 # First accept the basic system types.1390 # Now accept the basic system types.
1391 # The portable systems comes first.1391 # The portable systems comes first.
1392 # Each alternative MUST END IN A *, to match a version number.1392 # Each alternative MUST end in a * to match a version number.
1393 # -sysv* is not here because it comes later, after sysvr4.1393 # -sysv* is not here because it comes later, after sysvr4.
1394 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \1394 -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
1395 | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\1395 | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
diff --git a/build/installwinconf.awk b/build/installwinconf.awk
index 05f519b..a786c7f 100644
--- a/build/installwinconf.awk
+++ b/build/installwinconf.awk
@@ -156,6 +156,7 @@ BEGIN {
156 print "#LoadModule log_debug_module modules/mod_log_debug.so" > dstfl;156 print "#LoadModule log_debug_module modules/mod_log_debug.so" > dstfl;
157 print "#LoadModule log_forensic_module modules/mod_log_forensic.so" > dstfl;157 print "#LoadModule log_forensic_module modules/mod_log_forensic.so" > dstfl;
158 print "#LoadModule lua_module modules/mod_lua.so" > dstfl;158 print "#LoadModule lua_module modules/mod_lua.so" > dstfl;
159 print "#LoadModule md_module modules/mod_md.so" > dstfl;
159 print "#LoadModule macro_module modules/mod_macro.so" > dstfl;160 print "#LoadModule macro_module modules/mod_macro.so" > dstfl;
160 print "LoadModule mime_module modules/mod_mime.so" > dstfl;161 print "LoadModule mime_module modules/mod_mime.so" > dstfl;
161 print "#LoadModule mime_magic_module modules/mod_mime_magic.so" > dstfl;162 print "#LoadModule mime_magic_module modules/mod_mime_magic.so" > dstfl;
@@ -172,6 +173,7 @@ BEGIN {
172 print "#LoadModule proxy_http_module modules/mod_proxy_http.so" > dstfl;173 print "#LoadModule proxy_http_module modules/mod_proxy_http.so" > dstfl;
173 print "#LoadModule proxy_http2_module modules/mod_proxy_http2.so" > dstfl;174 print "#LoadModule proxy_http2_module modules/mod_proxy_http2.so" > dstfl;
174 print "#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so" > dstfl;175 print "#LoadModule proxy_scgi_module modules/mod_proxy_scgi.so" > dstfl;
176 print "#LoadModule proxy_uwsgi_module modules/mod_proxy_uwsgi.so" > dstfl;
175 print "#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so" > dstfl;177 print "#LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so" > dstfl;
176 print "#LoadModule ratelimit_module modules/mod_ratelimit.so" > dstfl;178 print "#LoadModule ratelimit_module modules/mod_ratelimit.so" > dstfl;
177 print "#LoadModule reflector_module modules/mod_reflector.so" > dstfl;179 print "#LoadModule reflector_module modules/mod_reflector.so" > dstfl;
diff --git a/build/ltmain.sh b/build/ltmain.sh
index b6f3fcb..bffda54 100644
--- a/build/ltmain.sh
+++ b/build/ltmain.sh
@@ -1,12 +1,9 @@
1#! /bin/sh
2## DO NOT EDIT - This file generated from ./build-aux/ltmain.in
3## by inline-source v2014-01-03.01
41
5# libtool (GNU libtool) 2.4.62# libtool (GNU libtool) 2.4.2
6# Provide generalized library-building support services.
7# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 19963# Written by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
84
9# Copyright (C) 1996-2015 Free Software Foundation, Inc.5# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
6# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
10# This is free software; see the source for copying conditions. There is NO7# This is free software; see the source for copying conditions. There is NO
11# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.8# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
129
@@ -26,2112 +23,881 @@
26# General Public License for more details.23# General Public License for more details.
27#24#
28# You should have received a copy of the GNU General Public License25# You should have received a copy of the GNU General Public License
29# along with this program. If not, see <http://www.gnu.org/licenses/>.26# along with GNU Libtool; see the file COPYING. If not, a copy
3027# can be downloaded from http://www.gnu.org/licenses/gpl.html,
3128# or obtained by writing to the Free Software Foundation, Inc.,
32PROGRAM=libtool29# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
33PACKAGE=libtool
34VERSION=2.4.6
35package_revision=2.4.6
36
37
38## ------ ##
39## Usage. ##
40## ------ ##
41
42# Run './libtool --help' for help with using this script from the
43# command line.
44
45
46## ------------------------------- ##
47## User overridable command paths. ##
48## ------------------------------- ##
49
50# After configure completes, it has a better idea of some of the
51# shell tools we need than the defaults used by the functions shared
52# with bootstrap, so set those here where they can still be over-
53# ridden by the user, but otherwise take precedence.
54
55: ${AUTOCONF="autoconf"}
56: ${AUTOMAKE="automake"}
57
58
59## -------------------------- ##
60## Source external libraries. ##
61## -------------------------- ##
62
63# Much of our low-level functionality needs to be sourced from external
64# libraries, which are installed to $pkgauxdir.
65
66# Set a version string for this script.
67scriptversion=2015-01-20.17; # UTC
68
69# General shell script boiler plate, and helper functions.
70# Written by Gary V. Vaughan, 2004
71
72# Copyright (C) 2004-2015 Free Software Foundation, Inc.
73# This is free software; see the source for copying conditions. There is NO
74# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
75
76# This program is free software; you can redistribute it and/or modify
77# it under the terms of the GNU General Public License as published by
78# the Free Software Foundation; either version 3 of the License, or
79# (at your option) any later version.
80
81# As a special exception to the GNU General Public License, if you distribute
82# this file as part of a program or library that is built using GNU Libtool,
83# you may include this file under the same distribution terms that you use
84# for the rest of that program.
85
86# This program is distributed in the hope that it will be useful,
87# but WITHOUT ANY WARRANTY; without even the implied warranty of
88# MERCHANTABILITY or FITNES FOR A PARTICULAR PURPOSE. See the GNU
89# General Public License for more details.
90
91# You should have received a copy of the GNU General Public License
92# along with this program. If not, see <http://www.gnu.org/licenses/>.
9330
94# Please report bugs or propose patches to gary@gnu.org.31# Usage: $progname [OPTION]... [MODE-ARG]...
9532#
9633# Provide generalized library-building support services.
97## ------ ##
98## Usage. ##
99## ------ ##
100
101# Evaluate this file near the top of your script to gain access to
102# the functions and variables defined here:
103#34#
104# . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh35# --config show all configuration variables
36# --debug enable verbose shell tracing
37# -n, --dry-run display commands without modifying any files
38# --features display basic configuration information and exit
39# --mode=MODE use operation mode MODE
40# --preserve-dup-deps don't remove duplicate dependency libraries
41# --quiet, --silent don't print informational messages
42# --no-quiet, --no-silent
43# print informational messages (default)
44# --no-warn don't display warning messages
45# --tag=TAG use configuration variables from tag TAG
46# -v, --verbose print more informational messages than default
47# --no-verbose don't print the extra informational messages
48# --version print version information
49# -h, --help, --help-all print short, long, or detailed help message
105#50#
106# If you need to override any of the default environment variable51# MODE must be one of the following:
107# settings, do that before evaluating this file.52#
10853# clean remove files from the build directory
10954# compile compile a source file into a libtool object
110## -------------------- ##55# execute automatically set library path, then run a program
111## Shell normalisation. ##56# finish complete the installation of libtool libraries
112## -------------------- ##57# install install libraries or executables
58# link create a library or an executable
59# uninstall remove libraries from an installed directory
60#
61# MODE-ARGS vary depending on the MODE. When passed as first option,
62# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that.
63# Try `$progname --help --mode=MODE' for a more detailed description of MODE.
64#
65# When reporting a bug, please describe a test case to reproduce it and
66# include the following information:
67#
68# host-triplet: $host
69# shell: $SHELL
70# compiler: $LTCC
71# compiler flags: $LTCFLAGS
72# linker: $LD (gnu? $with_gnu_ld)
73# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1.11
74# automake: $automake_version
75# autoconf: $autoconf_version
76#
77# Report bugs to <bug-libtool@gnu.org>.
78# GNU libtool home page: <http://www.gnu.org/software/libtool/>.
79# General help using GNU software: <http://www.gnu.org/gethelp/>.
11380
114# Some shells need a little help to be as Bourne compatible as possible.81PROGRAM=libtool
115# Before doing anything else, make sure all that help has been provided!82PACKAGE=libtool
83VERSION="2.4.2 Debian-2.4.2-1.11"
84TIMESTAMP=""
85package_revision=1.3337
11686
117DUALCASE=1; export DUALCASE # for MKS sh87# Be Bourne compatible
118if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :88if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
119 emulate sh89 emulate sh
120 NULLCMD=:90 NULLCMD=:
121 # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which91 # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
122 # is contrary to our usage. Disable this feature.92 # is contrary to our usage. Disable this feature.
123 alias -g '${1+"$@"}'='"$@"'93 alias -g '${1+"$@"}'='"$@"'
124 setopt NO_GLOB_SUBST94 setopt NO_GLOB_SUBST
125else95else
126 case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac96 case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
127fi
128
129# NLS nuisances: We save the old values in case they are required later.
130_G_user_locale=
131_G_safe_locale=
132for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
133do
134 eval "if test set = \"\${$_G_var+set}\"; then
135 save_$_G_var=\$$_G_var
136 $_G_var=C
137 export $_G_var
138 _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\"
139 _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\"
140 fi"
141done
142
143# CDPATH.
144(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
145
146# Make sure IFS has a sensible default
147sp=' '
148nl='
149'
150IFS="$sp $nl"
151
152# There are apparently some retarded systems that use ';' as a PATH separator!
153if test "${PATH_SEPARATOR+set}" != set; then
154 PATH_SEPARATOR=:
155 (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
156 (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
157 PATH_SEPARATOR=';'
158 }
159fi97fi
98BIN_SH=xpg4; export BIN_SH # for Tru64
99DUALCASE=1; export DUALCASE # for MKS sh
160100
161101# A function that is used when there is no print builtin or printf.
162102func_fallback_echo ()
163## ------------------------- ##
164## Locate command utilities. ##
165## ------------------------- ##
166
167
168# func_executable_p FILE
169# ----------------------
170# Check that FILE is an executable regular file.
171func_executable_p ()
172{
173 test -f "$1" && test -x "$1"
174}
175
176
177# func_path_progs PROGS_LIST CHECK_FUNC [PATH]
178# --------------------------------------------
179# Search for either a program that responds to --version with output
180# containing "GNU", or else returned by CHECK_FUNC otherwise, by
181# trying all the directories in PATH with each of the elements of
182# PROGS_LIST.
183#
184# CHECK_FUNC should accept the path to a candidate program, and
185# set $func_check_prog_result if it truncates its output less than
186# $_G_path_prog_max characters.
187func_path_progs ()
188{103{
189 _G_progs_list=$1104 eval 'cat <<_LTECHO_EOF
190 _G_check_func=$2105$1
191 _G_PATH=${3-"$PATH"}106_LTECHO_EOF'
192
193 _G_path_prog_max=0
194 _G_path_prog_found=false
195 _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:}
196 for _G_dir in $_G_PATH; do
197 IFS=$_G_save_IFS
198 test -z "$_G_dir" && _G_dir=.
199 for _G_prog_name in $_G_progs_list; do
200 for _exeext in '' .EXE; do
201 _G_path_prog=$_G_dir/$_G_prog_name$_exeext
202 func_executable_p "$_G_path_prog" || continue
203 case `"$_G_path_prog" --version 2>&1` in
204 *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;;
205 *) $_G_check_func $_G_path_prog
206 func_path_progs_result=$func_check_prog_result
207 ;;
208 esac
209 $_G_path_prog_found && break 3
210 done
211 done
212 done
213 IFS=$_G_save_IFS
214 test -z "$func_path_progs_result" && {
215 echo "no acceptable sed could be found in \$PATH" >&2
216 exit 1
217 }
218}
219
220
221# We want to be able to use the functions in this file before configure
222# has figured out where the best binaries are kept, which means we have
223# to search for them ourselves - except when the results are already set
224# where we skip the searches.
225
226# Unless the user overrides by setting SED, search the path for either GNU
227# sed, or the sed that truncates its output the least.
228test -z "$SED" && {
229 _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/
230 for _G_i in 1 2 3 4 5 6 7; do
231 _G_sed_script=$_G_sed_script$nl$_G_sed_script
232 done
233 echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed
234 _G_sed_script=
235
236 func_check_prog_sed ()
237 {
238 _G_path_prog=$1
239
240 _G_count=0
241 printf 0123456789 >conftest.in
242 while :
243 do
244 cat conftest.in conftest.in >conftest.tmp
245 mv conftest.tmp conftest.in
246 cp conftest.in conftest.nl
247 echo '' >> conftest.nl
248 "$_G_path_prog" -f conftest.sed <conftest.nl >conftest.out 2>/dev/null || break
249 diff conftest.out conftest.nl >/dev/null 2>&1 || break
250 _G_count=`expr $_G_count + 1`
251 if test "$_G_count" -gt "$_G_path_prog_max"; then
252 # Best one so far, save it but keep looking for a better one
253 func_check_prog_result=$_G_path_prog
254 _G_path_prog_max=$_G_count
255 fi
256 # 10*(2^10) chars as input seems more than enough
257 test 10 -lt "$_G_count" && break
258 done
259 rm -f conftest.in conftest.tmp conftest.nl conftest.out
260 }
261
262 func_path_progs "sed gsed" func_check_prog_sed $PATH:/usr/xpg4/bin
263 rm -f conftest.sed
264 SED=$func_path_progs_result
265}107}
266108
109# NLS nuisances: We save the old values to restore during execute mode.
110lt_user_locale=
111lt_safe_locale=
112for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
113do
114 eval "if test \"\${$lt_var+set}\" = set; then
115 save_$lt_var=\$$lt_var
116 $lt_var=C
117 export $lt_var
118 lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\"
119 lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\"
120 fi"
121done
122LC_ALL=C
123LANGUAGE=C
124export LANGUAGE LC_ALL
267125
268# Unless the user overrides by setting GREP, search the path for either GNU126$lt_unset CDPATH
269# grep, or the grep that truncates its output the least.
270test -z "$GREP" && {
271 func_check_prog_grep ()
272 {
273 _G_path_prog=$1
274
275 _G_count=0
276 _G_path_prog_max=0
277 printf 0123456789 >conftest.in
278 while :
279 do
280 cat conftest.in conftest.in >conftest.tmp
281 mv conftest.tmp conftest.in
282 cp conftest.in conftest.nl
283 echo 'GREP' >> conftest.nl
284 "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' <conftest.nl >conftest.out 2>/dev/null || break
285 diff conftest.out conftest.nl >/dev/null 2>&1 || break
286 _G_count=`expr $_G_count + 1`
287 if test "$_G_count" -gt "$_G_path_prog_max"; then
288 # Best one so far, save it but keep looking for a better one
289 func_check_prog_result=$_G_path_prog
290 _G_path_prog_max=$_G_count
291 fi
292 # 10*(2^10) chars as input seems more than enough
293 test 10 -lt "$_G_count" && break
294 done
295 rm -f conftest.in conftest.tmp conftest.nl conftest.out
296 }
297127
298 func_path_progs "grep ggrep" func_check_prog_grep $PATH:/usr/xpg4/bin
299 GREP=$func_path_progs_result
300}
301128
129# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
130# is ksh but when the shell is invoked as "sh" and the current value of
131# the _XPG environment variable is not equal to 1 (one), the special
132# positional parameter $0, within a function call, is the name of the
133# function.
134progpath="$0"
302135
303## ------------------------------- ##
304## User overridable command paths. ##
305## ------------------------------- ##
306136
307# All uppercase variable names are used for environment variables. These
308# variables can be overridden by the user before calling a script that
309# uses them if a suitable command of that name is not already available
310# in the command search PATH.
311137
312: ${CP="cp -f"}138: ${CP="cp -f"}
313: ${ECHO="printf %s\n"}139test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'}
314: ${EGREP="$GREP -E"}
315: ${FGREP="$GREP -F"}
316: ${LN_S="ln -s"}
317: ${MAKE="make"}140: ${MAKE="make"}
318: ${MKDIR="mkdir"}141: ${MKDIR="mkdir"}
319: ${MV="mv -f"}142: ${MV="mv -f"}
320: ${RM="rm -f"}143: ${RM="rm -f"}
321: ${SHELL="${CONFIG_SHELL-/bin/sh}"}144: ${SHELL="${CONFIG_SHELL-/bin/sh}"}
145: ${Xsed="$SED -e 1s/^X//"}
322146
147# Global variables:
148EXIT_SUCCESS=0
149EXIT_FAILURE=1
150EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.
151EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.
323152
324## -------------------- ##153exit_status=$EXIT_SUCCESS
325## Useful sed snippets. ##
326## -------------------- ##
327154
328sed_dirname='s|/[^/]*$||'155# Make sure IFS has a sensible default
329sed_basename='s|^.*/||'156lt_nl='
157'
158IFS=" $lt_nl"
330159
331# Sed substitution that helps us do robust quoting. It backslashifies160dirname="s,/[^/]*$,,"
332# metacharacters that are still active within double-quoted strings.161basename="s,^.*/,,"
333sed_quote_subst='s|\([`"$\\]\)|\\\1|g'
334162
335# Same as above, but do not quote variable references.163# func_dirname file append nondir_replacement
336sed_double_quote_subst='s/\(["`\\]\)/\\\1/g'164# Compute the dirname of FILE. If nonempty, add APPEND to the result,
165# otherwise set result to NONDIR_REPLACEMENT.
166func_dirname ()
167{
168 func_dirname_result=`$ECHO "${1}" | $SED "$dirname"`
169 if test "X$func_dirname_result" = "X${1}"; then
170 func_dirname_result="${3}"
171 else
172 func_dirname_result="$func_dirname_result${2}"
173 fi
174} # func_dirname may be replaced by extended shell implementation
337175
338# Sed substitution that turns a string into a regex matching for the
339# string literally.
340sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g'
341176
342# Sed substitution that converts a w32 file name or path177# func_basename file
343# that contains forward slashes, into one that contains178func_basename ()
344# (escaped) backslashes. A very naive implementation.179{
345sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'180 func_basename_result=`$ECHO "${1}" | $SED "$basename"`
346181} # func_basename may be replaced by extended shell implementation
347# Re-'\' parameter expansions in output of sed_double_quote_subst that
348# were '\'-ed in input to the same. If an odd number of '\' preceded a
349# '$' in input to sed_double_quote_subst, that '$' was protected from
350# expansion. Since each input '\' is now two '\'s, look for any number
351# of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'.
352_G_bs='\\'
353_G_bs2='\\\\'
354_G_bs4='\\\\\\\\'
355_G_dollar='\$'
356sed_double_backslash="\
357 s/$_G_bs4/&\\
358/g
359 s/^$_G_bs2$_G_dollar/$_G_bs&/
360 s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g
361 s/\n//g"
362182
363183
364## ----------------- ##184# func_dirname_and_basename file append nondir_replacement
365## Global variables. ##185# perform func_basename and func_dirname in a single function
366## ----------------- ##186# call:
187# dirname: Compute the dirname of FILE. If nonempty,
188# add APPEND to the result, otherwise set result
189# to NONDIR_REPLACEMENT.
190# value returned in "$func_dirname_result"
191# basename: Compute filename of FILE.
192# value retuned in "$func_basename_result"
193# Implementation must be kept synchronized with func_dirname
194# and func_basename. For efficiency, we do not delegate to
195# those functions but instead duplicate the functionality here.
196func_dirname_and_basename ()
197{
198 # Extract subdirectory from the argument.
199 func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"`
200 if test "X$func_dirname_result" = "X${1}"; then
201 func_dirname_result="${3}"
202 else
203 func_dirname_result="$func_dirname_result${2}"
204 fi
205 func_basename_result=`$ECHO "${1}" | $SED -e "$basename"`
206} # func_dirname_and_basename may be replaced by extended shell implementation
367207
368# Except for the global variables explicitly listed below, the following
369# functions in the '^func_' namespace, and the '^require_' namespace
370# variables initialised in the 'Resource management' section, sourcing
371# this file will not pollute your global namespace with anything
372# else. There's no portable way to scope variables in Bourne shell
373# though, so actually running these functions will sometimes place
374# results into a variable named after the function, and often use
375# temporary variables in the '^_G_' namespace. If you are careful to
376# avoid using those namespaces casually in your sourcing script, things
377# should continue to work as you expect. And, of course, you can freely
378# overwrite any of the functions or variables defined here before
379# calling anything to customize them.
380208
381EXIT_SUCCESS=0209# func_stripname prefix suffix name
382EXIT_FAILURE=1210# strip PREFIX and SUFFIX off of NAME.
383EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing.211# PREFIX and SUFFIX must not contain globbing or regex special
384EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake.212# characters, hashes, percent signs, but SUFFIX may contain a leading
213# dot (in which case that matches only a dot).
214# func_strip_suffix prefix name
215func_stripname ()
216{
217 case ${2} in
218 .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;;
219 *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;;
220 esac
221} # func_stripname may be replaced by extended shell implementation
385222
386# Allow overriding, eg assuming that you follow the convention of
387# putting '$debug_cmd' at the start of all your functions, you can get
388# bash to show function call trace with:
389#
390# debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name
391debug_cmd=${debug_cmd-":"}
392exit_cmd=:
393223
394# By convention, finish your script with:224# These SED scripts presuppose an absolute path with a trailing slash.
395#225pathcar='s,^/\([^/]*\).*$,\1,'
396# exit $exit_status226pathcdr='s,^/[^/]*,,'
397#227removedotparts=':dotsl
398# so that you can set exit_status to non-zero if you want to indicate228 s@/\./@/@g
399# something went wrong during execution without actually bailing out at229 t dotsl
400# the point of failure.230 s,/\.$,/,'
401exit_status=$EXIT_SUCCESS231collapseslashes='s@/\{1,\}@/@g'
232finalslash='s,/*$,/,'
402233
403# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh234# func_normal_abspath PATH
404# is ksh but when the shell is invoked as "sh" and the current value of235# Remove doubled-up and trailing slashes, "." path components,
405# the _XPG environment variable is not equal to 1 (one), the special236# and cancel out any ".." path components in PATH after making
406# positional parameter $0, within a function call, is the name of the237# it an absolute path.
407# function.238# value returned in "$func_normal_abspath_result"
408progpath=$0239func_normal_abspath ()
240{
241 # Start from root dir and reassemble the path.
242 func_normal_abspath_result=
243 func_normal_abspath_tpath=$1
244 func_normal_abspath_altnamespace=
245 case $func_normal_abspath_tpath in
246 "")
247 # Empty path, that just means $cwd.
248 func_stripname '' '/' "`pwd`"
249 func_normal_abspath_result=$func_stripname_result
250 return
251 ;;
252 # The next three entries are used to spot a run of precisely
253 # two leading slashes without using negated character classes;
254 # we take advantage of case's first-match behaviour.
255 ///*)
256 # Unusual form of absolute path, do nothing.
257 ;;
258 //*)
259 # Not necessarily an ordinary path; POSIX reserves leading '//'
260 # and for example Cygwin uses it to access remote file shares
261 # over CIFS/SMB, so we conserve a leading double slash if found.
262 func_normal_abspath_altnamespace=/
263 ;;
264 /*)
265 # Absolute path, do nothing.
266 ;;
267 *)
268 # Relative path, prepend $cwd.
269 func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
270 ;;
271 esac
272 # Cancel out all the simple stuff to save iterations. We also want
273 # the path to end with a slash for ease of parsing, so make sure
274 # there is one (and only one) here.
275 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
276 -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"`
277 while :; do
278 # Processed it all yet?
279 if test "$func_normal_abspath_tpath" = / ; then
280 # If we ascended to the root using ".." the result may be empty now.
281 if test -z "$func_normal_abspath_result" ; then
282 func_normal_abspath_result=/
283 fi
284 break
285 fi
286 func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
287 -e "$pathcar"`
288 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
289 -e "$pathcdr"`
290 # Figure out what to do with it
291 case $func_normal_abspath_tcomponent in
292 "")
293 # Trailing empty path component, ignore it.
294 ;;
295 ..)
296 # Parent dir; strip last assembled component from result.
297 func_dirname "$func_normal_abspath_result"
298 func_normal_abspath_result=$func_dirname_result
299 ;;
300 *)
301 # Actual path component, append it.
302 func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent
303 ;;
304 esac
305 done
306 # Restore leading double-slash if one was found on entry.
307 func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
308}
309
310# func_relative_path SRCDIR DSTDIR
311# generates a relative path from SRCDIR to DSTDIR, with a trailing
312# slash if non-empty, suitable for immediately appending a filename
313# without needing to append a separator.
314# value returned in "$func_relative_path_result"
315func_relative_path ()
316{
317 func_relative_path_result=
318 func_normal_abspath "$1"
319 func_relative_path_tlibdir=$func_normal_abspath_result
320 func_normal_abspath "$2"
321 func_relative_path_tbindir=$func_normal_abspath_result
322
323 # Ascend the tree starting from libdir
324 while :; do
325 # check if we have found a prefix of bindir
326 case $func_relative_path_tbindir in
327 $func_relative_path_tlibdir)
328 # found an exact match
329 func_relative_path_tcancelled=
330 break
331 ;;
332 $func_relative_path_tlibdir*)
333 # found a matching prefix
334 func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
335 func_relative_path_tcancelled=$func_stripname_result
336 if test -z "$func_relative_path_result"; then
337 func_relative_path_result=.
338 fi
339 break
340 ;;
341 *)
342 func_dirname $func_relative_path_tlibdir
343 func_relative_path_tlibdir=${func_dirname_result}
344 if test "x$func_relative_path_tlibdir" = x ; then
345 # Have to descend all the way to the root!
346 func_relative_path_result=../$func_relative_path_result
347 func_relative_path_tcancelled=$func_relative_path_tbindir
348 break
349 fi
350 func_relative_path_result=../$func_relative_path_result
351 ;;
352 esac
353 done
354
355 # Now calculate path; take care to avoid doubling-up slashes.
356 func_stripname '' '/' "$func_relative_path_result"
357 func_relative_path_result=$func_stripname_result
358 func_stripname '/' '/' "$func_relative_path_tcancelled"
359 if test "x$func_stripname_result" != x ; then
360 func_relative_path_result=${func_relative_path_result}/${func_stripname_result}
361 fi
362
363 # Normalisation. If bindir is libdir, return empty string,
364 # else relative path ending with a slash; either way, target
365 # file name can be directly appended.
366 if test ! -z "$func_relative_path_result"; then
367 func_stripname './' '' "$func_relative_path_result/"
368 func_relative_path_result=$func_stripname_result
369 fi
370}
409371
410# The name of this program.372# The name of this program:
411progname=`$ECHO "$progpath" |$SED "$sed_basename"`373func_dirname_and_basename "$progpath"
374progname=$func_basename_result
412375
413# Make sure we have an absolute progpath for reexecution:376# Make sure we have an absolute path for reexecution:
414case $progpath in377case $progpath in
415 [\\/]*|[A-Za-z]:\\*) ;;378 [\\/]*|[A-Za-z]:\\*) ;;
416 *[\\/]*)379 *[\\/]*)
417 progdir=`$ECHO "$progpath" |$SED "$sed_dirname"`380 progdir=$func_dirname_result
418 progdir=`cd "$progdir" && pwd`381 progdir=`cd "$progdir" && pwd`
419 progpath=$progdir/$progname382 progpath="$progdir/$progname"
420 ;;383 ;;
421 *)384 *)
422 _G_IFS=$IFS385 save_IFS="$IFS"
423 IFS=${PATH_SEPARATOR-:}386 IFS=${PATH_SEPARATOR-:}
424 for progdir in $PATH; do387 for progdir in $PATH; do
425 IFS=$_G_IFS388 IFS="$save_IFS"
426 test -x "$progdir/$progname" && break389 test -x "$progdir/$progname" && break
427 done390 done
428 IFS=$_G_IFS391 IFS="$save_IFS"
429 test -n "$progdir" || progdir=`pwd`392 test -n "$progdir" || progdir=`pwd`
430 progpath=$progdir/$progname393 progpath="$progdir/$progname"
431 ;;394 ;;
432esac395esac
433396
397# Sed substitution that helps us do robust quoting. It backslashifies
398# metacharacters that are still active within double-quoted strings.
399Xsed="${SED}"' -e 1s/^X//'
400sed_quote_subst='s/\([`"$\\]\)/\\\1/g'
401
402# Same as above, but do not quote variable references.
403double_quote_subst='s/\(["`\\]\)/\\\1/g'
434404
435## ----------------- ##405# Sed substitution that turns a string into a regex matching for the
436## Standard options. ##406# string literally.
437## ----------------- ##407sed_make_literal_regex='s,[].[^$\\*\/],\\&,g'
438408
439# The following options affect the operation of the functions defined409# Sed substitution that converts a w32 file name or path
440# below, and should be set appropriately depending on run-time para-410# which contains forward slashes, into one that contains
441# meters passed on the command line.411# (escaped) backslashes. A very naive implementation.
412lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g'
413
414# Re-`\' parameter expansions in output of double_quote_subst that were
415# `\'-ed in input to the same. If an odd number of `\' preceded a '$'
416# in input to double_quote_subst, that '$' was protected from expansion.
417# Since each input `\' is now two `\'s, look for any number of runs of
418# four `\'s followed by two `\'s and then a '$'. `\' that '$'.
419bs='\\'
420bs2='\\\\'
421bs4='\\\\\\\\'
422dollar='\$'
423sed_double_backslash="\
424 s/$bs4/&\\
425/g
426 s/^$bs2$dollar/$bs&/
427 s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g
428 s/\n//g"
442429
430# Standard options:
443opt_dry_run=false431opt_dry_run=false
432opt_help=false
444opt_quiet=false433opt_quiet=false
445opt_verbose=false434opt_verbose=false
435opt_warning=:
446436
447# Categories 'all' and 'none' are always available. Append any others437# func_echo arg...
448# you will pass as the first argument to func_warning from your own438# Echo program name prefixed message, along with the current mode
449# code.439# name if it has been set yet.
450warning_categories=440func_echo ()
441{
442 $ECHO "$progname: ${opt_mode+$opt_mode: }$*"
443}
451444
452# By default, display warnings according to 'opt_warning_types'. Set445# func_verbose arg...
453# 'warning_func' to ':' to elide all warnings, or func_fatal_error to446# Echo program name prefixed message in verbose mode only.
454# treat the next displayed warning as a fatal error.447func_verbose ()
455warning_func=func_warn_and_continue448{
449 $opt_verbose && func_echo ${1+"$@"}
456450
457# Set to 'all' to display all warnings, 'none' to suppress all451 # A bug in bash halts the script if the last line of a function
458# warnings, or a space delimited list of some subset of452 # fails when set -e is in force, so we need another command to
459# 'warning_categories' to display only the listed warnings.453 # work around that:
460opt_warning_types=all454 :
455}
461456
457# func_echo_all arg...
458# Invoke $ECHO with all args, space-separated.
459func_echo_all ()
460{
461 $ECHO "$*"
462}
462463
463## -------------------- ##464# func_error arg...
464## Resource management. ##465# Echo program name prefixed message to standard error.
465## -------------------- ##466func_error ()
467{
468 $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2
469}
466470
467# This section contains definitions for functions that each ensure a471# func_warning arg...
468# particular resource (a file, or a non-empty configuration variable for472# Echo program name prefixed warning message to standard error.
469# example) is available, and if appropriate to extract default values473func_warning ()
470# from pertinent package files. Call them using their associated474{
471# 'require_*' variable to ensure that they are executed, at most, once.475 $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2
472#
473# It's entirely deliberate that calling these functions can set
474# variables that don't obey the namespace limitations obeyed by the rest
475# of this file, in order that that they be as useful as possible to
476# callers.
477476
477 # bash bug again:
478 :
479}
478480
479# require_term_colors481# func_fatal_error arg...
480# -------------------482# Echo program name prefixed message to standard error, and exit.
481# Allow display of bold text on terminals that support it.483func_fatal_error ()
482require_term_colors=func_require_term_colors
483func_require_term_colors ()
484{484{
485 $debug_cmd485 func_error ${1+"$@"}
486486 exit $EXIT_FAILURE
487 test -t 1 && {487}
488 # COLORTERM and USE_ANSI_COLORS environment variables take
489 # precedence, because most terminfo databases neglect to describe
490 # whether color sequences are supported.
491 test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"}
492
493 if test 1 = "$USE_ANSI_COLORS"; then
494 # Standard ANSI escape sequences
495 tc_reset=''
496 tc_bold=''; tc_standout=''
497 tc_red=''; tc_green=''
498 tc_blue=''; tc_cyan=''
499 else
500 # Otherwise trust the terminfo database after all.
501 test -n "`tput sgr0 2>/dev/null`" && {
502 tc_reset=`tput sgr0`
503 test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold`
504 tc_standout=$tc_bold
505 test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso`
506 test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1`
507 test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2`
508 test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4`
509 test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5`
510 }
511 fi
512 }
513488
514 require_term_colors=:489# func_fatal_help arg...
490# Echo program name prefixed message to standard error, followed by
491# a help hint, and exit.
492func_fatal_help ()
493{
494 func_error ${1+"$@"}
495 func_fatal_error "$help"
515}496}
497help="Try \`$progname --help' for more information." ## default
516498
517499
518## ----------------- ##500# func_grep expression filename
519## Function library. ##
520## ----------------- ##
521
522# This section contains a variety of useful functions to call in your
523# scripts. Take note of the portable wrappers for features provided by
524# some modern shells, which will fall back to slower equivalents on
525# less featureful shells.
526
527
528# func_append VAR VALUE
529# ---------------------
530# Append VALUE onto the existing contents of VAR.
531
532 # We should try to minimise forks, especially on Windows where they are
533 # unreasonably slow, so skip the feature probes when bash or zsh are
534 # being used:
535 if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then
536 : ${_G_HAVE_ARITH_OP="yes"}
537 : ${_G_HAVE_XSI_OPS="yes"}
538 # The += operator was introduced in bash 3.1
539 case $BASH_VERSION in
540 [12].* | 3.0 | 3.0*) ;;
541 *)
542 : ${_G_HAVE_PLUSEQ_OP="yes"}
543 ;;
544 esac
545 fi
546
547 # _G_HAVE_PLUSEQ_OP
548 # Can be empty, in which case the shell is probed, "yes" if += is
549 # useable or anything else if it does not work.
550 test -z "$_G_HAVE_PLUSEQ_OP" \
551 && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \
552 && _G_HAVE_PLUSEQ_OP=yes
553
554if test yes = "$_G_HAVE_PLUSEQ_OP"
555then
556 # This is an XSI compatible shell, allowing a faster implementation...
557 eval 'func_append ()
558 {
559 $debug_cmd
560
561 eval "$1+=\$2"
562 }'
563else
564 # ...otherwise fall back to using expr, which is often a shell builtin.
565 func_append ()
566 {
567 $debug_cmd
568
569 eval "$1=\$$1\$2"
570 }
571fi
572
573
574# func_append_quoted VAR VALUE
575# ----------------------------
576# Quote VALUE and append to the end of shell variable VAR, separated
577# by a space.
578if test yes = "$_G_HAVE_PLUSEQ_OP"; then
579 eval 'func_append_quoted ()
580 {
581 $debug_cmd
582
583 func_quote_for_eval "$2"
584 eval "$1+=\\ \$func_quote_for_eval_result"
585 }'
586else
587 func_append_quoted ()
588 {
589 $debug_cmd
590
591 func_quote_for_eval "$2"
592 eval "$1=\$$1\\ \$func_quote_for_eval_result"
593 }
594fi
595
596
597# func_append_uniq VAR VALUE
598# --------------------------
599# Append unique VALUE onto the existing contents of VAR, assuming
600# entries are delimited by the first character of VALUE. For example:
601#
602# func_append_uniq options " --another-option option-argument"
603#
604# will only append to $options if " --another-option option-argument "
605# is not already present somewhere in $options already (note spaces at
606# each end implied by leading space in second argument).
607func_append_uniq ()
608{
609 $debug_cmd
610
611 eval _G_current_value='`$ECHO $'$1'`'
612 _G_delim=`expr "$2" : '\(.\)'`
613
614 case $_G_delim$_G_current_value$_G_delim in
615 *"$2$_G_delim"*) ;;
616 *) func_append "$@" ;;
617 esac
618}
619
620
621# func_arith TERM...
622# ------------------
623# Set func_arith_result to the result of evaluating TERMs.
624 test -z "$_G_HAVE_ARITH_OP" \
625 && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \
626 && _G_HAVE_ARITH_OP=yes
627
628if test yes = "$_G_HAVE_ARITH_OP"; then
629 eval 'func_arith ()
630 {
631 $debug_cmd
632
633 func_arith_result=$(( $* ))
634 }'
635else
636 func_arith ()
637 {
638 $debug_cmd
639
640 func_arith_result=`expr "$@"`
641 }
642fi
643
644
645# func_basename FILE
646# ------------------
647# Set func_basename_result to FILE with everything up to and including
648# the last / stripped.
649if test yes = "$_G_HAVE_XSI_OPS"; then
650 # If this shell supports suffix pattern removal, then use it to avoid
651 # forking. Hide the definitions single quotes in case the shell chokes
652 # on unsupported syntax...
653 _b='func_basename_result=${1##*/}'
654 _d='case $1 in
655 */*) func_dirname_result=${1%/*}$2 ;;
656 * ) func_dirname_result=$3 ;;
657 esac'
658
659else
660 # ...otherwise fall back to using sed.
661 _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`'
662 _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"`
663 if test "X$func_dirname_result" = "X$1"; then
664 func_dirname_result=$3
665 else
666 func_append func_dirname_result "$2"
667 fi'
668fi
669
670eval 'func_basename ()
671{
672 $debug_cmd
673
674 '"$_b"'
675}'
676
677
678# func_dirname FILE APPEND NONDIR_REPLACEMENT
679# -------------------------------------------
680# Compute the dirname of FILE. If nonempty, add APPEND to the result,
681# otherwise set result to NONDIR_REPLACEMENT.
682eval 'func_dirname ()
683{
684 $debug_cmd
685
686 '"$_d"'
687}'
688
689
690# func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT
691# --------------------------------------------------------
692# Perform func_basename and func_dirname in a single function
693# call:
694# dirname: Compute the dirname of FILE. If nonempty,
695# add APPEND to the result, otherwise set result
696# to NONDIR_REPLACEMENT.
697# value returned in "$func_dirname_result"
698# basename: Compute filename of FILE.
699# value retuned in "$func_basename_result"
700# For efficiency, we do not delegate to the functions above but instead
701# duplicate the functionality here.
702eval 'func_dirname_and_basename ()
703{
704 $debug_cmd
705
706 '"$_b"'
707 '"$_d"'
708}'
709
710
711# func_echo ARG...
712# ----------------
713# Echo program name prefixed message.
714func_echo ()
715{
716 $debug_cmd
717
718 _G_message=$*
719
720 func_echo_IFS=$IFS
721 IFS=$nl
722 for _G_line in $_G_message; do
723 IFS=$func_echo_IFS
724 $ECHO "$progname: $_G_line"
725 done
726 IFS=$func_echo_IFS
727}
728
729
730# func_echo_all ARG...
731# --------------------
732# Invoke $ECHO with all args, space-separated.
733func_echo_all ()
734{
735 $ECHO "$*"
736}
737
738
739# func_echo_infix_1 INFIX ARG...
740# ------------------------------
741# Echo program name, followed by INFIX on the first line, with any
742# additional lines not showing INFIX.
743func_echo_infix_1 ()
744{
745 $debug_cmd
746
747 $require_term_colors
748
749 _G_infix=$1; shift
750 _G_indent=$_G_infix
751 _G_prefix="$progname: $_G_infix: "
752 _G_message=$*
753
754 # Strip color escape sequences before counting printable length
755 for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan"
756 do
757 test -n "$_G_tc" && {
758 _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"`
759 _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"`
760 }
761 done
762 _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes
763
764 func_echo_infix_1_IFS=$IFS
765 IFS=$nl
766 for _G_line in $_G_message; do
767 IFS=$func_echo_infix_1_IFS
768 $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2
769 _G_prefix=$_G_indent
770 done
771 IFS=$func_echo_infix_1_IFS
772}
773
774
775# func_error ARG...
776# -----------------
777# Echo program name prefixed message to standard error.
778func_error ()
779{
780 $debug_cmd
781
782 $require_term_colors
783
784 func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2
785}
786
787
788# func_fatal_error ARG...
789# -----------------------
790# Echo program name prefixed message to standard error, and exit.
791func_fatal_error ()
792{
793 $debug_cmd
794
795 func_error "$*"
796 exit $EXIT_FAILURE
797}
798
799
800# func_grep EXPRESSION FILENAME
801# -----------------------------
802# Check whether EXPRESSION matches any line of FILENAME, without output.501# Check whether EXPRESSION matches any line of FILENAME, without output.
803func_grep ()502func_grep ()
804{503{
805 $debug_cmd
806
807 $GREP "$1" "$2" >/dev/null 2>&1504 $GREP "$1" "$2" >/dev/null 2>&1
808}505}
809506
810507
811# func_len STRING508# func_mkdir_p directory-path
812# ---------------
813# Set func_len_result to the length of STRING. STRING may not
814# start with a hyphen.
815 test -z "$_G_HAVE_XSI_OPS" \
816 && (eval 'x=a/b/c;
817 test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
818 && _G_HAVE_XSI_OPS=yes
819
820if test yes = "$_G_HAVE_XSI_OPS"; then
821 eval 'func_len ()
822 {
823 $debug_cmd
824
825 func_len_result=${#1}
826 }'
827else
828 func_len ()
829 {
830 $debug_cmd
831
832 func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len`
833 }
834fi
835
836
837# func_mkdir_p DIRECTORY-PATH
838# ---------------------------
839# Make sure the entire path to DIRECTORY-PATH is available.509# Make sure the entire path to DIRECTORY-PATH is available.
840func_mkdir_p ()510func_mkdir_p ()
841{511{
842 $debug_cmd512 my_directory_path="$1"
843513 my_dir_list=
844 _G_directory_path=$1
845 _G_dir_list=
846514
847 if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then515 if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then
848516
849 # Protect directory names starting with '-'517 # Protect directory names starting with `-'
850 case $_G_directory_path in518 case $my_directory_path in
851 -*) _G_directory_path=./$_G_directory_path ;;519 -*) my_directory_path="./$my_directory_path" ;;
852 esac520 esac
853521
854 # While some portion of DIR does not yet exist...522 # While some portion of DIR does not yet exist...
855 while test ! -d "$_G_directory_path"; do523 while test ! -d "$my_directory_path"; do
856 # ...make a list in topmost first order. Use a colon delimited524 # ...make a list in topmost first order. Use a colon delimited
857 # list incase some portion of path contains whitespace.525 # list incase some portion of path contains whitespace.
858 _G_dir_list=$_G_directory_path:$_G_dir_list526 my_dir_list="$my_directory_path:$my_dir_list"
859527
860 # If the last portion added has no slash in it, the list is done528 # If the last portion added has no slash in it, the list is done
861 case $_G_directory_path in */*) ;; *) break ;; esac529 case $my_directory_path in */*) ;; *) break ;; esac
862530
863 # ...otherwise throw away the child directory and loop531 # ...otherwise throw away the child directory and loop
864 _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"`532 my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"`
865 done533 done
866 _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'`534 my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'`
867535
868 func_mkdir_p_IFS=$IFS; IFS=:536 save_mkdir_p_IFS="$IFS"; IFS=':'
869 for _G_dir in $_G_dir_list; do537 for my_dir in $my_dir_list; do
870 IFS=$func_mkdir_p_IFS538 IFS="$save_mkdir_p_IFS"
871 # mkdir can fail with a 'File exist' error if two processes539 # mkdir can fail with a `File exist' error if two processes
872 # try to create one of the directories concurrently. Don't540 # try to create one of the directories concurrently. Don't
873 # stop in that case!541 # stop in that case!
874 $MKDIR "$_G_dir" 2>/dev/null || :542 $MKDIR "$my_dir" 2>/dev/null || :
875 done543 done
876 IFS=$func_mkdir_p_IFS544 IFS="$save_mkdir_p_IFS"
877545
878 # Bail out if we (or some other process) failed to create a directory.546 # Bail out if we (or some other process) failed to create a directory.
879 test -d "$_G_directory_path" || \547 test -d "$my_directory_path" || \
880 func_fatal_error "Failed to create '$1'"548 func_fatal_error "Failed to create \`$1'"
881 fi549 fi
882}550}
883551
884552
885# func_mktempdir [BASENAME]553# func_mktempdir [string]
886# -------------------------
887# Make a temporary directory that won't clash with other running554# Make a temporary directory that won't clash with other running
888# libtool processes, and avoids race conditions if possible. If555# libtool processes, and avoids race conditions if possible. If
889# given, BASENAME is the basename for that directory.556# given, STRING is the basename for that directory.
890func_mktempdir ()557func_mktempdir ()
891{558{
892 $debug_cmd559 my_template="${TMPDIR-/tmp}/${1-$progname}"
893560
894 _G_template=${TMPDIR-/tmp}/${1-$progname}561 if test "$opt_dry_run" = ":"; then
895
896 if test : = "$opt_dry_run"; then
897 # Return a directory name, but don't create it in dry-run mode562 # Return a directory name, but don't create it in dry-run mode
898 _G_tmpdir=$_G_template-$$563 my_tmpdir="${my_template}-$$"
899 else564 else
900565
901 # If mktemp works, use that first and foremost566 # If mktemp works, use that first and foremost
902 _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null`567 my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null`
903568
904 if test ! -d "$_G_tmpdir"; then569 if test ! -d "$my_tmpdir"; then
905 # Failing that, at least try and use $RANDOM to avoid a race570 # Failing that, at least try and use $RANDOM to avoid a race
906 _G_tmpdir=$_G_template-${RANDOM-0}$$571 my_tmpdir="${my_template}-${RANDOM-0}$$"
907572
908 func_mktempdir_umask=`umask`573 save_mktempdir_umask=`umask`
909 umask 0077574 umask 0077
910 $MKDIR "$_G_tmpdir"575 $MKDIR "$my_tmpdir"
911 umask $func_mktempdir_umask576 umask $save_mktempdir_umask
912 fi577 fi
913578
914 # If we're not in dry-run mode, bomb out on failure579 # If we're not in dry-run mode, bomb out on failure
915 test -d "$_G_tmpdir" || \580 test -d "$my_tmpdir" || \
916 func_fatal_error "cannot create temporary directory '$_G_tmpdir'"581 func_fatal_error "cannot create temporary directory \`$my_tmpdir'"
917 fi
918
919 $ECHO "$_G_tmpdir"
920}
921
922
923# func_normal_abspath PATH
924# ------------------------
925# Remove doubled-up and trailing slashes, "." path components,
926# and cancel out any ".." path components in PATH after making
927# it an absolute path.
928func_normal_abspath ()
929{
930 $debug_cmd
931
932 # These SED scripts presuppose an absolute path with a trailing slash.
933 _G_pathcar='s|^/\([^/]*\).*$|\1|'
934 _G_pathcdr='s|^/[^/]*||'
935 _G_removedotparts=':dotsl
936 s|/\./|/|g
937 t dotsl
938 s|/\.$|/|'
939 _G_collapseslashes='s|/\{1,\}|/|g'
940 _G_finalslash='s|/*$|/|'
941
942 # Start from root dir and reassemble the path.
943 func_normal_abspath_result=
944 func_normal_abspath_tpath=$1
945 func_normal_abspath_altnamespace=
946 case $func_normal_abspath_tpath in
947 "")
948 # Empty path, that just means $cwd.
949 func_stripname '' '/' "`pwd`"
950 func_normal_abspath_result=$func_stripname_result
951 return
952 ;;
953 # The next three entries are used to spot a run of precisely
954 # two leading slashes without using negated character classes;
955 # we take advantage of case's first-match behaviour.
956 ///*)
957 # Unusual form of absolute path, do nothing.
958 ;;
959 //*)
960 # Not necessarily an ordinary path; POSIX reserves leading '//'
961 # and for example Cygwin uses it to access remote file shares
962 # over CIFS/SMB, so we conserve a leading double slash if found.
963 func_normal_abspath_altnamespace=/
964 ;;
965 /*)
966 # Absolute path, do nothing.
967 ;;
968 *)
969 # Relative path, prepend $cwd.
970 func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath
971 ;;
972 esac
973
974 # Cancel out all the simple stuff to save iterations. We also want
975 # the path to end with a slash for ease of parsing, so make sure
976 # there is one (and only one) here.
977 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
978 -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"`
979 while :; do
980 # Processed it all yet?
981 if test / = "$func_normal_abspath_tpath"; then
982 # If we ascended to the root using ".." the result may be empty now.
983 if test -z "$func_normal_abspath_result"; then
984 func_normal_abspath_result=/
985 fi
986 break
987 fi
988 func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \
989 -e "$_G_pathcar"`
990 func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \
991 -e "$_G_pathcdr"`
992 # Figure out what to do with it
993 case $func_normal_abspath_tcomponent in
994 "")
995 # Trailing empty path component, ignore it.
996 ;;
997 ..)
998 # Parent dir; strip last assembled component from result.
999 func_dirname "$func_normal_abspath_result"
1000 func_normal_abspath_result=$func_dirname_result
1001 ;;
1002 *)
1003 # Actual path component, append it.
1004 func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent"
1005 ;;
1006 esac
1007 done
1008 # Restore leading double-slash if one was found on entry.
1009 func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result
1010}
1011
1012
1013# func_notquiet ARG...
1014# --------------------
1015# Echo program name prefixed message only when not in quiet mode.
1016func_notquiet ()
1017{
1018 $debug_cmd
1019
1020 $opt_quiet || func_echo ${1+"$@"}
1021
1022 # A bug in bash halts the script if the last line of a function
1023 # fails when set -e is in force, so we need another command to
1024 # work around that:
1025 :
1026}
1027
1028
1029# func_relative_path SRCDIR DSTDIR
1030# --------------------------------
1031# Set func_relative_path_result to the relative path from SRCDIR to DSTDIR.
1032func_relative_path ()
1033{
1034 $debug_cmd
1035
1036 func_relative_path_result=
1037 func_normal_abspath "$1"
1038 func_relative_path_tlibdir=$func_normal_abspath_result
1039 func_normal_abspath "$2"
1040 func_relative_path_tbindir=$func_normal_abspath_result
1041
1042 # Ascend the tree starting from libdir
1043 while :; do
1044 # check if we have found a prefix of bindir
1045 case $func_relative_path_tbindir in
1046 $func_relative_path_tlibdir)
1047 # found an exact match
1048 func_relative_path_tcancelled=
1049 break
1050 ;;
1051 $func_relative_path_tlibdir*)
1052 # found a matching prefix
1053 func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir"
1054 func_relative_path_tcancelled=$func_stripname_result
1055 if test -z "$func_relative_path_result"; then
1056 func_relative_path_result=.
1057 fi
1058 break
1059 ;;
1060 *)
1061 func_dirname $func_relative_path_tlibdir
1062 func_relative_path_tlibdir=$func_dirname_result
1063 if test -z "$func_relative_path_tlibdir"; then
1064 # Have to descend all the way to the root!
1065 func_relative_path_result=../$func_relative_path_result
1066 func_relative_path_tcancelled=$func_relative_path_tbindir
1067 break
1068 fi
1069 func_relative_path_result=../$func_relative_path_result
1070 ;;
1071 esac
1072 done
1073
1074 # Now calculate path; take care to avoid doubling-up slashes.
1075 func_stripname '' '/' "$func_relative_path_result"
1076 func_relative_path_result=$func_stripname_result
1077 func_stripname '/' '/' "$func_relative_path_tcancelled"
1078 if test -n "$func_stripname_result"; then
1079 func_append func_relative_path_result "/$func_stripname_result"
1080 fi
1081
1082 # Normalisation. If bindir is libdir, return '.' else relative path.
1083 if test -n "$func_relative_path_result"; then
1084 func_stripname './' '' "$func_relative_path_result"
1085 func_relative_path_result=$func_stripname_result
1086 fi582 fi
1087583
1088 test -n "$func_relative_path_result" || func_relative_path_result=.584 $ECHO "$my_tmpdir"
1089
1090 :
1091}585}
1092586
1093587
1094# func_quote_for_eval ARG...588# func_quote_for_eval arg
1095# --------------------------589# Aesthetically quote ARG to be evaled later.
1096# Aesthetically quote ARGs to be evaled later.590# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT
1097# This function returns two values:591# is double-quoted, suitable for a subsequent eval, whereas
1098# i) func_quote_for_eval_result592# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters
1099# double-quoted, suitable for a subsequent eval593# which are still active within double quotes backslashified.
1100# ii) func_quote_for_eval_unquoted_result
1101# has all characters that are still active within double
1102# quotes backslashified.
1103func_quote_for_eval ()594func_quote_for_eval ()
1104{595{
1105 $debug_cmd
1106
1107 func_quote_for_eval_unquoted_result=
1108 func_quote_for_eval_result=
1109 while test 0 -lt $#; do
1110 case $1 in
1111 *[\\\`\"\$]*)
1112 _G_unquoted_arg=`printf '%s\n' "$1" |$SED "$sed_quote_subst"` ;;
1113 *)
1114 _G_unquoted_arg=$1 ;;
1115 esac
1116 if test -n "$func_quote_for_eval_unquoted_result"; then
1117 func_append func_quote_for_eval_unquoted_result " $_G_unquoted_arg"
1118 else
1119 func_append func_quote_for_eval_unquoted_result "$_G_unquoted_arg"
1120 fi
1121
1122 case $_G_unquoted_arg in
1123 # Double-quote args containing shell metacharacters to delay
1124 # word splitting, command substitution and variable expansion
1125 # for a subsequent eval.
1126 # Many Bourne shells cannot handle close brackets correctly
1127 # in scan sets, so we specify it separately.
1128 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1129 _G_quoted_arg=\"$_G_unquoted_arg\"
1130 ;;
1131 *)
1132 _G_quoted_arg=$_G_unquoted_arg
1133 ;;
1134 esac
1135
1136 if test -n "$func_quote_for_eval_result"; then
1137 func_append func_quote_for_eval_result " $_G_quoted_arg"
1138 else
1139 func_append func_quote_for_eval_result "$_G_quoted_arg"
1140 fi
1141 shift
1142 done
1143}
1144
1145
1146# func_quote_for_expand ARG
1147# -------------------------
1148# Aesthetically quote ARG to be evaled later; same as above,
1149# but do not quote variable references.
1150func_quote_for_expand ()
1151{
1152 $debug_cmd
1153
1154 case $1 in596 case $1 in
1155 *[\\\`\"]*)597 *[\\\`\"\$]*)
1156 _G_arg=`$ECHO "$1" | $SED \598 func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;;
1157 -e "$sed_double_quote_subst" -e "$sed_double_backslash"` ;;
1158 *)599 *)
1159 _G_arg=$1 ;;600 func_quote_for_eval_unquoted_result="$1" ;;
1160 esac601 esac
1161602
1162 case $_G_arg in603 case $func_quote_for_eval_unquoted_result in
1163 # Double-quote args containing shell metacharacters to delay604 # Double-quote args containing shell metacharacters to delay
1164 # word splitting and command substitution for a subsequent eval.605 # word splitting, command substitution and and variable
606 # expansion for a subsequent eval.
1165 # Many Bourne shells cannot handle close brackets correctly607 # Many Bourne shells cannot handle close brackets correctly
1166 # in scan sets, so we specify it separately.608 # in scan sets, so we specify it separately.
1167 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")609 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1168 _G_arg=\"$_G_arg\"610 func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\""
1169 ;;611 ;;
612 *)
613 func_quote_for_eval_result="$func_quote_for_eval_unquoted_result"
1170 esac614 esac
1171
1172 func_quote_for_expand_result=$_G_arg
1173}
1174
1175
1176# func_stripname PREFIX SUFFIX NAME
1177# ---------------------------------
1178# strip PREFIX and SUFFIX from NAME, and store in func_stripname_result.
1179# PREFIX and SUFFIX must not contain globbing or regex special
1180# characters, hashes, percent signs, but SUFFIX may contain a leading
1181# dot (in which case that matches only a dot).
1182if test yes = "$_G_HAVE_XSI_OPS"; then
1183 eval 'func_stripname ()
1184 {
1185 $debug_cmd
1186
1187 # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are
1188 # positional parameters, so assign one to ordinary variable first.
1189 func_stripname_result=$3
1190 func_stripname_result=${func_stripname_result#"$1"}
1191 func_stripname_result=${func_stripname_result%"$2"}
1192 }'
1193else
1194 func_stripname ()
1195 {
1196 $debug_cmd
1197
1198 case $2 in
1199 .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;;
1200 *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;;
1201 esac
1202 }
1203fi
1204
1205
1206# func_show_eval CMD [FAIL_EXP]
1207# -----------------------------
1208# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is
1209# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
1210# is given, then evaluate it.
1211func_show_eval ()
1212{
1213 $debug_cmd
1214
1215 _G_cmd=$1
1216 _G_fail_exp=${2-':'}
1217
1218 func_quote_for_expand "$_G_cmd"
1219 eval "func_notquiet $func_quote_for_expand_result"
1220
1221 $opt_dry_run || {
1222 eval "$_G_cmd"
1223 _G_status=$?
1224 if test 0 -ne "$_G_status"; then
1225 eval "(exit $_G_status); $_G_fail_exp"
1226 fi
1227 }
1228}615}
1229616
1230617
1231# func_show_eval_locale CMD [FAIL_EXP]618# func_quote_for_expand arg
1232# ------------------------------------619# Aesthetically quote ARG to be evaled later; same as above,
1233# Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is620# but do not quote variable references.
1234# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP621func_quote_for_expand ()
1235# is given, then evaluate it. Use the saved locale for evaluation.
1236func_show_eval_locale ()
1237{
1238 $debug_cmd
1239
1240 _G_cmd=$1
1241 _G_fail_exp=${2-':'}
1242
1243 $opt_quiet || {
1244 func_quote_for_expand "$_G_cmd"
1245 eval "func_echo $func_quote_for_expand_result"
1246 }
1247
1248 $opt_dry_run || {
1249 eval "$_G_user_locale
1250 $_G_cmd"
1251 _G_status=$?
1252 eval "$_G_safe_locale"
1253 if test 0 -ne "$_G_status"; then
1254 eval "(exit $_G_status); $_G_fail_exp"
1255 fi
1256 }
1257}
1258
1259
1260# func_tr_sh
1261# ----------
1262# Turn $1 into a string suitable for a shell variable name.
1263# Result is stored in $func_tr_sh_result. All characters
1264# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
1265# if $1 begins with a digit, a '_' is prepended as well.
1266func_tr_sh ()
1267{622{
1268 $debug_cmd
1269
1270 case $1 in623 case $1 in
1271 [0-9]* | *[!a-zA-Z0-9_]*)624 *[\\\`\"]*)
1272 func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'`625 my_arg=`$ECHO "$1" | $SED \
1273 ;;626 -e "$double_quote_subst" -e "$sed_double_backslash"` ;;
1274 * )627 *)
1275 func_tr_sh_result=$1628 my_arg="$1" ;;
1276 ;;
1277 esac
1278}
1279
1280
1281# func_verbose ARG...
1282# -------------------
1283# Echo program name prefixed message in verbose mode only.
1284func_verbose ()
1285{
1286 $debug_cmd
1287
1288 $opt_verbose && func_echo "$*"
1289
1290 :
1291}
1292
1293
1294# func_warn_and_continue ARG...
1295# -----------------------------
1296# Echo program name prefixed warning message to standard error.
1297func_warn_and_continue ()
1298{
1299 $debug_cmd
1300
1301 $require_term_colors
1302
1303 func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2
1304}
1305
1306
1307# func_warning CATEGORY ARG...
1308# ----------------------------
1309# Echo program name prefixed warning message to standard error. Warning
1310# messages can be filtered according to CATEGORY, where this function
1311# elides messages where CATEGORY is not listed in the global variable
1312# 'opt_warning_types'.
1313func_warning ()
1314{
1315 $debug_cmd
1316
1317 # CATEGORY must be in the warning_categories list!
1318 case " $warning_categories " in
1319 *" $1 "*) ;;
1320 *) func_internal_error "invalid warning category '$1'" ;;
1321 esac
1322
1323 _G_category=$1
1324 shift
1325
1326 case " $opt_warning_types " in
1327 *" $_G_category "*) $warning_func ${1+"$@"} ;;
1328 esac
1329}
1330
1331
1332# func_sort_ver VER1 VER2
1333# -----------------------
1334# 'sort -V' is not generally available.
1335# Note this deviates from the version comparison in automake
1336# in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a
1337# but this should suffice as we won't be specifying old
1338# version formats or redundant trailing .0 in bootstrap.conf.
1339# If we did want full compatibility then we should probably
1340# use m4_version_compare from autoconf.
1341func_sort_ver ()
1342{
1343 $debug_cmd
1344
1345 printf '%s\n%s\n' "$1" "$2" \
1346 | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n
1347}
1348
1349# func_lt_ver PREV CURR
1350# ---------------------
1351# Return true if PREV and CURR are in the correct order according to
1352# func_sort_ver, otherwise false. Use it like this:
1353#
1354# func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..."
1355func_lt_ver ()
1356{
1357 $debug_cmd
1358
1359 test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q`
1360}
1361
1362
1363# Local variables:
1364# mode: shell-script
1365# sh-indentation: 2
1366# eval: (add-hook 'before-save-hook 'time-stamp)
1367# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
1368# time-stamp-time-zone: "UTC"
1369# End:
1370#! /bin/sh
1371
1372# Set a version string for this script.
1373scriptversion=2014-01-07.03; # UTC
1374
1375# A portable, pluggable option parser for Bourne shell.
1376# Written by Gary V. Vaughan, 2010
1377
1378# Copyright (C) 2010-2015 Free Software Foundation, Inc.
1379# This is free software; see the source for copying conditions. There is NO
1380# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
1381
1382# This program is free software: you can redistribute it and/or modify
1383# it under the terms of the GNU General Public License as published by
1384# the Free Software Foundation, either version 3 of the License, or
1385# (at your option) any later version.
1386
1387# This program is distributed in the hope that it will be useful,
1388# but WITHOUT ANY WARRANTY; without even the implied warranty of
1389# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1390# GNU General Public License for more details.
1391
1392# You should have received a copy of the GNU General Public License
1393# along with this program. If not, see <http://www.gnu.org/licenses/>.
1394
1395# Please report bugs or propose patches to gary@gnu.org.
1396
1397
1398## ------ ##
1399## Usage. ##
1400## ------ ##
1401
1402# This file is a library for parsing options in your shell scripts along
1403# with assorted other useful supporting features that you can make use
1404# of too.
1405#
1406# For the simplest scripts you might need only:
1407#
1408# #!/bin/sh
1409# . relative/path/to/funclib.sh
1410# . relative/path/to/options-parser
1411# scriptversion=1.0
1412# func_options ${1+"$@"}
1413# eval set dummy "$func_options_result"; shift
1414# ...rest of your script...
1415#
1416# In order for the '--version' option to work, you will need to have a
1417# suitably formatted comment like the one at the top of this file
1418# starting with '# Written by ' and ending with '# warranty; '.
1419#
1420# For '-h' and '--help' to work, you will also need a one line
1421# description of your script's purpose in a comment directly above the
1422# '# Written by ' line, like the one at the top of this file.
1423#
1424# The default options also support '--debug', which will turn on shell
1425# execution tracing (see the comment above debug_cmd below for another
1426# use), and '--verbose' and the func_verbose function to allow your script
1427# to display verbose messages only when your user has specified
1428# '--verbose'.
1429#
1430# After sourcing this file, you can plug processing for additional
1431# options by amending the variables from the 'Configuration' section
1432# below, and following the instructions in the 'Option parsing'
1433# section further down.
1434
1435## -------------- ##
1436## Configuration. ##
1437## -------------- ##
1438
1439# You should override these variables in your script after sourcing this
1440# file so that they reflect the customisations you have added to the
1441# option parser.
1442
1443# The usage line for option parsing errors and the start of '-h' and
1444# '--help' output messages. You can embed shell variables for delayed
1445# expansion at the time the message is displayed, but you will need to
1446# quote other shell meta-characters carefully to prevent them being
1447# expanded when the contents are evaled.
1448usage='$progpath [OPTION]...'
1449
1450# Short help message in response to '-h' and '--help'. Add to this or
1451# override it after sourcing this library to reflect the full set of
1452# options your script accepts.
1453usage_message="\
1454 --debug enable verbose shell tracing
1455 -W, --warnings=CATEGORY
1456 report the warnings falling in CATEGORY [all]
1457 -v, --verbose verbosely report processing
1458 --version print version information and exit
1459 -h, --help print short or long help message and exit
1460"
1461
1462# Additional text appended to 'usage_message' in response to '--help'.
1463long_help_message="
1464Warning categories include:
1465 'all' show all warnings
1466 'none' turn off all the warnings
1467 'error' warnings are treated as fatal errors"
1468
1469# Help message printed before fatal option parsing errors.
1470fatal_help="Try '\$progname --help' for more information."
1471
1472
1473
1474## ------------------------- ##
1475## Hook function management. ##
1476## ------------------------- ##
1477
1478# This section contains functions for adding, removing, and running hooks
1479# to the main code. A hook is just a named list of of function, that can
1480# be run in order later on.
1481
1482# func_hookable FUNC_NAME
1483# -----------------------
1484# Declare that FUNC_NAME will run hooks added with
1485# 'func_add_hook FUNC_NAME ...'.
1486func_hookable ()
1487{
1488 $debug_cmd
1489
1490 func_append hookable_fns " $1"
1491}
1492
1493
1494# func_add_hook FUNC_NAME HOOK_FUNC
1495# ---------------------------------
1496# Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must
1497# first have been declared "hookable" by a call to 'func_hookable'.
1498func_add_hook ()
1499{
1500 $debug_cmd
1501
1502 case " $hookable_fns " in
1503 *" $1 "*) ;;
1504 *) func_fatal_error "'$1' does not accept hook functions." ;;
1505 esac
1506
1507 eval func_append ${1}_hooks '" $2"'
1508}
1509
1510
1511# func_remove_hook FUNC_NAME HOOK_FUNC
1512# ------------------------------------
1513# Remove HOOK_FUNC from the list of functions called by FUNC_NAME.
1514func_remove_hook ()
1515{
1516 $debug_cmd
1517
1518 eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`'
1519}
1520
1521
1522# func_run_hooks FUNC_NAME [ARG]...
1523# ---------------------------------
1524# Run all hook functions registered to FUNC_NAME.
1525# It is assumed that the list of hook functions contains nothing more
1526# than a whitespace-delimited list of legal shell function names, and
1527# no effort is wasted trying to catch shell meta-characters or preserve
1528# whitespace.
1529func_run_hooks ()
1530{
1531 $debug_cmd
1532
1533 case " $hookable_fns " in
1534 *" $1 "*) ;;
1535 *) func_fatal_error "'$1' does not support hook funcions.n" ;;
1536 esac629 esac
1537630
1538 eval _G_hook_fns=\$$1_hooks; shift631 case $my_arg in
1539632 # Double-quote args containing shell metacharacters to delay
1540 for _G_hook in $_G_hook_fns; do633 # word splitting and command substitution for a subsequent eval.
1541 eval $_G_hook '"$@"'634 # Many Bourne shells cannot handle close brackets correctly
1542635 # in scan sets, so we specify it separately.
1543 # store returned options list back into positional636 *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
1544 # parameters for next 'cmd' execution.637 my_arg="\"$my_arg\""
1545 eval _G_hook_result=\$${_G_hook}_result638 ;;
1546 eval set dummy "$_G_hook_result"; shift639 esac
1547 done
1548
1549 func_quote_for_eval ${1+"$@"}
1550 func_run_hooks_result=$func_quote_for_eval_result
1551}
1552
1553
1554
1555## --------------- ##
1556## Option parsing. ##
1557## --------------- ##
1558
1559# In order to add your own option parsing hooks, you must accept the
1560# full positional parameter list in your hook function, remove any
1561# options that you action, and then pass back the remaining unprocessed
1562# options in '<hooked_function_name>_result', escaped suitably for
1563# 'eval'. Like this:
1564#
1565# my_options_prep ()
1566# {
1567# $debug_cmd
1568#
1569# # Extend the existing usage message.
1570# usage_message=$usage_message'
1571# -s, --silent don'\''t print informational messages
1572# '
1573#
1574# func_quote_for_eval ${1+"$@"}
1575# my_options_prep_result=$func_quote_for_eval_result
1576# }
1577# func_add_hook func_options_prep my_options_prep
1578#
1579#
1580# my_silent_option ()
1581# {
1582# $debug_cmd
1583#
1584# # Note that for efficiency, we parse as many options as we can
1585# # recognise in a loop before passing the remainder back to the
1586# # caller on the first unrecognised argument we encounter.
1587# while test $# -gt 0; do
1588# opt=$1; shift
1589# case $opt in
1590# --silent|-s) opt_silent=: ;;
1591# # Separate non-argument short options:
1592# -s*) func_split_short_opt "$_G_opt"
1593# set dummy "$func_split_short_opt_name" \
1594# "-$func_split_short_opt_arg" ${1+"$@"}
1595# shift
1596# ;;
1597# *) set dummy "$_G_opt" "$*"; shift; break ;;
1598# esac
1599# done
1600#
1601# func_quote_for_eval ${1+"$@"}
1602# my_silent_option_result=$func_quote_for_eval_result
1603# }
1604# func_add_hook func_parse_options my_silent_option
1605#
1606#
1607# my_option_validation ()
1608# {
1609# $debug_cmd
1610#
1611# $opt_silent && $opt_verbose && func_fatal_help "\
1612# '--silent' and '--verbose' options are mutually exclusive."
1613#
1614# func_quote_for_eval ${1+"$@"}
1615# my_option_validation_result=$func_quote_for_eval_result
1616# }
1617# func_add_hook func_validate_options my_option_validation
1618#
1619# You'll alse need to manually amend $usage_message to reflect the extra
1620# options you parse. It's preferable to append if you can, so that
1621# multiple option parsing hooks can be added safely.
1622
1623
1624# func_options [ARG]...
1625# ---------------------
1626# All the functions called inside func_options are hookable. See the
1627# individual implementations for details.
1628func_hookable func_options
1629func_options ()
1630{
1631 $debug_cmd
1632
1633 func_options_prep ${1+"$@"}
1634 eval func_parse_options \
1635 ${func_options_prep_result+"$func_options_prep_result"}
1636 eval func_validate_options \
1637 ${func_parse_options_result+"$func_parse_options_result"}
1638
1639 eval func_run_hooks func_options \
1640 ${func_validate_options_result+"$func_validate_options_result"}
1641640
1642 # save modified positional parameters for caller641 func_quote_for_expand_result="$my_arg"
1643 func_options_result=$func_run_hooks_result
1644}642}
1645643
1646644
1647# func_options_prep [ARG]...645# func_show_eval cmd [fail_exp]
1648# --------------------------646# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
1649# All initialisations required before starting the option parse loop.647# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
1650# Note that when calling hook functions, we pass through the list of648# is given, then evaluate it.
1651# positional parameters. If a hook function modifies that list, and649func_show_eval ()
1652# needs to propogate that back to rest of this script, then the complete
1653# modified list must be put in 'func_run_hooks_result' before
1654# returning.
1655func_hookable func_options_prep
1656func_options_prep ()
1657{650{
1658 $debug_cmd651 my_cmd="$1"
1659652 my_fail_exp="${2-:}"
1660 # Option defaults:
1661 opt_verbose=false
1662 opt_warning_types=
1663653
1664 func_run_hooks func_options_prep ${1+"$@"}654 ${opt_silent-false} || {
655 func_quote_for_expand "$my_cmd"
656 eval "func_echo $func_quote_for_expand_result"
657 }
1665658
1666 # save modified positional parameters for caller659 if ${opt_dry_run-false}; then :; else
1667 func_options_prep_result=$func_run_hooks_result660 eval "$my_cmd"
661 my_status=$?
662 if test "$my_status" -eq 0; then :; else
663 eval "(exit $my_status); $my_fail_exp"
664 fi
665 fi
1668}666}
1669667
1670668
1671# func_parse_options [ARG]...669# func_show_eval_locale cmd [fail_exp]
1672# ---------------------------670# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is
1673# The main option parsing loop.671# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP
1674func_hookable func_parse_options672# is given, then evaluate it. Use the saved locale for evaluation.
1675func_parse_options ()673func_show_eval_locale ()
1676{674{
1677 $debug_cmd675 my_cmd="$1"
1678676 my_fail_exp="${2-:}"
1679 func_parse_options_result=
1680
1681 # this just eases exit handling
1682 while test $# -gt 0; do
1683 # Defer to hook functions for initial option parsing, so they
1684 # get priority in the event of reusing an option name.
1685 func_run_hooks func_parse_options ${1+"$@"}
1686
1687 # Adjust func_parse_options positional parameters to match
1688 eval set dummy "$func_run_hooks_result"; shift
1689
1690 # Break out of the loop if we already parsed every option.
1691 test $# -gt 0 || break
1692
1693 _G_opt=$1
1694 shift
1695 case $_G_opt in
1696 --debug|-x) debug_cmd='set -x'
1697 func_echo "enabling shell trace mode"
1698 $debug_cmd
1699 ;;
1700
1701 --no-warnings|--no-warning|--no-warn)
1702 set dummy --warnings none ${1+"$@"}
1703 shift
1704 ;;
1705677
1706 --warnings|--warning|-W)678 ${opt_silent-false} || {
1707 test $# = 0 && func_missing_arg $_G_opt && break679 func_quote_for_expand "$my_cmd"
1708 case " $warning_categories $1" in680 eval "func_echo $func_quote_for_expand_result"
1709 *" $1 "*)681 }
1710 # trailing space prevents matching last $1 above
1711 func_append_uniq opt_warning_types " $1"
1712 ;;
1713 *all)
1714 opt_warning_types=$warning_categories
1715 ;;
1716 *none)
1717 opt_warning_types=none
1718 warning_func=:
1719 ;;
1720 *error)
1721 opt_warning_types=$warning_categories
1722 warning_func=func_fatal_error
1723 ;;
1724 *)
1725 func_fatal_error \
1726 "unsupported warning category: '$1'"
1727 ;;
1728 esac
1729 shift
1730 ;;
1731
1732 --verbose|-v) opt_verbose=: ;;
1733 --version) func_version ;;
1734 -\?|-h) func_usage ;;
1735 --help) func_help ;;
1736
1737 # Separate optargs to long options (plugins may need this):
1738 --*=*) func_split_equals "$_G_opt"
1739 set dummy "$func_split_equals_lhs" \
1740 "$func_split_equals_rhs" ${1+"$@"}
1741 shift
1742 ;;
1743
1744 # Separate optargs to short options:
1745 -W*)
1746 func_split_short_opt "$_G_opt"
1747 set dummy "$func_split_short_opt_name" \
1748 "$func_split_short_opt_arg" ${1+"$@"}
1749 shift
1750 ;;
1751
1752 # Separate non-argument short options:
1753 -\?*|-h*|-v*|-x*)
1754 func_split_short_opt "$_G_opt"
1755 set dummy "$func_split_short_opt_name" \
1756 "-$func_split_short_opt_arg" ${1+"$@"}
1757 shift
1758 ;;
1759
1760 --) break ;;
1761 -*) func_fatal_help "unrecognised option: '$_G_opt'" ;;
1762 *) set dummy "$_G_opt" ${1+"$@"}; shift; break ;;
1763 esac
1764 done
1765682
1766 # save modified positional parameters for caller683 if ${opt_dry_run-false}; then :; else
1767 func_quote_for_eval ${1+"$@"}684 eval "$lt_user_locale
1768 func_parse_options_result=$func_quote_for_eval_result685 $my_cmd"
686 my_status=$?
687 eval "$lt_safe_locale"
688 if test "$my_status" -eq 0; then :; else
689 eval "(exit $my_status); $my_fail_exp"
690 fi
691 fi
1769}692}
1770693
1771694# func_tr_sh
1772# func_validate_options [ARG]...695# Turn $1 into a string suitable for a shell variable name.
1773# ------------------------------696# Result is stored in $func_tr_sh_result. All characters
1774# Perform any sanity checks on option settings and/or unconsumed697# not in the set a-zA-Z0-9_ are replaced with '_'. Further,
1775# arguments.698# if $1 begins with a digit, a '_' is prepended as well.
1776func_hookable func_validate_options699func_tr_sh ()
1777func_validate_options ()
1778{700{
1779 $debug_cmd701 case $1 in
1780702 [0-9]* | *[!a-zA-Z0-9_]*)
1781 # Display all warnings if -W was not given.703 func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'`
1782 test -n "$opt_warning_types" || opt_warning_types=" $warning_categories"704 ;;
1783705 * )
1784 func_run_hooks func_validate_options ${1+"$@"}706 func_tr_sh_result=$1
1785707 ;;
1786 # Bail if the options were screwed!708 esac
1787 $exit_cmd $EXIT_FAILURE
1788
1789 # save modified positional parameters for caller
1790 func_validate_options_result=$func_run_hooks_result
1791}709}
1792710
1793711
712# func_version
713# Echo version message to standard output and exit.
714func_version ()
715{
716 $opt_debug
1794717
1795## ----------------- ##718 $SED -n '/(C)/!b go
1796## Helper functions. ##719 :more
1797## ----------------- ##720 /\./!{
1798721 N
1799# This section contains the helper functions used by the rest of the722 s/\n# / /
1800# hookable option parser framework in ascii-betical order.723 b more
1801724 }
725 :go
726 /^# '$PROGRAM' (GNU /,/# warranty; / {
727 s/^# //
728 s/^# *$//
729 s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/
730 p
731 }' < "$progpath"
732 exit $?
733}
1802734
1803# func_fatal_help ARG...735# func_usage
1804# ----------------------736# Echo short help message to standard output and exit.
1805# Echo program name prefixed message to standard error, followed by737func_usage ()
1806# a help hint, and exit.
1807func_fatal_help ()
1808{738{
1809 $debug_cmd739 $opt_debug
1810740
1811 eval \$ECHO \""Usage: $usage"\"741 $SED -n '/^# Usage:/,/^# *.*--help/ {
1812 eval \$ECHO \""$fatal_help"\"742 s/^# //
1813 func_error ${1+"$@"}743 s/^# *$//
1814 exit $EXIT_FAILURE744 s/\$progname/'$progname'/
745 p
746 }' < "$progpath"
747 echo
748 $ECHO "run \`$progname --help | more' for full usage"
749 exit $?
1815}750}
1816751
1817752# func_help [NOEXIT]
1818# func_help753# Echo long help message to standard output and exit,
1819# ---------754# unless 'noexit' is passed as argument.
1820# Echo long help message to standard output and exit.
1821func_help ()755func_help ()
1822{756{
1823 $debug_cmd757 $opt_debug
1824758
1825 func_usage_message759 $SED -n '/^# Usage:/,/# Report bugs to/ {
1826 $ECHO "$long_help_message"760 :print
1827 exit 0761 s/^# //
762 s/^# *$//
763 s*\$progname*'$progname'*
764 s*\$host*'"$host"'*
765 s*\$SHELL*'"$SHELL"'*
766 s*\$LTCC*'"$LTCC"'*
767 s*\$LTCFLAGS*'"$LTCFLAGS"'*
768 s*\$LD*'"$LD"'*
769 s/\$with_gnu_ld/'"$with_gnu_ld"'/
770 s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/
771 s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/
772 p
773 d
774 }
775 /^# .* home page:/b print
776 /^# General help using/b print
777 ' < "$progpath"
778 ret=$?
779 if test -z "$1"; then
780 exit $ret
781 fi
1828}782}
1829783
1830784# func_missing_arg argname
1831# func_missing_arg ARGNAME
1832# ------------------------
1833# Echo program name prefixed message to standard error and set global785# Echo program name prefixed message to standard error and set global
1834# exit_cmd.786# exit_cmd.
1835func_missing_arg ()787func_missing_arg ()
1836{788{
1837 $debug_cmd789 $opt_debug
1838790
1839 func_error "Missing argument for '$1'."791 func_error "missing argument for $1."
1840 exit_cmd=exit792 exit_cmd=exit
1841}793}
1842794
1843795
1844# func_split_equals STRING796# func_split_short_opt shortopt
1845# ------------------------
1846# Set func_split_equals_lhs and func_split_equals_rhs shell variables after
1847# splitting STRING at the '=' sign.
1848test -z "$_G_HAVE_XSI_OPS" \
1849 && (eval 'x=a/b/c;
1850 test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \
1851 && _G_HAVE_XSI_OPS=yes
1852
1853if test yes = "$_G_HAVE_XSI_OPS"
1854then
1855 # This is an XSI compatible shell, allowing a faster implementation...
1856 eval 'func_split_equals ()
1857 {
1858 $debug_cmd
1859
1860 func_split_equals_lhs=${1%%=*}
1861 func_split_equals_rhs=${1#*=}
1862 test "x$func_split_equals_lhs" = "x$1" \
1863 && func_split_equals_rhs=
1864 }'
1865else
1866 # ...otherwise fall back to using expr, which is often a shell builtin.
1867 func_split_equals ()
1868 {
1869 $debug_cmd
1870
1871 func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'`
1872 func_split_equals_rhs=
1873 test "x$func_split_equals_lhs" = "x$1" \
1874 || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'`
1875 }
1876fi #func_split_equals
1877
1878
1879# func_split_short_opt SHORTOPT
1880# -----------------------------
1881# Set func_split_short_opt_name and func_split_short_opt_arg shell797# Set func_split_short_opt_name and func_split_short_opt_arg shell
1882# variables after splitting SHORTOPT after the 2nd character.798# variables after splitting SHORTOPT after the 2nd character.
1883if test yes = "$_G_HAVE_XSI_OPS"799func_split_short_opt ()
1884then
1885 # This is an XSI compatible shell, allowing a faster implementation...
1886 eval 'func_split_short_opt ()
1887 {
1888 $debug_cmd
1889
1890 func_split_short_opt_arg=${1#??}
1891 func_split_short_opt_name=${1%"$func_split_short_opt_arg"}
1892 }'
1893else
1894 # ...otherwise fall back to using expr, which is often a shell builtin.
1895 func_split_short_opt ()
1896 {
1897 $debug_cmd
1898
1899 func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'`
1900 func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'`
1901 }
1902fi #func_split_short_opt
1903
1904
1905# func_usage
1906# ----------
1907# Echo short help message to standard output and exit.
1908func_usage ()
1909{800{
1910 $debug_cmd801 my_sed_short_opt='1s/^\(..\).*$/\1/;q'
802 my_sed_short_rest='1s/^..\(.*\)$/\1/;q'
1911803
1912 func_usage_message804 func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"`
1913 $ECHO "Run '$progname --help |${PAGER-more}' for full usage"805 func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"`
1914 exit 0806} # func_split_short_opt may be replaced by extended shell implementation
1915}
1916807
1917808
1918# func_usage_message809# func_split_long_opt longopt
1919# ------------------810# Set func_split_long_opt_name and func_split_long_opt_arg shell
1920# Echo short help message to standard output.811# variables after splitting LONGOPT at the `=' sign.
1921func_usage_message ()812func_split_long_opt ()
1922{813{
1923 $debug_cmd814 my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q'
815 my_sed_long_arg='1s/^--[^=]*=//'
1924816
1925 eval \$ECHO \""Usage: $usage"\"817 func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"`
1926 echo818 func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"`
1927 $SED -n 's|^# ||819} # func_split_long_opt may be replaced by extended shell implementation
1928 /^Written by/{
1929 x;p;x
1930 }
1931 h
1932 /^Written by/q' < "$progpath"
1933 echo
1934 eval \$ECHO \""$usage_message"\"
1935}
1936820
821exit_cmd=:
1937822
1938# func_version
1939# ------------
1940# Echo version message to standard output and exit.
1941func_version ()
1942{
1943 $debug_cmd
1944823
1945 printf '%s\n' "$progname $scriptversion"
1946 $SED -n '
1947 /(C)/!b go
1948 :more
1949 /\./!{
1950 N
1951 s|\n# | |
1952 b more
1953 }
1954 :go
1955 /^# Written by /,/# warranty; / {
1956 s|^# ||
1957 s|^# *$||
1958 s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2|
1959 p
1960 }
1961 /^# Written by / {
1962 s|^# ||
1963 p
1964 }
1965 /^warranty; /q' < "$progpath"
1966824
1967 exit $?
1968}
1969825
1970826
1971# Local variables:827magic="%%%MAGIC variable%%%"
1972# mode: shell-script828magic_exe="%%%MAGIC EXE variable%%%"
1973# sh-indentation: 2
1974# eval: (add-hook 'before-save-hook 'time-stamp)
1975# time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC"
1976# time-stamp-time-zone: "UTC"
1977# End:
1978829
1979# Set a version string.830# Global variables.
1980scriptversion='(GNU libtool) 2.4.6'831nonopt=
832preserve_args=
833lo2o="s/\\.lo\$/.${objext}/"
834o2lo="s/\\.${objext}\$/.lo/"
835extracted_archives=
836extracted_serial=0
1981837
838# If this variable is set in any of the actions, the command in it
839# will be execed at the end. This prevents here-documents from being
840# left over by shells.
841exec_cmd=
1982842
1983# func_echo ARG...843# func_append var value
1984# ----------------844# Append VALUE to the end of shell variable VAR.
1985# Libtool also displays the current mode in messages, so override845func_append ()
1986# funclib.sh func_echo with this custom definition.
1987func_echo ()
1988{846{
1989 $debug_cmd847 eval "${1}=\$${1}\${2}"
848} # func_append may be replaced by extended shell implementation
1990849
1991 _G_message=$*850# func_append_quoted var value
1992851# Quote VALUE and append to the end of shell variable VAR, separated
1993 func_echo_IFS=$IFS852# by a space.
1994 IFS=$nl853func_append_quoted ()
1995 for _G_line in $_G_message; do
1996 IFS=$func_echo_IFS
1997 $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line"
1998 done
1999 IFS=$func_echo_IFS
2000}
2001
2002
2003# func_warning ARG...
2004# -------------------
2005# Libtool warnings are not categorized, so override funclib.sh
2006# func_warning with this simpler definition.
2007func_warning ()
2008{854{
2009 $debug_cmd855 func_quote_for_eval "${2}"
856 eval "${1}=\$${1}\\ \$func_quote_for_eval_result"
857} # func_append_quoted may be replaced by extended shell implementation
2010858
2011 $warning_func ${1+"$@"}
2012}
2013
2014
2015## ---------------- ##
2016## Options parsing. ##
2017## ---------------- ##
2018
2019# Hook in the functions to make sure our own options are parsed during
2020# the option parsing loop.
2021
2022usage='$progpath [OPTION]... [MODE-ARG]...'
2023
2024# Short help message in response to '-h'.
2025usage_message="Options:
2026 --config show all configuration variables
2027 --debug enable verbose shell tracing
2028 -n, --dry-run display commands without modifying any files
2029 --features display basic configuration information and exit
2030 --mode=MODE use operation mode MODE
2031 --no-warnings equivalent to '-Wnone'
2032 --preserve-dup-deps don't remove duplicate dependency libraries
2033 --quiet, --silent don't print informational messages
2034 --tag=TAG use configuration variables from tag TAG
2035 -v, --verbose print more informational messages than default
2036 --version print version information
2037 -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all]
2038 -h, --help, --help-all print short, long, or detailed help message
2039"
2040859
2041# Additional text appended to 'usage_message' in response to '--help'.860# func_arith arithmetic-term...
2042func_help ()861func_arith ()
2043{862{
2044 $debug_cmd863 func_arith_result=`expr "${@}"`
2045864} # func_arith may be replaced by extended shell implementation
2046 func_usage_message
2047 $ECHO "$long_help_message
2048
2049MODE must be one of the following:
2050
2051 clean remove files from the build directory
2052 compile compile a source file into a libtool object
2053 execute automatically set library path, then run a program
2054 finish complete the installation of libtool libraries
2055 install install libraries or executables
2056 link create a library or an executable
2057 uninstall remove libraries from an installed directory
2058
2059MODE-ARGS vary depending on the MODE. When passed as first option,
2060'--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that.
2061Try '$progname --help --mode=MODE' for a more detailed description of MODE.
2062
2063When reporting a bug, please describe a test case to reproduce it and
2064include the following information:
2065
2066 host-triplet: $host
2067 shell: $SHELL
2068 compiler: $LTCC
2069 compiler flags: $LTCFLAGS
2070 linker: $LD (gnu? $with_gnu_ld)
2071 version: $progname (GNU libtool) 2.4.6
2072 automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q`
2073 autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q`
2074
2075Report bugs to <bug-libtool@gnu.org>.
2076GNU libtool home page: <http://www.gnu.org/software/libtool/>.
2077General help using GNU software: <http://www.gnu.org/gethelp/>."
2078 exit 0
2079}
2080865
2081866
2082# func_lo2o OBJECT-NAME867# func_len string
2083# ---------------------868# STRING may not start with a hyphen.
2084# Transform OBJECT-NAME from a '.lo' suffix to the platform specific869func_len ()
2085# object suffix.870{
871 func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len`
872} # func_len may be replaced by extended shell implementation
2086873
2087lo2o=s/\\.lo\$/.$objext/
2088o2lo=s/\\.$objext\$/.lo/
2089874
2090if test yes = "$_G_HAVE_XSI_OPS"; then875# func_lo2o object
2091 eval 'func_lo2o ()876func_lo2o ()
2092 {877{
2093 case $1 in878 func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"`
2094 *.lo) func_lo2o_result=${1%.lo}.$objext ;;879} # func_lo2o may be replaced by extended shell implementation
2095 * ) func_lo2o_result=$1 ;;
2096 esac
2097 }'
2098880
2099 # func_xform LIBOBJ-OR-SOURCE
2100 # ---------------------------
2101 # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise)
2102 # suffix to a '.lo' libtool-object suffix.
2103 eval 'func_xform ()
2104 {
2105 func_xform_result=${1%.*}.lo
2106 }'
2107else
2108 # ...otherwise fall back to using sed.
2109 func_lo2o ()
2110 {
2111 func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"`
2112 }
2113881
2114 func_xform ()882# func_xform libobj-or-source
2115 {883func_xform ()
2116 func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'`884{
2117 }885 func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'`
2118fi886} # func_xform may be replaced by extended shell implementation
2119887
2120888
2121# func_fatal_configuration ARG...889# func_fatal_configuration arg...
2122# -------------------------------
2123# Echo program name prefixed message to standard error, followed by890# Echo program name prefixed message to standard error, followed by
2124# a configuration failure hint, and exit.891# a configuration failure hint, and exit.