summaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorBob Beck <beck@cvs.openbsd.org>2000-12-15 22:18:43 +0000
committerBob Beck <beck@cvs.openbsd.org>2000-12-15 22:18:43 +0000
commiteac93d7ea2b0be162ac7484c51dac808cc2493f0 (patch)
tree9c0b7818b8a966fe0c35f352957e60837ee1c1cc /usr.sbin
parent62b2dc3d6a63b189fff9c8dd45936718011a8b7c (diff)
apache 1.3.14 + mod_ssl 2.7.1 merge
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/httpd/conf/httpd.conf-dist102
-rw-r--r--usr.sbin/httpd/conf/httpd.conf-dist-win704
-rw-r--r--usr.sbin/httpd/conf/httpd.conf-dist.nw814
-rw-r--r--usr.sbin/httpd/conf/mime.types45
-rw-r--r--usr.sbin/httpd/htdocs/index.html.tw.Big546
-rw-r--r--usr.sbin/httpd/htdocs/manual/LICENSE77
-rw-r--r--usr.sbin/httpd/htdocs/manual/bind.html116
-rw-r--r--usr.sbin/httpd/htdocs/manual/cgi_path.html76
-rw-r--r--usr.sbin/httpd/htdocs/manual/configuring.html198
-rw-r--r--usr.sbin/httpd/htdocs/manual/content-negotiation.html8
-rw-r--r--usr.sbin/httpd/htdocs/manual/custom-error.html134
-rw-r--r--usr.sbin/httpd/htdocs/manual/dns-caveats.html164
-rw-r--r--usr.sbin/httpd/htdocs/manual/dso.html12
-rw-r--r--usr.sbin/httpd/htdocs/manual/ebcdic.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/env.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/footer.html6
-rw-r--r--usr.sbin/httpd/htdocs/manual/handler.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/header.html2
-rw-r--r--usr.sbin/httpd/htdocs/manual/index.html20
-rw-r--r--usr.sbin/httpd/htdocs/manual/install-tpf.html84
-rw-r--r--usr.sbin/httpd/htdocs/manual/install.html26
-rw-r--r--usr.sbin/httpd/htdocs/manual/invoking.html86
-rw-r--r--usr.sbin/httpd/htdocs/manual/keepalive.html92
-rw-r--r--usr.sbin/httpd/htdocs/manual/location.html57
-rw-r--r--usr.sbin/httpd/htdocs/manual/man-template.html167
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/FAQ.html488
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/compat_notes.html5
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/descriptors.html119
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/nopgp.html21
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/perf-bsd44.html227
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html22
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/perf.html127
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html2
-rw-r--r--usr.sbin/httpd/htdocs/manual/misc/security_tips.html8
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/core.html130
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/directives.html17
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/index-bytype.html208
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/index.html49
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_access.html157
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_actions.html46
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_alias.html48
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_asis.html120
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_auth.html47
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_auth_anon.html143
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_auth_db.html228
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_auth_dbm.html220
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html143
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html75
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html171
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html59
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_digest.html116
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_env.html39
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_example.html49
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_expires.html227
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_headers.html37
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_imap.html296
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_include.html66
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_info.html97
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_isapi.html322
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_log_agent.html33
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_log_config.html61
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html49
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_mime.html191
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_mime_magic.html154
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html34
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html55
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_proxy.html268
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html36
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html78
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_so.html157
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_speling.html41
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/index.html12
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_compat.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_cover.wml2
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html131
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml33
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_glossary.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.html20
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.wml2
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_intro.html10
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.html13
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.wml9
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html6
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_template.inc2
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_status.html182
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html41
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html152
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html136
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/mod_vhost_alias.html76
-rw-r--r--usr.sbin/httpd/htdocs/manual/mod/module-dict.html149
-rw-r--r--usr.sbin/httpd/htdocs/manual/multilogs.html90
-rw-r--r--usr.sbin/httpd/htdocs/manual/netware.html33
-rw-r--r--usr.sbin/httpd/htdocs/manual/new_features_1_0.html56
-rw-r--r--usr.sbin/httpd/htdocs/manual/new_features_1_1.html201
-rw-r--r--usr.sbin/httpd/htdocs/manual/new_features_1_2.html202
-rw-r--r--usr.sbin/httpd/htdocs/manual/new_features_1_3.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/process-model.html12
-rw-r--r--usr.sbin/httpd/htdocs/manual/readme-tpf.html65
-rw-r--r--usr.sbin/httpd/htdocs/manual/sections.html6
-rw-r--r--usr.sbin/httpd/htdocs/manual/sourcereorg.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/stopping.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/suexec.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/suexec_1_2.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/unixware.html31
-rw-r--r--usr.sbin/httpd/htdocs/manual/upgrading_to_1_3.html4
-rw-r--r--usr.sbin/httpd/htdocs/manual/vhosts/details.html10
-rw-r--r--usr.sbin/httpd/htdocs/manual/vhosts/examples.html263
-rw-r--r--usr.sbin/httpd/htdocs/manual/vhosts/host.html2
-rw-r--r--usr.sbin/httpd/htdocs/manual/vhosts/index.html2
-rw-r--r--usr.sbin/httpd/htdocs/manual/vhosts/ip-based.html21
-rw-r--r--usr.sbin/httpd/htdocs/manual/vhosts/mass.html16
-rw-r--r--usr.sbin/httpd/htdocs/manual/vhosts/name-based.html41
-rw-r--r--usr.sbin/httpd/htdocs/manual/win_compiling.html207
-rw-r--r--usr.sbin/httpd/htdocs/manual/win_service.html337
-rw-r--r--usr.sbin/httpd/htdocs/manual/windows.html701
-rw-r--r--usr.sbin/httpd/src/Apache.dsp39
-rw-r--r--usr.sbin/httpd/src/Apache.mak80
-rw-r--r--usr.sbin/httpd/src/ApacheCore.def57
-rw-r--r--usr.sbin/httpd/src/ApacheCore.dsp48
-rw-r--r--usr.sbin/httpd/src/ApacheCore.mak1854
-rw-r--r--usr.sbin/httpd/src/ApacheCoreOS2.def4
-rw-r--r--usr.sbin/httpd/src/CHANGES607
-rw-r--r--usr.sbin/httpd/src/CHANGES.SSL46
-rw-r--r--usr.sbin/httpd/src/Configuration.tmpl10
-rw-r--r--usr.sbin/httpd/src/Configure84
-rw-r--r--usr.sbin/httpd/src/Makefile.nt158
-rw-r--r--usr.sbin/httpd/src/Makefile.tmpl4
-rw-r--r--usr.sbin/httpd/src/Makefile_win32.txt136
-rw-r--r--usr.sbin/httpd/src/Makefile_win32_debug.txt136
-rw-r--r--usr.sbin/httpd/src/ap/Makefile.tmpl10
-rw-r--r--usr.sbin/httpd/src/ap/ap.dsp43
-rw-r--r--usr.sbin/httpd/src/ap/ap.mak346
-rw-r--r--usr.sbin/httpd/src/buildmark.c2
-rw-r--r--usr.sbin/httpd/src/helpers/GuessOS8
-rw-r--r--usr.sbin/httpd/src/helpers/TestCompile51
-rw-r--r--usr.sbin/httpd/src/include/alloc.h414
-rw-r--r--usr.sbin/httpd/src/include/ap_config.h44
-rw-r--r--usr.sbin/httpd/src/include/ap_mmn.h35
-rw-r--r--usr.sbin/httpd/src/include/hsregex.h4
-rw-r--r--usr.sbin/httpd/src/include/http_conf_globals.h34
-rw-r--r--usr.sbin/httpd/src/include/http_config.h1
-rw-r--r--usr.sbin/httpd/src/include/http_main.h6
-rw-r--r--usr.sbin/httpd/src/include/httpd.h38
-rw-r--r--usr.sbin/httpd/src/include/multithread.h2
-rw-r--r--usr.sbin/httpd/src/include/util_script.h4
-rw-r--r--usr.sbin/httpd/src/lib/expat-lite/xmlparse.c1
-rw-r--r--usr.sbin/httpd/src/lib/expat-lite/xmlparse.dsp30
-rw-r--r--usr.sbin/httpd/src/lib/expat-lite/xmlparse.mak35
-rw-r--r--usr.sbin/httpd/src/lib/expat-lite/xmltok.dsp27
-rw-r--r--usr.sbin/httpd/src/lib/expat-lite/xmltok.mak30
-rw-r--r--usr.sbin/httpd/src/lib/sdbm/sdbm.ncb1
-rw-r--r--usr.sbin/httpd/src/lib/sdbm/sdbm.opt1
-rw-r--r--usr.sbin/httpd/src/main/Makefile.tmpl30
-rw-r--r--usr.sbin/httpd/src/main/alloc.c8
-rw-r--r--usr.sbin/httpd/src/main/buff.c58
-rw-r--r--usr.sbin/httpd/src/main/gen_test_char.dsp25
-rw-r--r--usr.sbin/httpd/src/main/gen_test_char.mak144
-rw-r--r--usr.sbin/httpd/src/main/gen_uri_delims.dsp25
-rw-r--r--usr.sbin/httpd/src/main/gen_uri_delims.mak116
-rw-r--r--usr.sbin/httpd/src/main/http_config.c109
-rw-r--r--usr.sbin/httpd/src/main/http_core.c44
-rw-r--r--usr.sbin/httpd/src/main/http_log.c24
-rw-r--r--usr.sbin/httpd/src/main/http_main.c452
-rw-r--r--usr.sbin/httpd/src/main/http_protocol.c29
-rw-r--r--usr.sbin/httpd/src/main/http_request.c87
-rw-r--r--usr.sbin/httpd/src/main/http_vhost.c261
-rw-r--r--usr.sbin/httpd/src/main/util.c111
-rw-r--r--usr.sbin/httpd/src/main/util_md5.c4
-rw-r--r--usr.sbin/httpd/src/main/util_script.c87
-rw-r--r--usr.sbin/httpd/src/modules/example/Makefile.tmpl2
-rw-r--r--usr.sbin/httpd/src/modules/example/mod_example.c8
-rw-r--r--usr.sbin/httpd/src/modules/experimental/Makefile.tmpl4
-rw-r--r--usr.sbin/httpd/src/modules/experimental/mod_auth_digest.c235
-rw-r--r--usr.sbin/httpd/src/modules/experimental/mod_mmap_static.c4
-rw-r--r--usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.dsp38
-rw-r--r--usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.mak381
-rw-r--r--usr.sbin/httpd/src/modules/proxy/Makefile.tmpl12
-rw-r--r--usr.sbin/httpd/src/modules/proxy/mod_proxy.c10
-rw-r--r--usr.sbin/httpd/src/modules/proxy/mod_proxy.h5
-rw-r--r--usr.sbin/httpd/src/modules/proxy/proxy_cache.c49
-rw-r--r--usr.sbin/httpd/src/modules/proxy/proxy_connect.c14
-rw-r--r--usr.sbin/httpd/src/modules/proxy/proxy_ftp.c4
-rw-r--r--usr.sbin/httpd/src/modules/proxy/proxy_http.c2
-rw-r--r--usr.sbin/httpd/src/modules/proxy/proxy_util.c77
-rw-r--r--usr.sbin/httpd/src/modules/ssl/Makefile.tmpl196
-rw-r--r--usr.sbin/httpd/src/modules/ssl/README14
-rw-r--r--usr.sbin/httpd/src/modules/ssl/libssl.module92
-rw-r--r--usr.sbin/httpd/src/modules/ssl/libssl.version2
-rw-r--r--usr.sbin/httpd/src/modules/ssl/mod_ssl.c7
-rw-r--r--usr.sbin/httpd/src/modules/ssl/mod_ssl.h66
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c58
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_ext.c1
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c36
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c12
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c915
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c4
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c21
-rw-r--r--usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.h8
-rw-r--r--usr.sbin/httpd/src/modules/standard/Makefile.tmpl66
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_auth_anon.c11
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_auth_dbm.c11
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_cern_meta.c7
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_digest.c7
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_expires.c19
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_headers.c6
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_include.c21
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_info.c138
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_log_config.c2
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_mime.c84
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_negotiation.c2
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_rewrite.c52
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_setenvif.c84
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_speling.c6
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_status.c6
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_unique_id.c51
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_userdir.c4
-rw-r--r--usr.sbin/httpd/src/modules/standard/mod_usertrack.c6
-rw-r--r--usr.sbin/httpd/src/os/bs2000/Makefile.tmpl4
-rw-r--r--usr.sbin/httpd/src/os/bs2000/ebcdic.h6
-rw-r--r--usr.sbin/httpd/src/os/bs2000/os.c3
-rw-r--r--usr.sbin/httpd/src/os/bs2000/os.h2
-rw-r--r--usr.sbin/httpd/src/os/mpeix/Makefile.tmpl5
-rw-r--r--usr.sbin/httpd/src/os/mpeix/README277
-rw-r--r--usr.sbin/httpd/src/os/mpeix/dlopen.c10
-rw-r--r--usr.sbin/httpd/src/os/mpeix/os-inline.c32
-rw-r--r--usr.sbin/httpd/src/os/netware/ApacheCore.imp16
-rw-r--r--usr.sbin/httpd/src/os/netware/ApacheCoreNW.def6
-rw-r--r--usr.sbin/httpd/src/os/netware/multithread.c14
-rw-r--r--usr.sbin/httpd/src/os/netware/os.c14
-rw-r--r--usr.sbin/httpd/src/os/netware/os.h11
-rw-r--r--usr.sbin/httpd/src/os/os2/Makefile.tmpl2
-rw-r--r--usr.sbin/httpd/src/os/os2/os-inline.c2
-rw-r--r--usr.sbin/httpd/src/os/os2/os.h2
-rw-r--r--usr.sbin/httpd/src/os/os2/util_os2.c71
-rw-r--r--usr.sbin/httpd/src/os/os390/Makefile.tmpl2
-rw-r--r--usr.sbin/httpd/src/os/tpf/os.c2
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.mak192
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleAuthDBM.dsp95
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleAuthDBM.mak317
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.dsp38
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.mak104
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.mak191
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleDigest.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleDigest.mak192
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleExpires.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleExpires.mak186
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.mak185
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleInfo.dsp49
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleInfo.mak163
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.mak189
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.mak187
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleStatus.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleStatus.mak116
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.dsp52
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.mak189
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheOS.dsp11
-rw-r--r--usr.sbin/httpd/src/os/win32/ApacheOS.mak72
-rw-r--r--usr.sbin/httpd/src/os/win32/MakeModuleMak.mak20
-rw-r--r--usr.sbin/httpd/src/os/win32/Module.mak.tmpl2
-rw-r--r--usr.sbin/httpd/src/os/win32/installer/installdll/install.dsp22
-rw-r--r--usr.sbin/httpd/src/os/win32/installer/installdll/install.mak40
-rw-r--r--usr.sbin/httpd/src/os/win32/installer/installdll/test/test.dsp7
-rw-r--r--usr.sbin/httpd/src/os/win32/installer/installdll/test/test.mak46
-rw-r--r--usr.sbin/httpd/src/os/win32/mod_isapi.c969
-rw-r--r--usr.sbin/httpd/src/os/win32/os.h40
-rw-r--r--usr.sbin/httpd/src/os/win32/readdir.h5
-rw-r--r--usr.sbin/httpd/src/os/win32/registry.c36
-rw-r--r--usr.sbin/httpd/src/os/win32/registry.h6
-rw-r--r--usr.sbin/httpd/src/os/win32/service.c916
-rw-r--r--usr.sbin/httpd/src/os/win32/service.h25
-rw-r--r--usr.sbin/httpd/src/os/win32/util_win32.c147
-rw-r--r--usr.sbin/httpd/src/regex/regex.dsp11
-rw-r--r--usr.sbin/httpd/src/regex/regex.mak131
-rw-r--r--usr.sbin/httpd/src/support/ab.c14
-rw-r--r--usr.sbin/httpd/src/support/apxs.pl2
-rw-r--r--usr.sbin/httpd/src/support/dbmmanage285
-rw-r--r--usr.sbin/httpd/src/support/htdigest.dsp26
-rw-r--r--usr.sbin/httpd/src/support/htdigest.mak80
-rw-r--r--usr.sbin/httpd/src/support/htpasswd.1117
-rw-r--r--usr.sbin/httpd/src/support/htpasswd.c232
-rw-r--r--usr.sbin/httpd/src/support/htpasswd.dsp32
-rw-r--r--usr.sbin/httpd/src/support/htpasswd.mak428
-rw-r--r--usr.sbin/httpd/src/support/httpd.exp8
-rw-r--r--usr.sbin/httpd/src/support/logresolve.c15
-rw-r--r--usr.sbin/httpd/src/support/rotatelogs.c10
290 files changed, 16019 insertions, 11620 deletions
diff --git a/usr.sbin/httpd/conf/httpd.conf-dist b/usr.sbin/httpd/conf/httpd.conf-dist
index 97301900640..d8983c1f178 100644
--- a/usr.sbin/httpd/conf/httpd.conf-dist
+++ b/usr.sbin/httpd/conf/httpd.conf-dist
@@ -86,12 +86,12 @@ PidFile logs/httpd.pid
ScoreBoardFile logs/apache_runtime_status
#
-# In the standard configuration, the server will process this file,
-# srm.conf, and access.conf in that order. The latter two files are
-# now distributed empty, as it is recommended that all directives
-# be kept in a single file for simplicity. The commented-out values
-# below are the built-in defaults. You can have the server ignore
-# these files altogether by using "/dev/null" (for Unix) or
+# In the standard configuration, the server will process httpd.conf (this
+# file, specified by the -f command line option), srm.conf, and access.conf
+# in that order. The latter two files are now distributed empty, as it is
+# recommended that all directives be kept in a single file for simplicity.
+# The commented-out values below are the built-in defaults. You can have the
+# server ignore these files altogether by using "/dev/null" (for Unix) or
# "nul" (for Win32) for the arguments to the directives.
#
#ResourceConfig conf/srm.conf
@@ -195,7 +195,7 @@ MaxRequestsPerChild 0
# built-in (statically linked and thus always available) modules in your httpd
# binary.
#
-# Note: The order is which modules are loaded is important. Don't change
+# Note: The order in which modules are loaded is important. Don't change
# the order below without expert advice.
#
# Example:
@@ -278,6 +278,10 @@ ServerAdmin you@your.address
# You will have to access it by its address (e.g., http://123.45.67.89/)
# anyway, and this will make redirections work in a sensible way.
#
+# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
+# machine always knows itself by this address. If you use Apache strictly for
+# local testing and development, you may use 127.0.0.1 as the server name.
+#
#ServerName new.host.name
#
@@ -678,9 +682,11 @@ ServerSignature On
#
# Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
# French (fr) - German (de) - Greek-Modern (el)
- # Italian (it) - Portugese (pt) - Luxembourgeois* (ltz)
+ # Italian (it) - Korean (kr) - Norwegian (no)
+ # Portugese (pt) - Luxembourgeois* (ltz)
# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
# Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
+ # Russian (ru)
#
AddLanguage da .dk
AddLanguage nl .nl
@@ -689,9 +695,14 @@ ServerSignature On
AddLanguage fr .fr
AddLanguage de .de
AddLanguage el .el
+ AddLanguage he .he
+ AddCharset ISO-8859-8 .iso8859-8
AddLanguage it .it
AddLanguage ja .ja
AddCharset ISO-2022-JP .jis
+ AddLanguage kr .kr
+ AddCharset ISO-2022-KR .iso-kr
+ AddLanguage no .no
AddLanguage pl .po
AddCharset ISO-8859-2 .iso-pl
AddLanguage pt .pt
@@ -701,6 +712,16 @@ ServerSignature On
AddLanguage es .es
AddLanguage sv .se
AddLanguage cz .cz
+ AddLanguage ru .ru
+ AddLanguage tw .tw
+ AddCharset Big5 .Big5 .big5
+ AddCharset WINDOWS-1251 .cp-1251
+ AddCharset CP866 .cp866
+ AddCharset ISO-8859-5 .iso-ru
+ AddCharset KOI8-R .koi8-r
+ AddCharset UCS-2 .ucs2
+ AddCharset UCS-4 .ucs4
+ AddCharset UTF-8 .utf8
# LanguagePriority allows you to give precedence to some languages
# in case of a tie during content negotiation.
@@ -709,7 +730,7 @@ ServerSignature On
# more or less alphabetized them here. You probably want to change this.
#
<IfModule mod_negotiation.c>
- LanguagePriority en da nl et fr de el it ja pl pt pt-br ltz ca es sv
+ LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
</IfModule>
#
@@ -793,7 +814,7 @@ ServerSignature On
#
# 1) plain text
#ErrorDocument 500 "The server made a boo boo.
-# n.b. the (") marks it as text, it does not get output
+# n.b. the single leading (") marks it as text, it does not get output
#
# 2) local redirects
#ErrorDocument 404 /missing.html
@@ -832,6 +853,7 @@ ServerSignature On
BrowserMatch "JDK/1\.0" force-response-1.0
</IfModule>
+# End of browser customization directives
#
# Allow server status reports, with the URL of http://servername/server-status
@@ -846,7 +868,7 @@ ServerSignature On
#
# Allow remote server configuration reports, with the URL of
-# http://servername/server-info (requires that mod_info.c be loaded).
+# http://servername/server-info (requires that mod_info.c be loaded).
# Change the ".your_domain.com" to match your domain to enable.
#
#<Location /server-info>
@@ -873,32 +895,32 @@ ServerSignature On
# enable the proxy server:
#
#<IfModule mod_proxy.c>
- #ProxyRequests On
- #
- #<Directory proxy:*>
- # Order deny,allow
- # Deny from all
- # Allow from .your_domain.com
- #</Directory>
+# ProxyRequests On
+
+# <Directory proxy:*>
+# Order deny,allow
+# Deny from all
+# Allow from .your_domain.com
+# </Directory>
#
# Enable/disable the handling of HTTP/1.1 "Via:" headers.
# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
# Set to one of: Off | On | Full | Block
#
- #ProxyVia On
+# ProxyVia On
#
# To enable the cache as well, edit and uncomment the following lines:
# (no cacheing without CacheRoot)
#
- #CacheRoot "@@ServerRoot@@/proxy"
- #CacheSize 5
- #CacheGcInterval 4
- #CacheMaxExpire 24
- #CacheLastModifiedFactor 0.1
- #CacheDefaultExpire 1
- #NoCache a_domain.com another_domain.edu joes.garage_sale.com
+# CacheRoot "@@ServerRoot@@/proxy"
+# CacheSize 5
+# CacheGcInterval 4
+# CacheMaxExpire 24
+# CacheLastModifiedFactor 0.1
+# CacheDefaultExpire 1
+# NoCache a_domain.com another_domain.edu joes.garage_sale.com
#</IfModule>
# End of proxy directives.
@@ -906,29 +928,33 @@ ServerSignature On
### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
-# machine you can setup VirtualHost containers for them.
+# machine you can setup VirtualHost containers for them. Most configurations
+# use only name-based virtual hosts so the server doesn't need to worry about
+# IP addresses. This is indicated by the asterisks in the directives below.
+#
# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
# for further details before you try to setup virtual hosts.
+#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
-# If you want to use name-based virtual hosts you need to define at
-# least one IP address (and port number) for them.
+# Use name-based virtual hosting.
#
-#NameVirtualHost 12.34.56.78:80
-#NameVirtualHost 12.34.56.78
+#NameVirtualHost *
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
-#
-#<VirtualHost ip.address.of.host.some_domain.com>
-# ServerAdmin webmaster@host.some_domain.com
-# DocumentRoot /www/docs/host.some_domain.com
-# ServerName host.some_domain.com
-# ErrorLog logs/host.some_domain.com-error_log
-# CustomLog logs/host.some_domain.com-access_log common
+# The first VirtualHost section is used for requests without a known
+# server name.
+#
+#<VirtualHost *>
+# ServerAdmin webmaster@dummy-host.example.com
+# DocumentRoot /www/docs/dummy-host.example.com
+# ServerName dummy-host.example.com
+# ErrorLog logs/dummy-host.example.com-error_log
+# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
#<VirtualHost _default_:*>
diff --git a/usr.sbin/httpd/conf/httpd.conf-dist-win b/usr.sbin/httpd/conf/httpd.conf-dist-win
index e5650f688ef..782b66dd208 100644
--- a/usr.sbin/httpd/conf/httpd.conf-dist-win
+++ b/usr.sbin/httpd/conf/httpd.conf-dist-win
@@ -74,15 +74,15 @@ PidFile logs/httpd.pid
# this file will be created when you run Apache) then you *must* ensure that
# no two invocations of Apache share the same scoreboard file.
#
-ScoreBoardFile logs/apache_status
+ScoreBoardFile logs/apache_runtime_status
#
-# In the standard configuration, the server will process httpd.conf,
-# srm.conf, and access.conf in that order. The latter two files are
-# now distributed empty, as it is recommended that all directives
-# be kept in a single file for simplicity. The commented-out values
-# below are the built-in defaults. You can have the server ignore
-# these files altogether by using "/dev/null" (for Unix) or
+# In the standard configuration, the server will process httpd.conf (this
+# file, specified by the -f command line option), srm.conf, and access.conf
+# in that order. The latter two files are now distributed empty, as it is
+# recommended that all directives be kept in a single file for simplicity.
+# The commented-out values below are the built-in defaults. You can have the
+# server ignore these files altogether by using "/dev/null" (for Unix) or
# "nul" (for Win32) for the arguments to the directives.
#
#ResourceConfig conf/srm.conf
@@ -102,7 +102,7 @@ KeepAlive On
#
# MaxKeepAliveRequests: The maximum number of requests to allow
# during a persistent connection. Set to 0 to allow an unlimited amount.
-# We reccomend you leave this number high, for maximum performance.
+# We recommend you leave this number high, for maximum performance.
#
MaxKeepAliveRequests 100
@@ -128,6 +128,11 @@ KeepAliveTimeout 15
# in the libraries. For Win32, set this value to zero (unlimited)
# unless advised otherwise.
#
+# NOTE: This value does not include keepalive requests after the initial
+# request per connection. For example, if a child process handles
+# an initial request and 10 subsequent "keptalive" requests, it
+# would only count as 1 request towards this limit.
+#
MaxRequestsPerChild 0
#
@@ -155,6 +160,22 @@ ThreadsPerChild 50
#BindAddress *
#
+# Apache Modules compiled into the standard Windows build
+#
+# The following modules are bound into the standard Apache binary distribution
+# for Windows. To change the standard behavior, uncomment the following lines
+# and modify the list of those specific modules to be enabled in the server.
+#
+# WARNING: This is an advanced option that may render your server inoperable!
+# Do not use these directives without expert guidance.
+#
+#ClearModuleList
+#AddModule mod_so.c mod_mime.c mod_access.c mod_auth.c mod_negotiation.c
+#AddModule mod_include.c mod_autoindex.c mod_dir.c mod_cgi.c mod_userdir.c
+#AddModule mod_alias.c mod_env.c mod_log_config.c mod_asis.c mod_imap.c
+#AddModule mod_actions.c mod_setenvif.c mod_isapi.c
+
+#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
@@ -169,6 +190,8 @@ ThreadsPerChild 50
# the order below without expert advice.
#
#LoadModule anon_auth_module modules/ApacheModuleAuthAnon.dll
+#LoadModule dbm_auth_module modules/ApacheModuleAuthDBM.dll
+#LoadModule digest_auth_module modules/ApacheModuleAuthDigest.dll
#LoadModule cern_meta_module modules/ApacheModuleCERNMeta.dll
#LoadModule digest_module modules/ApacheModuleDigest.dll
#LoadModule expires_module modules/ApacheModuleExpires.dll
@@ -176,6 +199,7 @@ ThreadsPerChild 50
#LoadModule proxy_module modules/ApacheModuleProxy.dll
#LoadModule rewrite_module modules/ApacheModuleRewrite.dll
#LoadModule speling_module modules/ApacheModuleSpeling.dll
+#LoadModule info_module modules/ApacheModuleInfo.dll
#LoadModule status_module modules/ApacheModuleStatus.dll
#LoadModule usertrack_module modules/ApacheModuleUserTrack.dll
#LoadModule ssl_module modules/ApacheModuleSSL.dll
@@ -200,14 +224,11 @@ ThreadsPerChild 50
#
#
-# If your ServerType directive (set earlier in the 'Global Environment'
-# section) is set to "inetd", the next few directives don't have any
-# effect since their settings are defined by the inetd configuration.
-# Skip ahead to the ServerAdmin directive.
-#
-
-#
-# Port: The port to which the standalone server listens.
+# Port: The port to which the standalone server listens. Certain firewall
+# products must be configured before Apache can listen to a specific port.
+# Other running httpd servers will also interfere with this port. Disable
+# all firewall, security, and other services if you encounter problems.
+# To help diagnose problems use the Windows NT command NETSTAT -a
#
Port 80
@@ -230,8 +251,13 @@ ServerAdmin you@your.address
# You will have to access it by its address (e.g., http://123.45.67.89/)
# anyway, and this will make redirections work in a sensible way.
#
+# 127.0.0.1 is the TCP/IP local loop-back address, often named localhost. Your
+# machine always knows itself by this address. If you use Apache strictly for
+# local testing and development, you may use 127.0.0.1 as the server name.
+#
#ServerName new.host.name
+
#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
@@ -295,13 +321,34 @@ DocumentRoot "@@ServerRoot@@/htdocs"
# a Windows login, so a format such as that below needs to be used. See
# the UserDir documentation for details.
#
-UserDir "@@ServerRoot@@/users/"
+<IfModule mod_userdir.c>
+ UserDir "@@ServerRoot@@/users/"
+</IfModule>
+
+#
+# Control access to UserDir directories. The following is an example
+# for a site where these directories are restricted to read-only.
+#
+#<Directory "@@ServerRoot@@/users">
+# AllowOverride FileInfo AuthConfig Limit
+# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
+# <Limit GET POST OPTIONS PROPFIND>
+# Order allow,deny
+# Allow from all
+# </Limit>
+# <LimitExcept GET POST OPTIONS PROPFIND>
+# Order deny,allow
+# Deny from all
+# </LimitExcept>
+#</Directory>
#
# DirectoryIndex: Name of the file or files to use as a pre-written HTML
# directory index. Separate multiple entries with spaces.
#
-DirectoryIndex index.html
+<IfModule mod_dir.c>
+ DirectoryIndex index.html
+</IfModule>
#
# AccessFileName: The name of the file to look for in each directory
@@ -317,7 +364,10 @@ AccessFileName .htaccess
# .htaccess files. If you change the AccessFileName directive above,
# be sure to make the corresponding changes here.
#
-<Files .htaccess>
+# Also, folks tend to use names such as .htpasswd for password
+# files, so this will protect those as well.
+#
+<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>
@@ -344,7 +394,9 @@ UseCanonicalName On
# TypesConfig describes where the mime.types file (or equivalent) is
# to be found.
#
-TypesConfig conf/mime.types
+<IfModule mod_mime.c>
+ TypesConfig conf/mime.types
+</IfModule>
#
# DefaultType is the default MIME type the server will use for a document
@@ -438,34 +490,87 @@ CustomLog logs/access.log common
#
ServerSignature On
+#
+# Apache parses all CGI scripts for the shebang line by default.
+# This comment line, the first line of the script, consists of the symbols
+# pound (#) and exclamation (!) followed by the path of the program that
+# can execute this specific script. For a perl script, with perl.exe in
+# the C:\Program Files\Perl directory, the shebang line should be:
+
+ #!c:/program files/perl/perl
+
+# Note you _must_not_ indent the actual shebang line, and it must be the
+# first line of the file. Of course, CGI processing must be enabled by
+# the appropriate ScriptAlias or Options ExecCGI directives for the files
+# or directory in question.
#
-# Aliases: Add here as many aliases as you need (with no limit). The format is
-# Alias fakename realname
+# However, Apache on Windows allows either the Unix behavior above, or can
+# use the Registry to match files by extention. The command to execute
+# a file of this type is retrieved from the registry by the same method as
+# the Windows Explorer would use to handle double-clicking on a file.
+# These script actions can be configured from the Windows Explorer View menu,
+# 'Folder Options', and reviewing the 'File Types' tab. Clicking the Edit
+# button allows you to modify the Actions, of which Apache 1.3 attempts to
+# perform the 'Open' Action, and failing that it will try the shebang line.
+# This behavior is subject to change in Apache release 2.0.
#
-# Note that if you include a trailing / on fakename then the server will
-# require it to be present in the URL. So "/icons" isn't aliased in this
-# example, only "/icons/"..
+# Each mechanism has it's own specific security weaknesses, from the means
+# to run a program you didn't intend the website owner to invoke, and the
+# best method is a matter of great debate.
#
-Alias /icons/ "@@ServerRoot@@/icons/"
-
+# To enable the this Windows specific behavior (and therefore -disable- the
+# equivilant Unix behavior), uncomment the following directive:
#
-# ScriptAlias: This controls which directories contain server scripts.
-# ScriptAliases are essentially the same as Aliases, except that
-# documents in the realname directory are treated as applications and
-# run by the server when requested rather than as documents sent to the client.
-# The same rules about trailing "/" apply to ScriptAlias directives as to
-# Alias.
+#ScriptInterpreterSource registry
+#
+# The directive above can be placed in individual <Directory> blocks or the
+# .htaccess file, with either the 'registry' (Windows behavior) or 'script'
+# (Unix behavior) option, and will override this server default option.
#
-ScriptAlias /cgi-bin/ "@@ServerRoot@@/cgi-bin/"
#
-# "@@ServerRoot@@/cgi-bin" should be changed to whatever your ScriptAliased
-# CGI directory exists, if you have that configured.
+# Aliases: Add here as many aliases as you need (with no limit). The format is
+# Alias fakename realname
#
-<Directory "@@ServerRoot@@/cgi-bin">
- AllowOverride None
- Options None
-</Directory>
+<IfModule mod_alias.c>
+
+ #
+ # Note that if you include a trailing / on fakename then the server will
+ # require it to be present in the URL. So "/icons" isn't aliased in this
+ # example, only "/icons/"..
+ #
+ Alias /icons/ "@@ServerRoot@@/icons/"
+
+ <Directory "@@ServerRoot@@/icons">
+ Options Indexes MultiViews
+ AllowOverride None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ #
+ # ScriptAlias: This controls which directories contain server scripts.
+ # ScriptAliases are essentially the same as Aliases, except that
+ # documents in the realname directory are treated as applications and
+ # run by the server when requested rather than as documents sent to the client.
+ # The same rules about trailing "/" apply to ScriptAlias directives as to
+ # Alias.
+ #
+ ScriptAlias /cgi-bin/ "@@ServerRoot@@/cgi-bin/"
+
+ #
+ # "@@ServerRoot@@/cgi-bin" should be changed to whatever your ScriptAliased
+ # CGI directory exists, if you have that configured.
+ #
+ <Directory "@@ServerRoot@@/cgi-bin">
+ AllowOverride None
+ Options None
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+</IfModule>
+# End of aliases.
#
# Redirect allows you to tell clients about documents which used to exist in
@@ -477,183 +582,225 @@ ScriptAlias /cgi-bin/ "@@ServerRoot@@/cgi-bin/"
#
# Directives controlling the display of server-generated directory listings.
#
+<IfModule mod_autoindex.c>
+
+ #
+ # FancyIndexing is whether you want fancy directory indexing or standard
+ #
+ IndexOptions FancyIndexing
+
+ #
+ # AddIcon* directives tell the server which icon to show for different
+ # files or filename extensions. These are only displayed for
+ # FancyIndexed directories.
+ #
+ AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
+
+ AddIconByType (TXT,/icons/text.gif) text/*
+ AddIconByType (IMG,/icons/image2.gif) image/*
+ AddIconByType (SND,/icons/sound2.gif) audio/*
+ AddIconByType (VID,/icons/movie.gif) video/*
+
+ AddIcon /icons/binary.gif .bin .exe
+ AddIcon /icons/binhex.gif .hqx
+ AddIcon /icons/tar.gif .tar
+ AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
+ AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
+ AddIcon /icons/a.gif .ps .ai .eps
+ AddIcon /icons/layout.gif .html .shtml .htm .pdf
+ AddIcon /icons/text.gif .txt
+ AddIcon /icons/c.gif .c
+ AddIcon /icons/p.gif .pl .py
+ AddIcon /icons/f.gif .for
+ AddIcon /icons/dvi.gif .dvi
+ AddIcon /icons/uuencoded.gif .uu
+ AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
+ AddIcon /icons/tex.gif .tex
+ AddIcon /icons/bomb.gif core
+
+ AddIcon /icons/back.gif ..
+ AddIcon /icons/hand.right.gif README
+ AddIcon /icons/folder.gif ^^DIRECTORY^^
+ AddIcon /icons/blank.gif ^^BLANKICON^^
+
+ #
+ # DefaultIcon is which icon to show for files which do not have an icon
+ # explicitly set.
+ #
+ DefaultIcon /icons/unknown.gif
+
+ #
+ # AddDescription allows you to place a short description after a file in
+ # server-generated indexes. These are only displayed for FancyIndexed
+ # directories.
+ # Format: AddDescription "description" filename
+ #
+ #AddDescription "GZIP compressed document" .gz
+ #AddDescription "tar archive" .tar
+ #AddDescription "GZIP compressed tar archive" .tgz
+
+ #
+ # ReadmeName is the name of the README file the server will look for by
+ # default, and append to directory listings.
+ #
+ # HeaderName is the name of a file which should be prepended to
+ # directory indexes.
+ #
+ # If MultiViews are amongst the Options in effect, the server will
+ # first look for name.html and include it if found. If name.html
+ # doesn't exist, the server will then look for name.txt and include
+ # it as plaintext if found.
+ #
+ ReadmeName README
+ HeaderName HEADER
+
+ #
+ # IndexIgnore is a set of filenames which directory indexing should ignore
+ # and not include in the listing. Shell-style wildcarding is permitted.
+ #
+ IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
-#
-# FancyIndexing is whether you want fancy directory indexing or standard
-#
-IndexOptions FancyIndexing
-
-#
-# AddIcon* directives tell the server which icon to show for different
-# files or filename extensions. These are only displayed for
-# FancyIndexed directories.
-#
-AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
-
-AddIconByType (TXT,/icons/text.gif) text/*
-AddIconByType (IMG,/icons/image2.gif) image/*
-AddIconByType (SND,/icons/sound2.gif) audio/*
-AddIconByType (VID,/icons/movie.gif) video/*
-
-AddIcon /icons/binary.gif .bin .exe
-AddIcon /icons/binhex.gif .hqx
-AddIcon /icons/tar.gif .tar
-AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
-AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
-AddIcon /icons/a.gif .ps .ai .eps
-AddIcon /icons/layout.gif .html .shtml .htm .pdf
-AddIcon /icons/text.gif .txt
-AddIcon /icons/c.gif .c
-AddIcon /icons/p.gif .pl .py
-AddIcon /icons/f.gif .for
-AddIcon /icons/dvi.gif .dvi
-AddIcon /icons/uuencoded.gif .uu
-AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
-AddIcon /icons/tex.gif .tex
-AddIcon /icons/bomb.gif core
-
-AddIcon /icons/back.gif ..
-AddIcon /icons/hand.right.gif README
-AddIcon /icons/folder.gif ^^DIRECTORY^^
-AddIcon /icons/blank.gif ^^BLANKICON^^
-
-#
-# DefaultIcon is which icon to show for files which do not have an icon
-# explicitly set.
-#
-DefaultIcon /icons/unknown.gif
-
-#
-# AddDescription allows you to place a short description after a file in
-# server-generated indexes. These are only displayed for FancyIndexed
-# directories.
-# Format: AddDescription "description" filename
-#
-#AddDescription "GZIP compressed document" .gz
-#AddDescription "tar archive" .tar
-#AddDescription "GZIP compressed tar archive" .tgz
-
-#
-# ReadmeName is the name of the README file the server will look for by
-# default, and append to directory listings.
-#
-# HeaderName is the name of a file which should be prepended to
-# directory indexes.
-#
-# The server will first look for name.html and include it if found.
-# If name.html doesn't exist, the server will then look for name.txt
-# and include it as plaintext if found.
-#
-ReadmeName README
-HeaderName HEADER
-
-#
-# IndexIgnore is a set of filenames which directory indexing should ignore
-# and not include in the listing. Shell-style wildcarding is permitted.
-#
-IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
-
-#
-# AddEncoding allows you to have certain browsers (Mosaic/X 2.1+) uncompress
-# information on the fly. Note: Not all browsers support this.
-# Despite the name similarity, the following Add* directives have nothing
-# to do with the FancyIndexing customisation directives above.
-#
-AddEncoding x-compress Z
-AddEncoding x-gzip gz tgz
-
-#
-# AddLanguage allows you to specify the language of a document. You can
-# then use content negotiation to give a browser a file in a language
-# it can understand.
-#
-# Note 1: The suffix does not have to be the same as the language
-# keyword --- those with documents in Polish (whose net-standard
-# language code is pl) may wish to use "AddLanguage pl .po" to
-# avoid the ambiguity with the common suffix for perl scripts.
-#
-# Note 2: The example entries below illustrate that in quite
-# some cases the two character 'Language' abbriviation is not
-# identical to the two character 'Country' code for it's country,
-# E.g. 'Danmark/dk' versus 'Danish/da'.
-#
-# Note 3: In the case of 'ltz' we violate the RFC by using a three char
-# specifier. But there is 'work in progress' to fix this and get
-# the reference data for rfc1766 cleaned up.
-#
-# Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
-# French (fr) - German (de) - Greek-Modern (el)
-# Italian (it) -Portugese (pt) - Luxembourgeois* (ltz)
-# Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
-#
-AddLanguage da .dk
-AddLanguage nl .nl
-AddLanguage en .en
-AddLanguage et .ee
-AddLanguage fr .fr
-AddLanguage de .de
-AddLanguage el .el
-AddLanguage it .it
-AddLanguage pt .pt
-AddLanguage ltz .lu
-AddLanguage ca .ca
-AddLanguage es .es
-AddLanguage sv .se
-AddLanguage cz .cz
-
-# LanguagePriority allows you to give precedence to some languages
-# in case of a tie during content negotiation.
-#
-# Just list the languages in decreasing order of preference. We have
-# more or less alphabetized them here. You probably want to change this.
-#
-LanguagePriority en da nl et fr de el it pt ltz ca es sv
-
-#
-# AddType allows you to tweak mime.types without actually editing it, or to
-# make certain files to be certain types.
-#
-# For example, the PHP3 module (not part of the Apache distribution)
-# will typically use:
-#
-#AddType application/x-httpd-php3 .phtml
-#AddType application/x-httpd-php3-source .phps
-
-AddType application/x-tar .tgz
-
-#
-# AddHandler allows you to map certain file extensions to "handlers",
-# actions unrelated to filetype. These can be either built into the server
-# or added with the Action command (see below)
-#
-# If you want to use server side includes, or CGI outside
-# ScriptAliased directories, uncomment the following lines.
-#
-# To use CGI scripts:
-#
-#AddHandler cgi-script .cgi
-
-#
-# To use server-parsed HTML files
-#
-#AddType text/html .shtml
-#AddHandler server-parsed .shtml
-
-#
-# Uncomment the following line to enable Apache's send-asis HTTP file
-# feature
-#
-#AddHandler send-as-is asis
-
-#
-# If you wish to use server-parsed imagemap files, use
-#
-#AddHandler imap-file map
+</IfModule>
+# End of indexing directives.
+
+#
+# Document types.
+#
+<IfModule mod_mime.c>
+
+ #
+ # AddEncoding allows you to have certain browsers (Mosaic/X 2.1+) uncompress
+ # information on the fly. Note: Not all browsers support this.
+ # Despite the name similarity, the following Add* directives have nothing
+ # to do with the FancyIndexing customization directives above.
+ #
+ AddEncoding x-compress Z
+ AddEncoding x-gzip gz tgz
+ #
+ # AddLanguage allows you to specify the language of a document. You can
+ # then use content negotiation to give a browser a file in a language
+ # it can understand.
+ #
+ # Note 1: The suffix does not have to be the same as the language
+ # keyword --- those with documents in Polish (whose net-standard
+ # language code is pl) may wish to use "AddLanguage pl .po" to
+ # avoid the ambiguity with the common suffix for perl scripts.
+ #
+ # Note 2: The example entries below illustrate that in quite
+ # some cases the two character 'Language' abbriviation is not
+ # identical to the two character 'Country' code for its country,
+ # E.g. 'Danmark/dk' versus 'Danish/da'.
+ #
+ # Note 3: In the case of 'ltz' we violate the RFC by using a three char
+ # specifier. But there is 'work in progress' to fix this and get
+ # the reference data for rfc1766 cleaned up.
+ #
+ # Danish (da) - Dutch (nl) - English (en) - Estonian (ee)
+ # French (fr) - German (de) - Greek-Modern (el)
+ # Italian (it) - Korean (kr) - Norwegian (no)
+ # Portugese (pt) - Luxembourgeois* (ltz)
+ # Spanish (es) - Swedish (sv) - Catalan (ca) - Czech(cz)
+ # Polish (pl) - Brazilian Portuguese (pt-br) - Japanese (ja)
+ # Russian (ru)
+ #
+ AddLanguage da .dk
+ AddLanguage nl .nl
+ AddLanguage en .en
+ AddLanguage et .ee
+ AddLanguage fr .fr
+ AddLanguage de .de
+ AddLanguage el .el
+ AddLanguage he .he
+ AddCharset ISO-8859-8 .iso8859-8
+ AddLanguage it .it
+ AddLanguage ja .ja
+ AddCharset ISO-2022-JP .jis
+ AddLanguage kr .kr
+ AddCharset ISO-2022-KR .iso-kr
+ AddLanguage no .no
+ AddLanguage pl .po
+ AddCharset ISO-8859-2 .iso-pl
+ AddLanguage pt .pt
+ AddLanguage pt-br .pt-br
+ AddLanguage ltz .lu
+ AddLanguage ca .ca
+ AddLanguage es .es
+ AddLanguage sv .se
+ AddLanguage cz .cz
+ AddLanguage ru .ru
+ AddLanguage tw .tw
+ AddCharset Big5 .Big5 .big5
+ AddCharset WINDOWS-1251 .cp-1251
+ AddCharset CP866 .cp866
+ AddCharset ISO-8859-5 .iso-ru
+ AddCharset KOI8-R .koi8-r
+ AddCharset UCS-2 .ucs2
+ AddCharset UCS-4 .ucs4
+ AddCharset UTF-8 .utf8
+
+ # LanguagePriority allows you to give precedence to some languages
+ # in case of a tie during content negotiation.
+ #
+ # Just list the languages in decreasing order of preference. We have
+ # more or less alphabetized them here. You probably want to change this.
+ #
+ <IfModule mod_negotiation.c>
+ LanguagePriority en da nl et fr de el it ja kr no pl pt pt-br ru ltz ca es sv tw
+ </IfModule>
+
+ #
+ # AddType allows you to tweak mime.types without actually editing it, or to
+ # make certain files to be certain types.
+ #
+ # For example, the PHP 3.x module (not part of the Apache distribution - see
+ # http://www.php.net) will typically use:
+ #
+ #AddType application/x-httpd-php3 .php3
+ #AddType application/x-httpd-php3-source .phps
+ #
+ # And for PHP 4.x, use:
+ #
+ #AddType application/x-httpd-php .php
+ #AddType application/x-httpd-php-source .phps
+
+ AddType application/x-tar .tgz
+
+ #
+ # AddHandler allows you to map certain file extensions to "handlers",
+ # actions unrelated to filetype. These can be either built into the server
+ # or added with the Action command (see below)
+ #
+ # If you want to use server side includes, or CGI outside
+ # ScriptAliased directories, uncomment the following lines.
+ #
+ # To use CGI scripts:
+ #
+ #AddHandler cgi-script .cgi
+
+ #
+ # To use server-parsed HTML files
+ #
+ #AddType text/html .shtml
+ #AddHandler server-parsed .shtml
+
+ #
+ # Uncomment the following line to enable Apache's send-asis HTTP file
+ # feature
+ #
+ #AddHandler send-as-is asis
+
+ #
+ # If you wish to use server-parsed imagemap files, use
+ #
+ #AddHandler imap-file map
+
+ #
+ # To enable type maps, you might want to use
+ #
+ #AddHandler type-map var
-#
-# To enable type maps, you might want to use
-#
-#AddHandler type-map var
+</IfModule>
+# End of document types.
#
# Action lets you define media types that will execute a script whenever
@@ -682,7 +829,7 @@ AddType application/x-tar .tgz
#
# 1) plain text
#ErrorDocument 500 "The server made a boo boo.
-# n.b. the (") marks it as text, it does not get output
+# n.b. the single leading (") marks it as text, it does not get output
#
# 2) local redirects
#ErrorDocument 404 /missing.html
@@ -696,24 +843,32 @@ AddType application/x-tar .tgz
# request will *not* be available to such a script.
#
-# The following directives disable keepalives and HTTP header flushes.
-# The first directive disables it for Netscape 2.x and browsers which
-# spoof it. There are known problems with these.
-# The second directive is for Microsoft Internet Explorer 4.0b2
-# which has a broken HTTP/1.1 implementation and does not properly
-# support keepalive when it is used on 301 or 302 (redirect) responses.
+# Customize behaviour based on the browser
#
-BrowserMatch "Mozilla/2" nokeepalive
-BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+<IfModule mod_setenvif.c>
-#
-# The following directive disables HTTP/1.1 responses to browsers which
-# are in violation of the HTTP/1.0 spec by not being able to grok a
-# basic 1.1 response.
-#
-BrowserMatch "RealPlayer 4\.0" force-response-1.0
-BrowserMatch "Java/1\.0" force-response-1.0
-BrowserMatch "JDK/1\.0" force-response-1.0
+ #
+ # The following directives modify normal HTTP response behavior.
+ # The first directive disables keepalive for Netscape 2.x and browsers that
+ # spoof it. There are known problems with these browser implementations.
+ # The second directive is for Microsoft Internet Explorer 4.0b2
+ # which has a broken HTTP/1.1 implementation and does not properly
+ # support keepalive when it is used on 301 or 302 (redirect) responses.
+ #
+ BrowserMatch "Mozilla/2" nokeepalive
+ BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
+
+ #
+ # The following directive disables HTTP/1.1 responses to browsers which
+ # are in violation of the HTTP/1.0 spec by not being able to grok a
+ # basic 1.1 response.
+ #
+ BrowserMatch "RealPlayer 4\.0" force-response-1.0
+ BrowserMatch "Java/1\.0" force-response-1.0
+ BrowserMatch "JDK/1\.0" force-response-1.0
+
+</IfModule>
+# End of browser customization directives
#
# Allow server status reports, with the URL of http://servername/server-status
@@ -728,7 +883,7 @@ BrowserMatch "JDK/1\.0" force-response-1.0
#
# Allow remote server configuration reports, with the URL of
-# http://servername/server-info (requires that mod_info.c be loaded).
+# http://servername/server-info (requires that mod_info.c be loaded).
# Change the ".your_domain.com" to match your domain to enable.
#
#<Location /server-info>
@@ -751,57 +906,68 @@ BrowserMatch "JDK/1\.0" force-response-1.0
#</Location>
#
-# Proxy Server directives. Uncomment the following line to
+# Proxy Server directives. Uncomment the following lines to
# enable the proxy server:
#
-#ProxyRequests On
-
-#
-# Enable/disable the handling of HTTP/1.1 "Via:" headers.
-# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
-# Set to one of: Off | On | Full | Block
-#
-#ProxyVia On
-
-#
-# To enable the cache as well, edit and uncomment the following lines:
-# (no cacheing without CacheRoot)
-#
-#CacheRoot "@@ServerRoot@@/proxy"
-#CacheSize 5
-#CacheGcInterval 4
-#CacheMaxExpire 24
-#CacheLastModifiedFactor 0.1
-#CacheDefaultExpire 1
-#NoCache a_domain.com another_domain.edu joes.garage_sale.com
+#<IfModule mod_proxy.c>
+# ProxyRequests On
+
+# <Directory proxy:*>
+# Order deny,allow
+# Deny from all
+# Allow from .your_domain.com
+# </Directory>
+
+ #
+ # Enable/disable the handling of HTTP/1.1 "Via:" headers.
+ # ("Full" adds the server version; "Block" removes all outgoing Via: headers)
+ # Set to one of: Off | On | Full | Block
+ #
+# ProxyVia On
+
+ #
+ # To enable the cache as well, edit and uncomment the following lines:
+ # (no cacheing without CacheRoot)
+ #
+# CacheRoot "@@ServerRoot@@/proxy"
+# CacheSize 5
+# CacheGcInterval 4
+# CacheMaxExpire 24
+# CacheLastModifiedFactor 0.1
+# CacheDefaultExpire 1
+# NoCache a_domain.com another_domain.edu joes.garage_sale.com
+
+#</IfModule>
+# End of proxy directives.
### Section 3: Virtual Hosts
#
# VirtualHost: If you want to maintain multiple domains/hostnames on your
-# machine you can setup VirtualHost containers for them.
+# machine you can setup VirtualHost containers for them. Most configurations
+# use only name-based virtual hosts so the server doesn't need to worry about
+# IP addresses. This is indicated by the asterisks in the directives below.
+#
# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
# for further details before you try to setup virtual hosts.
+#
# You may use the command line option '-S' to verify your virtual host
# configuration.
#
-# If you want to use name-based virtual hosts you need to define at
-# least one IP address (and port number) for them.
+# Use name-based virtual hosting.
#
-#NameVirtualHost 12.34.56.78:80
-#NameVirtualHost 12.34.56.78
+#NameVirtualHost *
#
# VirtualHost example:
# Almost any Apache directive may go into a VirtualHost container.
-#
-#<VirtualHost ip.address.of.host.some_domain.com>
-# ServerAdmin webmaster@host.some_domain.com
-# DocumentRoot /www/docs/host.some_domain.com
-# ServerName host.some_domain.com
-# ErrorLog logs/host.some_domain.com-error_log
-# CustomLog logs/host.some_domain.com-access_log common
-#</VirtualHost>
-
-#<VirtualHost _default_:*>
+# The first VirtualHost section is used for requests without a known
+# server name.
+#
+#<VirtualHost *>
+# ServerAdmin webmaster@dummy-host.example.com
+# DocumentRoot /www/docs/dummy-host.example.com
+# ServerName dummy-host.example.com
+# ErrorLog logs/dummy-host.example.com-error_log
+# CustomLog logs/dummy-host.example.com-access_log common
#</VirtualHost>
diff --git a/usr.sbin/httpd/conf/httpd.conf-dist.nw b/usr.sbin/httpd/conf/httpd.conf-dist.nw
index 41cde7b057e..e69de29bb2d 100644
--- a/usr.sbin/httpd/conf/httpd.conf-dist.nw
+++ b/usr.sbin/httpd/conf/httpd.conf-dist.nw
@@ -1,814 +0,0 @@
-#
-# Based upon the NCSA server configuration files originally by Rob McCool.
-#
-# This is the main Apache server configuration file. It contains the
-# configuration directives that give the server its instructions.
-# See <URL:http://www.apache.org/docs/> for detailed information about
-# the directives.
-#
-# Do NOT simply read the instructions in here without understanding
-# what they do. They're here only as hints or reminders. If you are unsure
-# consult the online docs. You have been warned.
-#
-# After this file is processed, the server will look for and process
-# sys:/apache/conf/srm.conf and then sys:/apache/conf/access.conf
-# unless you have overridden these with ResourceConfig and/or
-# AccessConfig directives here.
-#
-# The configuration directives are grouped into three basic sections:
-# 1. Directives that control the operation of the Apache server process as a
-# whole (the 'global environment').
-# 2. Directives that define the parameters of the 'main' or 'default' server,
-# which responds to requests that aren't handled by a virtual host.
-# These directives also provide default values for the settings
-# of all virtual hosts.
-# 3. Settings for virtual hosts, which allow Web requests to be sent to
-# different IP addresses or hostnames and have them handled by the
-# same Apache server process.
-#
-# Configuration and logfile names: If the filenames you specify for many
-# of the server's control files begin with "/" (or "drive:/" for Win32 and
-# sys:/ for NetWare), the server will use that explicit path. If the
-# filenames do *not* begin with "/", the value of ServerRoot is prepended
-# -- so "logs/foo.log" with ServerRoot set to "/usr/local/apache" will be
-# interpreted by the server as "/usr/local/apache/logs/foo.log".
-#
-
-### Section 1: Global Environment
-#
-# The directives in this section affect the overall operation of Apache,
-# such as the number of concurrent requests it can handle or where it
-# can find its configuration files.
-#
-
-#
-# ServerType is either inetd, or standalone. Inetd mode is only supported on
-# Unix platforms.
-#
-ServerType standalone
-
-#
-# ServerRoot: The top of the directory tree under which the server's
-# configuration, error, and log files are kept.
-#
-# NOTE! If you intend to place this on an NFS (or otherwise network)
-# mounted filesystem then please read the LockFile documentation
-# (available at <URL:http://www.apache.org/docs/mod/core.html#lockfile>);
-# you will save yourself a lot of trouble.
-#
-# Do NOT add a slash at the end of the directory path.
-#
-ServerRoot "sys:/apache"
-
-#
-# PidFile: The file in which the server should record its process
-# identification number when it starts.
-#
-PidFile logs/httpd.pid
-
-#
-# ScoreBoardFile: File used to store internal server process information.
-# Not all architectures require this. But if yours does (you'll know because
-# this file will be created when you run Apache) then you *must* ensure that
-# no two invocations of Apache share the same scoreboard file.
-#
-ScoreBoardFile logs/apache_status
-
-#
-# In the standard configuration, the server will process this file,
-# srm.conf, and access.conf in that order. The latter two files are
-# now distributed empty, as it is recommended that all directives
-# be kept in a single file for simplicity. The commented-out values
-# below are the built-in defaults. You can have the server ignore
-# these files altogether by using "/dev/null" (for Unix) or
-# "nul" (for Win32) for the arguments to the directives.
-#
-#ResourceConfig conf/srm.conf
-#AccessConfig conf/access.conf
-
-#
-# Timeout: The number of seconds before receives and sends time out.
-#
-Timeout 300
-
-#
-# KeepAlive: Whether or not to allow persistent connections (more than
-# one request per connection). Set to "Off" to deactivate.
-#
-KeepAlive On
-
-#
-# MaxKeepAliveRequests: The maximum number of requests to allow
-# during a persistent connection. Set to 0 to allow an unlimited amount.
-# We recommend you leave this number high, for maximum performance.
-#
-MaxKeepAliveRequests 100
-
-#
-# KeepAliveTimeout: Number of seconds to wait for the next request from the
-# same client on the same connection.
-#
-KeepAliveTimeout 15
-
-#
-# Number of concurrent threads (i.e., requests) the server will allow.
-# Set this value according to the responsiveness of the server (more
-# requests active at once means they're all handled more slowly) and
-# the amount of system resources you'll allow the server to consume.
-#
-ThreadsPerChild 50
-
-#
-# When NetWare creates a thread you need to specify the stack size.
-# You may need to increase this if you get stack overflows.
-# ThreadStackSize 65536
-
-ThreadStackSize 65536
-
-#
-# MaxRequestsPerChild: the number of requests each child process is
-# allowed to process before the child dies. The child will exit so
-# as to avoid problems after prolonged use when Apache (and maybe the
-# libraries it uses) leak memory or other resources. On most systems, this
-# isn't really needed, but a few (such as Solaris) do have notable leaks
-# in the libraries. For these platforms, set to something like 10000
-# or so; a setting of 0 means unlimited.
-#
-# NOTE: This value does not include keepalive requests after the initial
-# request per connection. For example, if a child process handles
-# an initial request and 10 subsequent "keptalive" requests, it
-# would only count as 1 request towards this limit.
-#
-MaxRequestsPerChild 0
-
-#
-# Listen: Allows you to bind Apache to specific IP addresses and/or
-# ports, in addition to the default. See also the <VirtualHost>
-# directive.
-#
-#Listen 3000
-#Listen 12.34.56.78:80
-
-
-#
-# BindAddress: You can support virtual hosts with this option. This directive
-# is used to tell the server which IP address to listen to. It can either
-# contain "*", an IP address, or a fully qualified Internet domain name.
-# See also the <VirtualHost> and Listen directives.
-#
-#BindAddress *
-
-#
-# Dynamic Shared Object (DSO) Support
-#
-# To be able to use the functionality of a module which was built as a DSO you
-# have to place corresponding `LoadModule' lines at this location so the
-# directives contained in it are actually available _before_ they are used.
-# Please read the file README.DSO in the Apache 1.3 distribution for more
-# details about the DSO mechanism and run `httpd -l' for the list of already
-# built-in (statically linked and thus always available) modules in your httpd
-# binary.
-#
-# Note: The order is which modules are loaded is important. Don't change
-# the order below without expert advice.
-
-# LoadModule anon_auth_module modules/authanon
-# LoadModule cern_meta_module modules/cernmeta
-# LoadModule digest_module modules/digest
-# LoadModule expires_module modules/expires
-# LoadModule headers_module modules/headers
-# LoadModule proxy_module modules/proxy
-# LoadModule rewrite_module modules/rewrite
-# LoadModule speling_module modules/speling
-# LoadModule status_module modules/status
-# LoadModule info_module modules/info
-# LoadModule usertrack_module modules/usrtrack
-
-#
-# ExtendedStatus controls whether Apache will generate "full" status
-# information (ExtendedStatus On) or just basic information (ExtendedStatus
-# Off) when the "server-status" handler is called. The default is Off.
-#
-#ExtendedStatus On
-
-### Section 2: 'Main' server configuration
-#
-# The directives in this section set up the values used by the 'main'
-# server, which responds to any requests that aren't handled by a
-# <VirtualHost> definition. These values also provide defaults for
-# any <VirtualHost> containers you may define later in the file.
-#
-# All of these directives may appear inside <VirtualHost> containers,
-# in which case these default settings will be overridden for the
-# virtual host being defined.
-#
-
-#
-# Port: The port to which the standalone server listens. For
-# ports < 1023, you will need httpd to be run as root initially.
-#
-Port 80
-
-#
-# ServerAdmin: Your address, where problems with the server should be
-# e-mailed. This address appears on some server-generated pages, such
-# as error documents.
-#
-ServerAdmin someone@somewhere.com
-
-#
-# ServerName allows you to set a host name which is sent back to clients for
-# your server if it's different than the one the program would get (i.e., use
-# "www" instead of the host's real name).
-#
-# Note: You cannot just invent host names and hope they work. The name you
-# define here must be a valid DNS name for your host. If you don't understand
-# this, ask your network administrator.
-# If your host doesn't have a registered DNS name, enter its IP address here.
-# You will have to access it by its address (e.g., http://123.45.67.89/)
-# anyway, and this will make redirections work in a sensible way.
-#
-ServerName 123.45.67.89
-
-#
-# DocumentRoot: The directory out of which you will serve your
-# documents. By default, all requests are taken from this directory, but
-# symbolic links and aliases may be used to point to other locations.
-#
-DocumentRoot "sys:/apache/htdocs"
-
-#
-# Each directory to which Apache has access, can be configured with respect
-# to which services and features are allowed and/or disabled in that
-# directory (and its subdirectories).
-#
-# First, we configure the "default" to be a very restrictive set of
-# permissions.
-#
-<Directory />
- Options FollowSymLinks
- AllowOverride None
-</Directory>
-
-#
-# Note that from this point forward you must specifically allow
-# particular features to be enabled - so if something's not working as
-# you might expect, make sure that you have specifically enabled it
-# below.
-#
-
-#
-# This should be changed to whatever you set DocumentRoot to.
-#
-<Directory "sys:/apache/htdocs">
-#
-# This may also be "None", "All", or any combination of "Indexes",
-# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
-#
-# Note that "MultiViews" must be named *explicitly* --- "Options All"
-# doesn't give it to you.
-#
- Options Indexes FollowSymLinks
-
-#
-# This controls which options the .htaccess files in directories can
-# override. Can also be "All", or any combination of "Options", "FileInfo",
-# "AuthConfig", and "Limit"
-#
- AllowOverride None
-
-#
-# Controls who can get stuff from this server.
-#
- Order allow,deny
- Allow from all
-</Directory>
-
-#
-# UserDir: The name of the directory which is appended onto a user's home
-# directory if a ~user request is received.
-#
-UserDir public_html
-#
-# Control access to UserDir directories. The following is an example
-# for a site where these directories are restricted to read-only.
-#
-#<Directory /home/*/public_html>
-# AllowOverride FileInfo AuthConfig Limit
-# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
-# <Limit GET POST OPTIONS PROPFIND>
-# Order allow,deny
-# Allow from all
-# </Limit>
-# <Limit PUT DELETE PATCH PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
-# Order deny,allow
-# Deny from all
-# </Limit>
-#</Directory>
-
-#
-# DirectoryIndex: Name of the file or files to use as a pre-written HTML
-# directory index. Separate multiple entries with spaces.
-#
-DirectoryIndex index.html
-
-#
-# AccessFileName: The name of the file to look for in each directory
-# for access control information.
-#
-#AccessFileName .htaccess
-
-#
-# The following lines prevent .htaccess files from being viewed by
-# Web clients. Since .htaccess files often contain authorization
-# information, access is disallowed for security reasons. Comment
-# these lines out if you want Web visitors to see the contents of
-# .htaccess files. If you change the AccessFileName directive above,
-# be sure to make the corresponding changes here.
-#
-# Also, folks tend to use names such as .htpasswd for password
-# files, so this will protect those as well.
-#
-<Files ~ "^\.ht">
- Order allow,deny
- Deny from all
-</Files>
-
-#
-# CacheNegotiatedDocs: By default, Apache sends "Pragma: no-cache" with each
-# document that was negotiated on the basis of content. This asks proxy
-# servers not to cache the document. Uncommenting the following line disables
-# this behavior, and proxies will be allowed to cache the documents.
-#
-#CacheNegotiatedDocs
-
-#
-# UseCanonicalName: (new for 1.3) With this setting turned on, whenever
-# Apache needs to construct a self-referencing URL (a URL that refers back
-# to the server the response is coming from) it will use ServerName and
-# Port to form a "canonical" name. With this setting off, Apache will
-# use the hostname:port that the client supplied, when possible. This
-# also affects SERVER_NAME and SERVER_PORT in CGI scripts.
-#
-UseCanonicalName On
-
-#
-# TypesConfig describes where the mime.types file (or equivalent) is
-# to be found.
-#
-TypesConfig conf/mime.types
-
-#
-# DefaultType is the default MIME type the server will use for a document
-# if it cannot otherwise determine one, such as from filename extensions.
-# If your server contains mostly text or HTML documents, "text/plain" is
-# a good value. If most of your content is binary, such as applications
-# or images, you may want to use "application/octet-stream" instead to
-# keep browsers from trying to display binary files as though they are
-# text.
-#
-DefaultType text/plain
-
-#
-# The mod_mime_magic module allows the server to use various hints from the
-# contents of the file itself to determine its type. The MIMEMagicFile
-# directive tells the module where the hint definitions are located.
-# mod_mime_magic is not part of the default server (you have to add
-# it yourself with a LoadModule [see the DSO paragraph in the 'Global
-# Environment' section], or recompile the server and include mod_mime_magic
-# as part of the configuration), so it's enclosed in an <IfModule> container.
-# This means that the MIMEMagicFile directive will only be processed if the
-# module is part of the server.
-#
-<IfModule mod_mime_magic.c>
- MIMEMagicFile conf/magic
-</IfModule>
-
-#
-# HostnameLookups: Log the names of clients or just their IP addresses
-# e.g., www.apache.org (on) or 204.62.129.132 (off).
-# The default is off because it'd be overall better for the net if people
-# had to knowingly turn this feature on, since enabling it means that
-# each client request will result in AT LEAST one lookup request to the
-# nameserver.
-#
-HostnameLookups Off
-
-#
-# ErrorLog: The location of the error log file.
-# If you do not specify an ErrorLog directive within a <VirtualHost>
-# container, error messages relating to that virtual host will be
-# logged here. If you *do* define an error logfile for a <VirtualHost>
-# container, that host's errors will be logged there and not here.
-#
-ErrorLog logs/error_log
-
-#
-# LogLevel: Control the number of messages logged to the error_log.
-# Possible values include: debug, info, notice, warn, error, crit,
-# alert, emerg.
-#
-LogLevel warn
-
-#
-# The following directives define some format nicknames for use with
-# a CustomLog directive (see below).
-#
-LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
-LogFormat "%h %l %u %t \"%r\" %>s %b" common
-LogFormat "%{Referer}i -> %U" referer
-LogFormat "%{User-agent}i" agent
-
-#
-# The location and format of the access logfile (Common Logfile Format).
-# If you do not define any access logfiles within a <VirtualHost>
-# container, they will be logged here. Contrariwise, if you *do*
-# define per-<VirtualHost> access logfiles, transactions will be
-# logged therein and *not* in this file.
-#
-#CustomLog logs/access_log common
-
-#
-# If you would like to have agent and referer logfiles, uncomment the
-# following directives.
-#
-#CustomLog logs/referer_log referer
-#CustomLog logs/agent_log agent
-
-#
-# If you prefer a single logfile with access, agent, and referer information
-# (Combined Logfile Format) you can use the following directive.
-#
-#CustomLog logs/access_log combined
-
-#
-# Optionally add a line containing the server version and virtual host
-# name to server-generated pages (error documents, FTP directory listings,
-# mod_status and mod_info output etc., but not CGI generated documents).
-# Set to "EMail" to also include a mailto: link to the ServerAdmin.
-# Set to one of: On | Off | EMail
-#
-ServerSignature On
-
-#
-# Aliases: Add here as many aliases as you need (with no limit). The format is
-# Alias fakename realname
-#
-# Note that if you include a trailing / on fakename then the server will
-# require it to be present in the URL. So "/icons" isn't aliased in this
-# example, only "/icons/"..
-#
-Alias /icons/ "sys:/apache/icons/"
-
-<Directory "sys:/apache/icons">
- Options Indexes MultiViews
- AllowOverride None
- Order allow,deny
- Allow from all
-</Directory>
-
-#
-# ScriptAlias: This controls which directories contain server scripts.
-# ScriptAliases are essentially the same as Aliases, except that
-# documents in the realname directory are treated as applications and
-# run by the server when requested rather than as documents sent to the client.
-# The same rules about trailing "/" apply to ScriptAlias directives as to
-# Alias.
-#
-ScriptAlias /cgi-bin/ "sys:/apache/cgi-bin/"
-
-#
-# "sys:/apache/cgi-bin" should be changed to whatever your ScriptAliased
-# CGI directory exists, if you have that configured.
-#
-<Directory "sys:/apache/cgi-bin">
- AllowOverride None
- Options None
- Order allow,deny
- Allow from all
-</Directory>
-
-#
-# Redirect allows you to tell clients about documents which used to exist in
-# your server's namespace, but do not anymore. This allows you to tell the
-# clients where to look for the relocated document.
-# Format: Redirect old-URI new-URL
-#
-
-#
-# Directives controlling the display of server-generated directory listings.
-#
-
-#
-# FancyIndexing is whether you want fancy directory indexing or standard
-#
-IndexOptions FancyIndexing
-
-#
-# AddIcon* directives tell the server which icon to show for different
-# files or filename extensions. These are only displayed for
-# FancyIndexed directories.
-#
-AddIconByEncoding (CMP,/icons/compressed.gif) x-compress x-gzip
-
-AddIconByType (TXT,/icons/text.gif) text/*
-AddIconByType (IMG,/icons/image2.gif) image/*
-AddIconByType (SND,/icons/sound2.gif) audio/*
-AddIconByType (VID,/icons/movie.gif) video/*
-
-AddIcon /icons/binary.gif .bin .exe
-AddIcon /icons/binhex.gif .hqx
-AddIcon /icons/tar.gif .tar
-AddIcon /icons/world2.gif .wrl .wrl.gz .vrml .vrm .iv
-AddIcon /icons/compressed.gif .Z .z .tgz .gz .zip
-AddIcon /icons/a.gif .ps .ai .eps
-AddIcon /icons/layout.gif .html .shtml .htm .pdf
-AddIcon /icons/text.gif .txt
-AddIcon /icons/c.gif .c
-AddIcon /icons/p.gif .pl .py
-AddIcon /icons/f.gif .for
-AddIcon /icons/dvi.gif .dvi
-AddIcon /icons/uuencoded.gif .uu
-AddIcon /icons/script.gif .conf .sh .shar .csh .ksh .tcl
-AddIcon /icons/tex.gif .tex
-AddIcon /icons/bomb.gif core
-
-AddIcon /icons/back.gif ..
-AddIcon /icons/hand.right.gif README
-AddIcon /icons/folder.gif ^^DIRECTORY^^
-AddIcon /icons/blank.gif ^^BLANKICON^^
-
-#
-# DefaultIcon is which icon to show for files which do not have an icon
-# explicitly set.
-#
-DefaultIcon /icons/unknown.gif
-
-#
-# AddDescription allows you to place a short description after a file in
-# server-generated indexes. These are only displayed for FancyIndexed
-# directories.
-# Format: AddDescription "description" filename
-#
-#AddDescription "GZIP compressed document" .gz
-#AddDescription "tar archive" .tar
-#AddDescription "GZIP compressed tar archive" .tgz
-
-#
-# ReadmeName is the name of the README file the server will look for by
-# default, and append to directory listings.
-#
-# HeaderName is the name of a file which should be prepended to
-# directory indexes.
-#
-# The server will first look for name.html and include it if found.
-# If name.html doesn't exist, the server will then look for name.txt
-# and include it as plaintext if found.
-#
-ReadmeName README
-HeaderName HEADER
-
-#
-# IndexIgnore is a set of filenames which directory indexing should ignore
-# and not include in the listing. Shell-style wildcarding is permitted.
-#
-IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
-
-#
-# AddEncoding allows you to have certain browsers (Mosaic/X 2.1+) uncompress
-# information on the fly. Note: Not all browsers support this.
-# Despite the name similarity, the following Add* directives have nothing
-# to do with the FancyIndexing customization directives above.
-#
-AddEncoding x-compress Z
-AddEncoding x-gzip gz tgz
-
-#
-# AddLanguage allows you to specify the language of a document. You can
-# then use content negotiation to give a browser a file in a language
-# it can understand. Note that the suffix does not have to be the same
-# as the language keyword --- those with documents in Polish (whose
-# net-standard language code is pl) may wish to use "AddLanguage pl .po"
-# to avoid the ambiguity with the common suffix for perl scripts.
-#
-AddLanguage en .en
-AddLanguage fr .fr
-AddLanguage de .de
-AddLanguage da .da
-AddLanguage el .el
-AddLanguage it .it
-
-#
-# LanguagePriority allows you to give precedence to some languages
-# in case of a tie during content negotiation.
-# Just list the languages in decreasing order of preference.
-#
-LanguagePriority en fr de
-
-#
-# AddType allows you to tweak mime.types without actually editing it, or to
-# make certain files to be certain types.
-#
-# For example, the PHP3 module (not part of the Apache distribution - see
-# http://www.php.net) will typically use:
-#
-#AddType application/x-httpd-php3 .php3
-#AddType application/x-httpd-php3-source .phps
-
-AddType application/x-tar .tgz
-
-#
-# AddHandler allows you to map certain file extensions to "handlers",
-# actions unrelated to filetype. These can be either built into the server
-# or added with the Action command (see below)
-#
-# If you want to use server side includes, or CGI outside
-# ScriptAliased directories, uncomment the following lines.
-#
-# To use CGI scripts:
-#
-#AddHandler cgi-script .cgi
-
-#
-# To use server-parsed HTML files
-#
-#AddType text/html .shtml
-#AddHandler server-parsed .shtml
-
-#
-# Uncomment the following line to enable Apache's send-asis HTTP file
-# feature
-#
-#AddHandler send-as-is asis
-
-#
-# If you wish to use server-parsed imagemap files, use
-#
-#AddHandler imap-file map
-
-#
-# To enable type maps, you might want to use
-#
-#AddHandler type-map var
-
-#
-# Action lets you define media types that will execute a script whenever
-# a matching file is called. This eliminates the need for repeated URL
-# pathnames for oft-used CGI file processors.
-# Format: Action media/type /cgi-script/location
-# Format: Action handler-name /cgi-script/location
-#
-
-#
-# MetaDir: specifies the name of the directory in which Apache can find
-# meta information files. These files contain additional HTTP headers
-# to include when sending the document
-#
-#MetaDir .web
-
-#
-# MetaSuffix: specifies the file name suffix for the file containing the
-# meta information.
-#
-#MetaSuffix .meta
-
-#
-# Customizable error response (Apache style)
-# these come in three flavors
-#
-# 1) plain text
-#ErrorDocument 500 "The server made a boo boo.
-# n.b. the (") marks it as text, it does not get output
-#
-# 2) local redirects
-#ErrorDocument 404 /missing.html
-# to redirect to local URL /missing.html
-#ErrorDocument 404 /cgi-bin/missing_handler.pl
-# N.B.: You can redirect to a script or a document using server-side-includes.
-#
-# 3) external redirects
-#ErrorDocument 402 http://some.other_server.com/subscription_info.html
-# N.B.: Many of the environment variables associated with the original
-# request will *not* be available to such a script.
-
-#
-# The following directives modify normal HTTP response behavior.
-# The first directive disables keepalive for Netscape 2.x and browsers that
-# spoof it. There are known problems with these browser implementations.
-# The second directive is for Microsoft Internet Explorer 4.0b2
-# which has a broken HTTP/1.1 implementation and does not properly
-# support keepalive when it is used on 301 or 302 (redirect) responses.
-#
-BrowserMatch "Mozilla/2" nokeepalive
-BrowserMatch "MSIE 4\.0b2;" nokeepalive downgrade-1.0 force-response-1.0
-
-#
-# The following directive disables HTTP/1.1 responses to browsers which
-# are in violation of the HTTP/1.0 spec by not being able to grok a
-# basic 1.1 response.
-#
-BrowserMatch "RealPlayer 4\.0" force-response-1.0
-BrowserMatch "Java/1\.0" force-response-1.0
-BrowserMatch "JDK/1\.0" force-response-1.0
-
-#
-# Allow server status reports, with the URL of http://servername/server-status
-# Change the ".your_domain.com" to match your domain to enable.
-#
-#<Location /server-status>
-# SetHandler server-status
-# Order deny,allow
-# Deny from all
-# Allow from .your_domain.com
-#</Location>
-
-#
-# Allow remote server configuration reports, with the URL of
-# http://servername/server-info (requires that mod_info.c be loaded).
-# Change the ".your_domain.com" to match your domain to enable.
-#
-#<Location /server-info>
-# SetHandler server-info
-# Order deny,allow
-# Deny from all
-# Allow from .your_domain.com
-#</Location>
-
-#
-# There have been reports of people trying to abuse an old bug from pre-1.1
-# days. This bug involved a CGI script distributed as a part of Apache.
-# By uncommenting these lines you can redirect these attacks to a logging
-# script on phf.apache.org. Or, you can record them yourself, using the script
-# support/phf_abuse_log.cgi.
-#
-#<Location /cgi-bin/phf*>
-# Deny from all
-# ErrorDocument 403 http://phf.apache.org/phf_abuse_log.cgi
-#</Location>
-
-#
-# Proxy Server directives. Uncomment the following lines to
-# enable the proxy server:
-#
-#<IfModule mod_proxy.c>
-#ProxyRequests On
-#
-#<Directory proxy:*>
-# Order deny,allow
-# Deny from all
-# Allow from .your_domain.com
-#</Directory>
-
-#
-# Enable/disable the handling of HTTP/1.1 "Via:" headers.
-# ("Full" adds the server version; "Block" removes all outgoing Via: headers)
-# Set to one of: Off | On | Full | Block
-#
-#ProxyVia On
-
-#
-# To enable the cache as well, edit and uncomment the following lines:
-# (no cacheing without CacheRoot)
-#
-#CacheRoot "sys:/apache/proxy"
-#CacheSize 5
-#CacheGcInterval 4
-#CacheMaxExpire 24
-#CacheLastModifiedFactor 0.1
-#CacheDefaultExpire 1
-#NoCache a_domain.com another_domain.edu joes.garage_sale.com
-
-#</IfModule>
-# End of proxy directives.
-
-### Section 3: Virtual Hosts
-#
-# VirtualHost: If you want to maintain multiple domains/hostnames on your
-# machine you can setup VirtualHost containers for them.
-# Please see the documentation at <URL:http://www.apache.org/docs/vhosts/>
-# for further details before you try to setup virtual hosts.
-# You may use the command line option '-S' to verify your virtual host
-# configuration.
-
-#
-# If you want to use name-based virtual hosts you need to define at
-# least one IP address (and port number) for them.
-#
-#NameVirtualHost 123.45.67.89:8080
-
-
-#
-# VirtualHost example:
-# Almost any Apache directive may go into a VirtualHost container.
-#
-#<VirtualHost ip.address.of.host.some_domain.com>
-# ServerAdmin webmaster@host.some_domain.com
-# DocumentRoot /www/docs/host.some_domain.com
-# ServerName host.some_domain.com
-# ErrorLog logs/host.some_domain.com-error_log
-# CustomLog logs/host.some_domain.com-access_log common
-#</VirtualHost>
-
-#<VirtualHost _default_:*>
-#</VirtualHost>
-
diff --git a/usr.sbin/httpd/conf/mime.types b/usr.sbin/httpd/conf/mime.types
index 0e6ccc4d11a..f6d62b653a4 100644
--- a/usr.sbin/httpd/conf/mime.types
+++ b/usr.sbin/httpd/conf/mime.types
@@ -31,6 +31,7 @@ application/index.cmd
application/index.obj
application/index.response
application/index.vnd
+application/iotp
application/ipp
application/mac-binhex40 hqx
application/mac-compactpro cpt
@@ -61,7 +62,6 @@ application/prs.cww
application/prs.nprend
application/remote-printing
application/riscos
-application/rtf rtf
application/sdp
application/set-payment
application/set-payment-initiation
@@ -81,6 +81,9 @@ application/vnd.anser-web-certificate-issue-initiation
application/vnd.anser-web-funds-transfer-initiation
application/vnd.audiograph
application/vnd.businessobjects
+application/vnd.bmi
+application/vnd.canon-cpdl
+application/vnd.canon-lips
application/vnd.claymore
application/vnd.commerce-battelle
application/vnd.commonspace
@@ -89,6 +92,7 @@ application/vnd.cosmocaller
application/vnd.cups-postscript
application/vnd.cups-raster
application/vnd.cups-raw
+application/vnd.ctc-posml
application/vnd.cybank
application/vnd.dna
application/vnd.dpgraph
@@ -105,6 +109,8 @@ application/vnd.epson.msf
application/vnd.epson.quickanime
application/vnd.epson.salt
application/vnd.epson.ssf
+application/vnd.ericsson.quickcall
+application/vnd.eudora.data
application/vnd.fdf
application/vnd.ffsns
application/vnd.framemaker
@@ -113,13 +119,22 @@ application/vnd.fujitsu.oasys2
application/vnd.fujitsu.oasys3
application/vnd.fujitsu.oasysgp
application/vnd.fujitsu.oasysprs
+application/vnd.fujixerox.ddd
application/vnd.fujixerox.docuworks
+application/vnd.fujixerox.docuworks.binder
application/vnd.fut-misnet
+application/vnd.grafeq
+application/vnd.groove-account
+application/vnd.groove-identity-message
+application/vnd.groove-injector
+application/vnd.groove-tool-message
+application/vnd.groove-tool-template
application/vnd.hp-HPGL
application/vnd.hp-PCL
application/vnd.hp-PCLXL
application/vnd.hp-hpid
application/vnd.hp-hps
+application/vnd.hzn-3d-crossword
application/vnd.ibm.MiniPay
application/vnd.ibm.modcap
application/vnd.intercon.formnet
@@ -189,6 +204,7 @@ application/vnd.powerbuilder75-s
application/vnd.previewsystems.box
application/vnd.publishare-delta-tree
application/vnd.rapid
+application/vnd.s3sms
application/vnd.seemail
application/vnd.shana.informed.formdata
application/vnd.shana.informed.formtemplate
@@ -198,6 +214,7 @@ application/vnd.street-stream
application/vnd.svd
application/vnd.swiftview-ics
application/vnd.triscape.mxs
+application/vnd.trueapp
application/vnd.truedoc
application/vnd.ufdl
application/vnd.uplanet.alert
@@ -214,10 +231,13 @@ application/vnd.uplanet.listcmd
application/vnd.uplanet.listcmd-wbxml
application/vnd.uplanet.signal
application/vnd.vcx
+application/vnd.vectorworks
application/vnd.visio
-application/vnd.wap.wbxml
-application/vnd.wap.wmlc
-application/vnd.wap.wmlscriptc
+application/vnd.wap.sic
+application/vnd.wap.slc
+application/vnd.wap.wbxml wbxml
+application/vnd.wap.wmlc wmlc
+application/vnd.wap.wmlscriptc wmlsc
application/vnd.webturbo
application/vnd.wrq-hp3000-labelled
application/vnd.wt.stf
@@ -269,6 +289,7 @@ audio/mpeg mpga mp2 mp3
audio/vnd.cns.anp1
audio/vnd.cns.inf1
audio/vnd.digital-winds
+audio/vnd.everad.plj
audio/vnd.lucent.voice
audio/vnd.nortel.vbk
audio/vnd.octel.sbc
@@ -297,10 +318,12 @@ image/vnd.dwg
image/vnd.dxf
image/vnd.fastbidsheet
image/vnd.fpx
+image/vnd.fujixerox.edmics-mmr
+image/vnd.fujixerox.edmics-rlc
image/vnd.mix
image/vnd.net-fpx
image/vnd.svf
-image/vnd.wap.wbmp
+image/vnd.wap.wbmp wbmp
image/vnd.xiff
image/x-cmu-raster ras
image/x-portable-anymap pnm
@@ -323,7 +346,11 @@ model/iges igs iges
model/mesh msh mesh silo
model/vnd.dwf
model/vnd.flatland.3dml
+model/vnd.gdl
+model/vnd.gs-gdl
model/vnd.gtw
+model/vnd.mts
+model/vnd.vtu
model/vrml wrl vrml
multipart/alternative
multipart/appledouble
@@ -350,6 +377,7 @@ text/richtext rtx
text/rtf rtf
text/sgml sgml sgm
text/tab-separated-values tsv
+text/t140
text/uri-list
text/vnd.abc
text/vnd.flatland.3dml
@@ -359,8 +387,11 @@ text/vnd.in3d.3dml
text/vnd.in3d.spot
text/vnd.latex-z
text/vnd.motorola.reflex
-text/vnd.wap.wml
-text/vnd.wap.wmlscript
+text/vnd.ms-mediapackage
+text/vnd.wap.si
+text/vnd.wap.sl
+text/vnd.wap.wml wml
+text/vnd.wap.wmlscript wmls
text/x-setext etx
text/xml xml
video/mpeg mpeg mpg mpe
diff --git a/usr.sbin/httpd/htdocs/index.html.tw.Big5 b/usr.sbin/httpd/htdocs/index.html.tw.Big5
new file mode 100644
index 00000000000..d641857bebb
--- /dev/null
+++ b/usr.sbin/httpd/htdocs/index.html.tw.Big5
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+ <HEAD>
+ <TITLE>¦w¸Ë Apache ªº´ú¸Õºô­¶</TITLE>
+ </HEAD>
+ <!-- Background white, links blue (unvisited), navy (visited), red (active)-->
+ <BODY
+ BGCOLOR="#FFFFFF"
+ TEXT="#000000"
+ LINK="#0000FF"
+ VLINK="#000080"
+ ALINK="#FF0000"
+ >
+
+
+<P>
+¦pªG§A¥i¥H¬Ý¨£¦¹­¶¡A³oªí¥Ü§Aªº
+<A HREF="http://www.apache.org/httpd">Apache Web Server</A>
+¤w¸g¦w¸Ë¦¨¥\¡C
+§A¥i¥H¼W¥[¤º®e¨ì³o­Ó¥Ø¿ý¡A©Î§â³o­Óºô­¶´«±¼¡C<P>
+
+<P><HR WIDTH="50%" SIZE="8">
+
+<H2 ALIGN="CENTER">¨S¦³¬Ý¨ì§A·Q¬Ýªººô¯¸¶Ü ?</H2>
+
+<P>
+³o­Óºô­¶¤§©Ò¥H·|¦b³oùØ¡A¨º¬O¦]¬°ºô¯¸ºÞ²zªÌ¤w¸g§ó§ï³o­Óºô¯¸ªº³]©w¡C
+­Y¦³°ÝÃD, ½Ð»P <STRONG>ºûÅ@³o­Ó¦øªA¾¹ªº¤H­ûÁpµ¸</STRONG>¡C
+Apache ³nÅé°òª÷·|¡A¤]´N¬O¶}µo³o®M³nÅ骺³æ¦ì¡A»P¦¹ºô¯¸¨ÃµL¥ô¦óÃö«Y¡A
+¦Ó¥B¤]µLªkÀ°§A¸Ñ¨M³]©w¤Wªº°ÝÃD¡C
+
+<P><HR WIDTH="50%" SIZE="8">
+
+<P>
+Apache ªº
+<A HREF="manual/index.html">¤å¥ó</A>
+¤w¸g¥]§t¦b¸Óª©¥»¤¤¡C
+
+<P>
+§A¥i¥H¦b¨Ï¥Î Apache ªººô¯¸¦øªA¾¹¤W¡A¦Û¥Ñªº¨Ï¥Î¤U­±¤§¹Ï¥Ü¡A
+·PÁ±z¨Ï¥Î Apache¡I
+<BR><BR>
+<DIV ALIGN="CENTER"><IMG SRC="apache_pb.gif" ALT=""></DIV>
+
+</BODY>
+</HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/LICENSE b/usr.sbin/httpd/htdocs/manual/LICENSE
index 6ac6538b3ca..de6706f26e0 100644
--- a/usr.sbin/httpd/htdocs/manual/LICENSE
+++ b/usr.sbin/httpd/htdocs/manual/LICENSE
@@ -1,59 +1,58 @@
/* ====================================================================
- * Copyright (c) 1995-1999 The Apache Group. All rights reserved.
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgment:
- * "This product includes software developed by the Apache Group
- * for use in the Apache HTTP server project (http://www.apache.org/)."
- *
- * 4. The names "Apache Server" and "Apache Group" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by the Apache Group
- * for use in the Apache HTTP server project (http://www.apache.org/)."
- *
- * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
+ *
+ * 4. The names "Apache" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
+ *
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
+ *
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Group and was originally based
- * on public domain software written at the National Center for
- * Supercomputing Applications, University of Illinois, Urbana-Champaign.
- * For more information on the Apache Group and the Apache HTTP server
- * project, please see <http://www.apache.org/>.
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
*
+ * Portions of this software are based upon public domain software
+ * originally written at the National Center for Supercomputing Applications,
+ * University of Illinois, Urbana-Champaign.
*/
-
-
diff --git a/usr.sbin/httpd/htdocs/manual/bind.html b/usr.sbin/httpd/htdocs/manual/bind.html
index e5fd0362d46..9b3d1c47fec 100644
--- a/usr.sbin/httpd/htdocs/manual/bind.html
+++ b/usr.sbin/httpd/htdocs/manual/bind.html
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html><head>
-<title>Setting which addresses and ports Apache uses</title>
-</head>
+<HTML><HEAD>
+<TITLE>Setting which addresses and ports Apache uses</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -14,77 +14,104 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<h1 ALIGN="CENTER">Setting which addresses and ports Apache uses</h1>
+<H1 ALIGN="CENTER">Setting which addresses and ports Apache uses</H1>
-<hr>
+<HR>
When Apache starts, it connects to some port and address on the
local machine and waits for incoming requests. By default, it
listens to all addresses on the machine, and to the port
-as specified by the <tt>Port</tt> directive in the server configuration.
+as specified by the <TT>Port</TT> directive in the server configuration.
However, it can be told to listen to more the one port, or to listen
to only selected addresses, or a combination. This is often combined
with the Virtual Host feature which determines how Apache
-responds to different IP addresses, hostnames and ports.<p>
+responds to different IP addresses, hostnames and ports.<P>
There are two directives used to restrict or specify which addresses
and ports Apache listens to.
-<ul>
-<li><a href="#bindaddress">BindAddress</a> is used to restrict the server to listening to
+<UL>
+<LI><A HREF="#bindaddress">BindAddress</A> is used to restrict the server to
+ listening to
a single address, and can be used to permit multiple Apache servers
on the same machine listening to different IP addresses.
-<li><a href="#listen">Listen</a> can be used to make a single Apache server listen
+<LI><A HREF="#listen">Listen</A> can be used to make a single Apache server
+ listen
to more than one address and/or port.
-</ul>
-
-<h3><a name="bindaddress">BindAddress</a></h3>
-<strong>Syntax:</strong> BindAddress <em>[ * | IP-address | hostname ]</em><br>
-<strong>Default:</strong> <code>BindAddress *</code><br>
-<strong>Context:</strong> server config<br>
-<strong>Status:</strong> Core<p>
+</UL>
+
+<H3><A NAME="bindaddress">BindAddress</A></H3>
+<A
+ HREF="mod/directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> BindAddress <EM>[ * | IP-address
+ | hostname ]</EM><BR>
+<A
+ HREF="mod/directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>BindAddress *</CODE><BR>
+<A
+ HREF="mod/directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="mod/directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Core<P>
Makes the server listen to just the specified address. If the argument
is *, the server listens to all addresses. The port listened to
-is set with the <tt>Port</tt> directive. Only one BindAddress
+is set with the <TT>Port</TT> directive. Only one BindAddress
should be used.
-<h3><a name="listen">Listen</a></h3>
-<strong>Syntax:</strong> Listen <em>[ port | IP-address:port ]</em><br>
-<strong>Default:</strong> <code>none</code><br>
-<strong>Context:</strong> server config<br>
-<strong>Status:</strong> Core<p>
-
-<tt>Listen</tt> can be used instead of <tt>BindAddress</tt> and
-<tt>Port</tt>. It tells the server to accept incoming requests on the
+<H3><A NAME="listen">Listen</A></H3>
+<A
+ HREF="mod/directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> Listen <EM>[ port | IP-address:port ]</EM><BR>
+<A
+ HREF="mod/directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>none</CODE><BR>
+<A
+ HREF="mod/directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="mod/directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Core<P>
+
+<TT>Listen</TT> can be used instead of <TT>BindAddress</TT> and
+<TT>Port</TT>. It tells the server to accept incoming requests on the
specified port or address-and-port combination. If the first format is
used, with a port number only, the server listens to the given port on
-all interfaces, instead of the port given by the <tt>Port</tt>
+all interfaces, instead of the port given by the <TT>Port</TT>
directive. If an IP address is given as well as a port, the server
-will listen on the given port and interface. <p> Multiple Listen
+will listen on the given port and interface. <P> Multiple Listen
directives may be used to specify a number of addresses and ports to
listen to. The server will respond to requests from any of the listed
-addresses and ports.<p>
+addresses and ports.<P>
For example, to make the server accept connections on both port
80 and port 8000, use:
-<pre>
+<PRE>
Listen 80
Listen 8000
-</pre>
+</PRE>
To make the server accept connections on two specified
interfaces and port numbers, use
-<pre>
+<PRE>
Listen 192.170.2.1:80
Listen 192.170.2.5:8000
-</pre>
+</PRE>
-<h2>How this works with Virtual Hosts</h2>
+<H2>How this works with Virtual Hosts</H2>
BindAddress and Listen do not implement Virtual Hosts. They tell the
main server what addresses and ports to listen to. If no
@@ -98,21 +125,20 @@ and port to set the behavior of this virtual host. Note that if the
&lt;VirtualHost&gt; is set for an address and port that the server is
not listening to, it cannot be accessed.
-<h2>See also</h2>
+<H2>See also</H2>
See also the documentation on
-<a href="virtual-host.html">Virtual Hosts</a>,
-<a href="host.html">Non-IP virtual hosts</a>,
-<a href="mod/core.html#bindaddress">BindAddress directive</a>,
-<a href="mod/core.html#port">Port directive</a>,
-<a href="dns-caveats.html">DNS Issues</a>
+<A HREF="vhosts/index.html">Virtual Hosts</A>,
+<A HREF="mod/core.html#bindaddress">BindAddress directive</A>,
+<A HREF="mod/core.html#port">Port directive</A>,
+<A HREF="dns-caveats.html">DNS Issues</A>
and
-<a href="mod/core.html#virtualhost">&lt;VirtualHost&gt; section</a>.
+<A HREF="mod/core.html#virtualhost">&lt;VirtualHost&gt; section</A>.
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/cgi_path.html b/usr.sbin/httpd/htdocs/manual/cgi_path.html
index f70aed3067c..baf0690669b 100644
--- a/usr.sbin/httpd/htdocs/manual/cgi_path.html
+++ b/usr.sbin/httpd/htdocs/manual/cgi_path.html
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html><head>
-<title>PATH_INFO Changes in the CGI Environment</title>
-</head>
+<HTML><HEAD>
+<TITLE>PATH_INFO Changes in the CGI Environment</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -14,89 +14,89 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<h1 ALIGN="CENTER">PATH_INFO Changes in the CGI Environment</h1>
+<H1 ALIGN="CENTER">PATH_INFO Changes in the CGI Environment</H1>
-<hr>
+<HR>
-<h2><a name="over">Overview</a></h2>
+<H2><A NAME="over">Overview</A></H2>
-<p>As implemented in Apache 1.1.1 and earlier versions, the method
+<P>As implemented in Apache 1.1.1 and earlier versions, the method
Apache used to create PATH_INFO in the CGI environment was
counterintuitive, and could result in crashes in certain cases. In
Apache 1.2 and beyond, this behavior has changed. Although this
results in some compatibility problems with certain legacy CGI
applications, the Apache 1.2 behavior is still compatible with the
-CGI/1.1 specification, and CGI scripts can be easily modified (<a
-href="#compat">see below</a>).
+CGI/1.1 specification, and CGI scripts can be easily modified (<A
+HREF="#compat">see below</A>).
-<h2><a name="prob">The Problem</a></h2>
+<H2><A NAME="prob">The Problem</A></H2>
-<p>Apache 1.1.1 and earlier implemented the PATH_INFO and SCRIPT_NAME
+<P>Apache 1.1.1 and earlier implemented the PATH_INFO and SCRIPT_NAME
environment variables by looking at the filename, not the URL. While
this resulted in the correct values in many cases, when the filesystem
path was overloaded to contain path information, it could result in
errant behavior. For example, if the following appeared in a config
file:
-<pre>
+<PRE>
Alias /cgi-ralph /usr/local/httpd/cgi-bin/user.cgi/ralph
-</pre>
-<p>In this case, <code>user.cgi</code> is the CGI script, the "/ralph"
+</PRE>
+<P>In this case, <CODE>user.cgi</CODE> is the CGI script, the "/ralph"
is information to be passed onto the CGI. If this configuration was in
-place, and a request came for "<code>/cgi-ralph/script/</code>", the
-code would set PATH_INFO to "<code>/ralph/script</code>", and
-SCRIPT_NAME to "<code>/cgi-</code>". Obviously, the latter is
+place, and a request came for "<CODE>/cgi-ralph/script/</CODE>", the
+code would set PATH_INFO to "<CODE>/ralph/script</CODE>", and
+SCRIPT_NAME to "<CODE>/cgi-</CODE>". Obviously, the latter is
incorrect. In certain cases, this could even cause the server to
-crash.</p>
+crash.</P>
-<h2><a name="solution">The Solution</a></h2>
+<H2><A NAME="solution">The Solution</A></H2>
-<p>Apache 1.2 and later now determine SCRIPT_NAME and PATH_INFO by
+<P>Apache 1.2 and later now determine SCRIPT_NAME and PATH_INFO by
looking directly at the URL, and determining how much of the URL is
client-modifiable, and setting PATH_INFO to it. To use the above
-example, PATH_INFO would be set to "<code>/script</code>", and
-SCRIPT_NAME to "<code>/cgi-ralph</code>". This makes sense and results
+example, PATH_INFO would be set to "<CODE>/script</CODE>", and
+SCRIPT_NAME to "<CODE>/cgi-ralph</CODE>". This makes sense and results
in no server behavior problems. It also permits the script to be
guaranteed that
-"<code>http://$SERVER_NAME:$SERVER_PORT$SCRIPT_NAME$PATH_INFO</code>"
+"<CODE>http://$SERVER_NAME:$SERVER_PORT$SCRIPT_NAME$PATH_INFO</CODE>"
will always be an accessible URL that points to the current script,
something which was not necessarily true with previous versions of
Apache.
-<p>However, the "<code>/ralph</code>"
-information from the <code>Alias</code> directive is lost. This is
+<P>However, the "<CODE>/ralph</CODE>"
+information from the <CODE>Alias</CODE> directive is lost. This is
unfortunate, but we feel that using the filesystem to pass along this
sort of information is not a recommended method, and a script making
use of it "deserves" not to work. Apache 1.2b3 and later, however, do
-provide <a href="#compat">a workaround.</a>
+provide <A HREF="#compat">a workaround.</A>
-<h2><a name="compat">Compatibility with Previous Servers</a></h2>
+<H2><A NAME="compat">Compatibility with Previous Servers</A></H2>
-<p>It may be necessary for a script that was designed for earlier
+<P>It may be necessary for a script that was designed for earlier
versions of Apache or other servers to need the information that the
old PATH_INFO variable provided. For this purpose, Apache 1.2 (1.2b3
and later) sets an additional variable, FILEPATH_INFO. This
environment variable contains the value that PATH_INFO would have had
-with Apache 1.1.1.</p>
+with Apache 1.1.1.</P>
-<p>A script that wishes to work with both Apache 1.2 and earlier
+<P>A script that wishes to work with both Apache 1.2 and earlier
versions can simply test for the existence of FILEPATH_INFO, and use
it if available. Otherwise, it can use PATH_INFO. For example, in
Perl, one might use:
-<pre>
+<PRE>
$path_info = $ENV{'FILEPATH_INFO'} || $ENV{'PATH_INFO'};
-</pre>
+</PRE>
-<p>By doing this, a script can work with all servers supporting the
-CGI/1.1 specification, including all versions of Apache.</p>
+<P>By doing this, a script can work with all servers supporting the
+CGI/1.1 specification, including all versions of Apache.</P>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/configuring.html b/usr.sbin/httpd/htdocs/manual/configuring.html
new file mode 100644
index 00000000000..d9ffa78580b
--- /dev/null
+++ b/usr.sbin/httpd/htdocs/manual/configuring.html
@@ -0,0 +1,198 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+<TITLE>Configuring Apache</TITLE>
+</HEAD>
+
+<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+<BODY
+ BGCOLOR="#FFFFFF"
+ TEXT="#000000"
+ LINK="#0000FF"
+ VLINK="#000080"
+ ALINK="#FF0000"
+>
+<DIV ALIGN="CENTER">
+ <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
+ <H3>
+ Apache HTTP Server
+ </H3>
+</DIV>
+
+<H1 ALIGN="CENTER">Configuring Apache</H1>
+
+<H2>Main Configuration Files</H2>
+
+<P>Apache is configured by placing <A HREF="mod/directives.html"
+>directives</A> in plain text configuration files. The main
+configuration file is usually called <CODE>httpd.conf</CODE>. The
+location of this file is set at compile-time, but may be overridden
+with the <CODE>-f</CODE> command line flag. Some sites also have
+<CODE>srm.conf</CODE> and <CODE>access.conf</CODE> files for <A
+HREF="http://www.apache.org/info/three-config-files.html">historical
+reasons</A>. In addition, other configuration files may be added using
+the <CODE><A HREF="mod/core.html#include">Include</A></CODE>
+directive. Any directive may be placed in any of these configuration
+files. Changes to the main configuration files are only recognized by
+Apache when it is started or restarted.
+
+<P>New with Apache 1.3.13 is a feature where if any configuration
+file is actually a directory, Apache will enter that directory
+and parse any files (and subdirectories) found there as configuration
+files. One possible use for this would be to add VirtualHosts
+by creating small configuration files for each host, and placing
+them in such a configuration directory. Thus, you can add or
+remove VirtualHosts without editing any files at all, simply
+adding or deleting them. This makes automating such processes
+much easier.
+
+<P>
+The server also reads a file containing mime document types; the
+filename is set by the <A HREF="mod/mod_mime.html#typesconfig"
+>TypesConfig</A> directive, and is <CODE>mime.types</CODE> by default.
+
+<H2>Syntax of the Configuration Files</H2>
+
+<P>Apache configuration files contain one directive per line. The
+back-slash "\" may be used as the last character on a line to indicate
+that the directive continues onto the next line. There must be no
+other characters or white space between the back-slash and the end of
+the line. To end a line with a literal back-slash, you can escape it
+by preceding it with a second back-slash "\\".
+
+<P>Directives in the configuration files are case-insensitive, but
+arguments to directives are often case sensitive. Lines which begin
+with the hash character "#" are considered comments, and are ignored.
+Comments may <STRONG>not</STRONG> be included on a line after a
+configuration directive. Blank lines and white space occurring before
+a directive are ignored, so you may indent directives for clarity.
+
+<P>You can check your configuration files for syntax errors without
+starting the server by using <CODE>apachectl configtest</CODE>
+or the <CODE>-t</CODE> command line option.
+
+<H2>Modules</H2>
+
+<P>Apache is a modular server. This implies that only the most basic
+functionality is included in the core server. Extended features are
+available through <A HREF="mod/index-bytype.html">modules</A> which can
+be loaded into Apache. By default, a <A
+HREF="mod/directive-dict.html#Status">base</A> set of modules is
+included in the server at compile-time. If the server is compiled to
+use <A HREF="dso.html">dynamically loaded</A> modules, then modules
+can be compiled separately and added at any time using the <A
+HREF="mod/mod_so.html#loadmodule">LoadModule</A> directive.
+Otherwise, Apache must be recompiled to add or remove modules.
+
+<P>To see which modules are currently compiled into the server,
+you can use the <CODE>-l</CODE> command line option.
+
+<H2>Scope of Directives</H2>
+
+<P>Directives placed in the main configuration files apply to the entire
+server. If you wish to change the configuration for only a part of
+the server, you can scope your directives by placing them in
+<CODE><A HREF="mod/core.html#directory">&lt;Directory&gt;</A>,
+<A HREF="mod/core.html#directorymatch">&lt;DirectoryMatch&gt;</A>,
+<A HREF="mod/core.html#files">&lt;Files&gt;</A>,
+<A HREF="mod/core.html#filesmatch">&lt;FilesMatch&gt;</A>,
+<A HREF="mod/core.html#location">&lt;Location&gt;</A>,
+</CODE> and <CODE>
+<A HREF="mod/core.html#locationmatch">&lt;LocationMatch&gt;</A>
+</CODE>
+sections. These sections limit the application of the directives
+which they enclose to particular filesystem locations or URLs. They
+can also be nested, allowing for very fine grained configuration.
+
+<P>Apache has the capability to serve many different websites
+simultaneously. This is called <A HREF="vhosts/">Virtual Hosting</A>.
+Directives can also be scoped by placing them inside
+<CODE><A HREF="mod/core.html#virtualhost">&lt;VirtualHost&gt;</A></CODE>
+sections, so that they will only apply to requests for a particular
+website.
+
+<P>Although most directives can be placed in any of these sections,
+some directives do not make sense in some contexts. For example,
+directives controlling process creation can only be placed in the main
+server context. To find which directives can be placed in which
+sections, check the <A
+HREF="mod/directive-dict.html#Context">Context</A> of the directive.
+For further information, we provide details on <A
+HREF="sections.html">How Directory, Location and Files sections
+work</A>.
+
+<H2>.htaccess Files</H2>
+
+<P>Apache allows for decentralized management of configuration via
+special files placed inside the web tree. The special files are
+usually called <CODE>.htaccess</CODE>, but any name can be specified
+in the <A HREF="mod/core.html#accessfilename"><CODE
+>AccessFileName</CODE></A> directive. Directives placed in
+<CODE>.htaccess</CODE> files apply to the directory where you place
+the file, and all sub-directories. The <CODE>.htaccess</CODE> files
+follow the same syntax as the main configuration files. Since
+<CODE>.htaccess</CODE> files are read on every request, rather than
+only at server startup, changes made in these files take immediate
+effect.
+
+<P>To find which directives can be placed in <CODE>.htaccess</CODE>
+files, check the <A HREF="mod/directive-dict.html#Context">Context</A>
+of the directive. The server administrator further controls what
+directives may be placed in <CODE>.htaccess</CODE> files by
+configuring the <A
+HREF="mod/core.html#allowoverride"><CODE>AllowOverride</CODE></A>
+directive in the main configuration files.
+
+<H2>Log files</H2>
+<H3>security warning</H3>
+Anyone who can write to the directory where Apache is writing a
+log file can almost certainly gain access to the uid that the server is
+started as, which is normally root. Do <EM>NOT</EM> give people write
+access to the directory the logs are stored in without being aware of
+the consequences; see the <A HREF="misc/security_tips.html">security tips</A>
+document for details.
+
+<H3>pid file</H3>
+
+<P>On startup, Apache saves the process id of the parent httpd process to
+the file <CODE>logs/httpd.pid</CODE>. This filename can be changed
+with the <A HREF="mod/core.html#pidfile">PidFile</A> directive. The
+process-id is for use by the administrator in restarting and
+terminating the daemon: on Unix, a HUP or USR1 signal causes the
+daemon to re-read its configuration files and a TERM signal causes it
+to die gracefully; on Windows, use the -k command line option instead.
+For more information see the <A HREF="stopping.html">Stopping and
+Restarting</A> page.
+
+<P>
+If the process dies (or is killed) abnormally, then it will be necessary to
+kill the children httpd processes.
+
+<H3>Error log</H3>
+
+<P>The server will log error messages to a log file, by default
+<CODE>logs/error_log</CODE> on Unix or <CODE>logs/error.log</CODE> on
+Windows and OS/2. The filename can be set using the <A
+HREF="mod/core.html#errorlog">ErrorLog</A> directive; different error
+logs can be set for different <A
+HREF="mod/core.html#virtualhost">virtual hosts</A>.
+
+<H3>Transfer log</H3>
+
+<P>The server will typically log each request to a transfer file, by
+default <CODE>logs/access_log</CODE> on Unix or
+<CODE>logs/access.log</CODE> on Windows and OS/2. The filename can be
+set using a <A HREF="mod/mod_log_config.html#customlog">CustomLog</A>
+directive; different transfer logs can be set for different <A
+HREF="mod/core.html#virtualhost">virtual hosts</A>.
+
+
+<HR>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
+
+<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
+
+</BODY>
+</HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/content-negotiation.html b/usr.sbin/httpd/htdocs/manual/content-negotiation.html
index b5b6913f378..f1d7c6602d5 100644
--- a/usr.sbin/httpd/htdocs/manual/content-negotiation.html
+++ b/usr.sbin/httpd/htdocs/manual/content-negotiation.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -284,7 +284,9 @@ browser specifically requests this through the mechanism defined in RFC
deciding on the 'best' variant, the result is therefore dependent on
the specific algorithms used by the browser. As part of the
transparent negotiation process, the browser can ask Apache to run the
-'remote variant selection algorithm' defined in RFC 2296. </UL>
+'remote variant selection algorithm' defined in RFC 2296.
+
+</OL>
<H3>Dimensions of Negotiation</H3>
@@ -591,7 +593,7 @@ takes no arguments. It has no effect on requests from HTTP/1.1 clients.
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/custom-error.html b/usr.sbin/httpd/htdocs/manual/custom-error.html
index d4ec34ebbb6..ba0602efb5c 100644
--- a/usr.sbin/httpd/htdocs/manual/custom-error.html
+++ b/usr.sbin/httpd/htdocs/manual/custom-error.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
@@ -35,13 +35,12 @@
response, then this response can be replaced with either some
friendlier text or by a redirection to another URL (local or
external).
-
<P>
-
+
<DT>Old behavior
- <DD>NCSA httpd 1.3 would return some boring old error/problem message
- which would often be meaningless to the user, and would provide no
+ <DD>NCSA httpd 1.3 would return some boring old error/problem message
+ which would often be meaningless to the user, and would provide no
means of logging the symptoms which caused it.<BR>
<P>
@@ -56,61 +55,67 @@
</OL>
<P>Redirecting to another URL can be useful, but only if some information
- can be passed which can then be used to explain and/or log the error/problem
+ can be passed which can then be used to explain and/or log the
+ error/problem
more clearly.
<P>To achieve this, Apache will define new CGI-like environment
- variables, e.g.
-
- <blockquote><code>
-REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap, image/jpeg <br>
-REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05 9000/712) <br>
-REDIRECT_PATH=.:/bin:/usr/local/bin:/etc <br>
-REDIRECT_QUERY_STRING= <br>
-REDIRECT_REMOTE_ADDR=121.345.78.123 <br>
-REDIRECT_REMOTE_HOST=ooh.ahhh.com <br>
-REDIRECT_SERVER_NAME=crash.bang.edu <br>
-REDIRECT_SERVER_PORT=80 <br>
-REDIRECT_SERVER_SOFTWARE=Apache/0.8.15 <br>
-REDIRECT_URL=/cgi-bin/buggy.pl <br>
- </code></blockquote>
-
- <P>note the <code>REDIRECT_</code> prefix.
-
- <P>At least <code>REDIRECT_URL</code> and <code>REDIRECT_QUERY_STRING</code> will
- be passed to the new URL (assuming it's a cgi-script or a cgi-include). The
- other variables will exist only if they existed prior to the error/problem.
- <b>None</b> of these will be set if your ErrorDocument is an
- <i>external</i> redirect (i.e. anything starting with a protocol name
- like <code>http:</code>, even if it refers to the same host as the
- server).<p>
+ variables, <EM>e.g.</EM>
+
+ <BLOCKQUOTE><CODE>
+REDIRECT_HTTP_ACCEPT=*/*, image/gif, image/x-xbitmap, image/jpeg <BR>
+REDIRECT_HTTP_USER_AGENT=Mozilla/1.1b2 (X11; I; HP-UX A.09.05 9000/712) <BR>
+REDIRECT_PATH=.:/bin:/usr/local/bin:/etc <BR>
+REDIRECT_QUERY_STRING= <BR>
+REDIRECT_REMOTE_ADDR=121.345.78.123 <BR>
+REDIRECT_REMOTE_HOST=ooh.ahhh.com <BR>
+REDIRECT_SERVER_NAME=crash.bang.edu <BR>
+REDIRECT_SERVER_PORT=80 <BR>
+REDIRECT_SERVER_SOFTWARE=Apache/0.8.15 <BR>
+REDIRECT_URL=/cgi-bin/buggy.pl <BR>
+ </CODE></BLOCKQUOTE>
+
+ <P>note the <CODE>REDIRECT_</CODE> prefix.
+
+ <P>At least <CODE>REDIRECT_URL</CODE> and <CODE>REDIRECT_QUERY_STRING</CODE>
+ will
+ be passed to the new URL (assuming it's a cgi-script or a cgi-include).
+ The
+ other variables will exist only if they existed prior to the
+ error/problem.
+ <STRONG>None</STRONG> of these will be set if your ErrorDocument is an
+ <EM>external</EM> redirect (<EM>i.e.</EM>, anything starting with a
+ scheme name
+ like <CODE>http:</CODE>, even if it refers to the same host as the
+ server).<P>
<DT>Configuration
<DD> Use of "ErrorDocument" is enabled for .htaccess files when the
- <A HREF="mod/core.html#allowoverride">"FileInfo" override</A> is allowed.
+ <A HREF="mod/core.html#allowoverride">"FileInfo" override</A> is
+ allowed.
<P>Here are some examples...
- <blockquote><code>
-ErrorDocument 500 /cgi-bin/crash-recover <br>
-ErrorDocument 500 "Sorry, our script crashed. Oh dear<br>
-ErrorDocument 500 http://xxx/ <br>
-ErrorDocument 404 /Lame_excuses/not_found.html <br>
+ <BLOCKQUOTE><CODE>
+ErrorDocument 500 /cgi-bin/crash-recover <BR>
+ErrorDocument 500 "Sorry, our script crashed. Oh dear<BR>
+ErrorDocument 500 http://xxx/ <BR>
+ErrorDocument 404 /Lame_excuses/not_found.html <BR>
ErrorDocument 401 /Subscription/how_to_subscribe.html
- </code></blockquote>
+ </CODE></BLOCKQUOTE>
- <P>The syntax is,
+ <P>The syntax is,
- <P><code><A HREF="mod/core.html#errordocument">ErrorDocument</A></code>
-&lt;3-digit-code&gt; action
+ <P><CODE><A HREF="mod/core.html#errordocument">ErrorDocument</A></CODE>
+&lt;3-digit-code&gt; action
<P>where the action can be,
<OL>
<LI>Text to be displayed. Prefix the text with a quote (&quot;). Whatever
- follows the quote is displayed. <em>Note: the (&quot;) prefix isn't
- displayed.</em>
+ follows the quote is displayed. <EM>Note: the (&quot;) prefix isn't
+ displayed.</EM>
<LI>An external URL to redirect to.
@@ -121,43 +126,62 @@ ErrorDocument 401 /Subscription/how_to_subscribe.html
<P><HR><P>
-<h2>Custom error responses and redirects</H2>
+<H2>Custom error responses and redirects</H2>
<DL>
<DT>Purpose
<DD>Apache's behavior to redirected URLs has been modified so that additional
- environment variables are available to a script/server-include.<p>
+ environment variables are available to a script/server-include.<P>
<DT>Old behavior
<DD>Standard CGI vars were made available to a script which has been
- redirected to. No indication of where the redirection came from was provided.
+ redirected to. No indication of where the redirection came from was
+ provided.
- <p>
+ <P>
<DT>New behavior
<DD>
A new batch of environment variables will be initialized for use by a
script which has been redirected to. Each new variable will have the
-prefix <code>REDIRECT_</code>. <code>REDIRECT_</code> environment
+prefix <CODE>REDIRECT_</CODE>. <CODE>REDIRECT_</CODE> environment
variables are created from the CGI environment variables which existed
-prior to the redirect, they are renamed with a <code>REDIRECT_</code>
-prefix, i.e. <code>HTTP_USER_AGENT</code> becomes
-<code>REDIRECT_HTTP_USER_AGENT</code>. In addition to these new
-variables, Apache will define <code>REDIRECT_URL</code> and
-<code>REDIRECT_STATUS</code> to help the script trace its origin.
+prior to the redirect, they are renamed with a <CODE>REDIRECT_</CODE>
+prefix, <EM>i.e.</EM>, <CODE>HTTP_USER_AGENT</CODE> becomes
+<CODE>REDIRECT_HTTP_USER_AGENT</CODE>. In addition to these new
+variables, Apache will define <CODE>REDIRECT_URL</CODE> and
+<CODE>REDIRECT_STATUS</CODE> to help the script trace its origin.
Both the original URL and the URL being redirected to can be logged in
the access log.
</DL>
+<P>
+If the ErrorDocument specifies a local redirect to a CGI script, the script
+should include a "<SAMP>Status:</SAMP>" header field in its output
+in order to ensure the propagation all the way back to the client
+of the error condition that caused it to be invoked. For instance, a Perl
+ErrorDocument script might include the following:
+</P>
+<PRE>
+ :
+ print "Content-type: text/html\n";
+ printf "Status: %s Condition Intercepted\n", $ENV{"REDIRECT_STATUS"};
+ :
+</PRE>
+<P>
+If the script is dedicated to handling a particular error condition, such as
+<SAMP>404&nbsp;Not&nbsp;Found</SAMP>, it can use the specific code and
+error text instead.
+</P>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/dns-caveats.html b/usr.sbin/httpd/htdocs/manual/dns-caveats.html
index a8ff0d8aac5..4982193c009 100644
--- a/usr.sbin/httpd/htdocs/manual/dns-caveats.html
+++ b/usr.sbin/httpd/htdocs/manual/dns-caveats.html
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html><head>
-<title>Issues Regarding DNS and Apache</title>
-</head>
+<HTML><HEAD>
+<TITLE>Issues Regarding DNS and Apache</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -14,52 +14,52 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<h1 ALIGN="CENTER">Issues Regarding DNS and Apache</h1>
+<H1 ALIGN="CENTER">Issues Regarding DNS and Apache</H1>
-<p>This page could be summarized with the statement: <i>don't require
-Apache to use DNS for any parsing of the configuration files</i>.
+<P>This page could be summarized with the statement: <EM>don't require
+Apache to use DNS for any parsing of the configuration files</EM>.
If Apache has to use DNS to parse the configuration files then your
server may be subject to reliability problems (it might not boot), or
denial and theft of service attacks (including users able to steal hits
from other users).
-<h3>A Simple Example</h3>
+<H3>A Simple Example</H3>
Consider this configuration snippet:
-<blockquote><pre>
+<BLOCKQUOTE><PRE>
&lt;VirtualHost www.abc.dom&gt;
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
&lt;/VirtualHost&gt;
-</pre></blockquote>
+</PRE></BLOCKQUOTE>
-<p>In order for Apache to function properly it absolutely needs
+<P>In order for Apache to function properly it absolutely needs
to have two pieces of information about each virtual host: the
-<a href="mod/core.html#servername"><code>ServerName</code></a>
+<A HREF="mod/core.html#servername"><CODE>ServerName</CODE></A>
and at least one IP address that the server
responds to. This example does not include the IP address, so Apache
-must use DNS to find the address of <code>www.abc.dom</code>. If for
+must use DNS to find the address of <CODE>www.abc.dom</CODE>. If for
some reason DNS is not available at the time your server is parsing its
-config file, then this virtual host <b>will not be configured</b>. It
+config file, then this virtual host <STRONG>will not be configured</STRONG>. It
won't be able to respond to any hits to this virtual host (prior to
Apache version 1.2 the server would not even boot).
-<p>Suppose that <code>www.abc.dom</code> has address 10.0.0.1. Then
+<P>Suppose that <CODE>www.abc.dom</CODE> has address 10.0.0.1. Then
consider this configuration snippet:
-<blockquote><pre>
+<BLOCKQUOTE><PRE>
&lt;VirtualHost 10.0.0.1&gt;
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
&lt;/VirtualHost&gt;
-</pre></blockquote>
+</PRE></BLOCKQUOTE>
-<p>Now Apache needs to use reverse DNS to find the <code>ServerName</code>
+<P>Now Apache needs to use reverse DNS to find the <CODE>ServerName</CODE>
for this virtualhost. If that reverse lookup fails then it will partially
disable the virtualhost (prior to Apache version 1.2 the server would not
even boot). If the virtual host is name-based then it will effectively
@@ -67,120 +67,108 @@ be totally disabled, but if it is IP-based then it will mostly work.
However if Apache should ever have to generate a full URL for the server
which includes the server name then it will fail to generate a valid URL.
-<p>Here is a snippet that avoids both of these problems.
+<P>Here is a snippet that avoids both of these problems.
-<blockquote><pre>
+<BLOCKQUOTE><PRE>
&lt;VirtualHost 10.0.0.1&gt;
ServerName www.abc.dom
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
&lt;/VirtualHost&gt;
-</pre></blockquote>
+</PRE></BLOCKQUOTE>
-<h3>Denial of Service</h3>
+<H3>Denial of Service</H3>
-<p>There are (at least) two forms that denial of service can come in.
+<P>There are (at least) two forms that denial of service can come in.
If you are running a version of Apache prior to version 1.2 then your
server will not even boot if one of the two DNS lookups mentioned above
fails for any of your virtual hosts. In some cases this DNS lookup may
-not even be under your control. For example, if <code>abc.dom</code>
+not even be under your control. For example, if <CODE>abc.dom</CODE>
is one of your customers and they control their own DNS then they
can force your (pre-1.2) server to fail while booting simply by deleting the
-<code>www.abc.dom</code> record.
+<CODE>www.abc.dom</CODE> record.
-<p>Another form is far more insidious. Consider this configuration
+<P>Another form is far more insidious. Consider this configuration
snippet:
-<blockquote><pre>
+<BLOCKQUOTE><PRE>
&lt;VirtualHost www.abc.dom&gt;
ServerAdmin webgirl@abc.dom
DocumentRoot /www/abc
&lt;/VirtualHost&gt;
-</pre></blockquote>
+</PRE></BLOCKQUOTE>
-<blockquote><pre>
+<BLOCKQUOTE><PRE>
&lt;VirtualHost www.def.dom&gt;
ServerAdmin webguy@def.dom
DocumentRoot /www/def
&lt;/VirtualHost&gt;
-</pre></blockquote>
-
-<p>Suppose that you've assigned 10.0.0.1 to <code>www.abc.dom</code> and
-10.0.0.2 to <code>www.def.dom</code>. Furthermore, suppose that
-<code>def.com</code> has control of their own DNS. With this config
-you have put <code>def.com</code> into a position where they can steal
-all traffic destined to <code>abc.com</code>. To do so, all they have to
-do is set <code>www.def.dom</code> to 10.0.0.1.
+</PRE></BLOCKQUOTE>
+
+<P>Suppose that you've assigned 10.0.0.1 to <CODE>www.abc.dom</CODE> and
+10.0.0.2 to <CODE>www.def.dom</CODE>. Furthermore, suppose that
+<CODE>def.com</CODE> has control of their own DNS. With this config
+you have put <CODE>def.com</CODE> into a position where they can steal
+all traffic destined to <CODE>abc.com</CODE>. To do so, all they have to
+do is set <CODE>www.def.dom</CODE> to 10.0.0.1.
Since they control their own DNS you can't stop them from pointing the
-<code>www.def.com</code> record wherever they wish.
+<CODE>www.def.com</CODE> record wherever they wish.
-<p>Requests coming in to 10.0.0.1 (including all those where users typed
-in URLs of the form <code>http://www.abc.dom/whatever</code>) will all be
-served by the <code>def.com</code> virtual host. To better understand why
+<P>Requests coming in to 10.0.0.1 (including all those where users typed
+in URLs of the form <CODE>http://www.abc.dom/whatever</CODE>) will all be
+served by the <CODE>def.com</CODE> virtual host. To better understand why
this happens requires a more in-depth discussion of how Apache matches
up incoming requests with the virtual host that will serve it. A rough
-document describing this <a href="vhosts-in-depth.html"> is available</a>.
+document describing this <A HREF="vhosts/details.html"> is available</A>.
-<h3>The "main server" Address</h3>
+<H3>The "main server" Address</H3>
-<p>The addition of <a href="host.html">non-IP-based virtual host
-support</a> in Apache 1.1 requires Apache to know the IP address(es) of
+<P>The addition of <A HREF="vhosts/name-based.html">name-based virtual host
+support</A> in Apache 1.1 requires Apache to know the IP address(es) of
the host that httpd is running on. To get this address it uses either
-the global <code>ServerName</code> (if present) or calls the C function
-<code>gethostname</code> (which should return the same as typing
+the global <CODE>ServerName</CODE> (if present) or calls the C function
+<CODE>gethostname</CODE> (which should return the same as typing
"hostname" at the command prompt). Then it performs a DNS lookup on
this address. At present there is no way to avoid this lookup.
-<p>If you fear that this lookup might fail because your DNS server is down
-then you can insert the hostname in <code>/etc/hosts</code> (where you
+<P>If you fear that this lookup might fail because your DNS server is down
+then you can insert the hostname in <CODE>/etc/hosts</CODE> (where you
probably already have it so that the machine can boot properly). Then
-ensure that your machine is configured to use <code>/etc/hosts</code>
+ensure that your machine is configured to use <CODE>/etc/hosts</CODE>
in the event that DNS fails. Depending on what OS you are using this
-might be accomplished by editing <code>/etc/resolv.conf</code>, or maybe
-<code>/etc/nsswitch.conf</code>.
+might be accomplished by editing <CODE>/etc/resolv.conf</CODE>, or maybe
+<CODE>/etc/nsswitch.conf</CODE>.
-<p>If your server doesn't have to perform DNS for any other reason
+<P>If your server doesn't have to perform DNS for any other reason
then you might be able to get away with running Apache with the
-<code>HOSTRESORDER</code> environment variable set to "local". This all
+<CODE>HOSTRESORDER</CODE> environment variable set to "local". This all
depends on what OS and resolver libraries you are using. It also affects
-CGIs unless you use <a href="mod/mod_env.html"><code>mod_env</code></a>
+CGIs unless you use <A HREF="mod/mod_env.html"><CODE>mod_env</CODE></A>
to control the environment. It's best to consult the man pages or FAQs
for your OS.
-<h3>The _default_ Address</h3>
-
-<p>Any address that happens to go to your webserver which doesn't match
-the IP address of any of the webservers will be served from the "main" or
-"default" server configurations. The "main" server configuration consists
-of all those definitions appearing outside of any VirtualHost section.
-You may want instead to define a <code>&lt;VirtualHost _default_:*&gt;</code>
-which returns 403 or 404 for all hits. (The trailing <code>:*</code>
-makes it apply to all ports, which is just a safety measure should you
-begin using multiple <code><a href="mod/core.html#listen">Listen</a></code>
-directives.)
-
-<h3><a name="tips">Tips to Avoid these problems</a></h3>
-
-<ul>
-<li> use IP addresses in <code>&lt;VirtualHost&gt</code>
-<li> use IP addresses in <code>Listen</code>
-<li> use IP addresses in <code>BindAddress</code>
-<li> ensure all virtual hosts have an explicit <code>ServerName</code>
-<li> create a <code>&lt;VirtualHost _default_:*&gt;</code> server that
+<H3><A NAME="tips">Tips to Avoid these problems</A></H3>
+
+<UL>
+<LI> use IP addresses in <CODE>&lt;VirtualHost&gt</CODE>
+<LI> use IP addresses in <CODE>Listen</CODE>
+<LI> use IP addresses in <CODE>BindAddress</CODE>
+<LI> ensure all virtual hosts have an explicit <CODE>ServerName</CODE>
+<LI> create a <CODE>&lt;VirtualHost _default_:*&gt;</CODE> server that
has no pages to serve
-</ul>
+</UL>
-<h3>Appendix: Future Directions</h3>
+<H3>Appendix: Future Directions</H3>
-<p>The situation regarding DNS is highly undesirable. For Apache
+<P>The situation regarding DNS is highly undesirable. For Apache
1.2 we've attempted to make the server at least continue booting
in the event of failed DNS, but it might not be the best we
can do. In any event requiring the use of explicit IP addresses in
-configuration files is highly undesirable in today's Internet where <a
-href="http://www.ietf.org/html.charters/pier-charter.html">renumbering
-</a> is a necessity.
+configuration files is highly undesirable in today's Internet where <A
+HREF="http://www.ietf.org/html.charters/pier-charter.html">renumbering
+</A> is a necessity.
-<p>A possible work around to the theft of service attack described above
+<P>A possible work around to the theft of service attack described above
would be to perform a reverse DNS lookup on the ip address returned by
the forward lookup and compare the two names. In the event of a mismatch
the virtualhost would be disabled. This would require reverse DNS to be
@@ -188,23 +176,23 @@ configured properly (which is something that most admins are familiar with
because of the common use of "double-reverse" DNS lookups by FTP servers
and TCP wrappers).
-<p>In any event it doesn't seem possible to reliably boot a virtual-hosted
+<P>In any event it doesn't seem possible to reliably boot a virtual-hosted
web server when DNS has failed unless IP addresses are used. Partial
solutions such as disabling portions of the configuration might be worse
than not booting at all depending on what the webserver is supposed
to accomplish.
-<p>As HTTP/1.1 is deployed and browsers and proxies start issuing the
-<code>Host</code> header it will become possible to avoid the use of
+<P>As HTTP/1.1 is deployed and browsers and proxies start issuing the
+<CODE>Host</CODE> header it will become possible to avoid the use of
IP-based virtual hosts entirely. In this event a webserver has no requirement
to do DNS lookups during configuration. But as of March 1997 these
features have not been deployed widely enough to be put into use on
critical webservers.
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/dso.html b/usr.sbin/httpd/htdocs/manual/dso.html
index 566aefb564f..741e81ad23f 100644
--- a/usr.sbin/httpd/htdocs/manual/dso.html
+++ b/usr.sbin/httpd/htdocs/manual/dso.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -101,6 +101,13 @@ not re-exported and thus not available for use in a DSO. Finding a way to
force the linker to export all global symbols is the main problem one has to
solve when using DSO for extending a program at run-time.
+<P>Windows and NetWare provide similar facilities, although they are
+implemented somewhat differently than the description of Unix DSO throughout
+this document. In particular, DSO modules (DLL's and NLM's, respectively)
+are built quite differently than their Unix cousins. This document does not
+attempt to explore the topic of building DSO modules on these platforms.
+The description of mod_so and it's configuration, however, are similar.
+
<H3>Practical Usage</H3>
<P>The shared library approach is the typical one, because it is what the DSO
@@ -200,6 +207,7 @@ o Mac OS (10.0 preview 1)
o OpenStep/Mach (4.2)
o DGUX (??)
o NetWare (5.1)
+o Windows (95, 98, NT 4.0, 2000)
</PRE>
<P>
@@ -395,7 +403,7 @@ $ apxs -i -a -n foo mod_foo.so
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/ebcdic.html b/usr.sbin/httpd/htdocs/manual/ebcdic.html
index a8ce553d44e..8524ff31f2e 100644
--- a/usr.sbin/httpd/htdocs/manual/ebcdic.html
+++ b/usr.sbin/httpd/htdocs/manual/ebcdic.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -500,7 +500,7 @@
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/env.html b/usr.sbin/httpd/htdocs/manual/env.html
index 2f0971d877c..8a3e16c04c2 100644
--- a/usr.sbin/httpd/htdocs/manual/env.html
+++ b/usr.sbin/httpd/htdocs/manual/env.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -67,7 +67,7 @@ directive be used:
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/footer.html b/usr.sbin/httpd/htdocs/manual/footer.html
index 794bbad31fe..3f3255b5365 100644
--- a/usr.sbin/httpd/htdocs/manual/footer.html
+++ b/usr.sbin/httpd/htdocs/manual/footer.html
@@ -1,6 +1,6 @@
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/handler.html b/usr.sbin/httpd/htdocs/manual/handler.html
index fb09a7df489..25e3c03767c 100644
--- a/usr.sbin/httpd/htdocs/manual/handler.html
+++ b/usr.sbin/httpd/htdocs/manual/handler.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -197,7 +197,7 @@ type name-space.</P>
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/header.html b/usr.sbin/httpd/htdocs/manual/header.html
index 6980228778e..2d1017a8cd2 100644
--- a/usr.sbin/httpd/htdocs/manual/header.html
+++ b/usr.sbin/httpd/htdocs/manual/header.html
@@ -1,6 +1,6 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
diff --git a/usr.sbin/httpd/htdocs/manual/index.html b/usr.sbin/httpd/htdocs/manual/index.html
index 998b4c5e132..6919ab1a0f7 100644
--- a/usr.sbin/httpd/htdocs/manual/index.html
+++ b/usr.sbin/httpd/htdocs/manual/index.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -27,7 +27,7 @@
<UL>
<LI><A HREF="new_features_1_3.html">New features in Apache 1.3</A>
<LI><A HREF="upgrading_to_1_3.html">Upgrading to Apache 1.3</A>
-<LI><A HREF="LICENSE">Apache License</A>
+<LI><A HREF="http://www.apache.org/LICENSE">Apache License</A>
</UL>
<H3><A NAME="ref">Apache Reference Manual</A></H3>
@@ -38,8 +38,10 @@
<LI><A HREF="install.html">Compiling and Installing</A>
<LI><A HREF="invoking.html">Starting</A>
<LI><A HREF="stopping.html">Stopping or Restarting</A>
+<LI><A HREF="configuring.html">Configuring</A>
<LI><A HREF="mod/directives.html">Run-time configuration directives</A>
-<LI><A HREF="mod/index.html">Modules</A>
+<LI>Modules: <A HREF="mod/index-bytype.html">By Type</A> or
+ <A HREF="mod/index.html">Alphabetical</A>
<LI><A HREF="vhosts/index.html">Virtual Hosts</A>
<LI><A HREF="dso.html">Dynamic Shared Object (DSO) support</A>
<LI><A HREF="handler.html">Handlers</A>
@@ -49,9 +51,19 @@
<LI><A HREF="suexec.html">Using SetUserID Execution for CGI</A>
</UL>
+<H3><A NAME="pla">Platform Specific Notes</A></H3>
+<UL>
+<LI><A HREF="windows.html">Using Apache with Microsoft Windows</A>
+<LI><A HREF="netware.html">Using Apache with Novell Netware 5</A>
+<LI><A HREF="mpeix.html">Using Apache with HP MPE/iX</A>
+<LI><A HREF="unixware.html">Compiling Apache under UnixWare</A>
+<LI><A HREF="readme-tpf.html">Overview of the Apache TPF Port</A>
+</UL>
+
<H3><A NAME="oth">Other Notes</A></H3>
<UL>
<LI><A HREF="misc/FAQ.html">Frequently Asked Questions</A>
+<LI><A HREF="misc/tutorials.html">Tutorials</A>
<LI><A HREF="misc/rewriteguide.html">URL Rewriting Guide</A>
<LI><A HREF="misc/perf-tuning.html">General Performance hints</A> for
getting the best performance out of Apache
@@ -67,7 +79,7 @@ fine-tune specific platforms
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/install-tpf.html b/usr.sbin/httpd/htdocs/manual/install-tpf.html
index 661edba8850..e82dd527e8d 100644
--- a/usr.sbin/httpd/htdocs/manual/install-tpf.html
+++ b/usr.sbin/httpd/htdocs/manual/install-tpf.html
@@ -71,7 +71,8 @@ So here are all the details on how to get Apache and how to get it where it need
<br><br>
<li>Extract the archived files necessary for compiling Apache:
<ul>
- <li><tt><b>pax -rvkf <i>open_edition_filename.tar</i> -o from=ISO8859-1,to=IBM-1047 "*/src"</b></tt>
+ <li><tt><b>pax -rvkf <i>open_edition_filename.tar</i> -o from=ISO8859-1,to=IBM-1047 "*/src"</b></tt><br>
+ (any errors extracting files outside of the "src" directory can be ignored)
<li>switch to the source code subdirectory of the newly extracted apache directory: <tt><b>cd <i>apache-1.3</i>/src</b></tt>
<li>remove unnecessary subdirectories:
<tt><b>rm -r os/bs2000 os/mpeix os/netware os/os2 os/os390 os/win32</b></tt>
@@ -117,7 +118,7 @@ are case sensitive, and must be made from the "src" directory.
if you feel so inclined.
<BR><BR>
<LI>Comment out (by preceding the line with a "#") lines corresponding
- to those modules you DO&nbsp;NOT wish to include.
+ to those modules you do&nbsp;not wish to include.
<BR><BR>
<LI>Uncomment (by removing the initial "#", if present) lines
corresponding to those optional modules you wish
@@ -135,20 +136,24 @@ HREF="http://www.apache.org/dist/contrib/modules/">http://www.apache.org/dist/co
There are instructions on that page for linking these modules into the core Apache
code.
<BR><BR>
-<LI>Set the TPF environment variables:
+<LI><A NAME="export"></A>Set the TPF environment variables:
<TT><STRONG>.&nbsp;os/tpf/TPFExport</STRONG></TT>
<BR>
- (The initial period and blank on the command are required to ensure
- the environment variables exist beyond the scope of the shell script.)
+ <br><font color=red size=4>TIP:</font>
+ The initial period and blank on the command are required to ensure
+ the environment variables exist beyond the scope of the shell script.
+ <BR><BR>
This script will set the environment variables required to compile the
programs for TPF. Verify that the export variables are valid for your
installation, in particular, the system include file directories. The
system include files must reside on your Open Edition system in the
appropriate file structure similar to /usr/include and /usr/include/sys.
- DO&nbsp;NOT modify the <TT>TPF=YES</TT> export variable. If this is
+ If your system header files contain line numbers in columns 72-80, you must truncate them.
+ <BR><BR>
+ Do&nbsp;not modify the <TT>TPF=YES</TT> export variable. If this is
changed, the "Configure" script will not recognize TPF.
<BR><BR>
-<LI>Run the "Configure" script:
+<LI><A NAME="configure"></A>Run the "Configure" script:
<TT><STRONG>Configure</STRONG></TT>
<BR>
This generates modules.c, include/ap_config_auto.h, and necessary Makefiles:
@@ -166,16 +171,17 @@ HREF="http://www.apache.org/dist/contrib/modules/">http://www.apache.org/dist/co
Creating Makefile in os/tpf
Creating Makefile in ap
Creating Makefile in main
+ Creating Makefile in lib/expat-lite
Creating Makefile in modules/standard
$ _
</PRE>
If you want to maintain multiple configurations, you can
say, <EM>e.g.</EM>,
<BR>
- <TT><STRONG>Configure -file Configuration.ai</STRONG></TT>
+ <TT><STRONG>Configure -file Configuration.2nd</STRONG></TT>
<BR>
<PRE>
- Using config file: Configuration.ai
+ Using config file: Configuration.2nd
Creating Makefile
+ configured for &lt;whatever&gt; platform
+ setting C compiler to &lt;whatever&gt;
@@ -216,25 +222,48 @@ HREF="http://www.apache.org/dist/contrib/modules/">http://www.apache.org/dist/co
This change will only take effect after Apache is (re)compiled.
<A NAME="daemon"></A><br>&nbsp;<br>
-<LI>Edit include/ap_config.h if you plan on using the ZINET DAEMON model instead of the NOLISTEN model.<br>
+<LI>Determine if you will use the ZINET DAEMON model instead of the default NOLISTEN model.<br>
The default behavior is to let Apache check the server status (active/inactive) with ZINET
- and shut itself down when appropriate. The default behavior also includes checking Apache's activation number.
- Available with PUT11 (PJ25761) ZINET can perform these functions instead of Apache by using the DAEMON model.
+ and shut itself down when appropriate. This default behavior also includes checking the activation number.
+ ZINET can now perform these functions instead of Apache by using the DAEMON model
+ <i>(PUT12 with APARs PJ25761 &amp; PJ27363 required).</i>
This model offers increased reliability and is preferred over the NOLISTEN model.
- If Apache goes down while running under the NOLISTEN model ZINET will not reactivate it nor alert the operator.
- To use the DAEMON model you must modify the default behavior of Apache by uncommenting or adding the directive
- <tt><b>#define&nbsp;USE_TPF_DAEMON</b></tt> within the TPF section in ap_config.h.
- This directive is also recommend when starting Apache from the command line (APAR PJ26515).
- This change will only take effect after Apache is (re)compiled.
- <br><br>
+ If Apache goes down while running under the NOLISTEN model, ZINET will not reactivate it nor alert
+ the operator.<br><br>
+ To use the DAEMON model you must do the following:<br><br>
+ <ul>
+ <li>Modify the default behavior of Apache by uncommenting or adding the directive
+ <code><b>#define&nbsp;USE_TPF_DAEMON</b></code> within the TPF section of include/ap_config.h.
+ This change will only take effect after Apache is (re)compiled.<br><br>
+ <li>Insert these four lines of code immediately prior to the <code>#endif</code> line in the
+ <code>os_check_server</code> function in os/tpf/os.c (if they are not already there):<br><br><code><ul>
+ #else<br>
+ if (getppid() == 1) {<br>
+ <ul>return 1;<br></ul>
+ }<br><br></ul></code>
+ </ul>
<LI>Now compile the programs: <TT><STRONG>make</STRONG></TT><BR>
Besides compiling, <tt>make</tt> also runs main/gen_test_char.c and main/gen_uri_delims.c
in order to create main/test_char.h and main/uri_delims.h respectively<BR><BR>
+
If during compilation you get a warning about a missing 'regex.h', set
<TT>WANTHSREGEX=yes</TT> in the src/Configuration file and start back at the
- <TT><STRONG>Configure</STRONG></TT> step.
+ <A HREF="#configure"><TT><STRONG>Configure</STRONG></TT></A> step.<br><br>
+
+ If you get a <tt>'Duplicate&nbsp;type&nbsp;specifier&nbsp;"long"&nbsp;ignored'</tt> error,
+ append the following line to the os/tpf/TPFExport file and start back at the
+ <A HREF="#export"><TT><STRONG>export</STRONG></TT></A> step:<br><br>
+ <ul><tt>export _C89_OPTIONS="-W 0,langlvl(extended)"</tt></ul><br>
+
+ The following compilation warnings are expected and can be ignored:<br><br>
+ <ul>
+ <li>util_uri.c:&nbsp;&nbsp;&nbsp;<tt>Function argument assignment between types "unsigned char*" and "const unsigned char*" is not allowed.</tt>
+ <li>mod_put.c:&nbsp;&nbsp;&nbsp;<tt>#include file "ap_vercompat.h" not found</tt>
+ <li>mod_tpf_shm_static.c:&nbsp;&nbsp;&nbsp;<tt>#include file &lt;sys/mman.h&gt; not found</tt>
+ <li>mod_usertrack.c:&nbsp;&nbsp;&nbsp;<tt>#include file &lt;sys/time.h&gt; not found</tt>
+
</OL>
<A NAME="installation">&nbsp;</A>
@@ -248,13 +277,15 @@ HREF="http://www.apache.org/dist/contrib/modules/">http://www.apache.org/dist/co
<li>Add/remove <TT>mod_<EM>xxx</EM>.o</TT> files so they correspond to the
<TT>mod_<EM>xxx</EM>.o</TT> lines in your src/Configuration file.
</ul>
- <br><font color=red size=4>TIP: </font>
- Do NOT include gen_test_char.o or gen_uri_delims.o in the link JCL since these files are only
+ <br><font color=red size=4>TIP:</font>
+ Do not include gen_test_char.o or gen_uri_delims.o in the link JCL since these files are only
used during the <tt>make</tt> step.
<br><br>
<LI>Create a loadset. Sample loadset JCL has been included as src/os/tpf/samples/loadset.jcl.
You will need to modify this JCL for your particular site.
<br><br>
+ A JCL condition code of 4 is expected since the C load module will contain no link map data.
+ <br><br>
<LI>Load (<tt>ZOLDR LOAD</tt>) and activate (<tt>ZOLDR ACT</tt>) the loadset on your test system.
<br><br>
<LI>Ensure that the program name you are using for Apache has <tt>RESTRICT</tt> and <tt>KEY0</tt> authorization.
@@ -293,12 +324,17 @@ HREF="http://www.apache.org/dist/contrib/modules/">http://www.apache.org/dist/co
/usr/local/apache/logs
/usr/local/apache/icons
/usr/local/apache/htdocs</PRE>
- All gif, jpg, and zip files should be TFTP'd as binary; conf files and html pages should be TFTP'd as text.
- <br>The logs directory must exist in order to avoid an <CODE>fopen</CODE> error while running Apache.
+ All gif, jpg, and zip files should be TFTP'd as binary; conf files and html pages should be TFTP'd as text.<br>
+ <br>The logs directory must exist in order to avoid an <CODE>fopen</CODE> error while running Apache:<br><br>
+ <ul>
If you're running a PUT10 or higher version of TPF make the directory using the
<tt><b>zfile mkdir /usr/local/apache/logs</b></tt> functional entry.
- If you're running TPF version PUT09 TFTP an empty file into the logs subdirectory to create it.
<br><br>
+ If you're running TPF version PUT09, TFTP an empty file into the logs subdirectory to create it.
+ <br><br>
+ Regardless of your TPF version, make sure Apache can write into the logs subdirectory by doing a
+ <tt><b>zfile chmod</b></tt> on it with the appropriate permission settings.
+ </ul><br>
<LI>Start the server using the <tt><b>ZINET START S-APACHE</b></tt> command.
</OL>
<A NAME="visualage">&nbsp;</A>
diff --git a/usr.sbin/httpd/htdocs/manual/install.html b/usr.sbin/httpd/htdocs/manual/install.html
index f82c50bec1e..6548abf12ce 100644
--- a/usr.sbin/httpd/htdocs/manual/install.html
+++ b/usr.sbin/httpd/htdocs/manual/install.html
@@ -15,23 +15,25 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
<H1 ALIGN="CENTER">Compiling and Installing Apache 1.3</H1>
-This document covers compilation and installation of Apache on Unix
-systems only. For compiling and installation on Windows, see <A
-HREF="windows.html">Using Apache with Microsoft Windows</A> and for
-TPF see <A HREF="install-tpf.html">Installing the Apache 1.3 HTTP
-Server on TPF</A>.
-
-<P>
-
-UnixWare users will want to consult <A HREF="unixware.html">build notes</A>
-for various UnixWare versions before compiling.
+<P>This document covers compilation and installation of Apache on Unix
+systems, using the manual build and install method. If you wish to
+use the autoconf-style configure interface, you should instead
+read the INSTALL file in the root directory of the Apache source
+distribution. For compiling and installation on specific platforms, see</P>
+<UL>
+<LI><A HREF="windows.html">Using Apache with Microsoft Windows</A>
+<LI><A HREF="netware.html">Using Apache with Novell Netware 5</A>
+<LI><A HREF="mpeix.html">Using Apache with HP MPE/iX</A>
+<LI><A HREF="unixware.html">Compiling Apache under UnixWare</A>
+<LI><A HREF="readme-tpf.html">Overview of the Apache TPF Port</A>
+</UL>
<H2>Downloading Apache</H2>
@@ -273,7 +275,7 @@ the support programs, change into this directory and type
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/invoking.html b/usr.sbin/httpd/htdocs/manual/invoking.html
index aca5908c3bb..861ca18242a 100644
--- a/usr.sbin/httpd/htdocs/manual/invoking.html
+++ b/usr.sbin/httpd/htdocs/manual/invoking.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -84,7 +84,7 @@ behavior and performance of the apache server (<EM>e.g.</EM>,
<SAMP>-DUSE_MMAP_FILES</SAMP>),
then exit.
-<DT><A NAME="help"><CODE>-L</CODE></A>
+<DT><CODE>-L</CODE>
<DD>
Give a list of directives together with expected arguments and places
@@ -92,7 +92,7 @@ where the directive is valid, then exit. (Apache 1.3.4 and
later. Earlier versions used -l instead).
-<DT><CODE>-l</CODE></A>
+<DT><CODE>-l</CODE>
<DD>
Give a list of all modules compiled into the server, then exit.
@@ -104,7 +104,7 @@ versions use -L instead).
-<DT><CODE>-h</CODE>
+<DT><A NAME="help"><CODE>-h</CODE></A>
<DD>
Print a list of the httpd options, then exit. (Apache 1.3.4 and
@@ -145,85 +145,9 @@ is one of "shutdown" or "restart". (Apache 1.3.3 and later).
</DL>
-<H2>Configuration files</H2>
-The server will read three files for configuration directives. Any
-directive may appear in any of these files. The the names of these
-files are taken to be relative to the server root; this is set by the
-<A HREF="mod/core.html#serverroot">ServerRoot</A> directive, the
-<CODE>-d</CODE> command line flag, or (on Windows only) the registry
-(see <A HREF="windows.html#run">Running Apache for Windows</A>).
-
-Conventionally, the files are:
-<DL>
-<DT><CODE>conf/httpd.conf</CODE>
-<DD>Contains directives that control the operation of the server daemon.
-The filename may be overridden with the <CODE>-f</CODE> command line flag.
-
-<DT><CODE>conf/srm.conf</CODE>
-<DD>Contains directives that control the specification of documents that
-the server can provide to clients. The filename may be overridden with
-the <A HREF="mod/core.html#resourceconfig">ResourceConfig</A> directive.
-
-<DT><CODE>conf/access.conf</CODE>
-<DD>Contains directives that control access to documents.
-The filename may be overridden with the
-<A HREF="mod/core.html#accessconfig">AccessConfig</A> directive.
-</DL>
-However, these conventions need not be adhered to.
-<P>
-The server also reads a file containing mime document types; the filename
-is set by the <A HREF="mod/mod_mime.html#typesconfig">TypesConfig</A>
-directive,
-and is <CODE>conf/mime.types</CODE> by default.
-
-<H2>Log files</H2>
-<H3>security warning</H3>
-Anyone who can write to the directory where Apache is writing a
-log file can almost certainly gain access to the uid that the server is
-started as, which is normally root. Do <EM>NOT</EM> give people write
-access to the directory the logs are stored in without being aware of
-the consequences; see the <A HREF="misc/security_tips.html">security tips</A>
-document for details.
-<H3>pid file</H3>
-
-On startup, Apache saves the process id of the parent httpd process to
-the file <CODE>logs/httpd.pid</CODE>. This filename can be changed
-with the <A HREF="mod/core.html#pidfile">PidFile</A> directive. The
-process-id is for use by the administrator in restarting and
-terminating the daemon: on Unix, a HUP or USR1 signal causes the
-daemon to re-read its configuration files and a TERM signal causes it
-to die gracefully; on Windows, use the -k command line option instead.
-For more information see the <A HREF="stopping.html">Stopping and
-Restarting</A> page.
-
-<P>
-If the process dies (or is killed) abnormally, then it will be necessary to
-kill the children httpd processes.
-
-<H3>Error log</H3>
-
-The server will log error messages to a log file, by default
-<CODE>logs/error_log</CODE> on Unix or <CODE>logs/error.log</CODE> on
-Windows and OS/2. The filename can be set using the <A
-HREF="mod/core.html#errorlog">ErrorLog</A> directive; different error
-logs can be set for different <A
-HREF="mod/core.html#virtualhost">virtual hosts</A>.
-
-<H3>Transfer log</H3>
-
-The server will typically log each request to a transfer file, by
-default <CODE>logs/access_log</CODE> on Unix or
-<CODE>logs/access.log</CODE> on Windows and OS/2. The filename can be
-set using a <A
-HREF="mod/mod_log_config.html#transferlog">TransferLog</A> directive
-or additional log files created with the <A
-HREF="mod/mod_log_config.html#customlog">CustomLog</A> directive;
-different transfer logs can be set for different <A
-HREF="mod/core.html#virtualhost">virtual hosts</A>.
-
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/keepalive.html b/usr.sbin/httpd/htdocs/manual/keepalive.html
index 0e0255a6257..50f732008f9 100644
--- a/usr.sbin/httpd/htdocs/manual/keepalive.html
+++ b/usr.sbin/httpd/htdocs/manual/keepalive.html
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html><head>
-<title>Apache Keep-Alive Support</title>
-</head>
+<HTML><HEAD>
+<TITLE>Apache Keep-Alive Support</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -14,55 +14,79 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<h1 ALIGN="CENTER">Apache Keep-Alive Support</h1>
+<H1 ALIGN="CENTER">Apache Keep-Alive Support</H1>
-<hr>
+<HR>
-<h2>What is Keep-Alive?</h2>
+<H2>What is Keep-Alive?</H2>
The Keep-Alive extension to HTTP, as defined by the
-<code>HTTP/1.1</code> draft, allows persistent connections. These
+<CODE>HTTP/1.1</CODE> draft, allows persistent connections. These
long-lived HTTP sessions allow multiple requests to be send over the
same TCP connection, and in some cases have been shown to result in an
almost 50% speedup in latency times for HTML documents with lots of
images.
-<h2>Enabling Keep-Alive Support</h2>
+<H2>Enabling Keep-Alive Support</H2>
Apache 1.1 comes with Keep-Alive support on by default, however there
are some directives you can use to modify Apache's behavior:
-<p><strong>Note</strong>: Apache 1.2 uses a different syntax for the <a
-href="mod/core.html#keepalive">KeepAlive</a> directive.</p>
-
-<h3>KeepAlive</h3>
-<strong>Syntax:</strong> KeepAlive <em>max-requests</em><br>
-<strong>Default:</strong> <code>KeepAlive 5</code><br>
-<strong>Context:</strong> server config<br>
-<strong>Status:</strong> Core<p>
-
-This directive enables Keep-Alive support. Set <em>max-requests</em>
+<P><STRONG>Note</STRONG>: Apache 1.2 uses a different syntax for the <A
+HREF="mod/core.html#keepalive">KeepAlive</A> directive.</P>
+
+<H3>KeepAlive</H3>
+<A
+ HREF="mod/directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> KeepAlive <EM>max-requests</EM><BR>
+<A
+ HREF="mod/directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>KeepAlive 5</CODE><BR>
+<A
+ HREF="mod/directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="mod/directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Core<P>
+
+This directive enables Keep-Alive support. Set <EM>max-requests</EM>
to the maximum number of requests you want Apache to entertain per
connection. A limit is imposed to prevent a client from hogging your
-server resources. Set this to <code>0</code> to disable support.
-
-<h3>KeepAliveTimeout</h3>
-<strong>Syntax:</strong> KeepAliveTimeout <em>seconds</em><br>
-<strong>Default:</strong> <code>KeepAliveTimeout 15</code><br>
-<strong>Context:</strong> server config<br>
-<strong>Status:</strong> Core<p>
+server resources. Set this to <CODE>0</CODE> to disable support.
+
+<H3>KeepAliveTimeout</H3>
+<A
+ HREF="mod/directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> KeepAliveTimeout <EM>seconds</EM><BR>
+<A
+ HREF="mod/directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>KeepAliveTimeout 15</CODE><BR>
+<A
+ HREF="mod/directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="mod/directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Core<P>
The number of seconds Apache will wait for a subsequent request before
closing the connection. Once a request has been received, the timeout
-value specified by the <a
-href="mod/core.html#timeout"><code>Timeout</code></a> directive
+value specified by the <A
+HREF="mod/core.html#timeout"><CODE>Timeout</CODE></A> directive
applies.
-<h2>When Keep-Alive Is Used</h2>
+<H2>When Keep-Alive Is Used</H2>
In order for Keep-Alive support to be used, first the browser must
support it. Many current browsers, including Netscape Navigator 2.0,
@@ -73,16 +97,16 @@ connect. This has been observed with several Windows browsers, and occurs
when connecting to any Keep-Alive server, not just Apache. Netscape 3.0b5
and later versions are known to work around this problem.
-<p>However, Keep-Alive support only is active with files where the
+<P>However, Keep-Alive support only is active with files where the
length is known beforehand. This means that most CGI scripts,
server-side included files and directory listings will not use
the Keep-Alive protocol. While this should be completely transparent
-to the end user, it is something the web-master may want to keep in mind.</p>
+to the end user, it is something the web-master may want to keep in mind.</P>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/location.html b/usr.sbin/httpd/htdocs/manual/location.html
index bdefc559d6c..336b7997196 100644
--- a/usr.sbin/httpd/htdocs/manual/location.html
+++ b/usr.sbin/httpd/htdocs/manual/location.html
@@ -15,54 +15,63 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
<H1 ALIGN="CENTER">Access Control by URL</H1>
-<h2><a name="location">The <code>&lt;Location&gt;</code> Directive</a></h2>
+<H2><A NAME="location">The <CODE>&lt;Location&gt;</CODE> Directive</A></H2>
-<strong>Syntax:</strong> &lt;Location <em>URL prefix</em>&gt;<br>
-<strong>Context:</strong> server config, virtual host<br>
-<strong>Status:</strong> core<br>
+<A
+ HREF="mod/directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> &lt;Location <EM>URL prefix</EM>&gt;<BR>
+<A
+ HREF="mod/directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config, virtual host<BR>
+<A
+ HREF="mod/directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> core<BR>
-<p>The &lt;Location&gt; directive provides for access control by
-URL. It is comparable to the <a
-href="mod/core.html#directory">&lt;Directory&gt;</a> directive, and
+<P>The &lt;Location&gt; directive provides for access control by
+URL. It is comparable to the <A
+HREF="mod/core.html#directory">&lt;Directory&gt;</A> directive, and
should be matched with a &lt;/Location&gt; directive. Directives that
apply to the URL given should be listen
-within. <code>&lt;Location&gt;</code> sections are processed in the
+within. <CODE>&lt;Location&gt;</CODE> sections are processed in the
order they appear in the configuration file, after the
-&lt;Directory&gt; sections and <code>.htaccess</code> files are
-read.</p>
+&lt;Directory&gt; sections and <CODE>.htaccess</CODE> files are
+read.</P>
-<p>Note that, due to the way HTTP functions, <em>URL prefix</em>
-should, save for proxy requests, be of the form <code>/path/</code>,
-and should not include the <code>http://servername</code>. It doesn't
+<P>Note that, due to the way HTTP functions, <EM>URL prefix</EM>
+should, save for proxy requests, be of the form <CODE>/path/</CODE>,
+and should not include the <CODE>http://servername</CODE>. It doesn't
necessarily have to protect a directory (it can be an individual
file, or a number of files), and can include wild-cards. In a wild-card
string, `?' matches any single character, and `*' matches any
sequences of characters.
-<p>This functionality is especially useful when combined with the
-<code><a href="mod/mod_mime.html#sethandler">SetHandler</a></code>
+<P>This functionality is especially useful when combined with the
+<CODE><A HREF="mod/mod_mime.html#sethandler">SetHandler</A></CODE>
directive. For example, to enable status requests, but allow them only
from browsers at foo.com, you might use:
-<pre>
+<PRE>
&lt;Location /status&gt;
SetHandler server-status
- order deny,allow
- deny from all
- allow from .foo.com
+ Order Deny,Allow
+ Deny from all
+ Allow from .foo.com
&lt;/Location&gt;
-</pre>
+</PRE>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/man-template.html b/usr.sbin/httpd/htdocs/manual/man-template.html
index 6d2ff047993..6018f6daf90 100644
--- a/usr.sbin/httpd/htdocs/manual/man-template.html
+++ b/usr.sbin/httpd/htdocs/manual/man-template.html
@@ -1,81 +1,120 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
-<HEAD>
-<TITLE>Apache module mod_foobar</TITLE>
-</HEAD>
-
+ <HEAD>
+ <TITLE>Apache module mod_foobar</TITLE>
+ </HEAD>
<!-- read and delete all blockquotes, and this comment -->
-
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
-<BODY
- BGCOLOR="#FFFFFF"
- TEXT="#000000"
- LINK="#0000FF"
- VLINK="#000080"
- ALINK="#FF0000"
->
+ <BODY
+ BGCOLOR="#FFFFFF"
+ TEXT="#000000"
+ LINK="#0000FF"
+ VLINK="#000080"
+ ALINK="#FF0000"
+ >
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<H1 ALIGN="CENTER">Module mod_foobar</h1>
-
-<blockquote><em>Add this file as a link in modules.html</em></blockquote>
-
-This module is contained in the <code>mod_foobar.c</code> file, and
-<strong>is/is not</strong> compiled in by default. It provides for
-<strong>the foobar feature</strong>. Any document with the mime type
-<code>foo/bar</code> will be processed by this module.
-
-<blockquote><em>Add the magic mime type to the list in
-magic_types.html</em></blockquote>
-
-<h2>Summary</h2>
-General module documentation here.
-
-<h2>Directives</h2>
-<ul>
-<li><A HREF="#adirective">ADirective</A>
-</ul>
-
-<blockquote><em>Add these directives to the list in
-directives.html</em></blockquote>
-
-<hr>
-
-<h2><A name="adirective">ADirective</A></h2>
-<strong>Syntax:</strong> ADirective <em>some args</em><br>
-<strong>Default:</strong> <code>ADirective default value</code><br>
-<strong>Context:</strong> context-list<br>
-
-<blockquote><em>context-list is where this directive can appear;
-allowed: server config, virtual host, directory, .htaccess</em></blockquote>
-
-<strong>Override:</strong> override<br>
-
-<blockquote><em>required if the directive is allowed in .htaccess files;
-the AllowOverride option that allows the directive.</em></blockquote>
-
-<strong>Status:</strong> status<br>
-
-<blockquote><em>Core if in core apache, Base if in one of the standard
+ <H1 ALIGN="CENTER">Module mod_foobar</H1>
+
+<BLOCKQUOTE><EM>Add this file as a link in mod/index.html</EM></BLOCKQUOTE>
+
+ <P>
+ This module is contained in the <CODE>mod_foobar.c</CODE> file, and
+ <STRONG>is/is not</STRONG> compiled in by default. It provides for
+ <STRONG>the foobar feature</STRONG>. Any document with the mime type
+ <SAMP>foo/bar</SAMP> will be processed by this module.
+ </P>
+
+<BLOCKQUOTE><EM>Add the magic mime type to the list in
+magic_types.html</EM></BLOCKQUOTE>
+
+ <H2>Summary</H2>
+ <P>
+ <EM>General module documentation here.</EM>
+ </P>
+
+ <H2>Directives</H2>
+ <UL>
+ <LI><A HREF="#adirective">ADirective</A>
+ </LI>
+ </UL>
+
+<BLOCKQUOTE><EM>Add these directives to the list in
+directives.html</EM></BLOCKQUOTE>
+
+ <HR> <!-- the HR is part of the directive description -->
+ <H2><A NAME="adirective">ADirective directive</A></H2>
+ <P>
+ <A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+ ><STRONG>Syntax:</STRONG></A> ADirective <EM>some args</EM>
+ <BR>
+ <A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+ ><STRONG>Default:</STRONG></A> <SAMP>ADirective default value</SAMP>
+ <BR>
+ <A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+ ><STRONG>Context:</STRONG></A> context-list
+ <BR>
+
+<BLOCKQUOTE><EM>context-list is where this directive can appear;
+allowed: server config, virtual host, directory, .htaccess</EM></BLOCKQUOTE>
+
+ <A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+ ><STRONG>Override:</STRONG></A> override
+ <BR>
+
+<BLOCKQUOTE><EM>required if the directive is allowed in .htaccess files;
+the AllowOverride option that allows the directive.</EM></BLOCKQUOTE>
+
+ <A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+ ><STRONG>Status:</STRONG></A> status
+ <BR>
+
+<BLOCKQUOTE><EM>Core if in core apache, Base if in one of the standard
modules, Extension if in an extension module (not compiled in by default)
-or Experimental</em></blockquote>
-
-<strong>Module:</strong> mod_foobar<p>
-
-The ADirective directive does something.
+or Experimental</EM></BLOCKQUOTE>
+
+ <A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+ ><STRONG>Module:</STRONG></A> mod_foobar
+ <BR>
+ <A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+ ><STRONG>Compatibility:</STRONG></A> compatibility notes
+
+<BLOCKQUOTE>
+ <EM>Describe any compatibility issues, such as "Only available in Apache
+ 1.2 or later," or "The Apache syntax for this directive is not
+ compatible with the NCSA directive of the same name."</EM>
+</BLOCKQUOTE>
+ </P>
+
+ <P>
+ The ADirective directive does something.
+ </P>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
-</BODY>
+ </BODY>
</HTML>
-
diff --git a/usr.sbin/httpd/htdocs/manual/misc/FAQ.html b/usr.sbin/httpd/htdocs/manual/misc/FAQ.html
index 109c5f87412..b24bf19e14b 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/FAQ.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/FAQ.html
@@ -21,7 +21,7 @@
<H1 ALIGN="CENTER">Apache Server Frequently Asked Questions</H1>
<P>
- $Revision: 1.6 $ ($Date: 2000/03/19 11:16:29 $)
+ $Revision: 1.7 $ ($Date: 2000/12/15 22:17:28 $)
</P>
<P>
The latest version of this FAQ is always available from the main
@@ -83,7 +83,7 @@
<!-- file) don't have the type listed at all. -->
<!-- - RewriteRule /~fraggle/* /cgi-bin/fraggle.pl does not work -->
<!-- - how do I disable authentication for a subdirectory? -->
-<!-- (A: you can't but "satisfy any; allow from all" can be close -->
+<!-- (A: you can't but "Satisfy any; Allow from all" can be close -->
<!-- - '400 malformed request' on Win32 might mean stale proxy; see -->
<!-- PR #2300. -->
<!-- - how do I tell what version of Apache I am running? -->
@@ -102,10 +102,7 @@
<OL>
<LI><A HREF="#what">What is Apache?</A>
</LI>
- <LI><A HREF="#why">Why was Apache created?</A>
- </LI>
- <LI><A HREF="#relate">How does The Apache Group's work relate to
- other servers?</A>
+ <LI><A HREF="#why">How and why was Apache created?</A>
</LI>
<LI><A HREF="#name">Why the name &quot;Apache&quot;?</A>
</LI>
@@ -121,6 +118,8 @@
</LI>
<LI><A HREF="#where">Where can I get Apache?</A>
</LI>
+ <li><a href="#logo">May I use the Apache logo on my product or Web site?</a>
+ </li>
</OL>
</LI>
@@ -253,9 +252,20 @@
Use ServerName directive to set it manually.</samp>" What does
this mean?</A>
</LI>
- <LI><A HREF="#ws2_32dll">When I try to start Apache for Windows, I get a message
- like "<samp>Unable To Locate WS2_32.DLL...</samp>". What should I do?</A>
+ <LI><A HREF="#ws2_32dll">When I try to start Apache for Windows, I get
+ a message like "<samp>Unable To Locate WS2_32.DLL...</samp>". What
+ should I do?</A>
+ </LI>
+ <LI><A HREF="#WSADuplicateSocket">Apache for Windows does not start.
+ Error log contains this message "<samp>[crit] (10045) The attempted
+ operation is not supported for the type of object referenced: Parent:
+ WSADuplicateSocket failed for socket ###</samp>". What does this
+ mean?</a>
</LI>
+ <li><a href="#err1067">When I try to start Apache on Windows, I get
+ a message like &quot;<code>System error 1067 has occurred. The process
+ terminated unexpectedly.</code>&quot; What does this mean?</a>
+ </li>
</OL>
</LI>
@@ -318,6 +328,13 @@
<LI><A HREF="#forbidden">Why do I get a
&quot;<SAMP>Forbidden</SAMP>&quot; message whenever I try to
access a particular directory?</A>
+ <li><a href="#malfiles">Why do I get a
+ &quot;<samp>Forbidden/You don't have permission to access /
+ on this server</samp>&quot; message whenever I try to
+ access my server?</a></li>
+ <LI><A HREF="#ie-ignores-mime">Why do my files appear correctly in
+ Internet Explorer, but show up as source or trigger a save
+ window with Netscape?</A>
</OL>
</LI>
@@ -371,6 +388,9 @@
<LI><A HREF="#remote-user-var">Why is the environment variable
<SAMP>REMOTE_USER</SAMP> not set?</A>
</LI>
+ <LI><A HREF="#user-cgi">How do I allow each of my user directories
+ to have a cgi-bin directory?</A>
+ </LI>
</OL>
</LI>
@@ -411,6 +431,9 @@
<LI><A HREF="#passwdauth">Can I use my <SAMP>/etc/passwd</SAMP> file
for Web page authentication?</A>
</LI>
+ <LI><A HREF="#prompted-twice">Why does Apache ask for my password
+ twice before serving a file?</a>
+ </LI>
</OL>
</LI>
@@ -489,6 +512,15 @@
</LI>
<LI><A HREF="#rotate">How can I rotate my log files?</A>
</LI>
+ <LI><A HREF="#conditional-logging">How do I keep certain requests from
+ appearing in my logs?</A>
+ </LI>
+ <li><a href="#dbinteg">Does Apache include any sort of database
+ integration?</a>
+ </li>
+ <li><a href="#asp">Can I use Active Server Pages (ASP) with Apache?</a>
+ </li>
+ <li><a href="#java">Does Apache come with Java support?</a></li>
</OL>
</LI>
@@ -518,43 +550,72 @@
<LI><A NAME="what">
<STRONG>What is Apache?</STRONG>
</A>
- <P>
- Apache was originally based on code and ideas found in the most
- popular HTTP server of the time.. NCSA httpd 1.3 (early 1995). It has
- since evolved into a far superior system which can rival (and probably
- surpass) almost any other UNIX based HTTP server in terms of functionality,
- efficiency and speed.
- </P>
- <P>
- Since it began, it has been completely rewritten, and includes many new
- features. Apache is, as of January 1997, the most popular WWW server on
- the Internet, according to the
- <A HREF="http://www.netcraft.com/Survey/">Netcraft Survey</A>.
- </P>
- <HR>
- </LI>
+ <P>The Apache httpd server
+<UL>
+ <LI>is a powerful, flexible, HTTP/1.1 compliant web server
+ <LI>implements the latest protocols, including HTTP/1.1 (RFC2616)
+ <LI>is highly configurable and extensible with third-party modules
+ <LI>can be customised by writing 'modules' using the Apache module API
+ <LI>provides full source code and comes with an unrestrictive license
+ <LI>runs on Windows NT/9x, Netware 5.x, OS/2, and most versions of Unix,
+ as well as several other operating systems
+ <LI>is actively being developed
+ <LI>encourages user feedback through new ideas, bug reports and patches
+ <LI>implements many frequently requested features, including:<BR><BR>
+ <DL>
+ <DT>DBM databases for authentication</DT>
+ <DD>allows you to easily set up password-protected pages with
+ enormous numbers of authorized users, without bogging down the server.
+ <DT>Customized responses to errors and problems</DT>
+ <DD>Allows you to set up files, or even CGI scripts, which are
+ returned by the server in response
+ to errors and problems, e.g. setup a script to intercept
+ <STRONG>500 Server Error</STRONG>s and perform on-the-fly diagnostics for
+ both users and yourself. </DD>
+ <DT> Multiple DirectoryIndex directives </DT>
+ <DD> Allows you to say <CODE>DirectoryIndex index.html
+ index.cgi</CODE>, which instructs the server to either send
+ back <CODE>index.html</CODE> or run <CODE>index.cgi</CODE>
+ when a directory URL is requested, whichever it finds in the
+ directory.
+ <DT> Unlimited flexible URL rewriting and aliasing </DT>
+ <DD> Apache has no fixed limit on the numbers of Aliases and
+ Redirects which may be declared in the config files. In addition,
+ a powerful rewriting engine can be used to solve most URL
+ manipulation problems.
+ <DT>Content negotiation</DT>
+ <DD>i.e. the ability to automatically serve clients of varying
+ sophistication and HTML level compliance, with documents which
+ offer the best representation of information that the client is
+ capable of accepting.</DD>
+ <DT>Virtual Hosts</DT>
+ <DD>A much requested feature, sometimes known as multi-homed servers.
+ This allows the server to distinguish between requests made to
+ different IP addresses or names (mapped to the same machine). Apache
+ also offers dynamically configurable mass-virtual hosting.
+ </DD>
+ <DT>Configurable Reliable Piped Logs</DT>
+ <DD>You can configure
+ Apache to generate logs in the format that you want. In addition, on
+ most Unix architectures, Apache can send log files to a pipe, allowing
+ for log rotation, hit filtering, real-time splitting of multiple vhosts
+ into separate logs, and asynchronous DNS resolving on the fly.
+ </DL>
+</UL>
- <LI><A NAME="why">
- <STRONG>Why was Apache created?</STRONG>
- </A>
- <P>
- To address the concerns of a group of WWW providers and part-time httpd
- programmers that httpd didn't behave as they wanted it to behave.
- Apache is an entirely volunteer effort, completely funded by its
- members, not by commercial sales.
</P>
<HR>
</LI>
- <LI><A NAME="relate">
- <STRONG>How does The Apache Group's work relate to other
- server efforts, such as NCSA's?</STRONG>
+ <LI><A NAME="why">
+ <STRONG>How and why was Apache created?</STRONG>
</A>
<P>
- We, of course, owe a great debt to NCSA and their programmers for
- making the server Apache was based on. We now, however, have our own
- server, and our project is mostly our own. The Apache Project is an
- entirely independent venture.
+ The <A HREF="http://www.apache.org/ABOUT_APACHE.html">About Apache</A>
+ document explains how the Apache project evolved from its beginnings
+ as an outgrowth of the NCSA httpd project to its current status as
+ one of the fastest, most efficient, and most functional web servers
+ in existence.
</P>
<HR>
</LI>
@@ -569,7 +630,7 @@
</P>
<P>
- For many developers it is also a reverant connotation to the Native
+ For many developers it is also a reverent connotation to the Native
American Indian tribe of Apache, <A
HREF="http://www.indians.org/welker/apache.htm">well-known for their
superior skills in warfare strategy and inexhaustible endurance</A>.
@@ -598,14 +659,15 @@
comparison chart.
</P>
<P>
- Apache has been shown to be substantially faster than many other
- free servers. Although certain commercial servers have claimed to
- surpass Apache's speed (it has not been demonstrated that any of these
- &quot;benchmarks&quot; are a good way of measuring WWW server speed at any
- rate), we feel that it is better to have a mostly-fast free server
- than an extremely-fast server that costs thousands of dollars. Apache
- is run on sites that get millions of hits per day, and they have
- experienced no performance difficulties.
+ Apache has been shown to be substantially faster, more stable, and
+ more feature-full than many other web servers. Although certain
+ commercial servers have claimed to surpass Apache's speed (it has
+ not been demonstrated that any of these &quot;benchmarks&quot; are a
+ good way of measuring WWW server speed at any rate), we feel that it
+ is better to have a mostly-fast free server than an extremely-fast
+ server that costs thousands of dollars. Apache is run on sites that
+ get millions of hits per day, and they have experienced no
+ performance difficulties.
</P>
<HR>
</LI>
@@ -614,17 +676,13 @@
<STRONG>How thoroughly tested is Apache?</STRONG>
</A>
<P>
- Apache is run on over 3 million Internet servers (as of June 1999). It has
- been tested thoroughly by both developers and users. The Apache Group
- maintains rigorous standards before releasing new versions of their
- server, and our server runs without a hitch on over one half of all
- WWW servers available on the Internet. When bugs do show up, we
- release patches and new versions as soon as they are available.
- </P>
- <P>
- The Apache project's web site includes a page with a partial list of
- <A HREF="http://www.apache.org/info/apache_users.html">sites running
- Apache</A>.
+ Apache is run on over 6 million Internet servers (as of February
+ 2000). It has been tested thoroughly by both developers and
+ users. The Apache Group maintains rigorous standards before
+ releasing new versions of their server, and our server runs without
+ a hitch on over one half of all WWW servers available on the
+ Internet. When bugs do show up, we release patches and new versions
+ as soon as they are available.
</P>
<HR>
</LI>
@@ -679,7 +737,7 @@
</A>
<P>
Indeed there is. See the main
- <A HREF="http://www.apache.org/">Apache web site</A>.
+ <A HREF="http://www.apache.org/httpd">Apache web site</A>.
There is also a regular electronic publication called
<A HREF="http://www.apacheweek.com/" REL="Help"><CITE>Apache Week</CITE></A>
available. Links to relevant <CITE>Apache Week</CITE> articles are
@@ -696,10 +754,32 @@
<P>
You can find out how to download the source for Apache at the
project's
- <A HREF="http://www.apache.org/">main web page</A>.
+ <A HREF="http://www.apache.org/httpd">main web page</A>.
</P>
<HR>
</LI>
+
+ <li><a name="logo">
+ <b>May I use the Apache logo on my product or Web site?</b></a>
+ <p>
+ You may <b>NOT</b> use any original artwork from the Apache Software
+ Foundation, nor make or use modified versions of such artwork, except
+ under the following conditions:
+ </p>
+ <ul>
+ <li>You may use the
+ <a href="../../apache_pb.gif">'Powered by Apache' graphic</a>
+ on a Web site that is being served by the Apache HTTP server software.</li>
+ <li>You may use the aforementioned 'Powered by Apache' graphic or the
+ <a href="http://www.apache.org/foundation/images/asf_logo.gif"
+ >Apache Software Foundation logo</a> in product description and
+ promotional material <b>IF and ONLY IF</b> such use can in no way
+ be interpreted as anything other than an attribution. Using the
+ Apache name and artwork in a manner that implies endorsement of a
+ product or service is <b>strictly forbidden</b>.</li>
+ </ul>
+ <hr>
+ </li>
</OL>
@@ -1508,14 +1588,69 @@
<A HREF="http://www.microsoft.com/windows95/downloads/">http://www.microsoft.com/windows95/downloads/</A>
</p>
<p>
- Detailed answer: Prior to version 1.3.9, Apache for Windows used Winsock 1.1. Beginning with
- version 1.3.9, Apache began using Winsock 2 features (specifically, WSADuplicateSocket()).
- WS2_32.DLL implements the Winsock 2 API. Winsock 2 ships with Windows NT 4.0 and Windows 98.
- Some of the earlier releases of Windows 95 did not include Winsock 2.
+ Detailed answer: Prior to version 1.3.9, Apache for Windows used Winsock
+ 1.1. Beginning with version 1.3.9, Apache began using Winsock 2 features
+ (specifically, WSADuplicateSocket()).
+ WS2_32.DLL implements the Winsock 2 API. Winsock 2 ships with Windows
+ NT 4.0 and Windows 98. Some of the earlier releases of Windows 95 did
+ not include Winsock 2.
</p>
<hr>
</LI>
-
+ <LI><A name="WSADuplicateSocket">
+ <b>Apache for Windows does not start. Error log contains this message:
+ "<samp>[crit] (10045) The attempted operation is not supported for
+ the type of object referenced: Parent: WSADuplicateSocket failed for
+ socket ###</samp>". What does this mean?</b></A>
+ <p>
+ We have seen this problem when Apache is run on systems along with
+ Virtual Private Networking clients like Aventail Connect. Aventail Connect
+ is a Layered Service Provider (LSP) that inserts itself, as a "shim,"
+ between the Winsock 2 API and Window's native Winsock 2 implementation.
+ The Aventail Connect shim does not implement WSADuplicateSocket, which is
+ the cause of the failure.
+ </p>
+ <p>
+ The shim is not unloaded when Aventail Connect is shut down. Once
+ observed, the problem persists until the shim is either explicitly
+ unloaded or the machine is rebooted. Instructions for temporarily
+ removing the Aventail Connect V3.x shim can be found here:
+ "<a href="http://support.aventail.com/akb/article00386.html"
+ >How to Remove Aventail Connect v3.x from the LSP Order for Testing
+ Purposes</a>."
+ </p>
+ <p>
+ Another potential solution (not tested) is to add <code>apache.exe</code>
+ to the Aventail "Connect Exclusion List". See this link for details:
+ "<a href="http://support.aventail.com/akb/article00586.html"
+ >How to Add an Application to Aventail Connect's Application Exclusion
+ List</a>."
+ </p>
+ <hr>
+ </LI>
+ <li><a name="err1067"><b>When I try to start Apache on Windows, I get
+ a message like &quot;<code>System error 1067 has occurred. The process
+ terminated unexpectedly</code>.&quot; What does this mean?</b></a>
+ <p>
+ This message means that the Web server was unable to start correctly
+ for one reason or another. To find out why, execute the following
+ commands in a DOS window:
+ </p>
+ <pre>
+ c:
+ cd "\Program Files\Apache Group\Apache"
+ apache
+ </pre>
+ <p>
+ (If you don't get the prompt back, hit Control-C to cause Apache to
+ exit.)
+ </p>
+ <p>
+ The error you see will probably be one of those preceding this question
+ in the FAQ.
+ </p>
+ <hr>
+ </li>
</OL>
@@ -1930,8 +2065,7 @@
directives so Apache can be sure to tell them apart correctly.
</P>
<P>
- Please see the
- <A HREF="http://www.apache.org/docs/vhosts/">Apache
+ Please see the <A HREF="../vhosts/">Apache
Virtual Host documentation</A> for further details about configuration.
</P>
<HR>
@@ -1996,6 +2130,56 @@
web server in order for the content to be accessible.
</P>
<HR>
+ </LI>
+ <li><a name="malfiles"><b>Why do I get a
+ &quot;<samp>Forbidden/You don't have permission to access /
+ on this server</samp>&quot; message whenever I try to
+ access my server?</b></a>
+ <p>
+ Search your <code>conf/httpd.conf</code> file for this exact
+ string:
+ <code>&lt;Files ~&gt;</code>. If you find it,
+ that's your problem -- that particular &lt;Files&gt; container
+ is malformed. Delete it or replace it with
+ <code>&lt;Files ~ &quot;^\.ht&quot;&gt;</code>
+ and restart your server and things should work as expected.
+ </p>
+ <p>
+ This error appears to be caused by a problem with the version of
+ linuxconf distributed with Redhat 6.x. It may reappear if
+ you use linuxconf again.
+ </p>
+ <p>
+ If you don't find this string, check out the
+ <a href="#forbidden">previous question</a>.
+ </p>
+ <hr>
+ </li>
+ <LI><A NAME="ie-ignores-mime">
+ <STRONG>Why do my files appear correctly in Internet
+ Explorer, but show up as source or trigger a save window
+ with Netscape?</STRONG></A>
+ <P>
+ Internet Explorer (IE) and Netscape handle mime type detection in different
+ ways, and therefore will display the document differently. In particular,
+ IE sometimes relies on the file extension to determine the mime type. This
+ can happen when the server specifies a mime type of
+ <CODE>application/octet-stream</CODE> or <CODE>text/plain</CODE>.
+ (Unfortunately, this behavior makes it impossible to properly send plain
+ text in some situations unless the file extension is <CODE>txt</CODE>.)
+ There are more details available on IE's mime type detection behavior in an
+ <A HREF="http://msdn.microsoft.com/workshop/networking/moniker/overview/appendix_a.asp">MSDN
+ article</A>.
+ </P>
+
+ <P>
+ In order to make all browsers work correctly, you should assure
+ that Apache sends the correct mime type for the file. This is
+ accomplished by editing the <CODE>mime.types</CODE> file or using
+ an <A HREF="../mod/mod_mime.html#addtype"><CODE>AddType</CODE></A>
+ directive in the Apache configuration files.
+ </P>
+ <HR>
</LI>
</OL>
@@ -2045,7 +2229,7 @@
a line such as
<P>
<DL>
- <DD><CODE>AddHandler cgi-script .cgi</CODE>
+ <DD><CODE>AddHandler cgi-script cgi</CODE>
</DD>
</DL>
<P></P>
@@ -2258,13 +2442,14 @@
xSSI (eXtended SSI) directives.
</P>
<P>
- Processing a document at run-time is called <EM>parsing</EM> it; hence
- the term &quot;parsed HTML&quot; sometimes used for documents that
- contain SSI instructions. Parsing tends to be <EM>extremely</EM>
- resource-consumptive, and is not enabled by default. It can also
- interfere with the cachability of your documents, which can put a
- further load on your server. (see the
- <A HREF="#ssi-part-ii">next question</A> for more information about this.)
+ Processing a document at run-time is called <EM>parsing</EM> it;
+ hence the term &quot;parsed HTML&quot; sometimes used for documents
+ that contain SSI instructions. Parsing tends to be
+ resource-consumptive compared to serving static files, and is not
+ enabled by default. It can also interfere with the cachability of
+ your documents, which can put a further load on your server. (See
+ the <A HREF="#ssi-part-ii">next question</A> for more information
+ about this.)
</P>
<P>
To enable SSI processing, you need to
@@ -2412,6 +2597,42 @@
</P>
<HR>
</LI>
+ <LI><A NAME="user-cgi"><STRONG>How do I allow each of my user directories
+ to have a cgi-bin directory?</STRONG></A>
+ <P>
+ Remember that CGI execution does not need to be restricted only to
+ cgi-bin directories. You can <A HREF="#CGIoutsideScriptAlias">allow
+ CGI script execution in arbitrary parts of your filesystem</A>.
+ </P>
+ <P>
+ There are many ways to give each user directory a cgi-bin directory
+ such that anything requested as
+ <SAMP>http://example.com/~user/cgi-bin/program</SAMP> will be
+ executed as a CGI script.
+ Two alternatives are:
+ <OL>
+ <LI>Place the cgi-bin directory next to the public_html directory:
+ <P>
+ <DL>
+ <DD><CODE>ScriptAliasMatch ^/~([^/]*)/cgi-bin/(.*) /home/$1/cgi-bin/$2</CODE>
+ </DD>
+ </DL>
+ </P>
+ </LI>
+ <LI>Place the cgi-bin directory underneath the public_html directory:
+ <P></p>
+ <DL>
+ <DD><CODE>&lt;Directory /home/*/public_html/cgi-bin&gt;<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;Options ExecCGI<BR>
+ &nbsp;&nbsp;&nbsp;&nbsp;SetHandler cgi-script<BR>
+ &lt;/Directory&gt;</CODE>
+ </DD>
+ </DL>
+ <p></P>
+ </LI>
+ </OL>
+ <HR>
+ </LI>
</OL>
@@ -2518,9 +2739,9 @@
</P>
<P>
<DL>
- <DD><CODE>deny from all
+ <DD><CODE>Deny from all
<BR>
- allow from .domain.com
+ Allow from .domain.com
<BR>
AuthType Basic
<BR>
@@ -2528,9 +2749,9 @@
<BR>
AuthName "special directory"
<BR>
- require valid-user
+ Require valid-user
<BR>
- satisfy any</CODE>
+ Satisfy any</CODE>
</DD>
</DL>
<P></P>
@@ -2689,6 +2910,37 @@
</P>
<HR>
</LI>
+ <LI><A NAME="prompted-twice"><STRONG>Why does Apache ask for my password
+ twice before serving a file?</STRONG></a>
+ <P>
+ If the hostname under which you are accessing the server is
+ different than the hostname specified in the
+ <A HREF="../mod/core.html#servername"><CODE>ServerName</CODE></A>
+ directive, then depending on the setting of the
+ <A HREF="../mod/core.html#usecanonicalname"><CODE>UseCanonicalName</CODE></A>
+ directive, Apache will redirect you to a new hostname when
+ constructing self-referential URLs. This happens, for example, in
+ the case where you request a directory without including the
+ trailing slash.
+ </P>
+ <P>
+ When this happens, Apache will ask for authentication once under the
+ original hostname, perform the redirect, and then ask again under the
+ new hostname. For security reasons, the browser must prompt again
+ for the password when the host name changes.
+ </P>
+ <P>
+ To eliminate this problem you should
+ <OL>
+ <LI>Always use the trailing slash when requesting directories;
+ <LI>Change the <CODE>ServerName</CODE> to match the name you are
+ using in the URL; and/or
+ <LI>Set <CODE>UseCanonicalName off</CODE>.
+ </OL>
+ </P>
+ <HR>
+ </LI>
+
</OL>
@@ -2813,19 +3065,21 @@
</STRONG>
</A>
<P>
- You can't! The reason is: First, case translations for arbitrary
- length URLs cannot be done <EM>via</EM> regex patterns and
- corresponding substitutions. One need a per-character pattern like
- sed/Perl <SAMP>tr|..|..|</SAMP> feature. Second, just making URLs
- always upper or lower case will not resolve the complete problem of
- case-INSENSITIVE URLs, because actually the URLs had to be rewritten
- to the correct case-variant residing on the filesystem because in
- later processing Apache needs to access the file. And Unix
- filesystem is always case-SENSITIVE.
+ You can't! The reasons are: first, that, case translations for
+ arbitrary length URLs cannot be done <EM>via</EM> regex patterns and
+ corresponding substitutions. One needs a per-character pattern like
+ the sed/Perl <SAMP>tr|..|..|</SAMP> feature. Second, just making
+ URLs always upper or lower case does not solve the whole problem of
+ case-INSENSITIVE URLs, because URLs actually have to be rewritten to
+ the correct case-variant for the file residing on the filesystem
+ in order to allow Apache to access the file. And
+ the Unix filesystem is always case-SENSITIVE.
</P>
<P>
- But there is a module named <CODE>mod_speling.c</CODE> (yes, it is named
- this way!) out there on the net. Try this one.
+ But there is a module named <CODE><A
+ HREF="../mod/mod_speling.html">mod_speling.c</A></CODE> in the
+ Apache distribution. Try this module to help correct people who use
+ mis-cased URLs.
</P>
<HR>
</LI>
@@ -3004,6 +3258,60 @@
</PRE></P>
<HR>
</LI>
+ <LI><A NAME="conditional-logging">
+ <STRONG>How do I keep certain requests from appearing
+ in my logs?</STRONG></A>
+ <P>
+ The maximum flexibility for removing unwanted information from
+ log files is obtained by post-processing the logs, or using
+ piped-logs to feed the logs through a program which does whatever
+ you want. However, Apache does offer the ability to prevent
+ requests from ever appearing in the log files. You can do this by
+ using the
+ <A HREF="../mod/mod_setenvif.html#SetEnvIf"><CODE>SetEnvIf</CODE></A>
+ directive to set an environment variable for certain requests and
+ then using the conditional
+ <A HREF="../mod/mod_log_config.html#customlog-conditional"><CODE>CustomLog</CODE></A>
+ syntax to prevent logging when the environment variable is set.
+ </P>
+ <HR>
+ </LI>
+
+ <li><a name="dbinteg"><b>Does Apache support any sort of database
+ integration?</b></a>
+ <p>
+ No. Apache is a Web (HTTP) server, not an application server. The
+ base package does not include any such functionality. See the
+ <a href="http://www.php.net/">PHP project</a> and the
+ <a href="http://perl.apache.org/">mod_perl project</a>
+ for examples of modules that allow you to work with databases
+ from within the Apache environment.
+ </p>
+ <hr>
+ </li>
+
+ <li><a name="asp"><b>Can I use Active Server Pages (ASP) with Apache?</b></a>
+ <p>
+ The base Apache Web server package does not include ASP support.
+ However, there are a couple of after-market solutions that let you
+ add this functionality; see the
+ <a href="http://www.apache.org/related_projects.html"
+ >related projects</a> page to find out more.
+ </p>
+ <hr>
+ </li>
+
+ <li><a name="java"><b>Does Apache come with Java support?</b></a>
+ <p>
+ The base Apache Web server package does not include support for
+ Java, Java Server Pages, Enterprise Java Beans, or Java servlets.
+ Those features are available as add-ons from the Apache/Java project
+ site, &lt;URL:<a href="http://jakarta.apache.org"
+ >http://jakarta.apache.org/</a>&gt;.
+ </p>
+ <hr>
+ </li>
+
</OL>
diff --git a/usr.sbin/httpd/htdocs/manual/misc/compat_notes.html b/usr.sbin/httpd/htdocs/manual/misc/compat_notes.html
index 3a6a1c40f8d..6168fe4259e 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/compat_notes.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/compat_notes.html
@@ -123,6 +123,11 @@ client problems</A> page.
changes in paths for virtual hosts need to be made with the explicit
directives, eg. DocumentRoot, TransferLog, <EM>etc.</EM>
+<P>
+<LI>The <CODE>AddType</CODE> directive cannot be used to set the type of
+particular files. Instead, you can scope you directives using
+&lt;Files&gt; blocks.
+
</OL>
More to come when we notice them....
diff --git a/usr.sbin/httpd/htdocs/manual/misc/descriptors.html b/usr.sbin/httpd/htdocs/manual/misc/descriptors.html
index 5207eee0fbd..79416c65061 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/descriptors.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/descriptors.html
@@ -15,26 +15,26 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
<H1 ALIGN="CENTER">Descriptors and Apache</H1>
-<p>A <EM>descriptor</EM>, also commonly called a <EM>file handle</EM> is
+<P>A <EM>descriptor</EM>, also commonly called a <EM>file handle</EM> is
an object that a program uses to read or write an open file, or open
network socket, or a variety of other devices. It is represented
-by an integer, and you may be familiar with <code>stdin</code>,
-<code>stdout</code>, and <code>stderr</code> which are descriptors 0,
+by an integer, and you may be familiar with <CODE>stdin</CODE>,
+<CODE>stdout</CODE>, and <CODE>stderr</CODE> which are descriptors 0,
1, and 2 respectively.
Apache needs a descriptor for each log file, plus one for each
network socket that it listens on, plus a handful of others. Libraries
that Apache uses may also require descriptors. Normal programs don't
open up many descriptors at all, and so there are some latent problems
that you may experience should you start running Apache with many
-descriptors (i.e. with many virtual hosts).
+descriptors (<EM>i.e.</EM>, with many virtual hosts).
-<p>The operating system enforces a limit on the number of descriptors
+<P>The operating system enforces a limit on the number of descriptors
that a program can have open at a time. There are typically three limits
involved here. One is a kernel limitation, depending on your operating
system you will either be able to tune the number of descriptors available
@@ -50,49 +50,49 @@ Root can raise the hard limit up to the system maximum limit. The soft
limit is the actual limit that is used when enforcing the maximum number
of files a process can have open.
-<p>To summarize:
+<P>To summarize:
-<center><pre>
+<CENTER><PRE>
#open files &lt;= soft limit &lt;= hard limit &lt;= kernel limit
-</pre></center>
+</PRE></CENTER>
-<p>You control the hard and soft limits using the <code>limit</code> (csh)
-or <code>ulimit</code> (sh) directives. See the respective man pages
+<P>You control the hard and soft limits using the <CODE>limit</CODE> (csh)
+or <CODE>ulimit</CODE> (sh) directives. See the respective man pages
for more information. For example you can probably use
-<code>ulimit -n unlimited</code> to raise your soft limit up to the
+<CODE>ulimit -n unlimited</CODE> to raise your soft limit up to the
hard limit. You should include this command in a shell script which
starts your webserver.
-<p>Unfortunately, it's not always this simple. As mentioned above,
+<P>Unfortunately, it's not always this simple. As mentioned above,
you will probably run into some system limitations that will need to be
worked around somehow. Work was done in version 1.2.1 to improve the
situation somewhat. Here is a partial list of systems and workarounds
(assuming you are using 1.2.1 or later):
-<dl>
+<DL>
- <dt><STRONG>BSDI 2.0</STRONG>
- <dd>Under BSDI 2.0 you can build Apache to support more descriptors
- by adding <code>-DFD_SETSIZE=nnn</code> to
- <code>EXTRA_CFLAGS</code> (where nnn is the number of descriptors
+ <DT><STRONG>BSDI 2.0</STRONG>
+ <DD>Under BSDI 2.0 you can build Apache to support more descriptors
+ by adding <CODE>-DFD_SETSIZE=nnn</CODE> to
+ <CODE>EXTRA_CFLAGS</CODE> (where nnn is the number of descriptors
you wish to support, keep it less than the hard limit). But it
will run into trouble if more than approximately 240 Listen
directives are used. This may be cured by rebuilding your kernel
with a higher FD_SETSIZE.
- <p>
+ <P>
- <dt><STRONG>FreeBSD 2.2, BSDI 2.1+</STRONG>
- <dd>Similar to the BSDI 2.0 case, you should define
- <code>FD_SETSIZE</code> and rebuild. But the extra
+ <DT><STRONG>FreeBSD 2.2, BSDI 2.1+</STRONG>
+ <DD>Similar to the BSDI 2.0 case, you should define
+ <CODE>FD_SETSIZE</CODE> and rebuild. But the extra
Listen limitation doesn't exist.
- <p>
+ <P>
- <dt><STRONG>Linux</STRONG>
- <dd>By default Linux has a kernel maximum of 256 open descriptors
+ <DT><STRONG>Linux</STRONG>
+ <DD>By default Linux has a kernel maximum of 256 open descriptors
per process. There are several patches available for the
2.0.x series which raise this to 1024 and beyond, and you
- can find them in the "unofficial patches" section of <a
- href="http://www.linuxhq.com/">the Linux Information HQ</a>.
+ can find them in the "unofficial patches" section of <A
+ HREF="http://www.linuxhq.com/">the Linux Information HQ</A>.
None of these patches are perfect, and an entirely different
approach is likely to be taken during the 2.1.x development.
Applying these patches will raise the FD_SETSIZE used to compile
@@ -101,34 +101,44 @@ situation somewhat. Here is a partial list of systems and workarounds
256. As of this writing the patches available for increasing
the number of descriptors do not take this into account. On a
dedicated webserver you probably won't run into trouble.
- <p>
+ <P>
- <dt><STRONG>Solaris through 2.5.1</STRONG>
- <dd>Solaris has a kernel hard limit of 1024 (may be lower in earlier
+ <DT><STRONG>Solaris through 2.5.1</STRONG>
+ <DD>Solaris has a kernel hard limit of 1024 (may be lower in earlier
versions). But it has a limitation that files using
the stdio library cannot have a descriptor above 255.
Apache uses the stdio library for the ErrorLog directive.
When you have more than approximately 110 virtual hosts
(with an error log and an access log each) you will need to
- build Apache with <code>-DHIGH_SLACK_LINE=256</code> added to
- <code>EXTRA_CFLAGS</code>. You will be limited to approximately
+ build Apache with <CODE>-DHIGH_SLACK_LINE=256</CODE> added to
+ <CODE>EXTRA_CFLAGS</CODE>. You will be limited to approximately
240 error logs if you do this.
- <p>
+ <P>
- <dt><STRONG>AIX</STRONG>
- <dd>AIX version 3.2?? appears to have a hard limit of 128 descriptors.
+ <DT><STRONG>AIX</STRONG>
+ <DD>AIX version 3.2?? appears to have a hard limit of 128 descriptors.
End of story. Version 4.1.5 has a hard limit of 2000.
- <p>
+ <P>
- <dt><STRONG>Others</STRONG>
- <dd>If you have details on another operating system, please submit
- it through our <a href="http://www.apache.org/bug_report.html">Bug
- Report Page</a>.
- <p>
+ <DT><STRONG>SCO OpenServer</STRONG>
+ <DD>Edit the
+ <CODE>/etc/conf/cf.d/stune</CODE> file or use
+ <CODE>/etc/conf/cf.d/configure</CODE> choice 7
+ (User and Group configuration) and modify the <CODE>NOFILES</CODE> kernel
+ parameter to a suitably higher value. SCO recommends a number
+ between 60 and 11000, the default is 110. Relink and reboot,
+ and the new number of descriptors will be available.
-</dl>
-<p>In addition to the problems described above there are problems with
+ <DT><STRONG>Others</STRONG>
+ <DD>If you have details on another operating system, please submit
+ it through our <A HREF="http://www.apache.org/bug_report.html">Bug
+ Report Page</A>.
+ <P>
+
+</DL>
+
+<P>In addition to the problems described above there are problems with
many libraries that Apache uses. The most common example is the bind
DNS resolver library that is used by pretty much every unix, which
fails if it ends up with a descriptor above 256. We suspect there
@@ -137,28 +147,29 @@ takes a defensive stance and tries to save descriptors less than 16
for use while processing each request. This is called the <EM>low
slack line</EM>.
-<p>Note that this shouldn't waste descriptors. If you really are pushing
+<P>Note that this shouldn't waste descriptors. If you really are pushing
the limits and Apache can't get a descriptor above 16 when it wants
it, it will settle for one below 16.
-<p>In extreme situations you may want to lower the low slack line,
+<P>In extreme situations you may want to lower the low slack line,
but you shouldn't ever need to. For example, lowering it can
increase the limits 240 described above under Solaris and BSDI 2.0.
But you'll play a delicate balancing game with the descriptors needed
to serve a request. Should you want to play this game, the compile
-time parameter is <code>LOW_SLACK_LINE</code> and there's a tiny
-bit of documentation in the header file <code>httpd.h</code>.
-
-<p>Finally, if you suspect that all this slack stuff is causing you
-problems, you can disable it. Add <code>-DNO_SLACK</code> to
-<code>EXTRA_CFLAGS</code> and rebuild. But please report it to
-our <a href="http://www.apache.org/bug_report.html">Bug
-Report Page</a> so that
+time parameter is <CODE>LOW_SLACK_LINE</CODE> and there's a tiny
+bit of documentation in the header file <CODE>httpd.h</CODE>.
+
+<P>Finally, if you suspect that all this slack stuff is causing you
+problems, you can disable it. Add <CODE>-DNO_SLACK</CODE> to
+<CODE>EXTRA_CFLAGS</CODE> and rebuild. But please report it to
+our <A HREF="http://www.apache.org/bug_report.html">Bug
+Report Page</A> so that
we can investigate.
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/misc/nopgp.html b/usr.sbin/httpd/htdocs/manual/misc/nopgp.html
index 9a3497b442a..f19b3e67bbc 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/nopgp.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/nopgp.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
@@ -25,7 +25,7 @@ On May 17th, 1995, we were asked by a representative of NCSA to remove
any copies of NCSA httpd prior to 1.4.1 from our web site. They
were mandated by the NSA to inform us that redistribution of pre-1.4.1
code violated the same laws that make distributing Phill Zimmerman's
-PGP package to other countries illegal. There was <B>no</B>
+PGP package to other countries illegal. There was <STRONG>no</STRONG>
encryption in NCSA's httpd, only hooks to publicly available libraries
of PEM code. By the NSA's rules, even hooks to this type of
application is illegal.
@@ -55,12 +55,12 @@ whose absence would really be missed on a functional level.
<LI>We didn't feel like being just a couple more martyrs in a fight
being fought very well by many other people. Rather than have the
machine that supports the project confiscated or relocated to South
-Africa, etc., we think there are more efficient methods to address the
+Africa, <EM>etc.</EM>, we think there are more efficient methods to address the
issue.
</UL>
-It kind of sickens us that we had to do it, but so be it.
+It kind of sickens us that we had to do it, but so be it.
<P>
@@ -75,9 +75,10 @@ date, so send us mail when you see a problem or want a link added.
Thanks.
<UL>
-<LI><A HREF="http://www.yahoo.com/Computers_and_Internet/Security_and_Encryption/">
-Yahoo - Science: Mathematics: Security and Encryption</A>
-<LI><A HREF="http://www.eff.org/pub/EFF/Policy/Crypto/">
+<LI>
+<A HREF="http://www.yahoo.com/Computers_and_Internet/Security_and_Encryption/"
+>Yahoo - Science: Mathematics: Security and Encryption</A>
+<LI><A HREF="http://www.eff.org/pub/Privacy/Crypto/">
EFF Crypto/Privacy/Security Archive</A>
<LI><A HREF="http://www.quadralay.com/www/Crypt/Crypt.html">
Crypto page at Quadralay</A>
@@ -87,11 +88,13 @@ Cryptography Export Control Archives (Cygnus)</A>
ICLU - Your Rights in Cyberspace</A>
</UL>
- <a href="http://www.behlendorf.com/~brian/">Brian</a>, <a href="mailto:brian@hyperreal.com">brian@hyperreal.com</a>
+<A HREF="http://www.behlendorf.com/~brian/">Brian</A>,
+<A HREF="mailto:brian@hyperreal.com">brian@hyperreal.com</A>
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/misc/perf-bsd44.html b/usr.sbin/httpd/htdocs/manual/misc/perf-bsd44.html
index a65afb00304..2be7441ff23 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/perf-bsd44.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/perf-bsd44.html
@@ -1,8 +1,8 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<title>Running a High-Performance Web Server for BSD</title>
-</head>
+<HTML>
+<HEAD>
+<TITLE>Running a High-Performance Web Server for BSD</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -16,65 +16,66 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
</A>
<H1 ALIGN="CENTER">Running a High-Performance Web Server for BSD</H1>
-Like other OS's, the listen queue is often the <b>first limit hit</b>. The
+Like other OS's, the listen queue is often the <STRONG>first limit
+hit</STRONG>. The
following are comments from "Aaron Gifford &lt;agifford@InfoWest.COM&gt;"
on how to fix this on BSDI 1.x, 2.x, and FreeBSD 2.0 (and earlier):
-<p>
+<P>
Edit the following two files:
-<blockquote><code> /usr/include/sys/socket.h <br>
- /usr/src/sys/sys/socket.h </code></blockquote>
+<BLOCKQUOTE><CODE> /usr/include/sys/socket.h <BR>
+ /usr/src/sys/sys/socket.h </CODE></BLOCKQUOTE>
In each file, look for the following:
-<pre>
+<PRE>
/*
* Maximum queue length specifiable by listen.
*/
#define SOMAXCONN 5
-</pre>
+</PRE>
Just change the "5" to whatever appears to work. I bumped the two
machines I was having problems with up to 32 and haven't noticed the
problem since.
-<p>
+<P>
After the edit, recompile the kernel and recompile the Apache server
-then reboot.
+then reboot.
<P>
FreeBSD 2.1 seems to be perfectly happy, with SOMAXCONN
set to 32 already.
-<p>
+<P>
<A NAME="detail">
-<b>Addendum for <i>very</i> heavily loaded BSD servers</b><br>
+<STRONG>Addendum for <EM>very</EM> heavily loaded BSD servers</STRONG><BR>
</A>
from Chuck Murcko &lt;chuck@telebase.com&gt;
-<p>
+<P>
If you're running a really busy BSD Apache server, the following are useful
-things to do if the system is acting sluggish:<p>
+things to do if the system is acting sluggish:<P>
-<ul>
+<UL>
-<li> Run vmstat to check memory usage, page/swap rates, etc.
+<LI> Run vmstat to check memory usage, page/swap rates, <EM>etc.</EM>
-<li> Run netstat -m to check mbuf usage
+<LI> Run netstat -m to check mbuf usage
-<li> Run fstat to check file descriptor usage
+<LI> Run fstat to check file descriptor usage
-</ul>
+</UL>
These utilities give you an idea what you'll need to tune in your kernel,
and whether it'll help to buy more RAM.
@@ -84,40 +85,39 @@ FreeBSD and other 4.4-lite derivatives) from a system getting heavy usage.
The tools mentioned above were used, and the system memory was increased to
48 MB before these tuneups. Other system parameters remained unchanged.
-<p>
+<P>
-<pre>
+<PRE>
maxusers 256
-</pre>
+</PRE>
-Maxusers drives a <i>lot</i> of other kernel parameters:
+Maxusers drives a <EM>lot</EM> of other kernel parameters:
-<ul>
+<UL>
-<li> Maximum # of processes
+<LI> Maximum # of processes
-<li> Maximum # of processes per user
+<LI> Maximum # of processes per user
-<li> System wide open files limit
+<LI> System wide open files limit
-<li> Per-process open files limit
+<LI> Per-process open files limit
-<li> Maximum # of mbuf clusters
+<LI> Maximum # of mbuf clusters
-<li> Proc/pgrp hash table size
+<LI> Proc/pgrp hash table size
-</ul>
+</UL>
The actual formulae for these derived parameters are in
-<i>/usr/src/sys/conf/param.c</i>.
+<EM>/usr/src/sys/conf/param.c</EM>.
These calculated parameters can also be overridden (in part) by specifying
your own values in the kernel configuration file:
-<pre>
+<PRE>
# Network options. NMBCLUSTERS defines the number of mbuf clusters and
# defaults to 256. This machine is a server that handles lots of traffic,
# so we crank that value.
-options SOMAXCONN=256 # max pending connects
options NMBCLUSTERS=4096 # mbuf clusters at 4096
#
@@ -125,13 +125,9 @@ options NMBCLUSTERS=4096 # mbuf clusters at 4096
#
options CHILD_MAX=512 # maximum number of child processes
options OPEN_MAX=512 # maximum fds (breaks RPC svcs)
-</pre>
-
-SOMAXCONN is not derived from maxusers, so you'll always need to increase
-that yourself. We used a value guaranteed to be larger than Apache's
-default for the listen() of 128, currently.
+</PRE>
-<p>
+<P>
In many cases, NMBCLUSTERS must be set much larger than would appear
necessary at first glance. The reason for this is that if the browser
@@ -140,13 +136,13 @@ connection ends up in the TIME_WAIT state for several minutes, during
which time its mbufs are not yet freed. Another reason is that, on server
timeouts, some connections end up in FIN_WAIT_2 state forever, because
this state doesn't time out on the server, and the browser never sent
-a final FIN. For more details see the
-<A HREF="fin_wait_2.html">FIN_WAIT_2</A> page.
+a final FIN. For more details see the
+<A HREF="fin_wait_2.html">FIN_WAIT_2</A> page.
-<p>
+<P>
Some more info on mbuf clusters (from sys/mbuf.h):
-<pre>
+<PRE>
/*
* Mbufs are of a single size, MSIZE (machine/machparam.h), which
* includes overhead. An mbuf may add a single "mbuf cluster" of size
@@ -154,9 +150,9 @@ Some more info on mbuf clusters (from sys/mbuf.h):
* and is used instead of the internal data area; this is done when
* at least MINCLSIZE of data must be stored.
*/
-</pre>
+</PRE>
-<p>
+<P>
CHILD_MAX and OPEN_MAX are set to allow up to 512 child processes (different
than the maximum value for processes per user ID) and file descriptors.
@@ -166,19 +162,41 @@ files). If you've got a lot of other activity besides httpd on the same
machine, you'll have to set NPROC higher still. In this example, the NPROC
value derived from maxusers proved sufficient for our load.
-<p>
+<P>
-<b>Caveats</b>
+To increase the size of the <CODE>listen()</CODE> queue, you need to
+adjust the value of SOMAXCONN. SOMAXCONN is not derived from maxusers,
+so you'll always need to increase that yourself. We use a value guaranteed
+to be larger than Apache's default for the listen() of 128, currently.
+The actual value for SOMAXCONN is set in <CODE>sys/socket.h</CODE>.
+The best way to adjust this parameter is run-time, rather than changing
+it in this header file and thus hardcoding a value in the kernel and
+elsewhere. To do this, edit <CODE>/etc/rc.local</CODE> and add the
+following line:
+<PRE>
+ /usr/sbin/sysctl -w kern.somaxconn=256
+</PRE>
-<p>
+<P>
+
+We used <CODE>256</CODE> but you can tune it for your own setup. In
+many cases, however, even the default value of <CODE>128</CODE> (for
+later versions of FreeBSD) is OK.
+
+<P>
+
+<STRONG>Caveats</STRONG>
+
+<P>
Be aware that your system may not boot with a kernel that is configured
-to use more resources than you have available system RAM. <b>ALWAYS</b>
+to use more resources than you have available system RAM.
+<STRONG>ALWAYS</STRONG>
have a known bootable kernel available when tuning your system this way,
-and use the system tools beforehand to learn if you need to buy more
+and use the system tools beforehand to learn if you need to buy more
memory before tuning.
-<p>
+<P>
RPC services will fail when the value of OPEN_MAX is larger than 256.
This is a function of the original implementations of the RPC library,
@@ -186,64 +204,129 @@ which used a byte value for holding file descriptors. BSDI has partially
addressed this limit in its 2.1 release, but a real fix may well await
the redesign of RPC itself.
-<p>
+<P>
Finally, there's the hard limit of child processes configured in Apache.
-<p>
+<P>
For versions of Apache later than 1.0.5 you'll need to change the
-definition for <b>HARD_SERVER_LIMIT</b> in <i>httpd.h</i> and recompile
-if you need to run more than the default 150 instances of httpd.
+definition for <STRONG>HARD_SERVER_LIMIT</STRONG> in <EM>httpd.h</EM> and
+recompile if you need to run more than the default 150 instances of httpd.
-<p>
+<P>
From conf/httpd.conf-dist:
-<pre>
-# Limit on total number of servers running, i.e., limit on the number
+<PRE>
+# Limit on total number of servers running, <EM>i.e.</EM>, limit on the number
# of clients who can simultaneously connect --- if this limit is ever
# reached, clients will be LOCKED OUT, so it should NOT BE SET TOO LOW.
# It is intended mainly as a brake to keep a runaway server from taking
# Unix with it as it spirals down...
MaxClients 150
-</pre>
+</PRE>
Know what you're doing if you bump this value up, and make sure you've
done your system monitoring, RAM expansion, and kernel tuning beforehand.
Then you're ready to service some serious hits!
-<p>
+<P>
-Thanks to <i>Tony Sanders</i> and <i>Chris Torek</i> at BSDI for their
+Thanks to <EM>Tony Sanders</EM> and <EM>Chris Torek</EM> at BSDI for their
helpful suggestions and information.
<P>
"M. Teterin" &lt;mi@ALDAN.ziplink.net&gt; writes:<P>
-<blockquote>It really does help if your kernel and frequently used utilities
+<BLOCKQUOTE>It really does help if your kernel and frequently used utilities
are fully optimized. Rebuilding the FreeBSD kernel on an AMD-133
(486-class CPU) web-server with<BR>
-<code> -m486 -fexpensive-optimizations -fomit-frame-pointer -O2</code><BR>
+<CODE> -m486 -fexpensive-optimizations -fomit-frame-pointer -O2</CODE><BR>
helped reduce the number of "unable" errors, because the CPU was
-often maxed out.</blockquote>
+often maxed out.</BLOCKQUOTE>
+<P>
+
+<A NAME="accf">
+<H2>Accept filtering on FreeBSD</H2>
+</A>
+
+<P>
+
+Versions of FreeBSD from August 2000 onwards include a feature called
+&quot;accept filters&quot; which delay the return from accept() until
+a condition has been met, e.g. an HTTP request has arrived. This
+postpones the requirement for a child process to handle the new
+connection which therefore increases the number of connections that a
+given number of child processes can handle. It also allows a child
+process to accomplish more immediately after accept() returns (because
+the request is already available to be read) so there is less context
+switching.
+
+<P>
+
+There are two filters in FreeBSD at the time of writing:
+&quot;dataready&quot; and &quot;httpready&quot;. The former just waits
+for the first packet to arrive from the client; the latter waits for
+the end of the HTTP headers. Unfortunately the &quot;httpready&quot;
+filter breaks support for HTTP/0.9 (which doesn't have headers) so
+Apache doesn't use it, but the &quot;dataready&quot; filter gives the
+same benefit in the majority of cases so Apache attempts to use that
+instead.
+
+<P>
+
+Accept filters provide the most benefit on servers that are already so
+busy that they are configured with &quot;<CODE>KeepAlive Off</CODE>&quot;.
+<A HREF="../keepalive.html">HTTP KeepAlive (aka persistent connections)</A>
+avoids the cost of setting up a new connection for every request, but
+connections that are being kept alive use up one of the available
+child processes. Since there is a limited number of child processes
+this can significantly reduce the capacity of the server. The viewers
+of a web site will still get a lot of the benefit of persistent
+connections even with a very small <CODE>KeepAliveTimeout</CODE> so
+you should try reducing it before turning it off altogether.
+
+<P>
+
+To enable accept filtering, you must either load the appropriate
+accept filter module,
+e.g. with the command <CODE>kldload accf_data</CODE>,
+or compile a kernel with <CODE>options ACCEPT_FILTER_DATA</CODE>.
+Apache will then enable filtering when it is restarted.
+
+<P>
+
+If you are more concerned about performance than compatibility with
+absurdly obsolete HTTP/0.9 user agents then you can recompile Apache
+to use the &quot;httpready&quot; filter. This may be particularly
+helpful if your web site uses really big cookies, for example.
+If you are using <CODE>src/Configure</CODE> then add
+<CODE>-DACCEPT_FILTER_NAME=\&quot;httpready\&quot;</CODE> to the
+<CODE>EXTRA_CFLAGS</CODE> line in the <CODE>src/Configuration</CODE>
+file.
+If you are using APACI (aka <CODE>./configure</CODE>) then use the command
+<CODE>CFLAGS=-DACCEPT_FILTER_NAME=\'\&quot;httpready\&quot;\' ./configure</CODE>
+(with all the funky backslashed quotes).
+
<P>
<HR>
<H3>More welcome!</H3>
-If you have tips to contribute, send mail to <a
-href="mailto:brian@organic.com">brian@organic.com</a>
+If you have tips to contribute, send mail to
+<A HREF="mailto:apache@apache.org">apache@apache.org</A>
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
<A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A>
-</body></html>
+</BODY></HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html b/usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html
index 58ca489f61e..d1ca21acc7a 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/perf-tuning.html
@@ -71,8 +71,8 @@ recent FreeBSD, and Linux.
This adds latency
to every request because it requires a DNS lookup to complete before
the request is finished. In Apache 1.3 this setting defaults to Off.
-However (1.3 or later), if you use any <CODE>allow from domain</CODE> or
-<CODE>deny from domain</CODE> directives then you will pay for a
+However (1.3 or later), if you use any <CODE>Allow from domain</CODE> or
+<CODE>Deny from domain</CODE> directives then you will pay for a
double reverse DNS lookup (a reverse, followed by a forward to make sure
that the reverse is not being spoofed). So for the highest performance
avoid using these directives (it's fine to use IP addresses rather than
@@ -359,7 +359,7 @@ mutex. Unfortunately SysV-style semaphores have some bad side-effects.
One is that it's possible Apache will die without cleaning up the semaphore
(see the <CODE>ipcs(8)</CODE> man page). The other is that the semaphore
API allows for a denial of service attack by any CGIs running under the
-same uid as the webserver (<EM>i.e.</EM>, all CGIs unless you use something
+same uid as the webserver (<EM>i.e.</EM>, all CGIs, unless you use something
like suexec or cgiwrapper). For these reasons this method is not used
on any architecture except IRIX (where the previous two are prohibitively
expensive on most IRIX boxes).
@@ -446,7 +446,7 @@ The TCP specification does not state that the FIN_WAIT_2 state has a
timeout, but it doesn't prohibit it. On systems without the timeout,
Apache 1.2 induces many sockets stuck forever in the FIN_WAIT_2 state.
In many cases this can be avoided by simply upgrading to the latest
-TCP/IP patches supplied by the vendor, in cases where the vendor has
+TCP/IP patches supplied by the vendor. In cases where the vendor has
never released patches (<EM>i.e.</EM>, SunOS4 -- although folks with a source
license can patch it themselves) we have decided to disable this feature.
@@ -475,8 +475,10 @@ function looks roughly like this:
select (s for reading, 2 second timeout);
if (error) break;
if (s is ready for reading) {
- read (s, junk_buffer, sizeof (junk_buffer));
- /* just toss away whatever is here */
+ if (read (s, junk_buffer, sizeof (junk_buffer)) <= 0) {
+ break;
+ }
+ /* just toss away whatever is read */
}
}
@@ -797,8 +799,8 @@ but don't seem worth the effort.
There are
<A HREF="http://www.arctic.org/~dgaudet/apache/1.3/">
-several performance patches available for 1.3.</A> But they may
-be slightly out of date by the time Apache 1.3.0 has been released,
+several performance patches available for 1.3.</A> Although they may
+not apply cleanly to the current version,
it shouldn't be difficult for someone with a little C knowledge to
update them. In particular:
@@ -854,8 +856,8 @@ depending on the operating system.
<P>Apache's core code is already multithread aware, and Apache version
1.3 is multithreaded on NT. There have been at least two other experimental
implementations of threaded Apache, one using the 1.3 code base on DCE,
-and one using a custom user-level threads package and the 1.0 code base,
-neither are available publically. There is also an experimental port of
+and one using a custom user-level threads package and the 1.0 code base;
+neither is available publically. There is also an experimental port of
Apache 1.3 to <A HREF="http://www.mozilla.org/docs/refList/refNSPR/">
Netscape's Portable Run Time</A>, which
<A HREF="http://www.arctic.org/~dgaudet/apache/2.0/">is available</A>
diff --git a/usr.sbin/httpd/htdocs/manual/misc/perf.html b/usr.sbin/httpd/htdocs/manual/misc/perf.html
index bb7221419a7..dfa5bb1808c 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/perf.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/perf.html
@@ -1,8 +1,8 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<title>Hints on Running a High-Performance Web Server</title>
-</head>
+<HTML>
+<HEAD>
+<TITLE>Hints on Running a High-Performance Web Server</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -15,27 +15,28 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<h1 ALIGN="CENTER">Hints on Running a High-Performance Web Server</H1>
+<H1 ALIGN="CENTER">Hints on Running a High-Performance Web Server</H1>
Running Apache on a heavily loaded web server, one often encounters
problems related to the machine and OS configuration. "Heavy" is
relative, of course - but if you are seeing more than a couple hits
per second on a sustained basis you should consult the pointers on
this page. In general the suggestions involve how to tune your kernel
-for the heavier TCP load, hardware/software conflicts that arise, etc.
+for the heavier TCP load, hardware/software conflicts that arise, <EM>etc.</EM>
<UL>
<LI><A HREF="#AUX">A/UX (Apple's UNIX)</A>
<LI><A HREF="#BSD">BSD-based (BSDI, FreeBSD, etc)</A>
<LI><A HREF="#DEC">Digital UNIX</A>
+<LI><A HREF="perf-hp.html">HPUX</A>
<LI><A HREF="#Linux">Linux</A>
-<LI><A HREF="#SGI">SGI</A>
<LI><A HREF="#Solaris">Solaris</A>
<LI><A HREF="#SunOS">SunOS 4.x</A>
+<LI><A HREF="#SVR4">SVR4</A>
</UL>
<HR>
@@ -45,7 +46,7 @@ A/UX (Apple's UNIX)
</A></H3>
If you are running Apache on A/UX, a page that gives some helpful
-performance hints (concerning the <I>listen()</I> queue and using
+performance hints (concerning the <EM>listen()</EM> queue and using
virtual hosts)
<A HREF="http://www.jaguNET.com/apache.html">can be found here</A>
@@ -58,6 +59,7 @@ BSD-based (BSDI, FreeBSD, etc)
<A HREF="perf-bsd44.html#initial">Quick</A> and
<A HREF="perf-bsd44.html#detail">detailed</A>
performance tuning hints for BSD-derived systems.
+<A HREF="perf-bsd44.html#accf">Accept filtering</A> on FreeBSD.
<P><HR>
@@ -65,11 +67,12 @@ performance tuning hints for BSD-derived systems.
Digital UNIX
</A></H3>
-<UL>
- <LI><A HREF="http://www.digital.com/info/internet/document/ias/tuning.html">DIGITAL
- UNIX Tuning Parameters for Web Servers</A>
- <LI>We have some <A HREF="perf-dec.html">newsgroup postings</A> on how to tune
- Digital UNIX 3.2 and 4.0.
+<UL>
+ <LI><A
+ HREF="http://www.digital.com/info/internet/document/ias/tuning.html"
+ >DIGITAL UNIX Tuning Parameters for Web Servers</A>
+ <LI>We have some <A HREF="perf-dec.html">newsgroup postings</A> on how
+ to tune Digital UNIX 3.2 and 4.0.
</UL>
<P><HR>
@@ -78,26 +81,10 @@ Digital UNIX
Linux
</A></H3>
-The most common problem on Linux shows up on heavily-loaded systems
-where the whole server will appear to freeze for a couple of minutes
-at a time, and then come back to life. This has been traced to a
-listen() queue overload - certain Linux implementations have a low
-value set for the incoming connection queue which can cause problems.
-Please see our <a
-href="http://www.qosina.com/~awm/apache/linux-tcp.html">Using Apache on
-Linux</a> page for more info on how to fix this.
-
-<P><HR>
-
-<H3><A NAME="SGI">
-SGI
-</A></H3>
-
-<UL>
-<LI><A HREF="http://www.sgi.com/Products/WebFORCE/Resources/res_TuningGuide.html">
-WebFORCE Web Server Tuning Guidelines for IRIX 5.3,
-&lt;http://www.sgi.com/Products/WebFORCE/Resources/res_TuningGuide.html&gt;</A>
-</UL>
+There are no known problems with heavily loaded systems running Linux
+kernels 2.0.32 or later. Earlier kernels have some problems, and an
+upgrade to the latest 2.0.x is a good idea to eliminate various security
+and denial of service attacks.
<P><HR>
@@ -111,9 +98,18 @@ extent in 2.5 (and completely revamped in 2.6), but for now consult
the following URL for tips on how to expand the capabilities if you
are finding slowdowns and lags are hurting performance.
+<P>
+
+Other links:
+
<UL>
-<LI><A href="http://www.sun.com/sun-on-net/performance.html">Sun Performance Information</a>
+<LI><A HREF="http://www.sun.com/sun-on-net/performance.html">
+World Wide Web Server Performance,
+&lt;http://www.sun.com/sun-on-net/performance.html&gt;</A>
+<LI><A HREF="http://www.rvs.uni-hannover.de/people/voeckler/tune/EN/tune.html">
+Solaris 2.x - tuning your TCP/IP stack</A> contains some good technical
+information about tuning various Solaris TCP/IP parameters.
</UL>
<P><HR>
@@ -122,24 +118,73 @@ are finding slowdowns and lags are hurting performance.
SunOS 4.x
</A></H3>
-More information on tuning SOMAXCONN on SunOS can be found at
+More information on tuning SOMAXCONN on SunOS can be found at
<A HREF="http://www.islandnet.com/~mark/somaxconn.html">
-http://www.islandnet.com/~mark/somaxconn.html</A>.
+http://www.islandnet.com/~mark/somaxconn.html</A>.
+
+<P><HR>
+
+<H3><A NAME="SVR4">
+SVR4
+</A></H3>
+
+Some SVR4 versions waste three system calls on every
+<SAMP>gettimeofday()</SAMP> call. Depending on the syntactic
+form of the <SAMP>TZ</SAMP> environment variable, these
+systems have several different algorithms to determine the
+local time zone (presumably <EM>compatible</EM> with
+something). The following example uses the central european
+time zone to demonstrate this:
+<DL>
+ <DT><STRONG>TZ=:MET</STRONG>
+ <DD>This form delegates the knowledge of the time zone
+ information to an external compiled zoneinfo file
+ (&agrave; la BSD).<BR>
+ <STRONG>Caveat:</STRONG> Each time the gettimeofday()
+ function is called, the external zone info is read in
+ again (at least on some SVR4 systems). That results in
+ three wasted system calls with every apache request
+ served.<PRE>
+ open("/usr/lib/locale/TZ/MET", O_RDONLY) = 3
+ read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 7944) = 778
+ close(3) = 0</PRE>
+
+ <DT><STRONG>TZ=MET-1MDT,M3.5.0/02:00:00,M10.5.0/03:00:00</STRONG>
+ <DD>This syntax form (&agrave; la SYSV) contains all the
+ knowledge about time zone beginning and ending times in
+ its external representation. It has to be parsed each
+ time it is evaluated, resulting in a slight computing
+ overhead, but it requires no system call. Though the
+ table lookup &agrave; la BSD is the more sophisticated
+ technical solution, the bad SVR4 implementation makes
+ this the preferred syntax on systems which otherwise
+ access the external zone info file repeatedly.
+</DL>
+You should use the <SAMP>truss</SAMP> utility on a
+single-process apache server (started with the <SAMP>-X</SAMP>
+debugging switch) to determine whether your system can profit
+from the second form of the <SAMP>TZ</SAMP> environment
+variable. If it does, you could integrate the setting of the
+preferred <SAMP>TZ</SAMP> syntax into the httpd startup
+script, which is usually simply a copy of (or symbolic link
+to) the <SAMP>apachectl</SAMP> utility script, or into the
+system's <SAMP>/etc/TIMEZONE</SAMP> script.
<P><HR>
<H3>More welcome!</H3>
-If you have tips to contribute, send mail to <a
-href="mailto:brian@organic.com">brian@organic.com</a>
+If you have tips to contribute, send mail to <A
+HREF="mailto:apache@apache.org">apache@apache.org</A>
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
<A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A>
-</body></html>
+</BODY></HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html b/usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html
index 25a0a23de79..c63b4e8a639 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/rewriteguide.html
@@ -83,7 +83,7 @@ avoid problems.
<DD>
On some webservers there are more than one URL for a resource. Usually there
are canonical URLs (which should be actually used and distributed) and those
-which are just shortcuts, internal ones, etc. Independed which URL the user
+which are just shortcuts, internal ones, etc. Independent which URL the user
supplied with the request he should finally see the canonical one only.
<P>
diff --git a/usr.sbin/httpd/htdocs/manual/misc/security_tips.html b/usr.sbin/httpd/htdocs/manual/misc/security_tips.html
index c41bff857a6..0fb3932717e 100644
--- a/usr.sbin/httpd/htdocs/manual/misc/security_tips.html
+++ b/usr.sbin/httpd/htdocs/manual/misc/security_tips.html
@@ -137,7 +137,7 @@ In the server configuration file, put
&lt;Directory /&gt; <BR>
AllowOverride None <BR>
Options None <BR>
-allow from all <BR>
+Allow from all <BR>
&lt;/Directory&gt; <BR>
</CODE></BLOCKQUOTE>
@@ -170,7 +170,7 @@ around this, add the following block to your server's configuration:
</P>
<PRE>
&lt;Directory /&gt;
- Order deny,allow
+ Order Deny,Allow
Deny from all
&lt;/Directory&gt;
</PRE>
@@ -185,11 +185,11 @@ in those areas you wish. For example,
</P>
<PRE>
&lt;Directory /usr/users/*/public_html&gt;
- Order deny,allow
+ Order Deny,Allow
Allow from all
&lt;/Directory&gt;
&lt;Directory /usr/local/httpd&gt;
- Order deny,allow
+ Order Deny,Allow
Allow from all
&lt;/Directory&gt;
</PRE>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/core.html b/usr.sbin/httpd/htdocs/manual/mod/core.html
index 9826fec500e..1dd8bf35b69 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/core.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/core.html
@@ -76,7 +76,7 @@ always available.
<LI><A HREF="#options">Options</A>
<LI><A HREF="#pidfile">PidFile</A>
<LI><A HREF="#port">Port</A>
-<LI><A HREF="#require">require</A>
+<LI><A HREF="#require">Require</A>
<LI><A HREF="#resourceconfig">ResourceConfig</A>
<LI><A HREF="#rlimitcpu">RLimitCPU</A>
<LI><A HREF="#rlimitmem">RLimitMEM</A>
@@ -127,10 +127,18 @@ The server will read this file for more directives after reading the
relative to the <A HREF="#serverroot">ServerRoot</A>.
This feature can be disabled using:
<BLOCKQUOTE><CODE>AccessConfig /dev/null</CODE></BLOCKQUOTE>
+Or, on Win32 servers,
+<BLOCKQUOTE><CODE>AccessConfig nul</CODE></BLOCKQUOTE>
Historically, this file only contained
<A HREF="#directory">&lt;Directory&gt;</A> sections; in fact it can now
contain any server directive allowed in the <EM>server config</EM> context.
-<P><HR>
+
+<P>New in Apache 1.3.13 is the feature that if <CODE>AccessConfig</CODE>
+points to a directory, rather than a file, Apache will read all
+files in that directory, and any subdirectory, and parse those
+as configuration files.
+
+<P>See also <A HREF="#resourceconfig">ResourceConfig</A>.<P><HR>
<H2><A NAME="accessfilename">AccessFileName directive</A></H2>
<!--%plaintext &lt;?INDEX {\tt AccessFileName} directive&gt; -->
@@ -255,7 +263,7 @@ Allow use of the authorization directives
<A HREF="mod_auth.html#authgroupfile">AuthGroupFile</A>,
<A HREF="#authname">AuthName</A>, <A HREF="#authtype">AuthType</A>,
<A HREF="mod_auth.html#authuserfile">AuthUserFile</A>,
-<A HREF="#require">require</A>, <EM>etc.</EM>).
+<A HREF="#require">Require</A>, <EM>etc.</EM>).
<DT>FileInfo
<DD>
<!--%plaintext &lt;?INDEX {\tt FileInfo} override&gt; -->
@@ -284,7 +292,7 @@ Allow use of the directives controlling directory indexing
<DT>Limit
<DD>
<!--%plaintext &lt;?INDEX {\tt Limit} override&gt; -->
-Allow use of the directives controlling host access (allow, deny and order).
+Allow use of the directives controlling host access (Allow, Deny and Order).
<DT>Options
<DD>
<!--%plaintext &lt;?INDEX {\tt Options} override&gt; -->
@@ -317,7 +325,7 @@ This realm is given to the client so that the user knows which username and
password to send. <SAMP>AuthName</SAMP> takes a single argument;
if the realm name contains spaces, it must be enclosed in quotation marks.
It must be accompanied by <A HREF="#authtype">AuthType</A> and
-<A HREF="#require">require</A> directives, and directives such as
+<A HREF="#require">Require</A> directives, and directives such as
<A HREF="mod_auth.html#authuserfile">AuthUserFile</A> and
<A HREF="mod_auth.html#authgroupfile">AuthGroupFile</A> to work.<P><HR>
@@ -344,7 +352,7 @@ This directive selects the type of user authentication for a directory.
Only <CODE>Basic</CODE> and <CODE>Digest</CODE> are currently implemented.
<!--%plaintext &lt;?INDEX {\tt Basic} authentication scheme&gt; -->
It must be accompanied by <A HREF="#authname">AuthName</A> and
-<A HREF="#require">require</A> directives, and directives such as
+<A HREF="#require">Require</A> directives, and directives such as
<A HREF="mod_auth.html#authuserfile">AuthUserFile</A> and
<A HREF="mod_auth.html#authgroupfile">AuthGroupFile</A> to work.<P><HR>
@@ -832,12 +840,17 @@ ErrorDocument 403 "Sorry can't allow you access today
<P>Note that when you specify an <CODE>ErrorDocument</CODE> that
points to a remote URL (ie. anything with a method such as "http" in
-front of it) Apache will send a redirect to the client to tell it
-where to find the document, even if the document ends up being
-on the same server.. This has several implications, the
-most important being that <STRONG>if you use an "ErrorDocument 401"
-directive then it must refer to a local document.</STRONG> This results
-from the nature of the HTTP basic authentication scheme.
+front of it), Apache will send a redirect to the client to tell it
+where to find the document, even if the document ends up being on the
+same server. This has several implications, the most important being
+that the client will not receive the original error status code, but
+instead will receive a redirect status code. This in turn can confuse
+web robots and other clients which try to determine if a URL is valid
+using the status code. In addition, if you use a remote URL in an
+<code>ErrorDocument 401</code>, the client will not know to prompt the
+user for a password since it will not receive the 401 status
+code. Therefore, <STRONG>if you use an "ErrorDocument 401" directive
+then it must refer to a local document.</STRONG>
<P>See Also: <A HREF="../custom-error.html">documentation of customizable
responses.</A><P><HR>
@@ -1366,7 +1379,7 @@ PUT, and DELETE, leaving all other methods unprotected:
<BLOCKQUOTE><CODE>
&lt;Limit POST PUT DELETE&gt;<BR>
-require valid-user<BR>
+Require valid-user<BR>
&lt;/Limit&gt;</CODE></BLOCKQUOTE>
The method names listed can be one or more of: GET, POST, PUT, DELETE,
@@ -1768,9 +1781,9 @@ from browsers at foo.com, you might use:
<PRE>
&lt;Location /status&gt;
SetHandler server-status
- order deny,allow
- deny from all
- allow from .foo.com
+ Order Deny,Allow
+ Deny from all
+ Allow from .foo.com
&lt;/Location&gt;
</PRE>
@@ -2031,7 +2044,12 @@ memory leakage;
number of processes when the server load reduces.
</UL>
-<P>This directive has no effect on Win32.
+<P>However, on Win32, It is recommended that this be set to 0.
+If it is set to a non-zero value, when the request count is reached,
+the child process exits, and is respawned, at which time it re-reads
+the configuration files. This can lead to unexpected behavior if you
+have modified a configuration file, but are not expecting the changes
+to be applied yet. See also <A HREF="#threadsperchild">ThreadsPerChild</A>.
<P><STRONG>NOTE:</STRONG> For <EM>KeepAlive</EM> requests, only the first
request is counted towards this limit. In effect, it changes the
@@ -2136,9 +2154,15 @@ an IP address, <EM>e.g.</EM>
<BLOCKQUOTE><CODE>NameVirtualHost 111.22.33.44</CODE></BLOCKQUOTE>
-With the NameVirtualHost directive you specify the address to which your
-name-based virtual host names resolve. If you have multiple name-based
-hosts on multiple addresses, repeat the directive for each address.<P>
+With the NameVirtualHost directive you specify the IP address on which
+the server will receive requests for the name-based virtual hosts.
+This will usually be the address to which your name-based virtual host
+names resolve. In cases where a firewall or other proxy receives the
+requests and forwards them on a different IP address to the server,
+you must specify the IP address of the physical interface on the
+machine which will be servicing the requests. If you have multiple
+name-based hosts on multiple addresses, repeat the directive for each
+address.<P>
Note: the "main server" and any _default_ servers will <STRONG>never</STRONG>
be served for a request to a NameVirtualHost IP Address (unless for some
@@ -2150,6 +2174,14 @@ virtual hosts should be used, <EM>e.g.</EM>
<BLOCKQUOTE><CODE>NameVirtualHost 111.22.33.44:8080</CODE></BLOCKQUOTE>
+In Apache 1.3.13 and greater you can specify a <CODE>*</CODE> for the
+<EM>addr</EM>. This creates a wildcard NameVirtualHost which will
+match connections to any address that isn't configured with a more
+specific NameVirtualHost directive or
+<A HREF="#virtualhost">&lt;VirtualHost&gt;</A> section. This is useful
+if you want only name-based virtual hosts and you don't want to
+hard-code the server's IP address into the configuration file.<P>
+
<STRONG>See also:</STRONG>
<A HREF="../vhosts/index.html">Apache Virtual Host documentation</A>
<HR>
@@ -2376,12 +2408,12 @@ not to set <A HREF="#user">User</A> to root. If you run the server as
root whilst handling connections, your site may be open to a major security
attack.<P><HR>
-<H2><A NAME="require">require directive</A></H2>
-<!--%plaintext &lt;?INDEX {\tt require} directive&gt; -->
+<H2><A NAME="require">Require directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt Require} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> require <EM>entity-name entity entity...</EM><BR>
+><STRONG>Syntax:</STRONG></A> Require <EM>entity-name entity entity...</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -2398,11 +2430,11 @@ attack.<P><HR>
This directive selects which authenticated users can access a directory.
The allowed syntaxes are:
<UL>
-<LI>require user <EM>userid userid ...</EM><P>
+<LI>Require user <EM>userid userid ...</EM><P>
Only the named users can access the directory.<P>
-<LI>require group <EM>group-name group-name ...</EM><P>
+<LI>Require group <EM>group-name group-name ...</EM><P>
Only users in the named groups can access the directory.<P>
-<LI>require valid-user<P>
+<LI>Require valid-user<P>
All valid users can access the directory.
</UL>
<P>
@@ -2416,14 +2448,14 @@ AuthType Basic<BR>
AuthName "Restricted Directory"<BR>
AuthUserFile /web/users<BR>
AuthGroupFile /web/groups<BR>
-require group admin<BR>
+Require group admin<BR>
</CODE></BLOCKQUOTE>
Access controls which are applied in this way are effective for
<STRONG>all</STRONG> methods. <STRONG>This is what is normally
desired.</STRONG> If you wish to apply access controls only to
specific methods, while leaving other methods unprotected, then place
-the <CODE>require</CODE> statement into a <A
+the <CODE>Require</CODE> statement into a <A
HREF="#limit">&lt;Limit&gt;</A> section<P>
<P>See also <A HREF="#satisfy">Satisfy</A> and <A HREF="mod_access.html">mod_access</A>.
<HR>
@@ -2452,12 +2484,19 @@ httpd.conf file. <EM>Filename</EM> is relative to the
<A HREF="#serverroot">ServerRoot</A>.
This feature can be disabled using:
<BLOCKQUOTE><CODE>ResourceConfig /dev/null</CODE></BLOCKQUOTE>
+Or, on Win32 servers,
+<BLOCKQUOTE><CODE>ResourceConfig nul</CODE></BLOCKQUOTE>
Historically, this file contained most directives except for server
configuration directives and <A HREF="#directory">&lt;Directory&gt;</A>
sections; in fact it can now contain any server directive allowed in the
-<EM>server config</EM> context.<P>
+<EM>server config</EM> context.
-See also <A HREF="#accessconfig">AccessConfig</A>.<P><HR>
+<P>New in Apache 1.3.13 is the feature that if <CODE>ResourceConfig</CODE>
+points to a directory, rather than a file, Apache will read all
+files in that directory, and any subdirectory, and parse those
+as configuration files.
+
+<P>See also <A HREF="#accessconfig">AccessConfig</A>.<P><HR>
<H2><A NAME="rlimit">RLimitCPU</A> <A NAME="rlimitcpu">directive</A></H2>
<!--%plaintext &lt;?INDEX {\tt RLimitCPU} directive&gt; -->
@@ -2621,7 +2660,8 @@ See also <A HREF="#rlimitmem">RLimitMEM</A> or
><STRONG>Compatibility:</STRONG></A> Satisfy is only available in Apache 1.2
and later<P>
-Access policy if both allow and require used. The parameter can be
+Access policy if both <CODE>Allow</CODE> and <CODE>Require</CODE>
+used. The parameter can be
either <EM>'all'</EM> or <EM>'any'</EM>. This directive is only useful
if access to a particular area is being restricted by both
username/password <EM>and</EM> client host address. In this case the
@@ -2632,7 +2672,7 @@ they either pass the host restriction or enter a valid username and
password. This can be used to password restrict an area, but to let
clients from particular addresses in without prompting for a password.
<P>
-See also <A HREF="#require">require</A> and
+See also <A HREF="#require">Require</A> and
<A HREF="mod_access.html">mod_access</A>.
<P><HR>
@@ -2932,7 +2972,7 @@ referenced document.
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> ServerTokens <EM>Minimal|OS|Full</EM><BR>
+><STRONG>Syntax:</STRONG></A> ServerTokens <EM>Minimal|ProductOnly|OS|Full</EM><BR>
<A
HREF="directive-dict.html#Default"
REL="Help"
@@ -2949,7 +2989,8 @@ referenced document.
HREF="directive-dict.html#Compatibility"
REL="Help"
><STRONG>Compatibility:</STRONG></A> ServerTokens is only available
- in Apache 1.3 and later
+ in Apache 1.3 and later; the <code>ProductOnly</code> keyword is
+ only available in versions later than 1.3.12
<P>
This directive controls whether <SAMP>Server</SAMP> response header
@@ -2957,6 +2998,10 @@ field which is sent back to clients includes a description of the generic
OS-type of the server as well as information about compiled-in modules.
</P>
<DL>
+ <DT><CODE>ServerTokens Prod[uctOnly]</CODE>
+ </DT>
+ <DD>Server sends (<EM>e.g.</EM>): <SAMP>Server: Apache</SAMP>
+ </DD>
<DT><CODE>ServerTokens Min[imal]</CODE>
</DT>
<DD>Server sends (<EM>e.g.</EM>): <SAMP>Server: Apache/1.3.0</SAMP>
@@ -3324,13 +3369,28 @@ TransferLog logs/host.foo.com-access_log <BR>
Each VirtualHost must correspond to a different IP address, different port
number or a
-different host name for the server, in the latter case the server
+different host name for the server, in the former case the server
machine must be configured to accept IP packets for multiple
addresses. (If the machine does not have multiple network interfaces,
then this can be accomplished with the <CODE>ifconfig alias</CODE>
command (if your OS supports it), or with kernel patches like <A
HREF="../misc/vif-info.html">VIF</A> (for SunOS(TM) 4.1.x)).<P>
+You can specify more than one IP address. This is useful if a machine
+responds to the same name on two different interfaces. For example,
+if you have a VirtualHost that is available to hosts on an internal
+(intranet) as well as external (internet) network.
+
+Example:
+<BLOCKQUOTE>
+<CODE>
+&lt;VirtualHost 192.168.1.2 204.255.176.199&gt;<BR>
+DocumentRoot /www/docs/host.foo.com<BR>
+ServerName host.foo.com<BR>
+ServerAlias host<BR>
+&lt;/VirtualHost&gt;
+</CODE></BLOCKQUOTE>
+
The special name <CODE>_default_</CODE> can be specified in which case
this virtual host will match any IP address that is not explicitly listed
in another virtual host. In the absence of any _default_ virtual host
diff --git a/usr.sbin/httpd/htdocs/manual/mod/directives.html b/usr.sbin/httpd/htdocs/manual/mod/directives.html
index 699880307d0..1a5045d0f22 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/directives.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/directives.html
@@ -51,7 +51,7 @@ of the terms used in their descriptions available.
<LI><A HREF="mod_log_agent.html#agentlog">AgentLog</A>
<LI><A HREF="mod_alias.html#alias">Alias</A>
<LI><A HREF="mod_alias.html#aliasmatch">AliasMatch</A>
-<LI><A HREF="mod_access.html#allow">allow</A>
+<LI><A HREF="mod_access.html#allow">Allow</A>
<LI><A HREF="mod_proxy.html#allowconnect">AllowCONNECT</A>
<LI><A HREF="core.html#allowoverride">AllowOverride</A>
<LI><A HREF="mod_auth_anon.html#anonymous">Anonymous</A>
@@ -100,7 +100,7 @@ of the terms used in their descriptions available.
<LI><A HREF="mod_mime.html#defaultlanguage">DefaultLanguage</A>
<LI><A HREF="core.html#defaulttype">DefaultType</A>
<LI><A HREF="mod_define.html#define">Define</A>
-<LI><A HREF="mod_access.html#deny">deny</A>
+<LI><A HREF="mod_access.html#deny">Deny</A>
<LI><A HREF="core.html#directory">&lt;Directory&gt;</A>
<LI><A HREF="core.html#directorymatch">&lt;DirectoryMatch&gt;</A>
<LI><A HREF="mod_dir.html#directoryindex">DirectoryIndex</A>
@@ -129,6 +129,11 @@ of the terms used in their descriptions available.
<LI><A HREF="core.html#include">Include</A>
<LI><A HREF="mod_autoindex.html#indexignore">IndexIgnore</A>
<LI><A HREF="mod_autoindex.html#indexoptions">IndexOptions</A>
+<LI><A HREF="mod_autoindex.html#indexorderdefault">IndexOrderDefault</A>
+<LI><A HREF="mod_isapi.html#isapireadaheadbuffer">ISAPIReadAheadBuffer</A>
+<LI><A HREF="mod_isapi.html#isapilognotsupported">ISAPILogNotSupported</A>
+<LI><A HREF="mod_isapi.html#isapiappendlogtoerrors">ISAPIAppendLogToErrors</A>
+<LI><A HREF="mod_isapi.html#isapiappendlogtoquery">ISAPIAppendLogToQuery</A>
<LI><A HREF="core.html#keepalive">KeepAlive</A>
<LI><A HREF="core.html#keepalivetimeout">KeepAliveTimeout</A>
<LI><A HREF="mod_negotiation.html#languagepriority">LanguagePriority</A>
@@ -160,7 +165,7 @@ of the terms used in their descriptions available.
<LI><A HREF="core.html#namevirtualhost">NameVirtualHost</A>
<LI><A HREF="mod_proxy.html#nocache">NoCache</A>
<LI><A HREF="core.html#options">Options</A>
-<LI><A HREF="mod_access.html#order">order</A>
+<LI><A HREF="mod_access.html#order">Order</A>
<LI><A HREF="mod_env.html#passenv">PassEnv</A>
<LI><A HREF="core.html#pidfile">PidFile</A>
<LI><A HREF="core.html#port">Port</A>
@@ -179,8 +184,10 @@ of the terms used in their descriptions available.
<LI><A HREF="mod_alias.html#redirecttemp">RedirectTemp</A>
<LI><A HREF="mod_log_referer.html#refererignore">RefererIgnore</A>
<LI><A HREF="mod_log_referer.html#refererlog">RefererLog</A>
-<LI><A HREF="mod_mime#removehandler">RemoveHandler</A>
-<LI><A HREF="core.html#require">require</A>
+<LI><A HREF="mod_mime.html#removeencoding">RemoveEncoding</A>
+<LI><A HREF="mod_mime.html#removehandler">RemoveHandler</A>
+<LI><A HREF="mod_mime.html#removetype">RemoveType</A>
+<LI><A HREF="core.html#require">Require</A>
<LI><A HREF="core.html#resourceconfig">ResourceConfig</A>
<LI><A HREF="mod_rewrite.html#RewriteBase">RewriteBase</A>
<LI><A HREF="mod_rewrite.html#RewriteCond">RewriteCond</A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/index-bytype.html b/usr.sbin/httpd/htdocs/manual/mod/index-bytype.html
new file mode 100644
index 00000000000..7e5297ef0e0
--- /dev/null
+++ b/usr.sbin/httpd/htdocs/manual/mod/index-bytype.html
@@ -0,0 +1,208 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+<TITLE>Apache modules</TITLE>
+</HEAD>
+
+<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+<BODY
+ BGCOLOR="#FFFFFF"
+ TEXT="#000000"
+ LINK="#0000FF"
+ VLINK="#000080"
+ ALINK="#FF0000"
+>
+<DIV ALIGN="CENTER">
+ <IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
+ <H3>
+ Apache HTTP Server Version 1.3
+ </H3>
+</DIV>
+
+<H1 ALIGN="CENTER">Apache modules</H1>
+
+<P>
+Below is a list of all of the modules that come as part of the Apache
+distribution. See also the list of modules <A
+HREF="index.html">sorted alphabetically</A> and the complete
+alphabetical list of <A HREF="directives.html" >all Apache
+directives</A>.
+For modules that are not part of the Apache distribution, please see
+<A HREF="http://modules.apache.org/">http://modules.apache.org</a>.
+</P>
+
+<H2>Core</H2>
+
+<DL>
+<DT><A HREF="core.html">Core</A>
+<DD>Core Apache features.
+</DL>
+
+<H2>Environment Creation</H2>
+
+<DL>
+<DT><A HREF="mod_env.html">mod_env</A>
+<DD>Passing of environments to CGI scripts
+<DT><A HREF="mod_setenvif.html">mod_setenvif</A> Apache 1.3 and up
+<DD>Set environment variables based on client information
+<DT><A HREF="mod_unique_id.html">mod_unique_id</A> Apache 1.3 and up
+<DD>Generate unique request identifier for every request
+</DL>
+
+<H2>Content Type Decisions</H2>
+
+<DL>
+<DT><A HREF="mod_mime.html">mod_mime</A>
+<DD>Determining document types using file extensions.
+<DT><A HREF="mod_mime_magic.html">mod_mime_magic</A>
+<DD>Determining document types using "magic numbers".
+<DT><A HREF="mod_negotiation.html">mod_negotiation</A>
+<DD>Content negotiation.
+</DL>
+
+<H2>URL Mapping</H2>
+
+<DL>
+<DT><A HREF="mod_alias.html">mod_alias</A>
+<DD>Mapping different parts of the host filesystem in the document tree,
+ and URL redirection.
+<DT><A HREF="mod_rewrite.html">mod_rewrite</A> Apache 1.2 and up
+<DD>Powerful URI-to-filename mapping using regular expressions
+<DT><A HREF="mod_userdir.html">mod_userdir</A>
+<DD>User home directories.
+<DT><A HREF="mod_speling.html">mod_speling</A> Apache 1.3 and up
+<DD>Automatically correct minor typos in URLs
+<DT><A HREF="mod_vhost_alias.html">mod_vhost_alias</A> Apache 1.3.7 and up
+<DD>Support for dynamically configured mass virtual hosting
+</DL>
+
+<H2>Directory Handling</H2>
+
+<DL>
+<DT><A HREF="mod_dir.html">mod_dir</A>
+<DD>Basic directory handling.
+<DT><A HREF="mod_autoindex.html">mod_autoindex</A>
+<DD>Automatic directory listings.
+</DL>
+
+<H2>Access Control</H2>
+
+<DL>
+<DT><A HREF="mod_access.html">mod_access</A>
+<DD>Access control based on client hostname or IP address.
+<DT><A HREF="mod_auth.html">mod_auth</A>
+<DD>User authentication using text files.
+<DT><A HREF="mod_auth_dbm.html">mod_auth_dbm</A>
+<DD>User authentication using DBM files.
+<DT><A HREF="mod_auth_db.html">mod_auth_db</A>
+<DD>User authentication using Berkeley DB files.
+<DT><A HREF="mod_auth_anon.html">mod_auth_anon</A> Apache 1.1 and up
+<DD>Anonymous user access to authenticated areas.
+<DT><A HREF="mod_auth_digest.html">mod_auth_digest</A> Apache 1.3.8 and up
+<DD>MD5 authentication
+<DT><A HREF="mod_digest.html">mod_digest</A> Apache 1.1 and up
+<DD>MD5 authentication
+
+</DL>
+
+<H2>HTTP Response</H2>
+
+<DL>
+<DT><A HREF="mod_headers.html">mod_headers</A> Apache 1.2 and up
+<DD>Add arbitrary HTTP headers to resources
+<DT><A HREF="mod_cern_meta.html">mod_cern_meta</A> Apache 1.1 and up
+<DD>Support for HTTP header metafiles.
+<DT><A HREF="mod_expires.html">mod_expires</A> Apache 1.2 and up
+<DD>Apply Expires: headers to resources
+<DT><A HREF="mod_asis.html">mod_asis</A>
+<DD>Sending files which contain their own HTTP headers.
+</DL>
+
+<H2>Dynamic Content</H2>
+
+<DL>
+<DT><A HREF="mod_include.html">mod_include</A>
+<DD>Server-parsed documents.
+<DT><A HREF="mod_cgi.html">mod_cgi</A>
+<DD>Invoking CGI scripts.
+<DT><A HREF="mod_actions.html">mod_actions</A> Apache 1.1 and up
+<DD>Executing CGI scripts based on media type or request method.
+<DT><A HREF="mod_isapi.html">mod_isapi</A> WIN32 only
+<DD>Windows ISAPI Extension support
+</DL>
+
+<H2>Internal Content Handlers</H2>
+
+<DL>
+<DT><A HREF="mod_status.html">mod_status</A> Apache 1.1 and up
+<DD>Server status display
+<DT><A HREF="mod_info.html">mod_info</A> Apache 1.1 and up
+<DD>Server configuration information
+</DL>
+
+<H2>Logging</H2>
+
+<DL>
+<DT><A HREF="mod_log_config.html">mod_log_config</A>
+<DD>User-configurable logging replacement for mod_log_common.
+<DT><A HREF="mod_log_agent.html">mod_log_agent</A>
+<DD>Logging of User Agents.
+<DT><A HREF="mod_log_referer.html">mod_log_referer</A>
+<DD>Logging of document references.
+<DT><A HREF="mod_usertrack.html">mod_usertrack</A> Apache 1.2 and up
+<DD>User tracking using Cookies (replacement for mod_cookies.c)
+</DL>
+
+<H2>Miscellaneous</H2>
+
+<DL>
+<DT><A HREF="mod_imap.html">mod_imap</A> Apache 1.1 and up
+<DD>The imagemap file handler.
+<DT><A HREF="mod_proxy.html">mod_proxy</A> Apache 1.1 and up
+<DD>Caching proxy abilities
+<DT><A HREF="mod_so.html">mod_so</A> Apache 1.3 and up
+<DD>Experimental support for loading modules (DLLs on Windows) at runtime
+<DT><A HREF="mod_mmap_static.html">mod_mmap_static</A> Apache 1.3 and up
+<DD>Mapping files into memory for faster serving.
+<DT><A HREF="mod_ssl/index.html">mod_ssl</A> Apache 1.3 with mod_ssl applied
+<DD>Apache SSL interface to OpenSSL
+</DL>
+
+
+<H2>Development</H2>
+
+<DL>
+<DT><A HREF="mod_example.html">mod_example</A> Apache 1.2 and up
+<DD>Demonstrates Apache API
+</DL>
+
+<H2>Obsolete</H2>
+
+<DL>
+
+<DT><A HREF="mod_browser.html">mod_browser</A> Apache 1.2.* only
+<DD>Set environment variables based on User-Agent strings. Replaced by
+ mod_setenvif in Apache 1.3 and up
+<DT><A HREF="mod_cookies.html">mod_cookies</A> up to Apache 1.1.1
+<DD>Support for Netscape-like cookies. Replaced in Apache 1.2 by
+mod_usertrack
+<DT><A HREF="mod_dld.html">mod_dld</A> Apache 1.2.* and earlier
+<DD>Start-time linking with the GNU libdld. Replaced in Apache 1.3 by mod_so
+<DT><A HREF="mod_dll.html">mod_dll</A> Apache 1.3b1 to 1.3b5 only
+<DD>Replaced in 1.3b6 by mod_so
+<DT><A HREF="mod_log_common.html">mod_log_common</A> up to Apache 1.1.1
+<DD>Standard logging in the Common Logfile Format. Replaced by the
+mod_log_config module in Apache 1.2 and up
+</DL>
+
+<HR>
+
+<H3 ALIGN="CENTER">
+ Apache HTTP Server Version 1.3
+</H3>
+
+<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
+<A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A>
+
+</BODY>
+</HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/index.html b/usr.sbin/httpd/htdocs/manual/mod/index.html
index 193468b22f7..38ee8100311 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/index.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/index.html
@@ -22,40 +22,43 @@
<H1 ALIGN="CENTER">Apache modules</H1>
<P>
-Below is a list of all of the modules that come as part of the
-Apache distribution. See also the complete alphabetical list of
-<A
- HREF="directives.html"
->all Apache directives</A>.
+Below is a list of all of the modules that come as part of the Apache
+distribution. See also the list of modules <A
+HREF="index-bytype.html">sorted by type</A> and the complete
+alphabetical list of <A HREF="directives.html" >all Apache
+directives</A>. For Apache modules that are not part of the Apache
+distribution, please see
+<A HREF="http://modules.apache.org/">http://modules.apache.org</A>
</P>
<DL>
<DT><A HREF="core.html">Core</A>
<DD>Core Apache features.
<DT><A HREF="mod_access.html">mod_access</A>
-<DD>Host based access control.
-<DT><A HREF="mod_actions.html">mod_actions</A> Apache 1.1 and later.
-<DD>Filetype/method-based script execution
+<DD>Access control based on client hostname or IP address.
+<DT><A HREF="mod_actions.html">mod_actions</A> Apache 1.1 and up
+<DD>Executing CGI scripts based on media type or request method.
<DT><A HREF="mod_alias.html">mod_alias</A>
-<DD>Aliases and redirects.
+<DD>Mapping different parts of the host filesystem in the document tree,
+ and URL redirection.
<DT><A HREF="mod_asis.html">mod_asis</A>
-<DD>The .asis file handler.
+<DD>Sending files which contain their own HTTP headers.
<DT><A HREF="mod_auth.html">mod_auth</A>
<DD>User authentication using text files.
-<DT><A HREF="mod_auth_anon.html">mod_auth_anon</A>
-<DD>Anonymous user authentication, FTP-style.
-<DT><A HREF="mod_auth_db.html">mod_auth_db</A>
+<DT><A HREF="mod_auth_anon.html">mod_auth_anon</A> Apache 1.1 and up
+<DD>Anonymous user access to authenticated areas.
+<DT><A HREF="mod_auth_db.html">mod_auth_db</A> Apache 1.1 and up
<DD>User authentication using Berkeley DB files.
<DT><A HREF="mod_auth_dbm.html">mod_auth_dbm</A>
<DD>User authentication using DBM files.
-<DT><A HREF="mod_auth_digest.html">mod_auth_digest</A>
+<DT><A HREF="mod_auth_digest.html">mod_auth_digest</A> Apache 1.3.8 and up
<DD>MD5 authentication (experimental)
<DT><A HREF="mod_autoindex.html">mod_autoindex</A>
<DD>Automatic directory listings.
<DT><A HREF="mod_browser.html">mod_browser</A> Apache 1.2.* only
<DD>Set environment variables based on User-Agent strings. Replaced by
mod_setenvif in Apache 1.3 and up
-<DT><A HREF="mod_cern_meta.html">mod_cern_meta</A>
+<DT><A HREF="mod_cern_meta.html">mod_cern_meta</A> Apache 1.1 and up
<DD>Support for HTTP header metafiles.
<DT><A HREF="mod_cgi.html">mod_cgi</A>
<DD>Invoking CGI scripts.
@@ -64,7 +67,7 @@ Apache distribution. See also the complete alphabetical list of
mod_usertrack
<DT><A HREF="mod_define.html">mod_define</A>
<DD>Variable Definition for Arbitrary Directives
-<DT><A HREF="mod_digest.html">mod_digest</A>
+<DT><A HREF="mod_digest.html">mod_digest</A> Apache 1.1 and up
<DD>MD5 authentication
<DT><A HREF="mod_dir.html">mod_dir</A>
<DD>Basic directory handling.
@@ -72,7 +75,7 @@ mod_usertrack
<DD>Start-time linking with the GNU libdld. Replaced in Apache 1.3 by mod_so
<DT><A HREF="mod_dll.html">mod_dll</A> Apache 1.3b1 to 1.3b5 only
<DD>Replaced in 1.3b6 by mod_so
-<DT><A HREF="mod_env.html">mod_env</A>
+<DT><A HREF="mod_env.html">mod_env</A> Apache 1.1 and up
<DD>Passing of environments to CGI scripts
<DT><A HREF="mod_example.html">mod_example</A> Apache 1.2 and up
<DD>Demonstrates Apache API
@@ -80,13 +83,13 @@ mod_usertrack
<DD>Apply Expires: headers to resources
<DT><A HREF="mod_headers.html">mod_headers</A> Apache 1.2 and up
<DD>Add arbitrary HTTP headers to resources
-<DT><A HREF="mod_imap.html">mod_imap</A>
+<DT><A HREF="mod_imap.html">mod_imap</A> Apache 1.1 and up
<DD>The imagemap file handler.
<DT><A HREF="mod_include.html">mod_include</A>
<DD>Server-parsed documents.
-<DT><A HREF="mod_info.html">mod_info</A>
+<DT><A HREF="mod_info.html">mod_info</A> Apache 1.1 and up
<DD>Server configuration information
-<DT><A HREF="mod_isapi.html">mod_isapi</A>
+<DT><A HREF="mod_isapi.html">mod_isapi</A> WIN32 only
<DD>Windows ISAPI Extension support
<DT><A HREF="mod_log_agent.html">mod_log_agent</A>
<DD>Logging of User Agents.
@@ -101,11 +104,11 @@ mod_log_config module in Apache 1.2 and up
<DD>Determining document types using file extensions.
<DT><A HREF="mod_mime_magic.html">mod_mime_magic</A>
<DD>Determining document types using "magic numbers".
-<DT><A HREF="mod_mmap_static.html">mod_mmap_static</A>
+<DT><A HREF="mod_mmap_static.html">mod_mmap_static</A> Apache 1.3 and up
<DD>Mapping files into memory for faster serving.
<DT><A HREF="mod_negotiation.html">mod_negotiation</A>
<DD>Content negotiation.
-<DT><A HREF="mod_proxy.html">mod_proxy</A>
+<DT><A HREF="mod_proxy.html">mod_proxy</A> Apache 1.1 and up
<DD>Caching proxy abilities
<DT><A HREF="mod_rewrite.html">mod_rewrite</A> Apache 1.2 and up
<DD>Powerful URI-to-filename mapping using regular expressions
@@ -117,7 +120,7 @@ mod_log_config module in Apache 1.2 and up
<DD>Automatically correct minor typos in URLs
<DT><A HREF="mod_ssl/index.html">mod_ssl</A> Apache 1.3 with mod_ssl applied
<DD>Apache SSL interface to OpenSSL
-<DT><A HREF="mod_status.html">mod_status</A>
+<DT><A HREF="mod_status.html">mod_status</A> Apache 1.1 and up
<DD>Server status display
<DT><A HREF="mod_userdir.html">mod_userdir</A>
<DD>User home directories.
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_access.html b/usr.sbin/httpd/htdocs/manual/mod/mod_access.html
index ac96041ec5d..babc2923db2 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_access.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_access.html
@@ -22,32 +22,50 @@
<H1 ALIGN="CENTER">Module mod_access</H1>
<P>
-This module is contained in the <CODE>mod_access.c</CODE> file, and
-is compiled in by default. It provides access control based on client
-hostname or IP address.
+This module provides access control based on client hostname or IP
+address.
</P>
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_access.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> access_module
+</P>
+
+
+<H2>Directives</H2>
+
<UL>
-<LI><A HREF="#allow">allow</A>
-<LI><A HREF="#allowfromenv">allow from env=</A>
-<LI><A HREF="#deny">deny</A>
-<LI><A HREF="#denyfromenv">deny from env=</A>
-<LI><A HREF="#order">order</A>
+<LI><A HREF="#allow">Allow</A>
+<LI><A HREF="#allowfromenv">Allow from env=</A>
+<LI><A HREF="#deny">Deny</A>
+<LI><A HREF="#denyfromenv">Deny from env=</A>
+<LI><A HREF="#order">Order</A>
</UL>
-<DL>
-<DD>See also <A HREF="core.html#satisfy">Satisfy</A>
- and <A HREF="core.html#require">require</A>.
-</DL>
+
+<P>See also <A HREF="core.html#satisfy">Satisfy</A>
+ and <A HREF="core.html#require">Require</A>.
+
<HR>
-<H2><A NAME="allow">allow directive</A></H2>
+<H2><A NAME="allow">Allow directive</A></H2>
<P>
-<!--%plaintext &lt;?INDEX {\tt allow} directive&gt; -->
+<!--%plaintext &lt;?INDEX {\tt Allow} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> allow from <EM>host host ...</EM><BR>
+><STRONG>Syntax:</STRONG></A> Allow from <EM>host host ...</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -66,7 +84,7 @@ hostname or IP address.
><STRONG>Module:</STRONG></A> mod_access
</P>
<P>
-The allow directive affects which hosts can access a given directory.
+The Allow directive affects which hosts can access a given directory.
<EM>Host</EM> is one of the following:
</P>
<DL>
@@ -88,7 +106,7 @@ The allow directive affects which hosts can access a given directory.
<P>
Example:
</P>
-<BLOCKQUOTE><CODE>allow from .ncsa.uiuc.edu</CODE></BLOCKQUOTE>
+<BLOCKQUOTE><CODE>Allow from .ncsa.uiuc.edu</CODE></BLOCKQUOTE>
<P>
All hosts in the specified domain are allowed access.
</P>
@@ -97,13 +115,17 @@ Note that this compares whole components; <CODE>bar.edu</CODE>
would not match <CODE>foobar.edu</CODE>.
</P>
<P>
-See also <A HREF="#deny">deny</A>, <A HREF="#order">order</A>, and
-<A HREF="mod_browser.html#browsermatch">BrowserMatch</A>.
+See also <A HREF="#allowfromenv">Allow from env=</A>, <A
+HREF="#deny">Deny</A> and <A HREF="#order">Order</A>.
</P>
+<HR>
+
+<H2><A NAME="allowfromenv">Allow from env= directive</A></H2>
+
<P>
-<A NAME="allowfromenv"><STRONG>Syntax:</STRONG> allow from
- env=<EM>variablename</EM></A><BR>
+<STRONG>Syntax:</STRONG> Allow from
+ env=<EM>variablename</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -126,35 +148,35 @@ See also <A HREF="#deny">deny</A>, <A HREF="#order">order</A>, and
><STRONG>Compatibility:</STRONG></A> Apache 1.2 and above
</P>
<P>
-The allow from env directive controls access to a directory by the
+The <CODE>Allow from env</CODE> directive controls access to a directory by the
existence (or non-existence) of an environment variable.
</P>
<P>
Example:
</P>
<BLOCKQUOTE><PRE>
-BrowserMatch ^KnockKnock/2.0 let_me_in
+SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in
&lt;Directory /docroot&gt;
- order deny,allow
- deny from all
- allow from env=let_me_in
+ Order Deny,Allow
+ Deny from all
+ Allow from env=let_me_in
&lt;/Directory&gt;
</PRE></BLOCKQUOTE>
In this case browsers with the user-agent string <TT>KnockKnock/2.0</TT> will
be allowed access, and all others will be denied.
<P>
-See also <A HREF="#denyfromenv">deny from env</A>
-and <A HREF="#order">order</A>.
+See also <A HREF="#denyfromenv">Deny from env=</A>, <A HREF="#order">Order</A>
+and <A HREF="mod_setenvif.html#SetEnvIf">SetEnvIf</A>.
</P>
<HR>
-<H2><A NAME="deny">deny directive</A></H2>
+<H2><A NAME="deny">Deny directive</A></H2>
<P>
-<!--%plaintext &lt;?INDEX {\tt deny} directive&gt; -->
+<!--%plaintext &lt;?INDEX {\tt Deny} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> deny from <EM>host host ...</EM><BR>
+><STRONG>Syntax:</STRONG></A> Deny from <EM>host host ...</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -173,7 +195,7 @@ and <A HREF="#order">order</A>.
><STRONG>Module:</STRONG></A> mod_access
</P>
<P>
-The deny directive affects which hosts can access a given directory.
+The <CODE>Deny</CODE> directive affects which hosts can access a given directory.
<EM>Host</EM> is one of the following:
</P>
<DL>
@@ -195,7 +217,7 @@ The deny directive affects which hosts can access a given directory.
<P>
Example:
</P>
-<BLOCKQUOTE><CODE>deny from 16</CODE></BLOCKQUOTE>
+<BLOCKQUOTE><CODE>Deny from 16</CODE></BLOCKQUOTE>
<P>
All hosts in the specified network are denied access.
</P>
@@ -204,12 +226,17 @@ Note that this compares whole components; <CODE>bar.edu</CODE>
would not match <CODE>foobar.edu</CODE>.
</P>
<P>
-See also <A HREF="#allow">allow</A> and <A HREF="#order">order</A>.
+See also <A HREF="#denyfromenv">Deny from env=</A>, <A
+HREF="#allow">Allow</A> and <A HREF="#order">Order</A>.
</P>
+<HR>
+
+<H2><A NAME="denfromenv">Deny from env= directive</A></H2>
+
<P>
-<A NAME="denyfromenv"><STRONG>Syntax:</STRONG> deny from
- env=<EM>variablename</EM></A><BR>
+<STRONG>Syntax:</STRONG> Deny from
+ env=<EM>variablename</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -232,40 +259,41 @@ See also <A HREF="#allow">allow</A> and <A HREF="#order">order</A>.
><STRONG>Compatibility:</STRONG></A> Apache 1.2 and above
</P>
<P>
-The deny from env directive controls access to a directory by the
+The <CODE>Deny from env</CODE> directive controls access to a directory by the
existence (or non-existence) of an environment variable.
</P>
<P>
Example:
</P>
<BLOCKQUOTE><PRE>
-BrowserMatch ^BadRobot/0.9 go_away
+SetEnvIf User-Agent ^BadRobot/0.9 go_away
&lt;Directory /docroot&gt;
- order allow,deny
- allow from all
- deny from env=go_away
+ Order Allow,Deny
+ Allow from all
+ Deny from env=go_away
&lt;/Directory&gt;
</PRE></BLOCKQUOTE>
In this case browsers with the user-agent string <TT>BadRobot/0.9</TT> will
be denied access, and all others will be allowed.
<P>
-See also <A HREF="#allowfromenv">allow from env</A>
-and <A HREF="#order">order</A>.
+See also <A HREF="#allowfromenv">Allow from env=</A>, <A
+HREF="#order">Order</A> and <A
+HREF="mod_setenvif.html#SetEnvIf">SetEnvIf</A>.
</P>
<HR>
-<H2><A NAME="order">order directive</A></H2>
+<H2><A NAME="order">Order directive</A></H2>
<P>
-<!--%plaintext &lt;?INDEX {\tt order} directive&gt; -->
+<!--%plaintext &lt;?INDEX {\tt Order} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> order <EM>ordering</EM><BR>
+><STRONG>Syntax:</STRONG></A> Order <EM>ordering</EM><BR>
<A
HREF="directive-dict.html#Default"
REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>order deny,allow</CODE><BR>
+><STRONG>Default:</STRONG></A> <CODE>Order Deny,Allow</CODE><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -284,39 +312,44 @@ and <A HREF="#order">order</A>.
><STRONG>Module:</STRONG></A> mod_access
</P>
<P>
-The order directive controls the order in which <A HREF="#allow">allow</A> and
-<A HREF="#deny">deny</A> directives are evaluated. <EM>Ordering</EM> is one
+The <CODE>Order</CODE> directive controls the order in which
+<A HREF="#allow">Allow</A> and <A HREF="#deny">Deny</A> directives are
+evaluated. <EM>Ordering</EM> is one
of
</P>
<DL>
-<DT>deny,allow
-<DD>the deny directives are evaluated before the allow directives. (The
-initial state is OK.)
-<DT>allow,deny
-<DD>the allow directives are evaluated before the deny directives. (The
-initial state is FORBIDDEN.)
-<DT>mutual-failure
-<DD>Only those hosts which appear on the allow list and do not appear
-on the deny list are granted access. (The initial state is irrelevant.)
+<DT>Deny,Allow
+<DD>the <CODE>Deny</CODE> directives are evaluated before the <CODE>Allow</CODE>
+directives. (The initial state is OK.)
+<DT>Allow,Deny
+<DD>the <CODE>Allow</CODE> directives are evaluated before the <CODE>Deny</CODE>
+directives. (The initial state is FORBIDDEN.)
+<DT>Mutual-failure
+<DD>Only those hosts which appear on the <CODE>Allow</CODE> list and do not
+appear on the <CODE>Deny</CODE> list are granted access. (The initial state is
+irrelevant.) This ordering has the same effect as <code>Order Allow,Deny</code>
+and is deprecated in favor of that configuration.
</DL>
<P>
Keywords may only be separated by a comma; no whitespace is allowed between
them.
-<STRONG>Note that in all cases every <CODE>allow</CODE> and <CODE>deny</CODE>
+<STRONG>Note that in all cases every <CODE>Allow</CODE> and <CODE>Deny</CODE>
statement is evaluated, there is no &quot;short-circuiting&quot;.</STRONG>
</P>
<P>
Example:
</P>
<BLOCKQUOTE><CODE>
- order deny,allow<BR>
- deny from all<BR>
- allow from .ncsa.uiuc.edu<BR>
+ Order Deny,Allow<BR>
+ Deny from all<BR>
+ Allow from .ncsa.uiuc.edu<BR>
</CODE></BLOCKQUOTE>
<P>
Hosts in the ncsa.uiuc.edu domain are allowed access; all other hosts are
denied access.
</P>
+
+<P>See also: <A HREF="#deny">Deny</A> and <A HREF="#allow">Allow</A>.
<HR>
<H3 ALIGN="CENTER">
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_actions.html b/usr.sbin/httpd/htdocs/manual/mod/mod_actions.html
index 9b02aa5e382..7056fc62193 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_actions.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_actions.html
@@ -20,22 +20,46 @@
</DIV>
<H1 ALIGN="CENTER">Module mod_actions</H1>
-<P>
-This module is contained in the <CODE>mod_actions.c</CODE> file, and
-is compiled in by default. It provides for
-executing CGI scripts based on media type or request method. It is not
-present in versions prior to Apache 1.1.
+
+
+<p>This module provides for executing CGI scripts based on media type or
+request method.
+</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_actions.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> actions_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
</P>
+
<H2>Summary</H2>
<P>
-This module lets you run CGI scripts whenever a file of a certain type
-is requested. This makes it much easier to execute scripts that
+This module has two directives. The Action directive lets you run CGI
+scripts whenever a file of a certain type is requested. The Script
+directive lets you run CGI scripts whenever a particular method is
+used in a request. This makes it much easier to execute scripts that
process files.
</P>
+
<H2>Directives</H2>
<UL>
-<LI><A HREF="#action">Action</A>
-<LI><A HREF="#script">Script</A>
+<LI><A HREF="#action">Action</A></LI>
+<LI><A HREF="#script">Script</A></LI>
</UL>
<HR>
@@ -129,7 +153,9 @@ will proceed normally.
Examples:
</P>
<PRE>
- Script GET /cgi-bin/search #<EM>e.g.</EM> for &lt;ISINDEX&gt;-style searching
+ # For &lt;ISINDEX&gt;-style searching
+ Script GET /cgi-bin/search
+ # A CGI PUT handler
Script PUT /~bob/put.cgi
</PRE>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_alias.html b/usr.sbin/httpd/htdocs/manual/mod/mod_alias.html
index a30b9a0dedf..5ab919643d0 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_alias.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_alias.html
@@ -22,11 +22,47 @@
<H1 ALIGN="CENTER">Module mod_alias</H1>
<P>
-This module is contained in the <CODE>mod_alias.c</CODE> file, and
-is compiled in by default. It provides for mapping different parts of the
-host filesystem in the the document tree, and for URL redirection.
+This module provides for mapping different parts of the
+host filesystem in the document tree, and for URL redirection.
</P>
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_alias.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> alias_module
+</P>
+
+<H2>Summary</H2>
+
+<P>The directives contained in this module allow for manipulation and
+control of URLs as requests arrive at the server. The
+<CODE>Alias</CODE> and <CODE>ScriptAlias</CODE> directives are used to
+map between URLs and filesystem paths. This allows for content which
+is not directly under the <A
+HREF="core.html#documentroot"><CODE>DocumentRoot</CODE></A> to be
+served as part of the web document tree. The <CODE>ScriptAlias</CODE>
+directive has the additional effect of marking the target directory as
+containing only CGI scripts.
+
+<P>The <CODE>Redirect</CODE> directives are used to instruct clients
+to make a new request with a different URL. They are often used
+when a resource has moved to a new location.
+
+<P>A more powerful and flexible set of directives for manipulating
+URLs is contained in the <A
+HREF="mod_rewrite.html"><CODE>mod_rewrite</CODE></A> module.
+
+
<H2>Directives</H2>
<UL>
<LI><A HREF="#alias">Alias</A>
@@ -189,7 +225,7 @@ when used with .htaccess files or inside of &lt;Directory&gt; sections.
<P>
If no <EM>status</EM> argument is given, the redirect will be
&quot;temporary&quot; (HTTP status 302). This indicates to the client that the
-resources is has moved temporarily. The <EM>status</EM>
+resource has moved temporarily. The <EM>status</EM>
argument can be used to return other HTTP status codes:
<P>
<DL>
@@ -288,7 +324,7 @@ one might use:
<A
HREF="directive-dict.html#Compatibility"
REL="Help"
-><STRONG>Compatibility:</STRONG></A> This directive is only available in 1.2
+><STRONG>Compatibility:</STRONG></A> This directive is only available in Apache 1.2 and later
</P>
<P>
This directive makes the client know that the Redirect is only
@@ -324,7 +360,7 @@ temp</CODE>.
<A
HREF="directive-dict.html#Compatibility"
REL="Help"
-><STRONG>Compatibility:</STRONG></A> This directive is only available in 1.2
+><STRONG>Compatibility:</STRONG></A> This directive is only available in Apache 1.2 and later
</P>
<P>
This directive makes the client know that the Redirect is permanent
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_asis.html b/usr.sbin/httpd/htdocs/manual/mod/mod_asis.html
index 59a164c7b4b..5da88a32a0b 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_asis.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_asis.html
@@ -15,63 +15,87 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<H1 ALIGN="CENTER">Module mod_asis</h1>
-
-This module is contained in the <code>mod_asis.c</code> file, and
-is compiled in by default. It provides for <code>.asis</code> files. Any
-document with mime type <code>httpd/send-as-is</code> will be processed by
-this module.
-<!--%plaintext &lt;?INDEX {\tt httpd/send-as-is} mime type&gt; -->
-
-<h2>Purpose</h2>
-To allow file types to be defined such that Apache sends them without
-adding HTTP headers.<P>
-
-This can be used to send any kind of data from the server, including redirects
-and other special HTTP responses, without requiring a cgi-script or an nph
-script.
-<h2>Usage</h2>
-In the server configuration file, define a new mime type called
-<code>httpd/send-as-is</code> e.g.
-<blockquote><code>AddType httpd/send-as-is asis</code></blockquote>
-this defines the <code>.asis</code> file extension as being of the new
-<code>httpd/send-as-is</code> mime type. The contents of any file with a
-<code>.asis</code> extension will then be sent by Apache to the client with
-almost no changes. Clients will need HTTP headers to be attached, so do not
-forget them. A Status: header is also required; the data should be the
-3-digit HTTP response code, followed by a textual message.<p>
-
-Here's an example of a file whose contents are sent <em>as is</em> so as to
-tell the client that a file has redirected.
-<blockquote><code>
-Status: 302 Now where did I leave that URL <br>
-Location: http://xyz.abc.com/foo/bar.html <br>
-Content-type: text/html <br>
-<br>
-&lt;HTML&gt; <br>
-&lt;HEAD&gt; <br>
-&lt;TITLE&gt;Lame excuses'R'us&lt;/TITLE&gt; <br>
-&lt;/HEAD&gt; <br>
-&lt;BODY&gt; <br>
-&lt;H1&gt;Fred's exceptionally wonderful page has moved to <br>
-&lt;A HREF="http://xyz.abc.com/foo/bar.html"&gt;Joe's&lt;/A&gt; site. <br>
-&lt;/H1&gt; <br>
-&lt;/BODY&gt; <br>
+<H1 ALIGN="CENTER">Module mod_asis</H1>
+
+<P>This module provides for sending files which contain their own
+HTTP headers.
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_asis.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> asis_module
+</P>
+
+<H2>Summary</H2>
+
+<p>This module provides the handler <code>send-as-is</code> wich
+causes Apache to send the document without adding most of the usual
+HTTP headers.</p>
+
+<P>This can be used to send any kind of data from the server,
+including redirects and other special HTTP responses, without
+requiring a cgi-script or an nph script.
+
+<p>For historical reasons, this module will also process any file with
+the mime type <code>httpd/send-as-is</code>.
+
+<H2>Directives</H2>
+
+<P>This module provides no directives.
+
+<H2>Usage</H2>
+
+<P>In the server configuration file, associate files with the
+<code>send-as-is</code> handler <EM>e.g.</EM>
+<BLOCKQUOTE><CODE>AddHandler send-as-is asis</CODE></BLOCKQUOTE>
+The contents of any file with a <CODE>.asis</CODE> extension will then
+be sent by Apache to the client with almost no changes. Clients will
+need HTTP headers to be attached, so do not forget them. A Status:
+header is also required; the data should be the 3-digit HTTP response
+code, followed by a textual message.
+
+<P>Here's an example of a file whose contents are sent <EM>as is</EM>
+so as to tell the client that a file has redirected.
+<BLOCKQUOTE><CODE> Status: 301 Now where did I leave that URL <BR>
+Location: http://xyz.abc.com/foo/bar.html <BR>
+Content-type: text/html
+<BR>
+<BR>
+&lt;HTML&gt; <BR>
+&lt;HEAD&gt; <BR>
+&lt;TITLE&gt;Lame excuses'R'us&lt;/TITLE&gt; <BR>
+&lt;/HEAD&gt; <BR>
+&lt;BODY&gt; <BR>
+&lt;H1&gt;Fred's exceptionally wonderful page has moved to <BR>
+&lt;A HREF="http://xyz.abc.com/foo/bar.html"&gt;Joe's&lt;/A&gt; site. <BR>
+&lt;/H1&gt; <BR>
+&lt;/BODY&gt; <BR>
&lt;/HTML&gt;
-</code></blockquote>
-Notes: the server always adds a Date: and Server: header to the data returned
+</CODE></BLOCKQUOTE>
+
+<P>Notes: the server always adds a Date: and Server: header to the data returned
to the client, so these should not be included in the file.
-The server does <em>not</em> add a Last-Modified header; it probably should.
-<P>
+The server does <EM>not</EM> add a Last-Modified header; it probably should.
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_auth.html b/usr.sbin/httpd/htdocs/manual/mod/mod_auth.html
index f576088b048..d69871ab454 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_auth.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_auth.html
@@ -22,20 +22,49 @@
<H1 ALIGN="CENTER">Module mod_auth</H1>
-This module is contained in the <CODE>mod_auth.c</CODE> file, and
-is compiled in by default. It provides for user authentication using
-textual files.
+<P>This module provides for user authentication using text files.
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_auth.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> auth_module
+</P>
+
+<H2>Summary</H2>
+
+<P>This module allows the use of HTTP Basic Authentication to restrict
+access by looking up users in plain text password and group files.
+Similar functionality and greater scalability is provided by <A
+HREF="mod_auth_dbm.html">mod_auth_dbm</A> and <A
+HREF="mod_auth_db.html">mod_auth_db</A>. HTTP Digest Authentication
+is provided by <A HREF="mod_auth_digest.html">mod_auth_digest</A>.
-<MENU>
+
+<H2>Directives</H2>
+
+<UL>
<LI><A HREF="#authgroupfile">AuthGroupFile</A>
<LI><A HREF="#authuserfile">AuthUserFile</A>
<LI><A HREF="#authauthoritative">AuthAuthoritative</A>
-</MENU>
+</UL>
+
+<P>See also: <A HREF="core.html#require">require</A>
+and <A HREF="core.html#satisfy">satisfy</A>.</P>
+
<HR>
-<H2><A NAME="authgroupfile">AuthGroupFile</A></H2>
+<H2><A NAME="authgroupfile">AuthGroupFile</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AuthGroupFile} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -78,7 +107,7 @@ See also <A HREF="core.html#authname">AuthName</A>,
<A HREF="core.html#authtype">AuthType</A> and
<A HREF="#authuserfile">AuthUserFile</A>.<P><HR>
-<H2><A NAME="authuserfile">AuthUserFile</A></H2>
+<H2><A NAME="authuserfile">AuthUserFile</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AuthUserFile} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -136,7 +165,7 @@ See also <A HREF="core.html#authname">AuthName</A>,
<A HREF="core.html#authtype">AuthType</A> and
<A HREF="#authgroupfile">AuthGroupFile</A>.<P>
<HR>
-<H2><A NAME="authauthoritative">AuthAuthoritative</A></H2>
+<H2><A NAME="authauthoritative">AuthAuthoritative</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AuthAuthoritative} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -171,7 +200,7 @@ and a failure will give an Authorization Required reply.
<P>
So if a userID appears in the database of more than one module; or if
-a valid require directive applies to more than one module; then the
+a valid <CODE>Require</CODE> directive applies to more than one module; then the
first module will verify the credentials; and no access is passed on;
regardless of the AuthAuthoritative setting.
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_anon.html b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_anon.html
index f9ff56e95ea..8b3c5387764 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_anon.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_anon.html
@@ -20,28 +20,43 @@
<H1 ALIGN="CENTER">Module mod_auth_anon</H1>
-This module is contained in the <CODE>mod_auth_anon.c</CODE> file and
-is not compiled in by default. It is only available in Apache 1.1 and
-later. It allows "anonymous" user access to authenticated areas.
+This module allows "anonymous" user access to authenticated areas.
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_auth_anon.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> anon_auth_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
+
<H2>Summary</H2>
-It does access control in a manner similar to anonymous-ftp sites; <EM>i.e.</EM>
-have a 'magic' user id 'anonymous' and the email address as a password.
-These email addresses can be logged.
-<P>
-Combined with other (database) access control methods, this allows for
+<P>This module does access control in a manner similar to
+anonymous-ftp sites; <EM>i.e.</EM> have a 'magic' user id 'anonymous'
+and the email address as a password. These email addresses can be
+logged.</p>
+
+<p>Combined with other (database) access control methods, this allows for
effective user tracking and customization according to a user profile
while still keeping the site open for 'unregistered' users. One advantage
of using Auth-based user tracking is that, unlike magic-cookies and
funny URL pre/postfixes, it is completely browser independent and it
-allows users to share URLs.
-<P>
-
-<A HREF="#Directives">Directives</A> /
-<A HREF="#Example">Example</A> /
-<A HREF="#CompileTimeOptions">Compile time options</A> /
-<P>
+allows users to share URLs.</p>
<H2><A NAME="Directives">Directives</A></H2>
<UL>
@@ -53,6 +68,53 @@ allows users to share URLs.
<LI><A HREF="#VerifyEmail">Anonymous_VerifyEmail</A>
</UL>
+<H2><A NAME="Example">Example</A></H2>
+
+The example below (when combined with the Auth directives
+of a htpasswd-file based (or GDM, mSQL <EM>etc.</EM>) base access
+control system allows users in as 'guests' with the
+following properties:
+<UL>
+<LI>
+It insists that the user enters a userId. (<CODE>Anonymous_NoUserId</CODE>)
+<LI>
+It insists that the user enters a password.
+(<CODE>Anonymous_MustGiveEmail</CODE>)
+<LI>
+The password entered must be a valid email address, ie. contain at least one
+'@' and a '.'. (<CODE>Anonymous_VerifyEmail</CODE>)
+<LI>
+The userID must be one of <CODE>anonymous guest www test welcome</CODE>
+and comparison is <STRONG>not</STRONG> case sensitive.
+<LI>
+And the Email addresses entered in the passwd field are logged to
+the error log file
+(<CODE>Anonymous_LogEmail</CODE>)
+</UL>
+<P>
+Excerpt of access.conf:
+<BLOCKQUOTE><CODE>
+Anonymous_NoUserId off<BR>
+Anonymous_MustGiveEmail on<BR>
+Anonymous_VerifyEmail on<BR>
+Anonymous_LogEmail on<BR>
+Anonymous anonymous guest www test welcome<P>
+<P>
+AuthName "Use 'anonymous' &amp; Email address for guest entry"<BR>
+AuthType basic
+<P>
+# An AuthUserFile/AuthDBUserFile/AuthDBMUserFile<BR>
+# directive must be specified, or use<BR>
+# Anonymous_Authoritative for public access.<BR>
+# In the .htaccess for the public directory, add:<BR>
+&lt;Files *&gt;<BR>
+Order Deny,Allow <BR>
+Allow from all <BR>
+<P>
+Require valid-user <BR>
+&lt;/Files&gt;<BR>
+</CODE></BLOCKQUOTE>
+
<HR>
<H2><A NAME="anonymous">Anonymous directive</A></H2>
@@ -264,58 +326,7 @@ allows users to share URLs.
checked for at least one '@' and a '.' to encourage users to enter
valid email addresses (see the above <CODE>Auth_LogEmail</CODE>).
-<HR>
-<H2><A NAME="Example">Example</A></H2>
-
-The example below (when combined with the Auth directives
-of a htpasswd-file based (or GDM, mSQL <EM>etc.</EM>) base access
-control system allows users in as 'guests' with the
-following properties:
-<UL>
-<LI>
-It insists that the user enters a userId. (<CODE>Anonymous_NoUserId</CODE>)
-<LI>
-It insists that the user enters a password.
-(<CODE>Anonymous_MustGiveEmail</CODE>)
-<LI>
-The password entered must be a valid email address, ie. contain at least one
-'@' and a '.'. (<CODE>Anonymous_VerifyEmail</CODE>)
-<LI>
-The userID must be one of <CODE>anonymous guest www test welcome</CODE>
-and comparison is <STRONG>not</STRONG> case sensitive.
-<LI>
-And the Email addresses entered in the passwd field are logged to
-the error log file
-(<CODE>Anonymous_LogEmail</CODE>)
-</UL>
-<P>
-Excerpt of access.conf:
-<BLOCKQUOTE><CODE>
-Anonymous_NoUserId off<BR>
-Anonymous_MustGiveEmail on<BR>
-Anonymous_VerifyEmail on<BR>
-Anonymous_LogEmail on<BR>
-Anonymous anonymous guest www test welcome<P>
-<P>
-AuthName "Use 'anonymous' &amp; Email address for guest entry"<BR>
-AuthType basic
-<P>
-# An AuthUserFile/AuthDBUserFile/AuthDBMUserFile<BR>
-# directive must be specified, or use<BR>
-# Anonymous_Authoritative for public access.<BR>
-# In the .htaccess for the public directory, add:<BR>
-&lt;Files *&gt;<BR>
-order deny,allow <BR>
-allow from all <BR>
-<P>
-require valid-user <BR>
-&lt;/Files&gt;<BR>
-</CODE></BLOCKQUOTE>
-
-<HR>
-<H2><A NAME="CompileTimeOptions">Compile Time Options</A></H2>
-Currently there are no Compile options.
<HR>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_db.html b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_db.html
index 2140aa4bcc0..3a5c74ac53f 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_db.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_db.html
@@ -15,96 +15,166 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<H1 ALIGN="CENTER">Module mod_auth_db</h1>
+<H1 ALIGN="CENTER">Module mod_auth_db</H1>
-This module is contained in the <code>mod_auth_db.c</code> file, and
-is not compiled in by default. It provides for user authentication using
-Berkeley DB files. It is an alternative to <A HREF="mod_auth_dbm.html">DBM</A>
-files for those systems which support DB and not DBM. It is only
-available in Apache 1.1 and later.
+<p>This module provides for user authentication using Berkeley DB
+files. </p>
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_auth_db.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> db_auth_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
-<menu>
-<li><A HREF="#authdbgroupfile">AuthDBGroupFile</A>
-<li><A HREF="#authdbuserfile">AuthDBUserFile</A>
-<li><A HREF="#authdbauthoritative">AuthDBAuthoritative</A>
-</menu>
-<hr>
+<h2>Summary</h2>
+<p>This module provides an alternative to <A
+HREF="mod_auth_dbm.html">DBM</A> files for those systems which support
+DB and not DBM. It is only available in Apache 1.1 and later.</p>
-<A name="authdbgroupfile"><h2>AuthDBGroupFile</h2></A>
+<p>On some BSD systems (<EM>e.g.</EM>, FreeBSD and NetBSD) dbm is
+automatically mapped to Berkeley DB. You can use either <A
+HREF="mod_auth_dbm.html">mod_auth_dbm</A> or mod_auth_db. The latter
+makes it more obvious that it's Berkeley DB. On other platforms where
+you want to use the DB library you usually have to install it
+first. See <A
+HREF="http://www.sleepycat.com/">http://www.sleepycat.com/</A> for the
+distribution. The interface this module uses is the one from DB
+version 1.85 and 1.86, but DB version 2.x can also be used when
+compatibility mode is enabled.</p>
+
+<h2>Directives</h2>
+
+<UL>
+<LI><A HREF="#authdbgroupfile">AuthDBGroupFile</A>
+<LI><A HREF="#authdbuserfile">AuthDBUserFile</A>
+<LI><A HREF="#authdbauthoritative">AuthDBAuthoritative</A>
+</UL>
+
+<p>See also: <a href="core.html#satisfy">satisfy</a> and
+<a href="core.html#require">require</a>.</p>
+
+<HR>
+
+
+<H2><A NAME="authdbgroupfile">AuthDBGroupFile directive</A></H2>
<!--%plaintext &lt;?INDEX {\tt AuthDBGroupFile} directive&gt; -->
-<strong>Syntax:</strong> AuthDBGroupFile <em>filename</em><br>
-<Strong>Context:</strong> directory, .htaccess<br>
-<Strong>Override:</strong> AuthConfig<br>
-<strong>Status:</strong> Extension<br>
-<strong>Module:</strong> mod_auth_db<p>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> AuthDBGroupFile <EM>filename</EM><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> AuthConfig<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Extension<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_auth_db<P>
The AuthDBGroupFile directive sets the name of a DB file containing the list
-of user groups for user authentication. <em>Filename</em> is the absolute path
-to the group file.<p>
+of user groups for user authentication. <EM>Filename</EM> is the absolute path
+to the group file.<P>
The group file is keyed on the username. The value for a user is a
comma-separated list of the groups to which the users belongs. There must
-be no whitespace within the value, and it must never contain any colons.<p>
+be no whitespace within the value, and it must never contain any colons.<P>
Security: make sure that the AuthDBGroupFile is stored outside the
-document tree of the web-server; do <em>not</em> put it in the directory that
+document tree of the web-server; do <EM>not</EM> put it in the directory that
it protects. Otherwise, clients will be able to download the
-AuthDBGroupFile unless otherwise protected.<p>
+AuthDBGroupFile unless otherwise protected.<P>
Combining Group and Password DB files: In some cases it is easier to
manage a single database which contains both the password and group
details for each user. This simplifies any support programs that need
to be written: they now only have to deal with writing to and locking
a single DBM file. This can be accomplished by first setting the group
-and password files to point to the same DB file:<p>
+and password files to point to the same DB file:<P>
-<blockquote><code>
-AuthDBGroupFile /www/userbase<br>
+<BLOCKQUOTE><CODE>
+AuthDBGroupFile /www/userbase<BR>
AuthDBUserFile /www/userbase
-</code></blockquote>
+</CODE></BLOCKQUOTE>
-The key for the single DB record is the username. The value consists of <p>
+The key for the single DB record is the username. The value consists of <P>
-<blockquote><code>
+<BLOCKQUOTE><CODE>
Unix Crypt-ed Password : List of Groups [ : (ignored) ]
-</code></blockquote>
+</CODE></BLOCKQUOTE>
The password section contains the Unix crypt() password as before. This is
followed by a colon and the comma separated list of groups. Other data may
optionally be left in the DB file after another colon; it is ignored by the
-authentication module. <p>
+authentication module. <P>
See also <A HREF="core.html#authname">AuthName</A>,
<A HREF="core.html#authtype">AuthType</A> and
-<A HREF="#authdbuserfile">AuthDBUserFile</A>.<p><hr>
+<A HREF="#authdbuserfile">AuthDBUserFile</A>.<P><HR>
-<A name="authdbuserfile"><h2>AuthDBUserFile</h2></A>
+<H2><A NAME="authdbuserfile">AuthDBUserFile</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AuthDBUserFile} directive&gt; -->
-<strong>Syntax:</strong> AuthDBUserFile <em>filename</em><br>
-<Strong>Context:</strong> directory, .htaccess<br>
-<Strong>Override:</strong> AuthConfig<br>
-<strong>Status:</strong> Extension<br>
-<strong>Module:</strong> mod_auth_db<p>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> AuthDBUserFile <EM>filename</EM><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> AuthConfig<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Extension<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_auth_db<P>
The AuthDBUserFile directive sets the name of a DB file containing the list
-of users and passwords for user authentication. <em>Filename</em> is the
-absolute path to the user file.<p>
+of users and passwords for user authentication. <EM>Filename</EM> is the
+absolute path to the user file.<P>
The user file is keyed on the username. The value for a user is the
crypt() encrypted password, optionally followed by a colon and
arbitrary data. The colon and the data following it will be ignored
-by the server.<p>
+by the server.<P>
Security: make sure that the AuthDBUserFile is stored outside the
-document tree of the web-server; do <em>not</em> put it in the directory that
+document tree of the web-server; do <EM>not</EM> put it in the directory that
it protects. Otherwise, clients will be able to download the
-AuthDBUserFile.<p>
+AuthDBUserFile.<P>
Important compatibility note: The implementation of "dbmopen" in the
apache modules reads the string length of the hashed values from the
@@ -112,57 +182,79 @@ DB data structures, rather than relying upon the string being
NULL-appended. Some applications, such as the Netscape web server,
rely upon the string being NULL-appended, so if you are having trouble
using DB files interchangeably between applications this may be a
-part of the problem. <p>
+part of the problem. <P>
See also <A HREF="core.html#authname">AuthName</A>,
<A HREF="core.html#authtype">AuthType</A> and
-<A HREF="#authdbgroupfile">AuthDBGroupFile</A>.<p>
-<hr>
-<A name="authdbauthoritative"><h2>AuthDBAuthoritative</h2></A>
+<A HREF="#authdbgroupfile">AuthDBGroupFile</A>.<P>
+<HR>
+<H2><A NAME="authdbauthoritative">AuthDBAuthoritative</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AuthDBAuthoritative} directive&gt; -->
-<strong>Syntax:</strong> AuthDBAuthoritative &lt; <strong> on</strong>(default) | off &gt; <br>
-<Strong>Context:</strong> directory, .htaccess<br>
-<Strong>Override:</strong> AuthConfig<br>
-<strong>Status:</strong> Base<br>
-<strong>Module:</strong> mod_auth<p>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> AuthDBAuthoritative &lt;
+ <STRONG> on</STRONG>| off &gt; <BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>AuthDBAuthoritative on</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> AuthConfig<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_auth<P>
-Setting the AuthDBAuthoritative directive explicitly to <b>'off'</b>
+Setting the AuthDBAuthoritative directive explicitly to <STRONG>'off'</STRONG>
allows for both authentication and authorization to be passed on
-to lower level modules (as defined in the <code>Configuration</code>
-and <code>modules.c</code> file if there is <b>no userID</b> or
-<b>rule</b> matching the supplied userID. If there is a userID
+to lower level modules (as defined in the <CODE>Configuration</CODE>
+and <CODE>modules.c</CODE> file if there is <STRONG>no userID</STRONG> or
+<STRONG>rule</STRONG> matching the supplied userID. If there is a userID
and/or rule specified; the usual password and access checks will
be applied and a failure will give an Authorization Required reply.
-<p>
+<P>
So if a userID appears in the database of more than one module; or
-if a valid require directive applies to more than one module; then
+if a valid <CODE>Require</CODE> directive applies to more than one module; then
the first module will verify the credentials; and no access is
-passed on; regardless of the AuthAuthoritative setting. <p>
+passed on; regardless of the AuthAuthoritative setting. <P>
A common use for this is in conjunction with one of the basic auth
-modules; such as <a href="mod_auth.html"><code>mod_auth.c</code></a>.
+modules; such as <A HREF="mod_auth.html"><CODE>mod_auth.c</CODE></A>.
Whereas this DB module supplies the bulk of the user credential
checking; a few (administrator) related accesses fall through to
-a lower level with a well protected .htpasswd file. <p>
+a lower level with a well protected .htpasswd file. <P>
-<b>Default:</b> By default; control is not passed on; and an unknown
+
+By default, control is not passed on and an unknown
userID or rule will result in an Authorization Required reply. Not
-setting it thus keeps the system secure; and forces an NSCA compliant
-behaviour. <p>
+setting it thus keeps the system secure and forces an NCSA compliant
+behaviour. <P>
Security: Do consider the implications of allowing a user to allow
fall-through in his .htaccess file; and verify that this is really
what you want; Generally it is easier to just secure a single
.htpasswd file, than it is to secure a database which might have
more access interfaces.
-<p>
+<P>
See also <A HREF="core.html#authname">AuthName</A>,
<A HREF="core.html#authtype">AuthType</A> and
-<A HREF="#authdbgroupfile">AuthDBGroupFile</A>.<p>
+<A HREF="#authdbgroupfile">AuthDBGroupFile</A>.<P>
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_dbm.html b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_dbm.html
index 7098d3ead3e..6f144f566c3 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_dbm.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_dbm.html
@@ -15,96 +15,152 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<H1 ALIGN="CENTER">Module mod_auth_dbm</h1>
-
-This module is contained in the <code>mod_auth_dbm.c</code> file, and
-is not compiled in by default. It provides for user authentication using
-DBM files.
-
-
-<menu>
-<li><A HREF="#authdbmgroupfile">AuthDBMGroupFile</A>
-<li><A HREF="#authdbmuserfile">AuthDBMUserFile</A>
-<li><A HREF="#authdbmauthoritative">AuthDBMAuthoritative</A>
-</menu>
-<hr>
+<H1 ALIGN="CENTER">Module mod_auth_dbm</H1>
+
+<p>This module provides for user authentication using DBM files.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_auth_dbm.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> dbm_auth_module
+</P>
+
+<h2>Summary</h2>
+
+<p>This module provides for HTTP Basic Authentication, where the
+usernames and passwords are stored in DBM type database files. It is
+an alternative to the plain text password files provided by <a
+href="mod_auth.html">mod_auth</A> and the Berkely DB password files
+provided by <a href="mod_auth_db.html">mod_auth_db</a>.</p>
+
+<h2>Directives</h2>
+
+<ul>
+<LI><A HREF="#authdbmgroupfile">AuthDBMGroupFile</A>
+<LI><A HREF="#authdbmuserfile">AuthDBMUserFile</A>
+<LI><A HREF="#authdbmauthoritative">AuthDBMAuthoritative</A>
+</ul>
+
+<p>See also: <a href="core.html#satisfy">Satisfy</a> and
+<a href="core.html#require">Require</a>.
+<HR>
-<A name="authdbmgroupfile"><h2>AuthDbmGroupFile</h2></A>
-<!--%plaintext &lt;?INDEX {\tt AuthDbmGroupFile} directive&gt; -->
-<strong>Syntax:</strong> AuthDBMGroupFile <em>filename</em><br>
-<Strong>Context:</strong> directory, .htaccess<br>
-<Strong>Override:</strong> AuthConfig<br>
-<strong>Status:</strong> Extension<br>
-<strong>Module:</strong> mod_auth_dbm<p>
+<H2><A NAME="authdbmgroupfile">AuthDBMGroupFile</A></H2>
+<!--%plaintext &lt;?INDEX {\tt AuthDBMGroupFile} directive&gt; -->
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> AuthDBMGroupFile <EM>filename</EM><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> AuthConfig<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Extension<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_auth_dbm<P>
The AuthDBMGroupFile directive sets the name of a DBM file containing the list
-of user groups for user authentication. <em>Filename</em> is the absolute path
-to the group file.<p>
+of user groups for user authentication. <EM>Filename</EM> is the absolute path
+to the group file.<P>
The group file is keyed on the username. The value for a user is a
comma-separated list of the groups to which the users belongs. There must
-be no whitespace within the value, and it must never contain any colons.<p>
+be no whitespace within the value, and it must never contain any colons.<P>
Security: make sure that the AuthDBMGroupFile is stored outside the
-document tree of the web-server; do <em>not</em> put it in the directory that
+document tree of the web-server; do <EM>not</EM> put it in the directory that
it protects. Otherwise, clients will be able to download the
-AuthDBMGroupFile unless otherwise protected.<p>
+AuthDBMGroupFile unless otherwise protected.<P>
Combining Group and Password DBM files: In some cases it is easier to
manage a single database which contains both the password and group
details for each user. This simplifies any support programs that need
to be written: they now only have to deal with writing to and locking
a single DBM file. This can be accomplished by first setting the group
-and password files to point to the same DBM:<p>
+and password files to point to the same DBM:<P>
-<blockquote><code>
-AuthDBMGroupFile /www/userbase<br>
+<BLOCKQUOTE><CODE>
+AuthDBMGroupFile /www/userbase<BR>
AuthDBMUserFile /www/userbase
-</code></blockquote>
+</CODE></BLOCKQUOTE>
-The key for the single DBM is the username. The value consists of <p>
+The key for the single DBM is the username. The value consists of <P>
-<blockquote><code>
+<BLOCKQUOTE><CODE>
Unix Crypt-ed Password : List of Groups [ : (ignored) ]
-</code></blockquote>
+</CODE></BLOCKQUOTE>
The password section contains the Unix crypt() password as before. This is
followed by a colon and the comma separated list of groups. Other data may
optionally be left in the DBM file after another colon; it is ignored by the
authentication module. This is what www.telescope.org uses for its combined
-password and group database. <p>
+password and group database. <P>
See also <A HREF="core.html#authname">AuthName</A>,
<A HREF="core.html#authtype">AuthType</A> and
-<A HREF="#authdbmuserfile">AuthDBMUserFile</A>.<p><hr>
+<A HREF="#authdbmuserfile">AuthDBMUserFile</A>.<P><HR>
-<A name="authdbmuserfile"><h2>AuthDBMUserFile</h2></A>
+<H2><A NAME="authdbmuserfile">AuthDBMUserFile</A></H2>
<!--%plaintext &lt;?INDEX {\tt AuthDBMUserFile} directive&gt; -->
-<strong>Syntax:</strong> AuthDBMUserFile <em>filename</em><br>
-<Strong>Context:</strong> directory, .htaccess<br>
-<Strong>Override:</strong> AuthConfig<br>
-<strong>Status:</strong> Extension<br>
-<strong>Module:</strong> mod_auth_dbm<p>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> AuthDBMUserFile <EM>filename</EM><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> AuthConfig<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Extension<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_auth_dbm<P>
The AuthDBMUserFile directive sets the name of a DBM file containing the list
-of users and passwords for user authentication. <em>Filename</em> is the
-absolute path to the user file.<p>
+of users and passwords for user authentication. <EM>Filename</EM> is the
+absolute path to the user file.<P>
The user file is keyed on the username. The value for a user is the
crypt() encrypted password, optionally followed by a colon and
arbitrary data. The colon and the data following it will be ignored
-by the server.<p>
+by the server.<P>
Security: make sure that the AuthDBMUserFile is stored outside the
-document tree of the web-server; do <em>not</em> put it in the directory that
+document tree of the web-server; do <EM>not</EM> put it in the directory that
it protects. Otherwise, clients will be able to download the
-AuthDBMUserFile.<p>
+AuthDBMUserFile.<P>
Important compatibility note: The implementation of "dbmopen" in the
apache modules reads the string length of the hashed values from the
@@ -112,44 +168,63 @@ DBM data structures, rather than relying upon the string being
NULL-appended. Some applications, such as the Netscape web server,
rely upon the string being NULL-appended, so if you are having trouble
using DBM files interchangeably between applications this may be a
-part of the problem. <p>
+part of the problem. <P>
See also <A HREF="core.html#authname">AuthName</A>,
<A HREF="core.html#authtype">AuthType</A> and
-<A HREF="#authdbmgroupfile">AuthDBMGroupFile</A>.<p>
+<A HREF="#authdbmgroupfile">AuthDBMGroupFile</A>.<P>
-<hr>
-<A name="authdbmauthoritative"><h2>AuthDBMAuthoritative</h2></A>
+<HR>
+<H2><A NAME="authdbmauthoritative">AuthDBMAuthoritative</A></H2>
<!--%plaintext &lt;?INDEX {\tt AuthDBMAuthoritative} directive&gt; -->
-<strong>Syntax:</strong> AuthDBMAuthoritative &lt; <strong> on</strong>(default) | off &gt; <br>
-<Strong>Context:</strong> directory, .htaccess<br>
-<Strong>Override:</strong> AuthConfig<br>
-<strong>Status:</strong> Base<br>
-<strong>Module:</strong> mod_auth<p>
-
-Setting the AuthDBMAuthoritative directive explicitly to <b>'off'</b>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> AuthDBMAuthoritative &lt; <STRONG> on</STRONG> | off &gt; <BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <code>AuthDBMAuthoritative on</code><br>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> AuthConfig<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Extension<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_auth_dbm<P>
+
+Setting the AuthDBMAuthoritative directive explicitly to <STRONG>'off'</STRONG>
allows for both authentication and authorization to be passed on
-to lower level modules (as defined in the <code>Configuration</code>
-and <code>modules.c</code> file if there is <b>no userID</b> or
-<b>rule</b> matching the supplied userID. If there is a userID
+to lower level modules (as defined in the <CODE>Configuration</CODE>
+and <CODE>modules.c</CODE> file if there is <STRONG>no userID</STRONG> or
+<STRONG>rule</STRONG> matching the supplied userID. If there is a userID
and/or rule specified; the usual password and access checks will
be applied and a failure will give an Authorization Required reply.
-<p>
+<P>
So if a userID appears in the database of more than one module; or
-if a valid require directive applies to more than one module; then
+if a valid <CODE>Require</CODE> directive applies to more than one module; then
the first module will verify the credentials; and no access is
-passed on; regardless of the AuthAuthoritative setting. <p>
+passed on; regardless of the AuthAuthoritative setting. <P>
A common use for this is in conjunction with one of the basic auth
-modules; such as <a href="mod_auth.html"><code>mod_auth.c</code></a>.
+modules; such as <A HREF="mod_auth.html"><CODE>mod_auth.c</CODE></A>.
Whereas this DBM module supplies the bulk of the user credential
checking; a few (administrator) related accesses fall through to
-a lower level with a well protected .htpasswd file. <p>
+a lower level with a well protected .htpasswd file. <P>
-<b>Default:</b> By default; control is not passed on; and an unknown
-userID or rule will result in an Authorization Required reply. Not
-setting it thus keeps the system secure; and forces an NSCA compliant
-behaviour. <p>
+
+By default, control is not passed on and an unknown userID or rule
+will result in an Authorization Required reply. Not setting it thus
+keeps the system secure and forces an NCSA compliant behaviour. <P>
Security: Do consider the implications of allowing a user to allow
fall-through in his .htaccess file; and verify that this is really
@@ -157,14 +232,15 @@ what you want; Generally it is easier to just secure a single
.htpasswd file, than it is to secure a database which might have
more access interfaces.
-<p>
+<P>
See also <A HREF="core.html#authname">AuthName</A>,
<A HREF="core.html#authtype">AuthType</A> and
-<A HREF="#authdbmgroupfile">AuthDBMGroupFile</A>.<p>
+<A HREF="#authdbmgroupfile">AuthDBMGroupFile</A>.<P>
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html
index bbc56f10cea..af233e6f7cb 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_auth_digest.html
@@ -21,19 +21,41 @@
<H1 ALIGN="CENTER">Module mod_auth_digest</H1>
-This module is contained in the <CODE>mod_auth_digest.c</CODE> file, and is
-not compiled in by default. It is only available in Apache 1.3.8 and
-later. It provides for user authentication using MD5 Digest
-Authentication.
+<p>This module provides for user authentication using MD5 Digest
+Authentication.</p>
-<P>Note this is an updated version of <A
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Experimental
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_auth_digest.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> digest_auth_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3.8 and later.
+</P>
+
+<h2>Summary</h2>
+
+<P>This is an updated version of <A
HREF="mod_digest.html">mod_digest</A>. However, it has not been
-extensively tested and is therefore marked experimental. If you use this
-module, you must make sure to <em>not</em> use mod_digest (because they
-share some of the same configuration directives).
+extensively tested and is therefore marked experimental. If you use
+this module, you must make sure to <em>not</em> use mod_digest
+(because they share some of the same configuration directives).
+<h2>Directives</h2>
-<MENU>
+<ul>
<LI><A HREF="#authdigestfile">AuthDigestFile</A>
<LI><A HREF="#authdigestgroupfile">AuthDigestGroupFile</A>
<LI><A HREF="#authdigestqop">AuthDigestQop</A>
@@ -42,12 +64,47 @@ share some of the same configuration directives).
<LI><A HREF="#authdigestnccheck">AuthDigestNcCheck</A>
<LI><A HREF="#authdigestalgorithm">AuthDigestAlgorithm</A>
<LI><A HREF="#authdigestdomain">AuthDigestDomain</A>
-<LI><A HREF="#usingdigest">Using Digest Authentication</A>
-</MENU>
+</ul>
+
+<p>See also: <a href="core.html#require">Require</a> and
+<a href="core.html#satisfy">Satisfy</a>.
+
+<H3><A NAME="usingdigest">Using Digest Authentication</A></H3>
+
+<P>Using MD5 Digest authentication is very simple. Simply set up
+authentication normally, using "AuthType Digest" and "AuthDigestFile"
+instead of the normal "AuthType Basic" and "AuthUserFile"; also,
+replace any "AuthGroupFile" with "AuthDigestGroupFile". Then add a
+"AuthDigestDomain" directive containing at least the root URI(s) for
+this protection space. Example:
+
+<PRE>
+ &lt;Location /private/&gt;
+ AuthType Digest
+ AuthName "private area"
+ AuthDigestDomain /private/ http://mirror.my.dom/private2/
+ AuthDigestFile /web/auth/.digest_pw
+ Require valid-user
+ &lt;/Location&gt;
+</PRE>
+
+<P><strong>Note:</strong> MD5 authentication provides a more secure
+password system than Basic authentication, but only works with supporting
+browsers. As of this writing (July 1999), the only major browsers which
+support digest authentication are <A
+HREF="http://www.microsoft.com/windows/ie/">Internet Explorer 5.0</A> and
+<A HREF="http://www.w3.org/Amaya/">Amaya</A>. Therefore, we do not
+recommend using this feature on a large Internet site. However, for
+personal and intra-net use, where browser users can be controlled, it is
+ideal.
+
+
<HR>
-<H2><A NAME="authdigestfile">AuthDigestFile</A></H2>
+
+
+<H2><A NAME="authdigestfile">AuthDigestFile</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -63,7 +120,7 @@ share some of the same configuration directives).
<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> Base<BR>
+><STRONG>Status:</STRONG></A> Experimental<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
@@ -79,7 +136,7 @@ the Apache distribution.
<HR>
-<H2><A NAME="authdigestgroupfile">AuthDigestGroupFile</A></H2>
+<H2><A NAME="authdigestgroupfile">AuthDigestGroupFile</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -95,7 +152,7 @@ the Apache distribution.
<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> Base<BR>
+><STRONG>Status:</STRONG></A> Experimental<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
@@ -121,7 +178,7 @@ AuthGroupFile.
<HR>
-<H2><A NAME="authdigestqop">AuthDigestQop</A></H2>
+<H2><A NAME="authdigestqop">AuthDigestQop</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -141,7 +198,7 @@ AuthGroupFile.
<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> Base<BR>
+><STRONG>Status:</STRONG></A> Experimental<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
@@ -165,7 +222,8 @@ does not like the challenge it receives otherwise.
<HR>
-<H2><A NAME="authdigestnoncelifetime">AuthDigestNonceLifetime</A></H2>
+<H2><A NAME="authdigestnoncelifetime">AuthDigestNonceLifetime</A>
+directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -185,7 +243,7 @@ does not like the challenge it receives otherwise.
<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> Base<BR>
+><STRONG>Status:</STRONG></A> Experimental<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
@@ -219,7 +277,7 @@ do not make sense here.
-->
<HR>
-<H2><A NAME="authdigestnonceformat">AuthDigestNonceFormat</A></H2>
+<H2><A NAME="authdigestnonceformat">AuthDigestNonceFormat</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -239,7 +297,7 @@ do not make sense here.
<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> Base<BR>
+><STRONG>Status:</STRONG></A> Experimental<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
@@ -256,7 +314,7 @@ generated.
-->
<HR>
-<H2><A NAME="authdigestnccheck">AuthDigestNcCheck</A></H2>
+<H2><A NAME="authdigestnccheck">AuthDigestNcCheck</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -276,7 +334,7 @@ generated.
<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> Base<BR>
+><STRONG>Status:</STRONG></A> Experimental<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
@@ -301,7 +359,7 @@ impact performance.
-->
<HR>
-<H2><A NAME="authdigestalgorithm">AuthDigestAlgorithm</A></H2>
+<H2><A NAME="authdigestalgorithm">AuthDigestAlgorithm</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -321,7 +379,7 @@ impact performance.
<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> Base<BR>
+><STRONG>Status:</STRONG></A> Experimental<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
@@ -341,7 +399,7 @@ the challenge and response hashes.
-->
<HR>
-<H2><A NAME="authdigestdomain">AuthDigestDomain</A></H2>
+<H2><A NAME="authdigestdomain">AuthDigestDomain</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -357,7 +415,7 @@ the challenge and response hashes.
<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> Base<BR>
+><STRONG>Status:</STRONG></A> Experimental<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
@@ -387,37 +445,6 @@ across multiple servers without prompting the user each time.
<HR>
-<H3><A NAME="usingdigest">Using Digest Authentication</A></H3>
-
-<P>Using MD5 Digest authentication is very simple. Simply set up
-authentication normally, using "AuthType Digest" and "AuthDigestFile"
-instead of the normal "AuthType Basic" and "AuthUserFile"; also,
-replace any "AuthGroupFile" with "AuthDigestGroupFile". Then add a
-"AuthDigestDomain" directive containing at least the root URI(s) for
-this protection space. Example:
-
-<PRE>
- &lt;Location /private/&gt;
- AuthType Digest
- AuthName "private area"
- AuthDigestDomain /private/ http://mirror.my.dom/private2/
- AuthDigestFile /web/auth/.digest_pw
- require valid-user
- &lt;/Location&gt;
-</PRE>
-
-<P><strong>Note:</strong> MD5 authentication provides a more secure
-password system than Basic authentication, but only works with supporting
-browsers. As of this writing (July 1999), the only major browsers which
-support digest authentication are <A
-HREF="http://www.microsoft.com/windows/ie/">Internet Explorer 5.0</A> and
-<A HREF="http://www.w3.org/Amaya/">Amaya</A>. Therefore, we do not
-recommend using this feature on a large Internet site. However, for
-personal and intra-net use, where browser users can be controlled, it is
-ideal.
-
-<HR>
-
<H3 ALIGN="CENTER">
Apache HTTP Server Version 1.3
</H3>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html b/usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html
index c5477d69b5f..1a96ccd0872 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_autoindex.html
@@ -21,16 +21,34 @@
<H1 ALIGN="CENTER">Module mod_autoindex</H1>
-This module is contained in the <CODE>mod_autoindex.c</CODE> file, and
-is compiled in by default. It provides for automatic directory indexing.
+This module provides for automatic directory indexing.
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_autoindex.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> autoindex_module
+</P>
+
<H2>Summary</H2>
The index of a directory can come from one of two sources:
<UL>
+
<LI>A file written by the user, typically called <CODE>index.html</CODE>.
The <A HREF="mod_dir.html#directoryindex">DirectoryIndex</A> directive sets
the name of this file.
This is controlled by <A HREF="mod_dir.html"><CODE>mod_dir</CODE></A>.
+
<LI>Otherwise, a listing generated by the server. The other directives
control the format of this listing. The <A HREF="#addicon">AddIcon</A>,
<A HREF="#addiconbyencoding">AddIconByEncoding</A> and
@@ -42,6 +60,11 @@ are controlled by <CODE>mod_autoindex</CODE>.
The two functions are separated so that you can completely remove
(or replace) automatic index generation should you want to.
<P>
+Automatic index generation is enabled with using
+<CODE>Options +Indexes</CODE>. See the
+<A HREF="core.html#options"><CODE>Options</CODE></a> directive for
+more details.
+<P>
If
<A
HREF="#fancyindexing"
@@ -67,7 +90,7 @@ order) even though they both are shown as &quot;1K&quot;.
<H2>Directives</H2>
-<MENU>
+<UL>
<LI><A HREF="#addalt">AddAlt</A>
<LI><A HREF="#addaltbyencoding">AddAltByEncoding</A>
<LI><A HREF="#addaltbytype">AddAltByType</A>
@@ -82,10 +105,14 @@ order) even though they both are shown as &quot;1K&quot;.
<LI><A HREF="#indexoptions">IndexOptions</A>
<LI><A HREF="#indexorderdefault">IndexOrderDefault</A>
<LI><A HREF="#readmename">ReadmeName</A>
-</MENU>
+</UL>
+
+<p>See also: <A HREF="core.html#options">Options</A> and <A
+HREF="mod_dir.html#directoryindex">DirectoryIndex</A>.</p>
+
<HR>
-<H2><A NAME="addalt">AddAlt</A></H2>
+<H2><A NAME="addalt">AddAlt</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddAlt} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -117,7 +144,7 @@ to describe. <EM>String</EM> is enclosed in double quotes
image-incapable or has image loading disabled.
<HR>
-<H2><A NAME="addaltbyencoding">AddAltByEncoding</A></H2>
+<H2><A NAME="addaltbyencoding">AddAltByEncoding</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddAltByEncoding} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -150,7 +177,7 @@ valid content-encoding, such as <SAMP>x-compress</SAMP>.
image-incapable or has image loading disabled.
<HR>
-<H2><A NAME="addaltbytype">AddAltByType</A></H2>
+<H2><A NAME="addaltbytype">AddAltByType</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddAltByType} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -184,7 +211,7 @@ image-incapable or has image loading disabled.
<HR>
-<H2><A NAME="adddescription">AddDescription</A></H2>
+<H2><A NAME="adddescription">AddDescription</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddDescription} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -235,7 +262,7 @@ may affect the rest of the directory listing.
</P>
<HR>
-<H2><A NAME="addicon">AddIcon</A></H2>
+<H2><A NAME="addicon">AddIcon</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddIcon} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -269,14 +296,14 @@ for an icon for non-graphical browsers.<P>
blank lines (to format the list correctly), a file extension, a wildcard
expression, a partial filename or a complete filename. Examples:
<BLOCKQUOTE><CODE>
-AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm <BR>
-AddIcon /icons/dir.xbm ^^DIRECTORY^^ <BR>
-AddIcon /icons/backup.xbm *~
+AddIcon (IMG,/icons/image2.gif) .gif .jpg .png<BR>
+AddIcon /icons/dir.gif ^^DIRECTORY^^ <BR>
+AddIcon /icons/backup.gif *~
</CODE></BLOCKQUOTE>
<A HREF="#addiconbytype">AddIconByType</A> should be used in preference to
AddIcon, when possible.<P><HR>
-<H2><A NAME="addiconbyencoding">AddIconByEncoding</A></H2>
+<H2><A NAME="addiconbyencoding">AddIconByEncoding</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddIconByEncoding} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -310,10 +337,10 @@ given for an icon for non-graphical browsers.<P>
<EM>Mime-encoding</EM> is a wildcard expression matching required the
content-encoding. Examples:
<BLOCKQUOTE><CODE>
-AddIconByEncoding /icons/compress.xbm x-compress
+AddIconByEncoding /icons/compressed.gif x-compress
</CODE></BLOCKQUOTE><P><HR>
-<H2><A NAME="addiconbytype">AddIconByType</A></H2>
+<H2><A NAME="addiconbytype">AddIconByType</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddIconByType} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -346,10 +373,10 @@ for an icon for non-graphical browsers.<P>
<EM>Mime-type</EM> is a wildcard expression matching required the mime types.
Examples:
<BLOCKQUOTE><CODE>
-AddIconByType (IMG,/icons/image.xbm) image/*
+AddIconByType (IMG,/icons/image3.gif) image/*
</CODE></BLOCKQUOTE><P><HR>
-<H2><A NAME="defaulticon">DefaultIcon</A></H2>
+<H2><A NAME="defaulticon">DefaultIcon</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt DefaultIcon} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -380,7 +407,7 @@ specific icon is known, for <A HREF="#fancyindexing">FancyIndexing</A>.
DefaultIcon /icon/unknown.xbm
</CODE></BLOCKQUOTE><P><HR>
-<H2><A NAME="fancyindexing">FancyIndexing</A></H2>
+<H2><A NAME="fancyindexing">FancyIndexing</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt FancyIndexing} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -421,7 +448,7 @@ preference.
</BLOCKQUOTE>
<HR>
-<H2><A NAME="headername">HeaderName</A></H2>
+<H2><A NAME="headername">HeaderName</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt HeaderName} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -491,7 +518,7 @@ the file will be processed for server-side includes (see the
See also <A HREF="#readmename">ReadmeName</A>.
<P><HR>
-<H2><A NAME="indexignore">IndexIgnore</A></H2>
+<H2><A NAME="indexignore">IndexIgnore</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt IndexIgnore} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -518,13 +545,13 @@ See also <A HREF="#readmename">ReadmeName</A>.
The IndexIgnore directive adds to the list of files to hide when listing
a directory. <EM>File</EM> is a file extension, partial filename,
wildcard expression or full filename for files to ignore. Multiple
-IndexIgnore directives add to the list, rather than the replacing the list
+IndexIgnore directives add to the list, rather than replacing the list
of ignored files. By default, the list contains `<CODE>.</CODE>'. Example:
<BLOCKQUOTE><CODE>
IndexIgnore README .htaccess *~
</CODE></BLOCKQUOTE><P><HR>
-<H2><A NAME="indexoptions">IndexOptions</A></H2>
+<H2><A NAME="indexoptions">IndexOptions</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt IndexOptions} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -748,7 +775,7 @@ keywords without either '+' or '-' prefixes.
<HR>
-<H2><A NAME="indexorderdefault">IndexOrderDefault</A></H2>
+<H2><A NAME="indexorderdefault">IndexOrderDefault</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt IndexOrderDefault} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -807,7 +834,7 @@ the client from requesting the directory listing in a different order.
<HR>
-<H2><A NAME="readmename">ReadmeName</A></H2>
+<H2><A NAME="readmename">ReadmeName</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt ReadmeName} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html b/usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html
index 3eb508f9997..db65436f2a6 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_cern_meta.html
@@ -15,75 +15,164 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<H1 ALIGN="CENTER">Module mod_cern_meta</H1>
-
-This module is contained in the <code>mod_cern_meta.c</code> file, and
-is not compiled in by default. It provides for CERN httpd metafile
-semantics. It is only available in Apache 1.1 and later.
-
-<h2>Summary</h2>
-
-Emulate the CERN HTTPD Meta file semantics. Meta files are HTTP
+<H1 ALIGN="CENTER">Apache module mod_cern_meta</H1>
+
+<p>This module provides for CERN httpd metafile semantics.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_cern_meta.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> cern_meta_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
+
+
+<H2>Summary</H2>
+
+<!-- XXX: Should mention other possibilities in Apache: mod_header -->
+
+Emulate the CERN HTTPD Meta file semantics. Meta files are HTTP
headers that can be output in addition to the normal range of headers
for each file accessed. They appear rather like the Apache
.asis files, and are able to provide a crude way of influencing
the Expires: header, as well as providing other curiosities.
There are many ways to manage meta information, this one was
chosen because there is already a large number of CERN users
-who can exploit this module.
+who can exploit this module.
-<p>More information on the
-<a href="http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir
-">CERN metafile semantics</a> is available.
+<P>More information on the
+<A HREF="http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir"
+>CERN metafile semantics</A> is available.
-<h2>Directives</h2>
-<ul>
-<li><A HREF="#metadir">MetaDir</A>
-<li><A HREF="#metasuffix">MetaSuffix</A>
-</ul>
+<H2>Directives</H2>
+<UL>
+<LI><A HREF="#metafiles">MetaFiles</A>
+<LI><A HREF="#metadir">MetaDir</A>
+<LI><A HREF="#metasuffix">MetaSuffix</A>
+</UL>
+
+<HR>
+
+<H2><A NAME="metafiles">MetaFiles</A> directive</H2>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> MetaFiles <EM>on/off</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>MetaFiles off</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> per-directory config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_cern_meta<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> MetaFiles is only available in Apache 1.3
+and later.<P>
+
+Turns on/off Meta file processing on a per-directory basis. This option was introduced in Apache 1.3.
<hr>
-<h2><A name="metadir">MetaDir</A></h2>
-<strong>Syntax:</strong> MetaDir <em>directory name</em><br>
-<strong>Default:</strong> <code>MetaDir .web</code><br>
-<strong>Context:</strong> server config<br>
-<strong>Status:</strong> Base<br>
-<strong>Module:</strong> mod_cern_meta<br>
-<strong>Compatibility:</strong> MetaDir is only available in Apache 1.1
-and later.<p>
+<H2><A NAME="metadir">MetaDir</A> directive</H2>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> MetaDir <EM>directory name</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>MetaDir .web</CODE><BR>
+<STRONG>Context: (Apache prior to 1.3)</STRONG> server config<BR>
+<STRONG>Context: (Apache 1.3)</STRONG> per-directory config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_cern_meta<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> MetaDir is only available in Apache 1.1
+and later.<P>
Specifies the name of the directory in which Apache can find
meta information files. The directory is usually a 'hidden'
subdirectory of the directory that contains the file being
-accessed. Set to "<code>.</code>" to look in the same directory as the
+accessed. Set to "<CODE>.</CODE>" to look in the same directory as the
file.
-<h2><A name="metasuffix">MetaSuffix</A></h2>
-<strong>Syntax:</strong> MetaSuffix <em>suffix</em><br>
-<strong>Default:</strong> <code>MetaSuffix .meta</code><br>
-<strong>Context:</strong> server config<br>
-<strong>Status:</strong> Base<br>
-<strong>Module:</strong> mod_cern_meta<br>
-<strong>Compatibility:</strong> MetaSuffix is only available in Apache 1.1
-and later.<p>
+<hr>
+
+<H2><A NAME="metasuffix">MetaSuffix</A> directive</H2>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> MetaSuffix <EM>suffix</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>MetaSuffix .meta</CODE><BR>
+<STRONG>Context: (Apache prior to 1.3)</STRONG> server config<BR>
+<STRONG>Context: (Apache 1.3)</STRONG> per-directory config<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_cern_meta<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> MetaSuffix is only available in Apache 1.1
+and later.<P>
Specifies the file name suffix for the file containing the
meta information. For example, the default values for the two
-directives will cause a request to <code>
-DOCUMENT_ROOT/somedir/index.html</code> to look in
-<code>DOCUMENT_ROOT/somedir/.web/index.html.meta</code> and will use
+directives will cause a request to <CODE>
+DOCUMENT_ROOT/somedir/index.html</CODE> to look in
+<CODE>DOCUMENT_ROOT/somedir/.web/index.html.meta</CODE> and will use
its contents to generate additional MIME header information.
-<p>
+<P>
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html b/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html
index dd6e29277e5..02236694911 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_cgi.html
@@ -22,27 +22,62 @@
<H1 ALIGN="CENTER">Module mod_cgi</H1>
-This module is contained in the <CODE>mod_cgi.c</CODE> file, and
-is compiled in by default. It provides for execution of CGI scripts.
-Any file with mime type <CODE>application/x-httpd-cgi</CODE> will be
-processed by this module.
-<!--%plaintext &lt;?INDEX {\tt application/x-httpd-cgi} mime type&gt; -->
-<!--%plaintext &lt;?INDEX CGI scripts&gt; -->
+<p>This module provides for execution of CGI scripts.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_cgi.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> cgi_module
+</P>
+
<H2>Summary</H2>
+<!-- XXX: Should have references to CGI definition/RFC -->
+
Any file that has the mime type <CODE>application/x-httpd-cgi</CODE>
or handler <CODE>cgi-script</CODE> (Apache 1.1 or later)
will be treated as a CGI script, and run by the server, with its output
being returned to the client. Files acquire this type either by
having a name containing an extension defined by the
<A HREF="mod_mime.html#addtype">AddType</A> directive, or by being in
-a <A HREF="mod_alias.html#scriptalias">ScriptAlias</A> directory. <P>
+a <A HREF="mod_alias.html#scriptalias">ScriptAlias</A> directory.
+Files that are not in a
+<A HREF="mod_alias.html#scriptalias">ScriptAlias</A> directory,
+but which are of type <CODE>application/x-httpd-cgi</CODE> by
+virtue of an <CODE>AddType</CODE> directive, will still not be executed
+by the server unless <CODE>Options ExecCGI</CODE> is enabled. See
+the <A HREF="core.html#options"><CODE>Options</CODE></A> directive
+for more details.
+<P>
When the server invokes a CGI script, it will add a variable called
<CODE>DOCUMENT_ROOT</CODE> to the environment. This variable will contain the
value of the <A HREF="core.html#documentroot">DocumentRoot</A>
configuration variable.
+<h2>Directives</h2>
+
+<ul>
+<li><a href="#scriptlog">ScriptLog</a></li>
+<li><a href="#scriptloglength">ScriptLogLength</a></li>
+<li><a href="#scriptlogbuffer">ScriptLogBuffer</a></li>
+</ul>
+
+<p>See also: <a href="core.html#options">Options</a>, <a
+href="mod_alias.html#scriptalias">ScriptAlias</a>, <a
+href="mod_mime.html#addtype">AddType</a> and <a
+href="mod_mime.html#addhandler">AddHandler</a>.
+
<H2>CGI Environment variables</H2>
The server will set the CGI environment variables as described in the
<A HREF="http://hoohoo.ncsa.uiuc.edu/cgi/">CGI specification</A>, with the
@@ -122,9 +157,7 @@ anything on standard output or standard error).
<HR>
-<H2>Directives</H2>
-
-<H3><A NAME="scriptlog">ScriptLog</A></H3>
+<H3><A NAME="scriptlog">ScriptLog</A> directive</H3>
<A
HREF="directive-dict.html#Syntax"
@@ -164,7 +197,9 @@ running servers. It is not optimized for speed or efficiency, and may
have security problems if used in a manner other than that for which
it was designed.</P>
-<H3><A NAME="scriptloglength">ScriptLogLength</A></H3>
+<hr>
+
+<H3><A NAME="scriptloglength">ScriptLogLength</A> directive</H3>
<A
HREF="directive-dict.html#Syntax"
@@ -191,6 +226,8 @@ file. To prevent problems due to unbounded growth, this directive can
be used to set an maximum file-size for the CGI logfile. If the file
exceeds this size, no more information will be written to it.
+<hr>
+
<H3><A NAME="scriptlogbuffer">ScriptLogBuffer</A></H3>
<A
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_digest.html b/usr.sbin/httpd/htdocs/manual/mod/mod_digest.html
index ff6c0a6e153..090df958ba4 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_digest.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_digest.html
@@ -15,59 +15,105 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<H1 ALIGN="CENTER">Module mod_digest</h1>
+<H1 ALIGN="CENTER">Module mod_digest</H1>
-This module is contained in the <code>mod_digest.c</code> file, and is
-not compiled in by default. It is only available in Apache 1.1 and
-later. It provides for user authentication using MD5 Digest
+<P>This module provides for user authentication using MD5 Digest
Authentication.
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_digest.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> digest_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
+
+<h2>Summary</h2>
+
+<P>This module implements an older
+version of the MD5 Digest Authentication specification which will
+probably not work with modern browsers. Please see <A
+HREF="mod_auth_digest.html">mod_auth_digest</A> for a module which implements
+the most recent version of the standard.
+
+<h2>Directives</h2>
+
+<ul>
+<LI><A HREF="#authdigestfile">AuthDigestFile</A>
+</ul>
+
+
+<H2>Using Digest Authentication</H2>
+
+<P>Using MD5 Digest authentication is very simple. Simply set up
+authentication normally. However, use "AuthType Digest" and
+"AuthDigestFile" instead of the normal "AuthType Basic" and
+"AuthUserFile". Everything else should remain the same.</P>
-<menu>
-<li><A HREF="#authdigestfile">AuthDigestFile</A>
-</menu>
-<hr>
+<P>MD5 authentication provides a more secure password system, but only
+works with supporting browsers. As of this writing (July 1996), the
+majority of browsers do not support digest authentication. Therefore, we
+do not recommend using this feature on a large Internet site. However, for
+personal and intra-net use, where browser users can be controlled, it is
+ideal.</P>
+<HR>
-<h2><A name="authdigestfile">AuthDigestFile</A></h2>
-<strong>Syntax:</strong> AuthDigestFile <em>filename</em><br>
-<Strong>Context:</strong> directory, .htaccess<br>
-<Strong>Override:</strong> AuthConfig<br>
-<strong>Status:</strong> Base<br>
-<strong>Module:</strong> mod_digest<p>
-<p>The AuthDigestFile directive sets the name of a textual file containing
+<H2><A NAME="authdigestfile">AuthDigestFile</A> directive</H2>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> AuthDigestFile <EM>filename</EM><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> AuthConfig<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_digest<P>
+
+<P>The AuthDigestFile directive sets the name of a textual file containing
the list
of users and encoded passwords for digest authentication.
-<em>Filename</em>
-is the absolute path to the user file.</p>
-<p>The digest file uses a special format. Files in this format can be
+<EM>Filename</EM>
+is the absolute path to the user file.</P>
+<P>The digest file uses a special format. Files in this format can be
created using the "htdigest" utility found in the support/ subdirectory of
-the Apache distribution.</p>
-
-<hr>
+the Apache distribution.</P>
-<h3>Using Digest Authentication</h3>
-<p>Using MD5 Digest authentication is very simple. Simply set up
-authentication normally. However, use "AuthType Digest" and
-"AuthDigestFile" instead of the normal "AuthType Basic" and
-"AuthUserFile". Everything else should remain the same.</p>
-
-<p>MD5 authentication provides a more secure password system, but only
-works with supporting browsers. As of this writing (July 1996), the
-majority of browsers do not support digest authentication. Therefore, we
-do not recommend using this feature on a large Internet site. However, for
-personal and intra-net use, where browser users can be controlled, it is
-ideal.</p>
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_env.html b/usr.sbin/httpd/htdocs/manual/mod/mod_env.html
index 0e1faea4d14..d48d12e0c6a 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_env.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_env.html
@@ -21,18 +21,37 @@
<H1 ALIGN="CENTER">Apache module mod_env</H1>
-This module is contained in the <CODE>mod_env.c</CODE> file, and
-is compiled in by default. It provides for
-passing environment variables to CGI/SSI scripts. Is is only available
-in Apache 1.1 and later.
+<p>This module provides for
+passing environment variables to CGI/SSI scripts.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_env.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> env_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
<H2>Summary</H2>
-
-This module allows Apache's CGI and SSI environment to inherit
+<!-- XXX: Should mention mod_setenvif and the effect of suexec -->
+<p>This module allows Apache's CGI and SSI environment to inherit
environment variables from the shell which invoked the httpd process.
CERN web-servers are able to do this, so this module is especially
useful to web-admins who wish to migrate from CERN to Apache without
-rewriting all their scripts
+rewriting all their scripts</p>
<H2>Directives</H2>
<UL>
@@ -43,7 +62,7 @@ rewriting all their scripts
<HR>
-<H2><A NAME="passenv">PassEnv</A></H2>
+<H2><A NAME="passenv">PassEnv</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -74,7 +93,7 @@ from the server's own environment. Example:
<HR>
-<H2><A NAME="setenv">SetEnv</A></H2>
+<H2><A NAME="setenv">SetEnv</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -105,7 +124,7 @@ scripts. Example:
<HR>
-<H2><A NAME="unsetenv">UnsetEnv</A></H2>
+<H2><A NAME="unsetenv">UnsetEnv</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_example.html b/usr.sbin/httpd/htdocs/manual/mod/mod_example.html
index 53b1017332e..e2ca6b283f1 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_example.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_example.html
@@ -20,8 +20,7 @@
<H1 ALIGN="CENTER">Module mod_example</H1>
<P>
- This module is contained in the <CODE>modules/mod_example.c</CODE> file, and
- <STRONG>is not</STRONG> compiled in by default. It illustrates many of
+ This module illustrates many of
the aspects of the
<A
HREF="../misc/API.html"
@@ -30,6 +29,29 @@
and, when used, demonstrates the manner in which module callbacks are
triggered by the server.
</P>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_example.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> example_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.2 and later.
+</P>
+
+
<H2>Summary</H2>
<P>
The files in the <CODE>src/modules/example directory</CODE> under the
@@ -49,6 +71,15 @@
some of the tracing the example module did as the various callbacks
were made.
</P>
+ <H2>Directives</H2>
+ <P>
+ <UL>
+ <LI><A HREF="#example">Example</A>
+ </LI>
+ </UL>
+ </P>
+
+ <h2>Compiling the example module</h2>
<P>
To include the example module in your server, follow the steps below:
</P>
@@ -84,9 +115,9 @@
<LI>Follow steps [1] through [3] above, with appropriate changes.
</LI>
</OL>
- <H3>
+ <H2>
Using the <SAMP>mod_example</SAMP> Module
- </H3>
+ </H2>
<P>
To activate the example module, include a block similar to the
following in your <SAMP>srm.conf</SAMP> file:
@@ -111,16 +142,10 @@
After reloading/restarting your server, you should be able to browse
to this location and see the brief display mentioned earlier.
</P>
- <H2>Directives</H2>
- <P>
- <UL>
- <LI><A HREF="#example">Example</A>
- </LI>
- </UL>
- </P>
+
<HR>
<H2><A NAME="example">
- Example
+ Example directive
</A></H2>
<P>
<A
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_expires.html b/usr.sbin/httpd/htdocs/manual/mod/mod_expires.html
index af226b259fa..b15dd950204 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_expires.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_expires.html
@@ -3,7 +3,7 @@
<HEAD>
<TITLE>Apache module mod_expires</TITLE>
</HEAD>
- <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
@@ -14,17 +14,33 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
<H1 ALIGN="CENTER">Module mod_expires</H1>
<P>
- This module is contained in the <CODE>mod_expires.c</CODE> file, and
- is <STRONG>not</STRONG> compiled in by default. It provides for the
- generation of <CODE>Expires</CODE> headers according to user-specified
- criteria.
+ This module provides for the generation of <CODE>Expires</CODE> HTTP
+ headers according to user-specified criteria.
</P>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_expires.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> expires_module
+</P>
+
+
<H2>Summary</H2>
<P>
This module controls the setting of the <CODE>Expires</CODE> HTTP
@@ -40,9 +56,10 @@
&quot;expired&quot; and invalid, and a new copy must be obtained from
the source.
</P>
+
<H2>Directives</H2>
<P>
- <MENU>
+ <ul>
<LI><A
HREF="#expiresactive"
>ExpiresActive</A>
@@ -55,22 +72,120 @@
HREF="#expiresdefault"
>ExpiresDefault</A>
</LI>
+ </ul>
+
+ <H2>
+ <A NAME="AltSyn">Alternate Interval Syntax</A>
+ </H2>
+ <P>
+ The
+ <A
+ HREF="#expiresdefault"
+ ><SAMP>ExpiresDefault</SAMP></A>
+ and
+ <A
+ HREF="#expiresbytype"
+ ><SAMP>ExpiresByType</SAMP></A>
+ directives can also be defined in a more readable syntax of the form:
+ </P>
+ <DL>
+ <DD><CODE>ExpiresDefault "&lt;base&gt; [plus] {&lt;num&gt; &lt;type&gt;}*"
+ <BR>
+ ExpiresByType type/encoding "&lt;base&gt; [plus]
+ {&lt;num&gt; &lt;type&gt;}*"</CODE>
+ </DD>
+ </DL>
+ <P>
+ where &lt;base&gt; is one of:
+ </P>
+ <MENU>
+ <LI><SAMP>access</SAMP>
+ </LI>
+ <LI><SAMP>now</SAMP> (equivalent to '<SAMP>access</SAMP>')
+ </LI>
+ <LI><SAMP>modification</SAMP>
+ </LI>
+ </MENU>
+ <P>
+ The '<SAMP>plus</SAMP>' keyword is optional. &lt;num&gt; should be an
+ integer value [acceptable to <SAMP>atoi()</SAMP>], and &lt;type&gt;
+ is one of:
+ </P>
+ <MENU>
+ <LI><SAMP>years</SAMP>
+ </LI>
+ <LI><SAMP>months</SAMP>
+ </LI>
+ <LI><SAMP>weeks</SAMP>
+ </LI>
+ <LI><SAMP>days</SAMP>
+ </LI>
+ <LI><SAMP>hours</SAMP>
+ </LI>
+ <LI><SAMP>minutes</SAMP>
+ </LI>
+ <LI><SAMP>seconds</SAMP>
+ </LI>
</MENU>
+ <P>
+ For example, any of the following directives can be used to make
+ documents expire 1 month after being accessed, by default:
+ </P>
+ <DL>
+ <DD><CODE>ExpiresDefault "access plus 1 month"
+ <BR>
+ ExpiresDefault "access plus 4 weeks"
+ <BR>
+ ExpiresDefault "access plus 30 days"</CODE>
+ </DD>
+ </DL>
+ <P>
+ The expiry time can be fine-tuned by adding several '&lt;num&gt;
+ &lt;type&gt;' clauses:
+ </P>
+ <DL>
+ <DD><CODE>ExpiresByType text/html "access plus 1 month 15 days 2 hours"
+ <BR>
+ ExpiresByType image/gif "modification plus 5 hours 3 minutes"</CODE>
+ </DD>
+ </DL>
+ <P>
+ Note that if you use a modification date based setting, the Expires
+ header will <STRONG>not</STRONG> be added to content that does
+ not come from a file on disk. This is due to the fact that there is
+ no modification time for such content.
+
<HR>
<H2><A NAME="expiresactive">
ExpiresActive directive
</A></H2>
<!--%plaintext &lt;?INDEX {\tt ExpiresActive} directive&gt; -->
<P>
- <STRONG>Syntax:</STRONG> ExpiresActive <EM>boolean</EM>
+ <A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+ ><STRONG>Syntax:</STRONG></A> ExpiresActive <EM>boolean</EM>
<BR>
- <STRONG>Context:</STRONG> server config, virtual host, directory, .htaccess
- <br>
- <STRONG>Override:</STRONG> Indexes
- <br>
- <STRONG>Status:</STRONG> Extension
- <br>
- <STRONG>Module:</STRONG> mod_expires
+ <A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+ ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
+ .htaccess
+ <BR>
+ <A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+ ><STRONG>Override:</STRONG></A> Indexes
+ <BR>
+ <A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+ ><STRONG>Status:</STRONG></A> Extension
+ <BR>
+ <A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+ ><STRONG>Module:</STRONG></A> mod_expires
</P>
<P>
This directive enables or disables the generation of the
@@ -103,15 +218,32 @@
</A></H2>
<!--%plaintext &lt;?INDEX {\tt ExpiresByType} directive&gt; -->
<P>
- <STRONG>Syntax:</STRONG> ExpiresByType <EM>mime-type &lt;code&gt;seconds</EM>
+ <A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+ ><STRONG>Syntax:</STRONG></A> ExpiresByType <EM>mime-type
+ &lt;code&gt;seconds</EM>
+ <BR>
+ <A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+ ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
+ .htaccess
+ <BR>
+ <A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+ ><STRONG>Override:</STRONG></A> Indexes
<BR>
- <STRONG>Context:</STRONG> server config, virtual host, directory, .htaccess
- <br>
- <STRONG>Override:</STRONG> Indexes
- <br>
- <STRONG>Status:</STRONG> Extension
- <br>
- <STRONG>Module:</STRONG> mod_expires
+ <A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+ ><STRONG>Status:</STRONG></A> Extension
+ <BR>
+ <A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+ ><STRONG>Module:</STRONG></A> mod_expires
</P>
<P>
This directive defines the value of the <CODE>Expires</CODE> header
@@ -160,21 +292,44 @@
>ExpiresDefault</A>
directive.
</P>
+ <P>
+ You can also specify the expiration time calculation using an
+ <A
+ HREF="#AltSyn"
+ >alternate syntax</A>,
+ described later in this document.
+ </P>
<HR>
<H2><A NAME="expiresdefault">
ExpiresDefault directive
</A></H2>
<!--%plaintext &lt;?INDEX {\tt ExpiresDefault} directive&gt; -->
<P>
- <STRONG>Syntax:</STRONG> ExpiresDefault <EM>&lt;code&gt;seconds</EM>
+ <A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+ ><STRONG>Syntax:</STRONG></A> ExpiresDefault <EM>&lt;code&gt;seconds</EM>
+ <BR>
+ <A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+ ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
+ .htaccess
<BR>
- <STRONG>Context:</STRONG> server config, virtual host, directory, .htaccess
- <br>
- <STRONG>Override:</STRONG> Indexes
- <br>
- <STRONG>Status:</STRONG> Extension
- <br>
- <STRONG>Module:</STRONG> mod_expires
+ <A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+ ><STRONG>Override:</STRONG></A> Indexes
+ <BR>
+ <A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+ ><STRONG>Status:</STRONG></A> Extension
+ <BR>
+ <A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+ ><STRONG>Module:</STRONG></A> mod_expires
</P>
<P>
This directive sets the default algorithm for calculating the
@@ -184,11 +339,17 @@
HREF="#expiresbytype"
>ExpiresByType</A>
directive. See the description of that directive for details about
- the syntax of the argument.
+ the syntax of the argument, and the
+ <A
+ HREF="#AltSyn"
+ >alternate syntax</A>
+ description as well.
</P>
+
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_headers.html b/usr.sbin/httpd/htdocs/manual/mod/mod_headers.html
index f7b79dfbd97..d328f6660ff 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_headers.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_headers.html
@@ -21,21 +21,38 @@
<H1 ALIGN="CENTER">Module mod_headers</H1>
-The optional headers module allows for the customization of HTTP
-response headers. Headers can be merged, replaced or removed. The
-directives described in this document are only available if Apache is
-compiled with <STRONG>mod_headers.c</STRONG>.
+<p>This module provides for the customization of HTTP
+response headers.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_headers.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> headers_module
+</P>
-<HR>
+<h2>Summary</h2>
-<H2>Directive</H2>
+This module provides a directive to control the sending of HTTP
+headers. Headers can be merged, replaced or removed.
+
+<H2>Directives</H2>
<UL>
<LI><A HREF="#header">Header</A>
</UL>
<HR>
-<H2><A NAME="header">Header</A></H2>
+<H2><A NAME="header">Header</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -51,9 +68,13 @@ compiled with <STRONG>mod_headers.c</STRONG>.
><STRONG>Context:</STRONG></A> server config, virtual host, access.conf,
.htaccess<BR>
<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> FileInfo<BR>
+<A
HREF="directive-dict.html#Status"
REL="Help"
-><STRONG>Status:</STRONG></A> optional<BR>
+><STRONG>Status:</STRONG></A> Extension<BR>
<A
HREF="directive-dict.html#Module"
REL="Help"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_imap.html b/usr.sbin/httpd/htdocs/manual/mod/mod_imap.html
index b7522db4116..9dfe66914b3 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_imap.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_imap.html
@@ -21,18 +21,42 @@
<H1 ALIGN="CENTER">Module mod_imap</H1>
-This module is contained in the <CODE>mod_imap.c</CODE> file, and is
-compiled in by default. It provides for <CODE>.map</CODE> files,
-replacing the functionality of the <CODE>imagemap</CODE> CGI
-program. Any directory or document type configured to use the handler
+<p>This module provides for server-side imagemap processing.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_imap.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> imap_module
+<BR>
+<A
+HREF="module-dict.html#compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
+
+
+
+<H2>Summary</H2>
+
+<p>This module processes <CODE>.map</CODE> files, thereby replacing
+the functionality of the <CODE>imagemap</CODE> CGI program. Any
+directory or document type configured to use the handler
<CODE>imap-file</CODE> (using either <CODE><A
HREF="mod_mime.html#addhandler">AddHandler</A> </CODE> or <CODE><A
HREF="mod_mime.html#sethandler">SetHandler</A></CODE>) will be
-processed by this module.
-
-<H2>Summary</H2>
+processed by this module.</p>
-This module is in the default Apache distribution. The following directive will
+<p>The following directive will
activate files ending with <CODE>.map</CODE> as imagemap files:
<BLOCKQUOTE><CODE>AddHandler imap-file map</CODE></BLOCKQUOTE>
@@ -44,6 +68,13 @@ Note that the following is still supported:
However, we are trying to phase out "magic MIME types" so we are deprecating
this method.
+<H2>Directives</H2>
+<UL>
+<LI><A HREF="#imapmenu">ImapMenu</A>
+<LI><A HREF="#imapdefault">ImapDefault</A>
+<LI><A HREF="#imapbase">ImapBase</A>
+</UL>
+
<H2>New Features</H2>
The imagemap module adds some new features that were not
possible with previously distributed imagemap programs.<P>
@@ -56,135 +87,7 @@ possible with previously distributed imagemap programs.<P>
<LI>Point references.
<LI>Configurable generation of imagemap menus.
</UL>
-<P>
-
-<H2>Configuration Directives</H2>
-<UL>
-<LI><A HREF="#imapmenu">ImapMenu</A>
-<LI><A HREF="#imapdefault">ImapDefault</A>
-<LI><A HREF="#imapbase">ImapBase</A>
-</UL>
-
-
-<P>
-
-<H3><A NAME="imapmenu">ImapMenu</A></H3>
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> ImapMenu <CODE>{none, formatted, semiformatted,
- unformatted}</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
-<A
- HREF="directive-dict.html#Override"
- REL="Help"
-><STRONG>Override:</STRONG></A> Indexes<BR>
-<A
- HREF="directive-dict.html#Module"
- REL="Help"
-><STRONG>Module:</STRONG></A> mod_imap.c<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> ImapMenu is only available in Apache
-1.1 and later.<P>
-
-The ImapMenu directive determines the action taken if an imagemap file
-is called without valid coordinates.
-<DL>
- <DT><CODE>none</CODE>
- <DD>If ImapMenu is
- <CODE>none</CODE>, no menu is generated, and the <CODE>default</CODE>
- action is performed.
- <DT><CODE>formatted</CODE>
- <DD>A <CODE>formatted</CODE> menu is the simplest menu. Comments
- in the imagemap file are ignored. A level one header is
- printed, then an hrule, then the links each on a separate line.
- The menu has a consistent, plain look close to that of
- a directory listing.
- <DT><CODE>semiformatted</CODE>
- <DD>In the <CODE>semiformatted</CODE> menu, comments are printed
- where they occur in the imagemap file. Blank lines are turned
- into HTML breaks. No header or hrule is printed, but otherwise
- the menu is the same as a <CODE>formatted</CODE> menu.
- <DT><CODE>unformatted</CODE>
- <DD>Comments are printed, blank lines are ignored. Nothing is
- printed that does not appear in the imagemap file. All breaks
- and headers must be included as comments in the imagemap file.
- This gives you the most flexibility over the appearance of your
- menus, but requires you to treat your map files as HTML instead
- of plaintext.
-</DL>
-
-<P>
-
-<H3><A NAME="imapdefault">ImapDefault</A></H3>
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> ImapDefault <CODE>{error, nocontent,
- map, referer, URL}</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
-<A
- HREF="directive-dict.html#Override"
- REL="Help"
-><STRONG>Override:</STRONG></A> Indexes<BR>
-<A
- HREF="directive-dict.html#Module"
- REL="Help"
-><STRONG>Module:</STRONG></A> mod_imap.c<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> ImapDefault is only available in Apache
-1.1 and later.<P>
-
-
-The ImapDefault directive sets the default <CODE>default</CODE> used in
-the imagemap files. Its value is overridden by a <CODE>default</CODE>
-directive within the imagemap file. If not present, the
-<CODE>default</CODE> action is <CODE>nocontent</CODE>, which means
-that a <CODE>204 No Content</CODE> is sent to the client. In this
-case, the client should continue to display the original page.
-
-<P>
-
-<H3><A NAME="imapbase">ImapBase</A></H3>
-<A
- HREF="directive-dict.html#Syntax"
- REL="Help"
-><STRONG>Syntax:</STRONG></A> ImapBase <CODE>{map, referer, URL}</CODE><BR>
-<A
- HREF="directive-dict.html#Context"
- REL="Help"
-><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
-<A
- HREF="directive-dict.html#Override"
- REL="Help"
-><STRONG>Override:</STRONG></A> Indexes<BR>
-<A
- HREF="directive-dict.html#Module"
- REL="Help"
-><STRONG>Module:</STRONG></A> mod_imap.c<BR>
-<A
- HREF="directive-dict.html#Compatibility"
- REL="Help"
-><STRONG>Compatibility:</STRONG></A> ImapBase is only available in Apache
-1.1 and later.<P>
-
-The ImapBase directive sets the default <CODE>base</CODE> used in
-the imagemap files. Its value is overridden by a <CODE>base</CODE>
-directive within the imagemap file. If not present, the
-<CODE>base</CODE> defaults to <CODE>http://servername/</CODE>.
-<HR>
-<P>
<H2>Imagemap File</H2>
The lines in the imagemap files can have one of several formats:
@@ -304,8 +207,6 @@ The values for each of the directives can any of the following:
It is impossible to escape double quotes within this text.
</DL>
-<HR>
-
<H2>Example Mapfile</H2>
<BLOCKQUOTE><CODE>
#Comments are printed in a 'formatted' or 'semiformatted' menu. <BR>
@@ -328,6 +229,125 @@ rect mailto:nate@tripod.com 100,150 200,0 "Bugs?" <BR>
&lt;/A&gt;
</CODE></BLOCKQUOTE><P>
+
+<hr>
+
+<H2><A NAME="imapmenu">ImapMenu</A> directive</H2>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ImapMenu <CODE>{none, formatted, semiformatted,
+ unformatted}</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> Indexes<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_imap<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> ImapMenu is only available in Apache
+1.1 and later.<P>
+
+The ImapMenu directive determines the action taken if an imagemap file
+is called without valid coordinates.
+<DL>
+ <DT><CODE>none</CODE>
+ <DD>If ImapMenu is
+ <CODE>none</CODE>, no menu is generated, and the <CODE>default</CODE>
+ action is performed.
+ <DT><CODE>formatted</CODE>
+ <DD>A <CODE>formatted</CODE> menu is the simplest menu. Comments
+ in the imagemap file are ignored. A level one header is
+ printed, then an hrule, then the links each on a separate line.
+ The menu has a consistent, plain look close to that of
+ a directory listing.
+ <DT><CODE>semiformatted</CODE>
+ <DD>In the <CODE>semiformatted</CODE> menu, comments are printed
+ where they occur in the imagemap file. Blank lines are turned
+ into HTML breaks. No header or hrule is printed, but otherwise
+ the menu is the same as a <CODE>formatted</CODE> menu.
+ <DT><CODE>unformatted</CODE>
+ <DD>Comments are printed, blank lines are ignored. Nothing is
+ printed that does not appear in the imagemap file. All breaks
+ and headers must be included as comments in the imagemap file.
+ This gives you the most flexibility over the appearance of your
+ menus, but requires you to treat your map files as HTML instead
+ of plaintext.
+</DL>
+
+<hr>
+
+<H2><A NAME="imapdefault">ImapDefault</A> directive</H2>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ImapDefault <CODE>{error, nocontent,
+ map, referer, URL}</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> Indexes<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_imap<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> ImapDefault is only available in Apache
+1.1 and later.<P>
+
+
+The ImapDefault directive sets the default <CODE>default</CODE> used in
+the imagemap files. Its value is overridden by a <CODE>default</CODE>
+directive within the imagemap file. If not present, the
+<CODE>default</CODE> action is <CODE>nocontent</CODE>, which means
+that a <CODE>204 No Content</CODE> is sent to the client. In this
+case, the client should continue to display the original page.
+
+<hr>
+
+<H2><A NAME="imapbase">ImapBase</A> directive</H2>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ImapBase <CODE>{map, referer, URL}</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config, virtual host, directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> Indexes<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_imap<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> ImapBase is only available in Apache
+1.1 and later.<P>
+
+The ImapBase directive sets the default <CODE>base</CODE> used in
+the imagemap files. Its value is overridden by a <CODE>base</CODE>
+directive within the imagemap file. If not present, the
+<CODE>base</CODE> defaults to <CODE>http://servername/</CODE>.
+
+
<HR>
<H3 ALIGN="CENTER">
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_include.html b/usr.sbin/httpd/htdocs/manual/mod/mod_include.html
index 0e39b881639..7d695873d0e 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_include.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_include.html
@@ -21,12 +21,41 @@
<H1 ALIGN="CENTER">Module mod_include</H1>
-This module is contained in the <CODE>mod_include.c</CODE> file, and
-is compiled in by default. It provides for server-parsed html
-documents. Several directives beyond the original NCSA definition were
-introduced in Apache 1.2 - these are flagged below with the phrase
-"Apache 1.2 and above". Of particular significance are the new flow
-control directives documented at the bottom.
+<p>This module provides for server-parsed html documents.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_include.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> include_module
+</P>
+
+<h2>Summary</h2>
+
+<p>This module provides a handler which will process files before they
+are sent to the client. The processing is controlled by specially
+formated SGML comments, referred to as <em>elements</em>. These
+elements allow conditional text, the inclusion other files or
+programs, as well as the setting and printing of environment
+variables.</p>
+
+<H2>Directives</H2>
+<UL>
+<LI><A HREF="#xbithack">XBitHack</A>
+</UL>
+
+<p>See also: <a href="core.html#options">Options</a>
+and <a href="mod_mime.html#addhandler">AddHandler</a>.</p>
+
<H2>Enabling Server-Side Includes</H2>
@@ -95,8 +124,7 @@ Valid values are <CODE>bytes</CODE> for a count in bytes, or
routine when printing dates.
</DL>
-<A NAME="echo">
-<DT><STRONG>echo</STRONG>
+<DT><STRONG><A NAME="echo">echo</a></STRONG>
<DD>
This command prints one of the include variables, defined below.
If the variable is unset, it is printed as <CODE>(none)</CODE>.
@@ -379,15 +407,16 @@ elements are:
<EM>'string1 string2'</EM> results in <EM>string1 string2</EM>
</PRE>
-<HR>
-<H2>Directives</H2>
-<UL>
-<LI><A HREF="#xbithack">XBitHack</A>
-</UL>
-<HR>
+<H2>Using Server Side Includes for ErrorDocuments</H2>
+
+There is <A HREF="../misc/custom_errordocs.html">a document</A> which
+describes how to use the features of mod_include to offer internationalized
+customized server error documents.
+<P>
+<HR>
-<H2><A NAME="xbithack">XBitHack</A></H2>
+<H2><A NAME="xbithack">XBitHack</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt XBitHack} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -436,13 +465,6 @@ the request.
</DL>
<P>
-<HR>
-<H2>Using Server Side Includes for ErrorDocuments</H2>
-
-There is <A HREF="../misc/custom_errordocs.html">a document</A> which
-describes how to use the features of mod_include to offer internationalized
-customized server error documents.
-<P>
<HR>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_info.html b/usr.sbin/httpd/htdocs/manual/mod/mod_info.html
index 8bb49e28983..23d31df32a3 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_info.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_info.html
@@ -1,8 +1,8 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html>
-<head>
-<title>Apache module mod_info</title>
-</head>
+<HTML>
+<HEAD>
+<TITLE>Apache module mod_info</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -15,27 +15,46 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<h1 ALIGN="CENTER">Module mod_info</h1>
+<H1 ALIGN="CENTER">Module mod_info</H1>
-This module is contained in the <code>mod_info.c</code> file. It
-provides a comprehensive overview of the server configuration
-including all installed modules and directives in the configuration
-files. This module is not compiled into the
-server by default. It is only available in Apache 1.1 and later. To
-enable it, add the following line to the server build Configuration
-file, and rebuild the server:
+<p>This module provides a comprehensive overview of the server
+configuration including all installed modules and directives in the
+configuration files.</p>
-<PRE>
-Module info_module mod_info.o
-</PRE>
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_info.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> info_module
+<BR>
+<A
+HREF="module-dict.html#compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
+
+<H2>Directives</H2>
+<UL>
+<LI><A HREF="#addmoduleinfo">AddModuleInfo</A>
+</UL>
+
+<h2>Using mod_info</h2>
-<HR>
<P>
-To configure it, add the following to your <code>access.conf</code> file.
+To configure it, add the following to your <CODE>access.conf</CODE> file.
<PRE>
&lt;Location /server-info&gt;
@@ -51,9 +70,9 @@ clause inside the
<A
HREF="core.html#location"
>location</A>
-directive to limit access to your server configuration information.<p>
+directive to limit access to your server configuration information.<P>
Once configured, the server information is obtained by accessing
-<tt>http://your.host.dom/server-info</tt><p>
+<TT>http://your.host.dom/server-info</TT><P>
<BLOCKQUOTE>
<STRONG>
Note that the configuration files are read by the module at run-time,
@@ -74,9 +93,45 @@ Once configured, the server information is obtained by accessing
</P>
</STRONG>
</BLOCKQUOTE>
+
<HR>
+
+<H2><A NAME="addmoduleinfo">AddModuleInfo</A></H2>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> AddModuleInfo <EM>module-name string</EM><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config, virtual host<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Extension<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_info<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> Apache 1.3 and above<P>
+
+This allows the content of <EM>string</EM> to be shown as
+HTML interpreted,
+<STRONG>Additional Information</STRONG> for the module <EM>module-name</EM>.
+Example:
+<BLOCKQUOTE>
+<PRE>
+AddModuleInfo mod_auth.c 'See &lt;A HREF="http://www.apache.org/docs/mod/mod_auth.html"&gt;http://www.apache.org/docs/mod/mod_auth.html&lt;/A&gt;'
+</PRE>
+</BLOCKQUOTE>
+
+<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_isapi.html b/usr.sbin/httpd/htdocs/manual/mod/mod_isapi.html
index bdc3d5f9393..a7cefcfdd3e 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_isapi.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_isapi.html
@@ -22,58 +22,316 @@
<H1 ALIGN="CENTER">Module mod_isapi</H1>
-<P>This module is contained in the <CODE>mod_isapi.c</CODE> file, and is
- compiled in by default. It provides support for ISAPI Extensions when
- running under Microsoft Windows. Any document with a handler of
- <CODE>isapi-isa</CODE> will be processed by this module.
+<P>This module supports ISAPI Extensions within Apache for Windows.</P>
-<H2>Purpose</H2>
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_isapi.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> isapi_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> WIN32 only
+</P>
-<P>This module implements the <A
- HREF="http://www.microsoft.com/win32dev/apiext/isapimrg.htm">ISAPI
- Extension</A> API. It allows Internet Server Applications (<EM>i.e.</EM>, ISAPI
- Extensions) to be used with Apache for Windows.
+<H2>Summary</H2>
+
+<P>This module implements the Internet Server extension API. It allows
+ Internet Server extensions (<EM>e.g.</EM> ISAPI .dll modules) to be
+ served by Apache for Windows, subject to the noted restrictions.</P>
+
+<P>ISAPI extension modules (.dll files) are written by third parties. The
+ Apache Group does not author these modules, so we provide no support for
+ them. Please contact the ISAPI's author directly if you are experiencing
+ problems running their ISAPI extention. <STRONG>Please <EM>do not</EM>
+ post such problems to Apache's lists or bug reporting pages.</STRONG></P>
<H2>Usage</H2>
-<P>In the server configuration file, add a handler called
- <CODE>isapi-isa</CODE>, and map it to files with a <CODE>.DLL</CODE>
- extension. In other words:</P>
+<P>In the server configuration file, use the AddHandler directive to
+ associate ISAPI files with the <CODE>isapi-isa</CODE> handler, and map
+ it to the with their file extensions. To enable any .dll file to be
+ processed as an ISAPI extention, edit the httpd.conf file and add the
+ following line:</P>
+
<PRE>
AddHandler isapi-isa dll
</PRE>
-<P>Now simply place the ISA DLLs into your document root, and they will
- be loaded when their URLs are accessed.</P>
-<P>ISAPI Extensions are governed by the same restrictions as CGI
- scripts. That is, <CODE>Options ExecCGI</CODE> must be active in the
- directory that contains the ISA.</P>
+<P>ISAPI extensions are governed by the same permissions and restrictions
+ as CGI scripts. That is, <CODE>Options ExecCGI</CODE> must be set for
+ the directory that contains the ISAPI .dll file.</P>
+
+<P>Review the <A HREF="#notes">Additional Notes</A> and the
+ <A HREF="#journal">Programmer's Journal</A> for additional details and
+ clarification of the specific ISAPI support offered by mod_isapi.</P>
+
+<H2>Directives</H2>
+<UL>
+<LI><A HREF="#isapireadaheadbuffer">ISAPIReadAheadBuffer</A>
+<LI><A HREF="#isapilognotsupported">ISAPILogNotSupported</A>
+<LI><A HREF="#isapiappendlogtoerrors">ISAPIAppendLogToErrors</A>
+<LI><A HREF="#isapiappendlogtoquery">ISAPIAppendLogToQuery</A>
+</UL>
+<HR>
+
+<H2><A NAME="isapireadaheadbuffer">ISAPIReadAheadBuffer directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt ISAPIReadAheadBuffer} directive&gt; -->
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ISAPIReadAheadBuffer <EM>size</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> 49152<BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> None<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_isapi<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Apache 1.3.13 and later, Win32 only<P>
+
+
+ Defines the maximum size of the Read Ahead Buffer sent to
+ ISAPI extentions when they are initally invoked. All
+ remaining data must be retrieved using the ReadClient
+ callback; some ISAPI extensions may not support the
+ ReadClient function. Refer questions to the ISAPI extention's
+ author.
+ <P>
+<HR>
+
+<H2><A NAME="isapilognotsupported">ISAPILogNotSupported directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt ISAPILogNotSupported} directive&gt; -->
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ISAPILogNotSupported <EM>on|off</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> on<BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> None<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_isapi<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Apache 1.3.13 and later, Win32 only<P>
+
+ Logs all requests for unsupported features from ISAPI extentions
+ in the server error log. While this should be turned off once
+ all desired ISAPI modules are functioning, it defaults to on
+ to help administrators track down problems.
+ <P>
+<HR>
-<H2>Notes</H2>
+<H2><A NAME="isapiappendlogtoerrors">ISAPIAppendLogToErrors directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt ISAPIAppendLogToErrors} directive&gt; -->
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ISAPIAppendLogToErrors <EM>on|off</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> off<BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> None<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_isapi<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Apache 1.3.13 and later, Win32 only<P>
+
+ Record HSE_APPEND_LOG_PARAMETER requests from ISAPI extentions
+ to the server error log.
+ <P>
+<HR>
+
+<H2><A NAME="isapiappendlogtoquery">ISAPIAppendLogToQuery directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt ISAPIAppendLogToQuery} directive&gt; -->
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ISAPIAppendLogToQuery <EM>on|off</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> off<BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config<BR>
+<A
+ HREF="directive-dict.html#Override"
+ REL="Help"
+><STRONG>Override:</STRONG></A> None<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_isapi<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Apache 1.3.13 and later, Win32 only<P>
+
+ Record HSE_APPEND_LOG_PARAMETER requests from ISAPI extentions
+ to the query field (appended to the CustomLog %q component).
+ <P>
+<HR>
+
+<H2><A NAME="notes">Additional Notes</A></H2>
<P>Apache's ISAPI implementation conforms to all of the ISAPI 2.0
specification, except for the "Microsoft-specific" extensions dealing
with asynchronous I/O. Apache's I/O model does not allow asynchronous
reading and writing in a manner that the ISAPI could access. If an ISA
- tries to access async I/O, a message will be place in the error log,
- to help with debugging.
+ tries to access unsupported features, including async I/O, a message is
+ placed in the error log to help with debugging. Since these messages
+ can become a flood, a new directive;
+ <CODE>ISAPILogNotSupported Off</CODE>, is introduced in Apache 1.3.13.</P>
<P>Some servers, like Microsoft IIS, load the ISA into the server, and
- keep it loaded until memory usage is too high, and it is
- unloaded. Apache currently loads and unloads the ISA for each
- request. This is inefficient, but Apache's request model makes this
- method the only method that currently works. A future release may use
- a more effective loading method.
+ keep it loaded until memory usage is too high, or specific configuration
+ options are used. Apache currently loads and unloads the ISA for each
+ request. This is inefficient, but Apache's request model makes this
+ method the only method that currently works. Apache 2.0 is expected to
+ support more effective loading and caching methods, with more precise
+ control over individual ISAPI modules and directories.</P>
+
+<P>Also, remember that while Apache supports ISAPI Extensions, it
+ <STRONG>does not support ISAPI Filters.</STRONG> Support for filters may
+ be added at a later date, but no support is planned at this time.</P>
+
+<H2><A NAME="journal">Programmer's Journal</A></H2>
+
+<P>If you are programming Apache 1.3 mod_isapi modules, you must limit your
+ calls to ServerSupportFunction to the following directives:</P>
+
+<DL>
+ <DT>HSE_REQ_SEND_URL_REDIRECT_RESP
+ <DD>Redirect the user to another location.<BR>
+ This must be a fully qualified URL (e.g. http://server/location).
+ <DT>HSE_REQ_SEND_URL
+ <DD>Redirect the user to another location.<BR>
+ This cannot be a fully qualified URL, you are not allowed
+ to pass the protocol or a server name (e.g. simply /location).<BR>
+ This redirection is handled by the server, not the browser.<BR>
+ <STRONG>Warning:</STRONG> in their recent documentation, Microsoft
+ appears to have abandoned the distinction between the two
+ HSE_REQ_SEND_URL functions. Apache continues to treat them as two
+ distinct functions with different requirements and behaviors.
+ <DT>HSE_REQ_SEND_RESPONSE_HEADER
+ <DD>Apache accepts a response body following the header if it follows
+ the blank line (two consecutive newlines) in the headers string
+ argument. This body cannot contain NULLs, since the headers
+ argument is NULL terminated.
+ <DT>HSE_REQ_DONE_WITH_SESSION
+ <DD>Apache considers this a no-op, since the session will be finished
+ when the ISAPI returns from processing.
+ <DT>HSE_REQ_MAP_URL_TO_PATH
+ <DD>Apache will translate a virtual name to a physical name.
+ <DT>HSE_APPEND_LOG_PARAMETER <EM>Apache 1.3.13 and later</EM>
+ <DD>This logged message may be captured in any of the following logs:
+ <UL>
+ <LI>in the \"%{isapi-parameter}n\" component in a CustomLog directive
+ <LI>in the %q log component with the ISAPIAppendLogToQuery On directive
+ <LI>in the error log with the ISAPIAppendLogToErrors On directive
+ </UL>
+ The first option, the %{isapi-parameter}n component, is always available
+ and prefered.
+ <DT>HSE_REQ_IS_KEEP_CONN <EM>Apache 1.3.13 and later</EM>
+ <DD>Will return the negotiated Keep-Alive status.
+ <DT>HSE_REQ_SEND_RESPONSE_HEADER_EX <EM>Apache 1.3.13 and later</EM>
+ <DD>Will behave as documented, although the fKeepConn flag is ignored.
+ <DT>HSE_REQ_IS_CONNECTED <EM>Apache 1.3.13 and later</EM>
+ <DD>Will report false if the request has been aborted.
+</DL>
+
+<P>Apache returns FALSE to any unsupported call to ServerSupportFunction, and
+ sets the GetLastError value to ERROR_INVALID_PARAMETER.</P>
+
+<P>Prior to Apache 1.3.13, ReadClient was a noop, and any request with a request
+ body greater than 48kb was rejected by mod_isapi. As of Apache 1.3.13,
+ ReadClient now retrieves the request body exceeding the initial buffer
+ (defined by ISAPIReadAheadBuffer). Based on the ISAPIReadAheadBuffer
+ setting (number of bytes to buffer prior to calling the ISAPI handler)
+ shorter requests are sent complete to the extension when it is invoked.
+ If the request is longer, the ISAPI extension must use ReadClient to
+ retrieve the remaining request body.</P>
-<P>Apache 1.3a1 currently limits POST and PUT input to 48k per
- request. This is to work around a problem with the ISAPI implementation
- that could result in a denial of service attack. It is expected that
- support for larger uploads will be added soon.
+<P>WriteClient is supported, but only with the HSE_IO_SYNC flag or
+ no option flag (value of 0). Any other WriteClient request will
+ be rejected with a return value of FALSE, and a GetLastError
+ value of ERROR_INVALID_PARAMETER.</P>
-<P>Also, remember that while Apache supports ISAPI Extensions, it does
- not support ISAPI Filters. Support for filters may be added at a later
- date, but no support is planned at this time.</P>
+<P>GetServerVariable is supported, although extended server variables do not
+ exist (as defined by other servers.) All the usual Apache CGI environment
+ variables are available from GetServerVariable. As of Apache 1.3.13,
+ the ALL_HTTP and ALL_RAW and variables are now available.</P>
+<P>Apache 2.0 mod_isapi may support additional features introduced in later
+ versions of the ISAPI specification, as well as limited emulation of
+ async I/O and the TransmitFile semantics. Apache 2.0 may also support
+ caching of ISAPI .dlls for performance. No further enhancements to the
+ Apache 1.3 mod_isapi features are anticipated.</P>
<HR>
<H3 ALIGN="CENTER">
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_log_agent.html b/usr.sbin/httpd/htdocs/manual/mod/mod_log_agent.html
index abe241745e7..4484803d1f1 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_log_agent.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_log_agent.html
@@ -21,14 +21,39 @@
<H1 ALIGN="CENTER">Module mod_log_agent</H1>
-This module is contained in the <CODE>mod_log_agent.c</CODE> file, and is not
-compiled in by default. It provides for logging of the client user agents.
-mod_log_agent is deprecated. Use <A HREF="mod_log_config.html">mod_log_config</A>
-instead.
+<p>This module provides for logging of the client user agents.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_log_agent.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> agent_log_module
+</p>
+
+<h2>Summary</h2>
+
+<p>This module is provided strictly for compatibility with NCSA httpd,
+and is deprecated. We recommend you use <A
+HREF="mod_log_config.html">mod_log_config</A> instead.</p>
+
+<h2>Directives</h2>
<UL>
<LI><A HREF="#agentlog">AgentLog</A>
</UL>
+
+<p>See also: <a href="mod_log_config.html#customlog">CustomLog</a> and
+<a href="mod_log_config.html#logformat">LogFormat</a>.
+
<HR>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_log_config.html b/usr.sbin/httpd/htdocs/manual/mod/mod_log_config.html
index 9295d0be7fd..404951c12fd 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_log_config.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_log_config.html
@@ -21,13 +21,32 @@
<H1 ALIGN="CENTER">Module mod_log_config</H1>
<P>
-This module is contained in the <CODE>mod_log_config.c</CODE> file,
-and is compiled in by default in Apache 1.2. mod_log_config replaces
-mod_log_common in Apache 1.2. Prior to version 1.2, mod_log_config was
-an optional module. It provides for logging of the requests made to
+This module provides for logging of the requests made to
the server, using the Common Log Format or a user-specified format.
</P>
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_log_config.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> config_log_module
+<BR>
+<A
+HREF="module-dict.html#compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Was an extension module prior to Apache 1.2.
+</P>
+
+
<H2>Summary</H2>
<P>
Three directives are provided by this module: <CODE>TransferLog</CODE>
@@ -38,6 +57,16 @@ be used multiple times in each server to cause each request to be
logged to multiple files.
</P>
+<H2>Directives</H2>
+
+<UL>
+<LI><A HREF="#cookielog">CookieLog</A>
+<LI><A HREF="#customlog">CustomLog</A>
+<LI><A HREF="#customlog-conditional">CustomLog (conditional)</A>
+<LI><A HREF="#logformat">LogFormat</A>
+<LI><A HREF="#transferlog">TransferLog</A>
+</UL>
+
<H3>Compatibility notes</H3>
<UL>
@@ -179,9 +208,9 @@ requests which did <STRONG>not</STRONG> return some sort of normal status.
<P>
Note that the common log format is defined by the string <CODE>"%h %l
-%u %t \"%r\" %s %b"</CODE>, which can be used as the basis for
+%u %t \"%r\" %>s %b"</CODE>, which can be used as the basis for
extending for format if desired (<EM>e.g.</EM>, to add extra fields at the end).
-NCSA's extended/combined log format would be <CODE>"%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\""</CODE>.
+NCSA's extended/combined log format would be <CODE>"%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\""</CODE>.
<P>
@@ -219,19 +248,11 @@ document for details on why your security could be compromised if the
directory where logfiles are stored is writable by anyone other than
the user that starts the server.
<P>
-<H2>Directives</H2>
-<UL>
-<LI><A HREF="#cookielog">CookieLog</A>
-<LI><A HREF="#customlog">CustomLog</A>
-<LI><A HREF="#customlog-conditional">CustomLog (conditional)</A>
-<LI><A HREF="#logformat">LogFormat</A>
-<LI><A HREF="#transferlog">TransferLog</A>
-</UL>
<HR>
-<H2><A NAME="cookielog">CookieLog</A></H2>
+<H2><A NAME="cookielog">CookieLog</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt CookieLog} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -258,7 +279,7 @@ only for compatibility with
<P>
<HR>
-<H2><A NAME="customlog">CustomLog</A></H2>
+<H2><A NAME="customlog">CustomLog</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -309,7 +330,7 @@ directive.
</P>
<HR>
-<H2><A NAME="customlog-conditional">CustomLog (conditional)</A></H2>
+<H2><A NAME="customlog-conditional">CustomLog (conditional)</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -359,7 +380,7 @@ can use:
</PRE>
<HR>
-<H2><A NAME="logformat">LogFormat</A></H2>
+<H2><A NAME="logformat">LogFormat</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt LogFormat} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -370,7 +391,7 @@ can use:
HREF="directive-dict.html#Default"
REL="Help"
><STRONG>Default:</STRONG></A> <CODE>LogFormat &quot;%h %l %u %t \&quot;%r\&quot;
-%s %b&quot;</CODE><BR>
+%>s %b&quot;</CODE><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -413,7 +434,7 @@ it doesn't actually apply the format and make it the default.
<HR>
-<H2><A NAME="transferlog">TransferLog</A></H2>
+<H2><A NAME="transferlog">TransferLog</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt TransferLog} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html b/usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html
index 04955d3f06d..6c7ea277813 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_log_referer.html
@@ -21,11 +21,40 @@
<H1 ALIGN="CENTER">Module mod_log_referer</H1>
-This module is contained in the <CODE>mod_log_referer.c</CODE> file, and is not
-compiled in by default. It provides for logging of the documents which
-reference documents on the server. As of Apache 1.3.5 it is deprecated.
-Use <A HREF="mod_log_config.html#customlog-conditional">CustomLog
-(conditional)</A> instead.
+<p>This module provides for logging of the documents which
+reference documents on the server.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_log_referer.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> referer_log_module
+</P>
+
+<h2>Summary</h2>
+
+<p>This module is provided strictly for compatibility with NCSA httpd,
+and is deprecated. We recommend you use <A
+HREF="mod_log_config.html">mod_log_config</A> instead.</p>
+
+<H2>Directives</H2>
+<UL>
+<LI><A HREF="#refererignore">RefererIgnore</A>
+<LI><A HREF="#refererlog">RefererLog</A>
+</UL>
+
+<p>See also: <a href="mod_log_config.html#customlog">CustomLog</a> and
+<a href="mod_log_config.html#logformat">LogFormat</a>.
+
<H2>Log file format</H2>
The log file contains a separate line for each refer. Each line has the
@@ -36,15 +65,11 @@ the one requested by the client, and <EM>document</EM> is the (%-decoded)
local URL to the document being referred to.
-<H2>Directives</H2>
-<UL>
-<LI><A HREF="#refererignore">RefererIgnore</A>
-<LI><A HREF="#refererlog">RefererLog</A>
-</UL>
+
<HR>
-<H2><A NAME="refererignore">RefererIgnore</A></H2>
+<H2><A NAME="refererignore">RefererIgnore</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt RefererIgnore} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -72,7 +97,7 @@ This avoids logging references from www.ncsa.uiuc.edu.
<P><HR>
-<H2><A NAME="refererlog">RefererLog</A></H2>
+<H2><A NAME="refererlog">RefererLog</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt RefererLog} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html b/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html
index ebfb84d288c..b1ab4e9ab0f 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_mime.html
@@ -21,9 +21,24 @@
<H1 ALIGN="CENTER">Module mod_mime</H1>
-This module is contained in the <CODE>mod_mime.c</CODE> file, and is
-compiled in by default. It provides for determining the types of files
-from the filename.
+<p>This module provides for determining the types of files
+from the filename and for association of handlers with files.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_mime.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> mime_module
+</P>
<H2>Summary</H2>
@@ -54,6 +69,25 @@ Note that changing the type or encoding of a file does not change the
value of the <CODE>Last-Modified</CODE> header. Thus, previously cached
copies may still be used by a client or proxy, with the previous headers.
+<H2>Directives</H2>
+<UL>
+<li><a href="#addcharset">AddCharset</a></li>
+<LI><A HREF="#addencoding">AddEncoding</A>
+<LI><A HREF="#addhandler">AddHandler</A>
+<LI><A HREF="#addlanguage">AddLanguage</A>
+<LI><A HREF="#addtype">AddType</A>
+<LI><A HREF="#defaultlanguage">DefaultLanguage</A>
+<LI><A HREF="#forcetype">ForceType</A>
+<LI><A HREF="#removeencoding">RemoveEncoding</A>
+<LI><A HREF="#removehandler">RemoveHandler</A>
+<LI><A HREF="#removetype">RemoveType</A>
+<LI><A HREF="#sethandler">SetHandler</A>
+<LI><A HREF="#typesconfig">TypesConfig</A>
+</UL>
+
+<p>See also: <a
+href="mod_mime_magic.html#mimemagicfile">MimeMagicFile</a>.</p>
+
<H2><A NAME="multipleext">Files with Multiple Extensions</A></H2>
Files can have more than one extension, and the order of the
@@ -90,22 +124,10 @@ extension is mapped to the MIME-type "text/html", then the file
the "imap-file" handler will be used, and so it will be treated as a
mod_imap imagemap file.
-<H2>Directives</H2>
-<UL>
-<li><a href="#addcharset">AddCharset</a></li>
-<LI><A HREF="#addencoding">AddEncoding</A>
-<LI><A HREF="#addhandler">AddHandler</A>
-<LI><A HREF="#addlanguage">AddLanguage</A>
-<LI><A HREF="#addtype">AddType</A>
-<LI><A HREF="#defaultlanguage">DefaultLanguage</A>
-<LI><A HREF="#forcetype">ForceType</A>
-<LI><A HREF="#removehandler">RemoveHandler</A>
-<LI><A HREF="#sethandler">SetHandler</A>
-<LI><A HREF="#typesconfig">TypesConfig</A>
-</UL>
+
<HR>
-<H2><A NAME="addcharset">AddCharset</A></H2>
+<H2><A NAME="addcharset">AddCharset</A> directive</H2>
<A HREF="directive-dict.html#Syntax" REL="Help"
><STRONG>Syntax:</STRONG></A> AddCharset <i>charset extension
[extension...]</i><br>
@@ -160,12 +182,12 @@ charset preference.
<hr>
-<H2><A NAME="addencoding">AddEncoding</A></H2>
+<H2><A NAME="addencoding">AddEncoding</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddEncoding} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> AddEncoding <EM>MIME-enc extension extension...</EM><BR>
+><STRONG>Syntax:</STRONG></A> AddEncoding <EM>MIME-enc extension [extension ...]</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -216,12 +238,12 @@ multiple extensions</A>
<P><HR>
-<H2><A NAME="addhandler">AddHandler</A></H2>
+<H2><A NAME="addhandler">AddHandler</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> AddHandler <EM>handler-name extension extension...</EM><BR>
+><STRONG>Syntax:</STRONG></A> AddHandler <EM>handler-name extension [extension ...]</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -266,12 +288,12 @@ multiple extensions</A>
<HR>
-<H2><A NAME="addlanguage">AddLanguage</A></H2>
+<H2><A NAME="addlanguage">AddLanguage</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddLanguage} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> AddLanguage <EM>MIME-lang extension extension...</EM><BR>
+><STRONG>Syntax:</STRONG></A> AddLanguage <EM>MIME-lang extension [extension ...]</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -290,7 +312,7 @@ multiple extensions</A>
><STRONG>Module:</STRONG></A> mod_mime
<P>
-The AddLanguage directive maps the given filename extensions to the
+The AddLanguage directive maps the given filename extension tos the
specified content language. <EM>MIME-lang</EM> is the MIME language of
filenames containing <EM>extension</EM>. This mapping is added to any
already in force, overriding any mappings that already exist for the
@@ -335,12 +357,12 @@ HREF="./mod_negotiation.html">mod_negotiation</A>
<HR>
-<H2><A NAME="addtype">AddType</A></H2>
+<H2><A NAME="addtype">AddType</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt AddType} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> AddType <EM>MIME-type extension extension...</EM><BR>
+><STRONG>Syntax:</STRONG></A> AddType <EM>MIME-type extension [extension ...]</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -359,7 +381,7 @@ HREF="./mod_negotiation.html">mod_negotiation</A>
><STRONG>Module:</STRONG></A> mod_mime<P>
The AddType directive maps the given filename extensions onto the
-specified content type. <EM>MIME-enc</EM> is the MIME type to use for
+specified content type. <EM>MIME-type</EM> is the MIME type to use for
filenames containing <EM>extension</EM>. This mapping is added to any
already in force, overriding any mappings that already exist for the
same <EM>extension</EM>. This directive can be used to add mappings
@@ -382,7 +404,7 @@ multiple extensions</A>
<HR>
-<H2><A NAME="defaultlanguage">DefaultLanguage</A></H2>
+<H2><A NAME="defaultlanguage">DefaultLanguage</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt DefaultLanguage} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -438,7 +460,7 @@ multiple extensions</A>
<HR>
-<H2><A NAME="forcetype">ForceType</A></H2>
+<H2><A NAME="forcetype">ForceType</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
@@ -474,12 +496,66 @@ had a directory full of GIF files, but did not want to label them all with
<P>Note that this will override any filename extensions that might determine
the media type.</P><HR>
-<H2><A NAME="removehandler">RemoveHandler</A></H2>
+<H2><A NAME="removeencoding">RemoveEncoding</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
-><STRONG>Syntax:</STRONG></A> RemoveHandler <EM>extension extension...</EM><BR>
+><STRONG>Syntax:</STRONG></A> RemoveEncoding <i>extension [extension ...]</i><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_mime<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> RemoveEncoding is only available in Apache
+1.3.13 and later.<P>
+
+<P>
+The <SAMP>RemoveEncoding</SAMP> directive removes any
+encoding associations for files with the given extensions.
+This allows <CODE>.htaccess</CODE> files in subdirectories to undo
+any associations inherited from parent directories or the server
+config files. An example of its use might be:
+</P>
+<DL>
+ <DT><CODE>/foo/.htaccess:</CODE></DT>
+ <DD><CODE>AddEncoding x-gzip .gz</CODE>
+ <br>
+ <code>AddType text/plain .asc</code>
+ <br>
+ <code>&lt;Files *.gz.asc&gt;</code>
+ <br>
+ <code>&nbsp;&nbsp;&nbsp;&nbsp;RemoveEncoding .gz</code>
+ <br>
+ <code>&lt;/Files&gt;</code></dd>
+</DL>
+<P>
+This will cause <code>foo.gz</code> to mark as being encoded with the
+gzip method, but <code>foo.gz.asc</code> as an unencoded plaintext file.
+</P>
+<p>
+<b>Note:</b>RemoveEncoding directives are processed <i>after</i> any
+AddEncoding directives, so it is possible they may undo the effects
+of the latter if both occur within the same directory configuration.
+</p>
+<HR>
+
+<H2><A NAME="removehandler">RemoveHandler</A> directive</H2>
+
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> RemoveHandler <EM>extension [extension ...]</EM><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
@@ -519,7 +595,54 @@ files, rather than as candidates for parsing (see the
</P>
<HR>
-<H2><A NAME="sethandler">SetHandler</A></H2>
+<H2><A NAME="removetype">RemoveType</A> directive</H2>
+
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> RemoveType <i>extension [extension ...]</i><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> directory, .htaccess<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_mime<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> RemoveType is only available in Apache
+1.3.13 and later.<P>
+
+<P>
+The <SAMP>RemoveType</SAMP> directive removes any
+MIME type associations for files with the given extensions.
+This allows <CODE>.htaccess</CODE> files in subdirectories to undo
+any associations inherited from parent directories or the server
+config files. An example of its use might be:
+</P>
+<DL>
+ <DT><CODE>/foo/.htaccess:</CODE></DT>
+ <DD><CODE>RemoveType .cgi</CODE></dd>
+</DL>
+<P>
+This will remove any special handling of <code>.cgi</code> files in the
+<code>/foo/</code> directory and any beneath it, causing the files to be
+treated as being of the <a href="core.html#defaulttype">default type</a>.
+</P>
+<p>
+<b>Note:</b><code>RemoveType</code> directives are processed <i>after</i> any
+<code>AddType</code> directives, so it is possible they may undo the effects
+of the latter if both occur within the same directory configuration.
+</p>
+<HR>
+
+<H2><A NAME="sethandler">SetHandler</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
@@ -565,7 +688,7 @@ called, you might put the following into access.conf:
</PRE>
<HR>
-<H2><A NAME="typesconfig">TypesConfig</A></H2>
+<H2><A NAME="typesconfig">TypesConfig</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt TypesConfig} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -574,7 +697,7 @@ called, you might put the following into access.conf:
<A
HREF="directive-dict.html#Default"
REL="Help"
-><STRONG>Default:</STRONG></A> <CODE>TypesConfig conf/MIME.types</CODE><BR>
+><STRONG>Default:</STRONG></A> <CODE>TypesConfig conf/mime.types</CODE><BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_mime_magic.html b/usr.sbin/httpd/htdocs/manual/mod/mod_mime_magic.html
index a85e6b46b5b..cffa5dec462 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_mime_magic.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_mime_magic.html
@@ -17,34 +17,56 @@
<H1 align="CENTER">Module mod_mime_magic</H1>
- This module is contained in the mod_mime_magic.c file, and is
- an optional extension to the Apache HTTPD server.
- It can be used to determine the MIME type of a file by looking at a
- few bytes of its contents, the same way the Unix file(1) command works.
- To use mod_mime_magic you have to enable the following line in the
- server build <TT>Configuration</TT> file:
+ <p>This module provides for determining the MIME type of a file by
+ looking at a few bytes of its contents.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_mime_magic.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> mime_magic_module
+</P>
- <PRE>
- AddModule modules/standard/mod_mime_magic.o
- </PRE>
- This should be listed <EM>before</EM> mod_mime in the build
- <TT>Configuration</TT> file so that it will be used after mod_mime.
- mod_mime_magic is intended as a "second line of defense" for cases
- mod_mime cannot resolve.
<H2>Summary</H2>
- This module is derived from a free version of the <CODE>file(1)</CODE>
- command for Unix,
- which uses "magic numbers" and other hints from a file's contents to
- figure out what the contents are.
- In the case of this module,
- it tries to figure out the MIME type of the file.
- <P>
- This module active only if the magic file is specified by the
- <A HREF="#mimemagicfile"><CODE>MimeMagicFile</CODE></A> directive.
+ <p>This module determines the MIME type of files in the same way the
+ Unix file(1) command works: it looks at the first few bytes of
+ the file. It is intended as a "second line of defense" for cases
+ that <a href="mod_mime.html">mod_mime</a> can't resolve. To assure
+ that mod_mime gets first try at determining a file's MIME type,
+ be sure to list mod_mime_magic <STRONG>before</STRONG> mod_mime
+ in the configuration.
+
+ <p>This module is derived from a free version of the
+ <CODE>file(1)</CODE> command for Unix, which uses "magic numbers"
+ and other hints from a file's contents to figure out what the
+ contents are. This module is active only if the magic file is
+ specified by the <A
+ HREF="#mimemagicfile"><CODE>MimeMagicFile</CODE></A> directive.
+
+
+ <H2>Directives</H2>
<P>
+ <UL>
+ <LI><A HREF="#mimemagicfile">MimeMagicFile</A>
+ </LI>
+ </UL>
+ </P>
+
+ <h2>Format of the Magic File</h2>
+
+<P>
The contents of the file are plain ASCII text in 4-5 columns.
Blank lines are allowed but ignored.
Commented lines use a hash mark "#".
@@ -135,7 +157,7 @@
0 string \037\213 application/octet-stream x-gzip
</PRE>
- <H3>Performance Issues</H3>
+ <H2>Performance Issues</H2>
This module is not for every system. If your system is barely keeping
up with its load or if you're performing a web server benchmark,
@@ -158,53 +180,6 @@
listed in increasing priority so that will mean this one is used only
as a last resort, just like it was designed to.
- <H2>Directives</H2>
- <P>
- <UL>
- <LI><A HREF="#mimemagicfile">MimeMagicFile</A>
- </LI>
- </UL>
- </P>
- <HR>
- <H2><A NAME="mimemagicfile">
- MimeMagicFile
- </A></H2>
- <P>
- <A
- HREF="directive-dict.html#Syntax"
- REL="Help"
- ><STRONG>Syntax:</STRONG></A> MimeMagicFile <EM>magic-file-name</EM>
- <BR>
- <A
- HREF="directive-dict.html#Default"
- REL="Help"
- ><STRONG>Default:</STRONG></A> none
- <BR>
- <A
- HREF="directive-dict.html#Context"
- REL="Help"
- ><STRONG>Context:</STRONG></A> server config, virtual host
- <BR>
- <A
- HREF="directive-dict.html#Status"
- REL="Help"
- ><STRONG>Status:</STRONG></A> Extension
- <BR>
- <A
- HREF="directive-dict.html#Module"
- REL="Help"
- ><STRONG>Module:</STRONG></A> mod_mime_magic
- <P>
-
- The <CODE>MimeMagicFile</CODE> directive can be used to enable this module,
- the default file is distributed at <CODE>conf/magic</CODE>.
- Non-rooted paths are relative to the ServerRoot. Virtual hosts
- will use the same file as the main server unless a more specific setting
- is used, in which case the more specific setting overrides the main server's
- file.
- <P>
- <HR>
-
<H2><A NAME="notes">Notes</A></H2>
The following notes apply to the mod_mime_magic module and are
@@ -271,5 +246,44 @@
*/
</PRE>
+ <HR>
+ <H2><A NAME="mimemagicfile">
+ MimeMagicFile
+ </A></H2>
+ <P>
+ <A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+ ><STRONG>Syntax:</STRONG></A> MimeMagicFile <EM>magic-file-name</EM>
+ <BR>
+ <A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+ ><STRONG>Default:</STRONG></A> none
+ <BR>
+ <A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+ ><STRONG>Context:</STRONG></A> server config, virtual host
+ <BR>
+ <A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+ ><STRONG>Status:</STRONG></A> Extension
+ <BR>
+ <A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+ ><STRONG>Module:</STRONG></A> mod_mime_magic
+ <P>
+
+ The <CODE>MimeMagicFile</CODE> directive can be used to enable this module,
+ the default file is distributed at <CODE>conf/magic</CODE>.
+ Non-rooted paths are relative to the ServerRoot. Virtual hosts
+ will use the same file as the main server unless a more specific setting
+ is used, in which case the more specific setting overrides the main server's
+ file.
+ <P>
+
</BODY>
</HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html b/usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html
index 1459de95aa5..a455e829557 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_mmap_static.html
@@ -21,15 +21,29 @@
<H1 ALIGN="CENTER">Module mod_mmap_static</H1>
<P>
- This module is contained in the <CODE>mod_mmap_static.c</CODE> file, with
- Apache 1.3 and later. It provides mmap()ing of a statically configured list
- of frequently requested but not changed files. It is not compiled into the
- server by default. To use <CODE>mod_mmap_static</CODE> you have to enable
- the following line in the server build <CODE>Configuration</CODE> file:
- <PRE>
- AddModule modules/experimental/mod_mmap_static.o
- </PRE>
- </P>
+ This module provides mmap()ing of a statically configured list
+ of frequently requested but not changed files.
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Experimental
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_mmap_static.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> mmap_static_module
+<BR>
+<A
+HREF="module-dict.html#Compatability"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3 and later.
+</P>
<H2>Summary</H2>
<P>
@@ -65,7 +79,7 @@
<HR>
- <H2><A NAME="mmapfile">MMapFile</A></H2>
+ <H2><A NAME="mmapfile">MMapFile</A> directive</H2>
<P>
<A
HREF="directive-dict.html#Syntax"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html b/usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html
index 7e49cfa35b6..9bb3377369d 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_negotiation.html
@@ -21,9 +21,24 @@
<H1 ALIGN="CENTER">Module mod_negotiation</H1>
-This module is contained in the <CODE>mod_negotiation.c</CODE> file,
-and is compiled in by default. It provides for <A
-HREF="../content-negotiation.html">content negotiation</A>.
+<p>This module provides for <A
+HREF="../content-negotiation.html">content negotiation</A>.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_negotiation.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> negotiation_module
+</P>
<H2>Summary</H2>
Content negotiation, or more accurately content selection, is the
@@ -38,7 +53,20 @@ which explicitly lists the files containing the variants.
filename pattern match, and choose from amongst the results.
</UL>
-<H3>Type maps</H3>
+<H2>Directives</H2>
+<UL>
+<LI><A HREF="#cachenegotiateddocs">CacheNegotiatedDocs</A>
+<LI><A HREF="#languagepriority">LanguagePriority</A>
+</UL>
+
+<STRONG>See also</STRONG>:
+<A HREF="./mod_mime.html#defaultlanguage">DefaultLanguage</A>,
+<A HREF="./mod_mime.html#addencoding">AddEncoding</A>,
+<A HREF="./mod_mime.html#addlanguage">AddLanguage</A>,
+<A HREF="./mod_mime.html#addtype">AddType</A>, and
+<A HREF="core.html#options">Options</A>.
+
+<H2>Type maps</H2>
A type map has the same format as RFC822 mail headers. It contains document
descriptions separated by blank lines, with lines beginning with a hash
character ('#') treated as comments. A document description consists of
@@ -88,7 +116,7 @@ Example:
<DD>The path to the file containing this variant, relative to the map file.
</DL>
-<H3>MultiViews</H3>
+<H2>MultiViews</H2>
A MultiViews search is enabled by the MultiViews
<A HREF="core.html#options">Option</A>.
If the server receives a request for <CODE>/some/dir/foo</CODE> and
@@ -101,23 +129,10 @@ requirements, and returns that document.<P>
-<H2>Directives</H2>
-<UL>
-<LI><A HREF="#cachenegotiateddocs">CacheNegotiatedDocs</A>
-<LI><A HREF="#languagepriority">LanguagePriority</A>
-</UL>
-
-<STRONG>See also</STRONG>:
-<A HREF="./mod_mime.html#defaultlanguage">DefaultLanguage</A>,
-<A HREF="./mod_mime.html#addencoding">AddEncoding</A>,
-<A HREF="./mod_mime.html#addlanguage">AddLanguage</A>,
-<A HREF="./mod_mime.html#addtype">AddType</A>, and
-<A HREF="core.html#options">Option</A>.
-
<HR>
-<H2><A NAME="cachenegotiateddocs">CacheNegotiatedDocs</A></H2>
+<H2><A NAME="cachenegotiateddocs">CacheNegotiatedDocs</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -154,7 +169,7 @@ HTTP/1.1 requests.
-<H2><A NAME="languagepriority">LanguagePriority</A></H2>
+<H2><A NAME="languagepriority">LanguagePriority</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt LanguagePriority} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_proxy.html b/usr.sbin/httpd/htdocs/manual/mod/mod_proxy.html
index ae058fbc322..7a3b9048bb2 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_proxy.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_proxy.html
@@ -21,17 +21,29 @@
<H1 ALIGN="CENTER">Apache module mod_proxy</H1>
-This module is contained in the <CODE>mod_proxy.c</CODE> file for Apache 1.1.x,
-or the <CODE>modules/proxy</CODE> subdirectory for Apache 1.2, and
-is not compiled in by default. It provides for an <STRONG>HTTP
-1.0</STRONG> caching proxy
-server. It is only available in Apache 1.1 and later. Common configuration
-questions are addressed <A HREF="#configs">after the directive
-descriptions</A>.
-
-<H3>Note:</H3>
-<P>This module was experimental in Apache 1.1.x. As of Apache 1.2, mod_proxy
-stability is <EM>greatly</EM> improved.<P>
+<p>This module provides for an <STRONG>HTTP 1.0</STRONG> caching proxy
+server.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_proxy.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> proxy_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
<H2>Summary</H2>
@@ -44,6 +56,10 @@ proxying capability for
The module can be configured to connect to other proxy modules for these
and other protocols.
+<P>This module was experimental in Apache 1.1.x. As of Apache 1.2, mod_proxy
+stability is <EM>greatly</EM> improved.<P>
+
+
<H2>Directives</H2>
<UL>
<LI><A HREF="#proxyrequests">ProxyRequests</A>
@@ -68,9 +84,103 @@ and other protocols.
<LI><A HREF="#nocache">NoCache</A>
</UL>
+<H2><A NAME="configs">Common configuration topics</A></H2>
+
+<UL>
+<LI><A HREF="#access">Controlling access to your proxy</A>
+<LI><A HREF="#shortname">Using Netscape hostname shortcuts</A>
+<LI><A HREF="#mimetypes">Why doesn't file type <EM>xxx</EM> download via FTP?</A>
+<LI><A HREF="#startup">Why does Apache start more slowly when using the
+ proxy module?</A>
+<LI><A HREF="#socks">Can I use the Apache proxy module with my SOCKS proxy?</A>
+<LI><A HREF="#intranet">What other functions are useful for an intranet proxy server?</A>
+</UL>
+
+<H2><A NAME="access">Controlling access to your proxy</A></H2>
+
+You can control who can access your proxy via the normal &lt;Directory&gt;
+control block using the following example:<P>
+
+<PRE>
+&lt;Directory proxy:*&gt;
+Order Deny,Allow
+Deny from [machines you'd like *not* to allow by IP address or name]
+Allow from [machines you'd like to allow by IP address or name]
+&lt;/Directory&gt;
+</PRE><P>
+
+A &lt;Files&gt; block will also work, and is the only method known to work
+for all possible URLs in Apache versions earlier than 1.2b10.<P>
+
+<H2><A NAME="shortname">Using Netscape hostname shortcuts</A></H2>
+
+There is an optional patch to the proxy module to allow Netscape-like
+hostname shortcuts to be used. It's available from the
+<A HREF="http://www.apache.org/dist/contrib/patches/1.2/netscapehost.patch"
+><SAMP>contrib/patches/1.2</SAMP></A> directory on the Apache Web site.<P>
+
+<H2><A NAME="mimetypes">Why doesn't file type <EM>xxx</EM> download via FTP?</A></H2>
+
+You probably don't have that particular file type defined as
+<EM>application/octet-stream</EM> in your proxy's mime.types configuration
+file. A useful line can be<P>
+
+<PRE>
+application/octet-stream bin dms lha lzh exe class tgz taz
+</PRE>
+
+<H2><A NAME="type">How can I force an FTP ASCII download of File <EM>xxx</EM>?</A></H2>
+
+In the rare situation where you must download a specific file using the FTP
+<STRONG>ASCII</STRONG> transfer method (while the default transfer is in
+<STRONG>binary</STRONG> mode), you can override mod_proxy's default by
+suffixing the request with <SAMP>;type=a</SAMP> to force an ASCII transfer.<P>
+
+<H2><A NAME="startup">Why does Apache start more slowly when using the
+ proxy module?</A></H2>
+
+If you're using the <CODE>ProxyBlock</CODE> or <CODE>NoCache</CODE>
+directives, hostnames' IP addresses are looked up and cached during
+startup for later match test. This may take a few seconds (or more)
+depending on the speed with which the hostname lookups occur.<P>
+
+<H2><A NAME="socks">Can I use the Apache proxy module with my SOCKS proxy?</A></H2>
+
+Yes. Just build Apache with the rule <CODE>SOCKS4=yes</CODE> in your
+<EM>Configuration</EM> file, and follow the instructions there. SOCKS5
+capability can be added in a similar way (there's no <CODE>SOCKS5</CODE>
+rule yet), so use the <CODE>EXTRA_LDFLAGS</CODE> definition, or build Apache
+normally and run it with the <EM>runsocks</EM> wrapper provided with SOCKS5,
+if your OS supports dynamically linked libraries.<P>
+
+Some users have reported problems when using SOCKS version 4.2 on Solaris.
+The problem was solved by upgrading to SOCKS 4.3.<P>
+
+Remember that you'll also have to grant access to your Apache proxy machine by
+permitting connections on the appropriate ports in your SOCKS daemon's
+configuration.<P>
+
+<H2><A NAME="intranet">What other functions are useful for an intranet proxy server?</A></H2>
+
+<P>An Apache proxy server situated in an intranet needs to forward external
+requests through the company's firewall. However, when it has to access
+resources within the intranet, it can bypass the firewall when accessing
+hosts. The <A HREF="#noproxy">NoProxy</A> directive is useful for specifying
+which hosts belong to the intranet and should be accessed directly.</P>
+
+<P>Users within an intranet tend to omit the local domain name from their
+WWW requests, thus requesting "http://somehost/" instead of
+"http://somehost.my.dom.ain/". Some commercial proxy servers let them get
+away with this and simply serve the request, implying a configured
+local domain. When the <A HREF="#proxydomain">ProxyDomain</A> directive
+is used and the server is <A HREF="#proxyrequests">configured for
+proxy service</A>, Apache can return a redirect response and send the client
+to the correct, fully qualified, server address. This is the preferred method
+since the user's bookmark files will then contain fully qualified hosts.</P>
+
<HR>
-<H2><A NAME="proxyrequests">ProxyRequests</A></H2>
+<H2><A NAME="proxyrequests">ProxyRequests</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -107,7 +217,7 @@ HREF="#proxypass">ProxyPass</A> directive.
<HR>
-<H2><A NAME="proxyremote">ProxyRemote</A></H2>
+<H2><A NAME="proxyremote">ProxyRemote</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -164,7 +274,7 @@ them.
<HR>
-<H2><A NAME="proxypass">ProxyPass</A></H2>
+<H2><A NAME="proxypass">ProxyPass</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -211,7 +321,7 @@ internally converted into a proxy request to
<HR>
-<H2><A NAME="proxypassreverse">ProxyPassReverse</A></H2>
+<H2><A NAME="proxypassreverse">ProxyPassReverse</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -276,7 +386,7 @@ conjunction with the proxy pass-through feature ("<SAMP>RewriteRule ...
<HR>
-<H2><A NAME="allowconnect">AllowCONNECT</A></H2>
+<H2><A NAME="allowconnect">AllowCONNECT</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -318,7 +428,7 @@ listed ports only.
<HR>
-<H2><A NAME="proxyblock">ProxyBlock</A></H2>
+<H2><A NAME="proxyblock">ProxyBlock</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -374,7 +484,7 @@ blocks connections to all sites.
<HR>
-<H2><A NAME="proxyreceivebuffersize">ProxyReceiveBufferSize</A></H2>
+<H2><A NAME="proxyreceivebuffersize">ProxyReceiveBufferSize</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -419,7 +529,7 @@ Example:
<HR>
-<H2><A NAME="noproxy">NoProxy</A></H2>
+<H2><A NAME="noproxy">NoProxy</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -556,7 +666,7 @@ The arguments to the NoProxy directive are one of the following type list:
<HR>
-<H2><A NAME="proxydomain">ProxyDomain</A></H2>
+<H2><A NAME="proxydomain">ProxyDomain</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -603,7 +713,7 @@ Example:
<HR>
-<H2><A NAME="proxyvia">ProxyVia</A></H2>
+<H2><A NAME="proxyvia">ProxyVia</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -655,7 +765,7 @@ additionally have the Apache server version shown as a <SAMP>Via:</SAMP> comment
<HR>
-<H2><A NAME="cacheforcecompletion">CacheForceCompletion</A></H2>
+<H2><A NAME="cacheforcecompletion">CacheForceCompletion</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -696,7 +806,7 @@ was allowed to complete. A number between 60 and 90 is recommended.
<HR>
-<H2><A NAME="cacheroot">CacheRoot</A></H2>
+<H2><A NAME="cacheroot">CacheRoot</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -737,7 +847,7 @@ cacheing will be available.
<HR>
-<H2><A NAME="cachesize">CacheSize</A></H2>
+<H2><A NAME="cachesize">CacheSize</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -776,7 +886,7 @@ use a value which is at least 20 to 40 % lower than the available space.
<HR>
-<H2><A NAME="cachegcinterval">CacheGcInterval</A></H2>
+<H2><A NAME="cachegcinterval">CacheGcInterval</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -821,7 +931,7 @@ the cache resides is exhausted. -->
<HR>
-<H2><A NAME="cachemaxexpire">CacheMaxExpire</A></H2>
+<H2><A NAME="cachemaxexpire">CacheMaxExpire</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -859,7 +969,7 @@ was supplied with the document.
<HR>
-<H2><A NAME="cachelastmodifiedfactor">CacheLastModifiedFactor</A></H2>
+<H2><A NAME="cachelastmodifiedfactor">CacheLastModifiedFactor</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -903,7 +1013,7 @@ then the latter takes precedence.
<HR>
-<H2><A NAME="cachedirlevels">CacheDirLevels</A></H2>
+<H2><A NAME="cachedirlevels">CacheDirLevels</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -939,7 +1049,7 @@ Cached data will be saved this many directory levels below CacheRoot.
<HR>
-<H2><A NAME="cachedirlength">CacheDirLength</A></H2>
+<H2><A NAME="cachedirlength">CacheDirLength</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -974,7 +1084,7 @@ CacheDirLength sets the number of characters in proxy cache subdirectory names.
<HR>
-<H2><A NAME="cachedefaultexpire">CacheDefaultExpire</A></H2>
+<H2><A NAME="cachedefaultexpire">CacheDefaultExpire</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -1012,7 +1122,7 @@ override this setting.
<HR>
-<H2><A NAME="nocache">NoCache</A></H2>
+<H2><A NAME="nocache">NoCache</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -1068,102 +1178,6 @@ disables caching completely.<P>
<HR>
-<H2><A NAME="configs">Common configuration topics</A></H2>
-
-<UL>
-<LI><A HREF="#access">Controlling access to your proxy</A>
-<LI><A HREF="#shortname">Using Netscape hostname shortcuts</A>
-<LI><A HREF="#mimetypes">Why doesn't file type <EM>xxx</EM> download via FTP?</A>
-<LI><A HREF="#startup">Why does Apache start more slowly when using the
- proxy module?</A>
-<LI><A HREF="#socks">Can I use the Apache proxy module with my SOCKS proxy?</A>
-<LI><A HREF="#intranet">What other functions are useful for an intranet proxy server?</A>
-</UL>
-
-<H2><A NAME="access">Controlling access to your proxy</A></H2>
-
-You can control who can access your proxy via the normal &lt;Directory&gt;
-control block using the following example:<P>
-
-<PRE>
-&lt;Directory proxy:*&gt;
-order deny,allow
-deny from [machines you'd like *not* to allow by IP address or name]
-allow from [machines you'd like to allow by IP address or name]
-&lt;/Directory&gt;
-</PRE><P>
-
-A &lt;Files&gt; block will also work, and is the only method known to work
-for all possible URLs in Apache versions earlier than 1.2b10.<P>
-
-<H2><A NAME="shortname">Using Netscape hostname shortcuts</A></H2>
-
-There is an optional patch to the proxy module to allow Netscape-like
-hostname shortcuts to be used. It's available from the
-<A HREF="http://www.apache.org/dist/contrib/patches/1.2/netscapehost.patch"
-><SAMP>contrib/patches/1.2</SAMP></A> directory on the Apache Web site.<P>
-
-<H2><A NAME="mimetypes">Why doesn't file type <EM>xxx</EM> download via FTP?</A></H2>
-
-You probably don't have that particular file type defined as
-<EM>application/octet-stream</EM> in your proxy's mime.types configuration
-file. A useful line can be<P>
-
-<PRE>
-application/octet-stream bin dms lha lzh exe class tgz taz
-</PRE>
-
-<H2><A NAME="type">How can I force an FTP ASCII download of File <EM>xxx</EM>?</A></H2>
-
-In the rare situation where you must download a specific file using the FTP
-<STRONG>ASCII</STRONG> transfer method (while the default transfer is in
-<STRONG>binary</STRONG> mode), you can override mod_proxy's default by
-suffixing the request with <SAMP>;type=a</SAMP> to force an ASCII transfer.<P>
-
-<H2><A NAME="startup">Why does Apache start more slowly when using the
- proxy module?</A></H2>
-
-If you're using the <CODE>ProxyBlock</CODE> or <CODE>NoCache</CODE>
-directives, hostnames' IP addresses are looked up and cached during
-startup for later match test. This may take a few seconds (or more)
-depending on the speed with which the hostname lookups occur.<P>
-
-<H2><A NAME="socks">Can I use the Apache proxy module with my SOCKS proxy?</A></H2>
-
-Yes. Just build Apache with the rule <CODE>SOCKS4=yes</CODE> in your
-<EM>Configuration</EM> file, and follow the instructions there. SOCKS5
-capability can be added in a similar way (there's no <CODE>SOCKS5</CODE>
-rule yet), so use the <CODE>EXTRA_LDFLAGS</CODE> definition, or build Apache
-normally and run it with the <EM>runsocks</EM> wrapper provided with SOCKS5,
-if your OS supports dynamically linked libraries.<P>
-
-Some users have reported problems when using SOCKS version 4.2 on Solaris.
-The problem was solved by upgrading to SOCKS 4.3.<P>
-
-Remember that you'll also have to grant access to your Apache proxy machine by
-permitting connections on the appropriate ports in your SOCKS daemon's
-configuration.<P>
-
-<H2><A NAME="intranet">What other functions are useful for an intranet proxy server?</A></H2>
-
-<P>An Apache proxy server situated in an intranet needs to forward external
-requests through the company's firewall. However, when it has to access
-resources within the intranet, it can bypass the firewall when accessing
-hosts. The <A HREF="#noproxy">NoProxy</A> directive is useful for specifying
-which hosts belong to the intranet and should be accessed directly.</P>
-
-<P>Users within an intranet tend to omit the local domain name from their
-WWW requests, thus requesting "http://somehost/" instead of
-"http://somehost.my.dom.ain/". Some commercial proxy servers let them get
-away with this and simply serve the request, implying a configured
-local domain. When the <A HREF="#proxydomain">ProxyDomain</A> directive
-is used and the server is <A HREF="#proxyrequests">configured for
-proxy service</A>, Apache can return a redirect response and send the client
-to the correct, fully qualified, server address. This is the preferred method
-since the user's bookmark files will then contain fully qualified hosts.</P>
-
-<HR>
-
<H3 ALIGN="CENTER">
Apache HTTP Server Version 1.3
</H3>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html b/usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html
index e4397f9bc44..fb497be9c46 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_rewrite.html
@@ -27,14 +27,30 @@
<BR>
<H1 ALIGN="CENTER">Module mod_rewrite<BR>URL Rewriting Engine</H1>
-This module is contained in the <CODE>mod_rewrite.c</CODE> file, with Apache
-1.2 and later. It provides a rule-based rewriting engine to rewrite requested
-URLs on the fly. It is not compiled into the server by default. To use
-<CODE>mod_rewrite</CODE> you have to enable the following line in the server
-build <CODE>Configuration</CODE> file:
-<PRE>
- AddModule modules/standard/mod_rewrite.o
-</PRE>
+<p>This module provides a rule-based rewriting engine to rewrite requested
+URLs on the fly.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_rewrite.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> rewrite_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.2 and later.
+</P>
+
<P>
<HR NOSHADE SIZE=1>
@@ -268,11 +284,11 @@ is continued with the substitution of the URL with <EM>Substitution</EM>.
<H2><A NAME="InternalBackRefs">Regex Back-Reference Availability</A></H2>
One important thing here has to be remembered: Whenever you
-use parentheses in <EM>Pattern</EM> or in one of the <EM>CondPattern</EM>
+use parentheses in <EM>Pattern</EM> or in one of the <EM>CondPattern</EM>,
back-references are internally created which can be used with the
strings <CODE>$N</CODE> and <CODE>%N</CODE> (see below). These
are available for creating the strings <EM>Substitution</EM> and
-<EM>TestCond</EM>. Figure 2 shows to which locations the back-references are
+<EM>TestString</EM>. Figure 2 shows to which locations the back-references are
transfered for expansion.
<P>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html b/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html
index d199f0c177d..379ee78ea83 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_setenvif.html
@@ -20,12 +20,32 @@
<H1 ALIGN="CENTER">Module mod_setenvif</H1>
<P>
- This module is contained in the <SAMP>mod_setenvif.c</SAMP> file, and
- <STRONG>is</STRONG> compiled in by default. It provides for
- the ability to set environment variables based upon attributes of the
- request.
+ This module provides the ability to set environment variables based
+ upon attributes of the request.
</P>
- <H2>Summary</H2>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_setenvif.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> setenvif_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3 and later.
+</P>
+
+ <H2>Summary</H2>
<P>
The <SAMP>mod_setenvif</SAMP> module allows you to set environment
variables according to whether different aspects of the request match
@@ -55,7 +75,7 @@
</UL>
<HR> <!-- the HR is part of the directive description -->
- <H2><A NAME="BrowserMatch">The <SAMP>BrowserMatch</SAMP> Directive</A></H2>
+ <H2><A NAME="BrowserMatch">BrowserMatch directive</A></H2>
<P>
<A
HREF="directive-dict.html#Syntax"
@@ -65,17 +85,18 @@
<A
HREF="directive-dict.html#Default"
REL="Help"
- ><STRONG>Default:</STRONG></A> <EM>none</EM>
+ ><STRONG>Default:</STRONG></A> <i>none</i>
<BR>
<A
HREF="directive-dict.html#Context"
REL="Help"
- ><STRONG>Context:</STRONG></A> server config
+ ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
+ .htaccess
<BR>
<A
HREF="directive-dict.html#Override"
REL="Help"
- ><STRONG>Override:</STRONG></A> <EM>none</EM>
+ ><STRONG>Override:</STRONG></A> FileInfo
<BR>
<A
HREF="directive-dict.html#Status"
@@ -91,7 +112,8 @@
HREF="directive-dict.html#Compatibility"
REL="Help"
><STRONG>Compatibility:</STRONG></A> Apache 1.2 and above (in Apache 1.2
- this directive was found in the now-obsolete mod_browser module)
+ this directive was found in the now-obsolete mod_browser module); use
+ in .htaccess files only supported with 1.3.13 and later
</P>
<P>
The BrowserMatch directive defines environment variables based on the
@@ -153,8 +175,7 @@
<HR> <!-- the HR is part of the directive description -->
<H2>
- <A NAME="BrowserMatchNoCase">
- The <SAMP>BrowserMatchNoCase</SAMP> Directive
+ <A NAME="BrowserMatchNoCase">BrowserMatchNoCase directive
</A>
</H2>
<P>
@@ -172,12 +193,13 @@
<A
HREF="directive-dict.html#Context"
REL="Help"
- ><STRONG>Context:</STRONG></A> server config
+ ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
+ .htaccess
<BR>
<A
HREF="directive-dict.html#Override"
REL="Help"
- ><STRONG>Override:</STRONG></A> <EM>none</EM>
+ ><STRONG>Override:</STRONG></A> FileInfo
<BR>
<A
HREF="directive-dict.html#Status"
@@ -227,8 +249,7 @@
<HR> <!-- the HR is part of the directive description -->
<H2>
- <A NAME="SetEnvIf">
- The <SAMP>SetEnvIf</SAMP> Directive
+ <A NAME="SetEnvIf">SetEnvIf directive
</A>
</H2>
<P>
@@ -246,12 +267,13 @@
<A
HREF="directive-dict.html#Context"
REL="Help"
- ><STRONG>Context:</STRONG></A> server config
+ ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
+ .htaccess
<BR>
<A
HREF="directive-dict.html#Override"
REL="Help"
- ><STRONG>Override:</STRONG></A> <EM>none</EM>
+ ><STRONG>Override:</STRONG></A> FileInfo
<BR>
<A
HREF="directive-dict.html#Status"
@@ -268,15 +290,14 @@
REL="Help"
><STRONG>Compatibility:</STRONG></A> Apache 1.3 and above; the
Request_Protocol keyword and environment-variable matching are only
- available with 1.3.7 and later
+ available with 1.3.7 and later; use in .htaccess files only supported
+ with 1.3.13 and later
</P>
<P>
The <SAMP>SetEnvIf</SAMP> directive defines environment variables
based on attributes of the request. These attributes can be the
values of various HTTP request header fields (see
- <A
- HREF="http://ds.internic.net/rfc/rfc2068.txt"
- >RFC2068</A>
+ <a href="http://www.rfc-editor.org/rfc/rfc2616.txt">RFC2616</a>
for more information about these), or of other aspects of the request,
including the following:
</P>
@@ -340,8 +361,7 @@
<HR> <!-- the HR is part of the directive description -->
<H2>
- <A NAME="SetEnvIfNoCase">
- The <SAMP>SetEnvIfNoCase</SAMP> Directive
+ <A NAME="SetEnvIfNoCase">SetEnvIfNoCase directive
</A>
</H2>
<P>
@@ -359,12 +379,13 @@
<A
HREF="directive-dict.html#Context"
REL="Help"
- ><STRONG>Context:</STRONG></A> server config
+ ><STRONG>Context:</STRONG></A> server config, virtual host, directory,
+ .htaccess
<BR>
<A
HREF="directive-dict.html#Override"
REL="Help"
- ><STRONG>Override:</STRONG></A> <EM>none</EM>
+ ><STRONG>Override:</STRONG></A> FileInfo
<BR>
<A
HREF="directive-dict.html#Status"
@@ -379,7 +400,10 @@
<A
HREF="directive-dict.html#Compatibility"
REL="Help"
- ><STRONG>Compatibility:</STRONG></A> Apache 1.3 and above
+ ><STRONG>Compatibility:</STRONG></A> Apache 1.3 and above; the
+ Request_Protocol keyword and environment-variable matching are only
+ available with 1.3.7 and later; use in .htaccess files only supported
+ with 1.3.13 and later
</P>
<P>
The <SAMP>SetEnvIfNoCase</SAMP> is semantically identical to the
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html
index e650f762ea6..eb28de1a0f5 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_so.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_so.html
@@ -21,36 +21,108 @@
<H1 ALIGN="CENTER">Module mod_so</H1>
-This module is contained in the <CODE>mod_so.c</CODE> file. It is
-compiled in by default on Windows and is not compiled in by default on
-Unix. It provides for loading of executable code and modules into the
-server at start-up or restart time. On Unix, the loaded code typically
-comes from shared object files (usually with <SAMP>.so</SAMP>
-extension), whilst on Windows this module loads <SAMP>DLL</SAMP>
-files. This module is only available in Apache 1.3 and up.
+<p>This module provides for loading of executable code and modules into the
+server at start-up or restart time.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base (Windows); Experimental (Unix)
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_so.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> so_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3 and later.
+</P>
+
+
+<H2>Summary</H2>
+
+<p>This is an experimental module. On selected operating systems it
+can be used to load modules into Apache at runtime via the <A
+HREF="../dso.html">Dynamic Shared Object</A> (DSO) mechanism, rather
+than requiring a recompilation.
<P>
+On Unix, the loaded code typically comes from shared object files
+(usually with <SAMP>.so</SAMP> extension), whilst on Windows this
+module loads <SAMP>DLL</SAMP> files. This module is only available in
+Apache 1.3 and up.
+
-In previous releases, the functionality of this module was provided
+<p>In previous releases, the functionality of this module was provided
for Unix by mod_dld, and for Windows by mod_dll. On Windows, mod_dll
was used in beta release 1.3b1 through 1.3b5. mod_so combines these
two modules into a single module for all operating systems.
-<H2>Summary</H2>
-
-This is an experimental module. On selected operating systems it can be used
-to load modules into Apache at runtime via the <A HREF="../dso.html">Dynamic
-Shared Object</A> (DSO) mechanism, rather than requiring a recompilation.
-
<H2>Directives</H2>
<UL>
<LI><A HREF="#loadfile">LoadFile</A>
<LI><A HREF="#loadmodule">LoadModule</A>
</UL>
-<HR>
+<H2><A NAME="creating">Creating DLL Modules for Windows</A></H2>
-<H2><A NAME="loadfile">LoadFile</A></H2>
+<P>The Apache module API is unchanged between the Unix and Windows
+ versions. Many modules will run on Windows with no or little change
+ from Unix, although others rely on aspects of the Unix architecture
+ which are not present in Windows, and will not work.</P>
+
+<P>When a module does work, it can be added to the server in one of two
+ ways. As with Unix, it can be compiled into the server. Because Apache
+ for Windows does not have the <CODE>Configure</CODE> program of Apache
+ for Unix, the module's source file must be added to the ApacheCore
+ project file, and its symbols must be added to the
+ <CODE>os\win32\modules.c</CODE> file.</P>
+
+<P>The second way is to compile the module as a DLL, a shared library
+ that can be loaded into the server at runtime, using the
+ <CODE><A HREF="#loadmodule">LoadModule</A></CODE>
+ directive. These module DLLs can be distributed and run on any Apache
+ for Windows installation, without recompilation of the server.</P>
+
+<P>To create a module DLL, a small change is necessary to the module's
+ source file: The module record must be exported from the DLL (which
+ will be created later; see below). To do this, add the
+ <CODE>MODULE_VAR_EXPORT</CODE> (defined in the Apache header files) to
+ your module's module record definition. For example, if your module
+ has:</P>
+<PRE>
+ module foo_module;
+</PRE>
+<P>Replace the above with:</P>
+<PRE>
+ module MODULE_VAR_EXPORT foo_module;
+</PRE>
+<P>Note that this will only be activated on Windows, so the module can
+ continue to be used, unchanged, with Unix if needed. Also, if you are
+ familiar with <CODE>.DEF</CODE> files, you can export the module
+ record with that method instead.</P>
+
+<P>Now, create a DLL containing your module. You will need to link this
+ against the ApacheCore.lib export library that is created when the
+ ApacheCore.dll shared library is compiled. You may also have to change
+ the compiler settings to ensure that the Apache header files are
+ correctly located.</P>
+
+<P>This should create a DLL version of your module. Now simply place it
+ in the <SAMP>modules</SAMP> directory of your server root, and use
+ the <CODE><A HREF="#loadmodule">LoadModule</A></CODE> directive to
+ load it.</P>
+
+<HR>
+
+<H2><A NAME="loadfile">LoadFile</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt LoadFile} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -75,7 +147,7 @@ additional code which may be required for some module to
work. <EM>Filename</EM> is either and absolute path or relative to <A
HREF="core.html#serverroot">ServerRoot</A>.<P><HR>
-<H2><A NAME="loadmodule">LoadModule</A></H2>
+<H2><A NAME="loadmodule">LoadModule</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt LoadModule} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
@@ -112,57 +184,6 @@ LoadModule status_module modules/ApacheModuleStatus.dll<BR>
loads the named module from the modules subdirectory of the
ServerRoot.<P>
-<HR>
-
-<H2><A NAME="creating">Creating DLL Modules for Windows</A></H2>
-
-<P>The Apache module API is unchanged between the Unix and Windows
- versions. Many modules will run on Windows with no or little change
- from Unix, although others rely on aspects of the Unix architecture
- which are not present in Windows, and will not work.</P>
-
-<P>When a module does work, it can be added to the server in one of two
- ways. As with Unix, it can be compiled into the server. Because Apache
- for Windows does not have the <CODE>Configure</CODE> program of Apache
- for Unix, the module's source file must be added to the ApacheCore
- project file, and its symbols must be added to the
- <CODE>os\win32\modules.c</CODE> file.</P>
-
-<P>The second way is to compile the module as a DLL, a shared library
- that can be loaded into the server at runtime, using the
- <CODE><A HREF="#loadmodule">LoadModule</A></CODE>
- directive. These module DLLs can be distributed and run on any Apache
- for Windows installation, without recompilation of the server.</P>
-
-<P>To create a module DLL, a small change is necessary to the module's
- source file: The module record must be exported from the DLL (which
- will be created later; see below). To do this, add the
- <CODE>MODULE_VAR_EXPORT</CODE> (defined in the Apache header files) to
- your module's module record definition. For example, if your module
- has:</P>
-<PRE>
- module foo_module;
-</PRE>
-<P>Replace the above with:</P>
-<PRE>
- module MODULE_VAR_EXPORT foo_module;
-</PRE>
-<P>Note that this will only be activated on Windows, so the module can
- continue to be used, unchanged, with Unix if needed. Also, if you are
- familiar with <CODE>.DEF</CODE> files, you can export the module
- record with that method instead.</P>
-
-<P>Now, create a DLL containing your module. You will need to link this
- against the ApacheCore.lib export library that is created when the
- ApacheCore.dll shared library is compiled. You may also have to change
- the compiler settings to ensure that the Apache header files are
- correctly located.</P>
-
-<P>This should create a DLL version of your module. Now simply place it
- in the <SAMP>modules</SAMP> directory of your server root, and use
- the <CODE><A HREF="#loadmodule">LoadModule</A></CODE> directive to
- load it.</P>
-
<HR>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_speling.html b/usr.sbin/httpd/htdocs/manual/mod/mod_speling.html
index cde7271ef20..5caf12b3576 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_speling.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_speling.html
@@ -20,16 +20,31 @@
<H1 ALIGN="CENTER">Module mod_speling</H1>
<P>
- This module is contained in the <CODE>mod_speling.c</CODE> file,
- and is <STRONG>not</STRONG> compiled in by default.
- It attempts to correct misspellings of
- URLs that users might have entered, by ignoring capitalization
- and by allowing up to one misspelling.<BR>
- This catches the majority of misspelled requests. An automatic
- "spelling corrected" redirection is returned if only one matching
- document was found, and a list of matches is returned if more than
- one document with a sufficiently similar name is found.
- </P>
+ This module attempts to correct misspellings of URLs that users
+ might have entered, by ignoring capitalization and by allowing up to
+ one misspelling.</P>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_speling.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> speling_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3 and later. Available as an External module in Apache 1.1 and later.
+</P>
+
<H2>Summary</H2>
<P>
@@ -58,12 +73,12 @@
<H2>Directives</H2>
- <MENU>
+ <UL>
<LI><A HREF="#checkspelling">CheckSpelling</A>
- </MENU>
+ </UL>
<HR> <!-- the HR is part of the directive description -->
- <H2><A NAME="checkspelling">CheckSpelling</A></H2>
+ <H2><A NAME="checkspelling">CheckSpelling</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt CheckSpelling} directive&gt; -->
<A
HREF="directive-dict.html#Syntax"
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/index.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/index.html
index 8aa0c8e7672..1effbdd2f35 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/index.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/index.html
@@ -168,13 +168,13 @@ if (document.images) {
<td>
<img
src="ssl_cover_title.jpg"
- alt="User Manual" width="421" height="73"
->
+ alt="User Manual"
+ width="421" height="73">
</td>
</tr>
<tr>
<td align="right">
- <font face="Arial,Helvetica">mod_ssl version 2.6</font> &nbsp;&nbsp;
+ <font face="Arial,Helvetica">mod_ssl version 2.7</font> &nbsp;&nbsp;
</td>
</tr>
</table>
@@ -188,13 +188,13 @@ if (document.images) {
><img
src="ssl_cover_logo.jpg"
alt="mod_ssl - The Apache Interface to OpenSSL"
- border="0" width="504" height="231"
-></a>
+ border="0"
+ width="504" height="231"></a>
</td>
</tr>
<tr>
<td align="right">
- <table>
+ <table summary="">
<tr>
<td>
<tt>Ralf S. Engelschall</tt><br>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_compat.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_compat.html
index 8c49c2cc711..c34e6c27f44 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_compat.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_compat.html
@@ -506,7 +506,7 @@ are listed in <a href="#table3">Table 3</a>.
</div>
<p>
<br>
- <table>
+ <table summary="">
<tr>
<td>
<table width="600" border="0" summary="">
@@ -528,7 +528,7 @@ are listed in <a href="#table3">Table 3</a>.
<td><table width="598" summary="">
<tr>
<td align="left"><font face="Arial,Helvetica">
- <a href="http://www.modssl.org/">mod_ssl</a> 2.6, User Manual<br>
+ <a href="http://www.modssl.org/">mod_ssl</a> 2.7, User Manual<br>
The Apache Interface to OpenSSL
</font>
</td>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_cover.wml b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_cover.wml
index 988a0091367..dbae33ef263 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_cover.wml
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_cover.wml
@@ -17,7 +17,7 @@
</tr>
<tr>
<td align=right>
- <font face="Arial,Helvetica">mod_ssl version 2.6</font> &nbsp;&nbsp;
+ <font face="Arial,Helvetica">mod_ssl version 2.7</font> &nbsp;&nbsp;
</td>
</tr>
</table>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html
index 9ffed96cb3c..0777e724ad5 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.html
@@ -353,7 +353,7 @@ author.
<strong id="faq">
What is the history of mod_ssl?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#history"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#history"><b>L</b></a>]
<p>
The mod_ssl v1 package was initially created in April 1998 by <a
href="mailto:rse@engelschall.com">Ralf S. Engelschall</a> via porting <a
@@ -380,7 +380,7 @@ What is the history of mod_ssl?
What are the functional differences between mod_ssl and Apache-SSL, from where
it is originally derived?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#apssl-diff"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#apssl-diff"><b>L</b></a>]
<p>
This neither can be answered in short (there were too many code changes)
nor can be answered at all by the author (there would immediately be flame
@@ -421,15 +421,16 @@ it is originally derived?
What are the major differences between mod_ssl and
the commercial alternatives like Raven or Stronghold?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#apssl-diff"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#apssl-diff"><b>L</b></a>]
<p>
- As of this writing (end of the year 1999) the major difference is
- the RSA license which one receives (very cheaply in contrast to
+ In the past (until September 20th, 2000) the major difference was
+ the RSA license which one received (very cheaply in contrast to
a direct licensing from RSA DSI) with the commercial Apache SSL
- products. On the other hand, one needs this license only in the
- US, of course. So for non-US citizens this point is useless. And
- even for US citizens the situations is at least solved next year
- (September 20th, 2000) when the RSA patent expires.
+ products. On the other hand, one needed this license only in the US,
+ of course. So for non-US citizens this point was useless. But now
+ even for US citizens the situations changed because the RSA patent
+ expired on September 20th, 2000 and RSA DSI also placed the RSA
+ algorithm explicitly into the public domain.
<p>
Second, there is the point that one has guaranteed support from
the commercial vendors. On the other hand, if you monitored the
@@ -458,20 +459,18 @@ the commercial alternatives like Raven or Stronghold?
changes to the free software world, of course.
<p>
So, in short: There are lots of commercial versions of the popular
- Apache+mod_ssl+OpenSSL server combination available. And until the
- RSA patent expires in the year 2000, US citizens have no choice,
- of course. They have to buy one of the commercial versions. Non-US
- citizens are not forced into this situation and should decide
- carefully whether they really need to buy a commercial version or
- whether it would not be sufficient to directly use the free and
- official versions of the Apache, mod_ssl and OpenSSL packages.
+ Apache+mod_ssl+OpenSSL server combination available. Every user
+ should decide carefully whether they really need to buy a commercial
+ version or whether it would not be sufficient to directly use the
+ free and official versions of the Apache, mod_ssl and OpenSSL
+ packages.
<p>
<li><a name="ToC5"></a>
<a name="what-version"></a>
<strong id="faq">
How do I know which mod_ssl version is for which Apache version?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#what-version"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#what-version"><b>L</b></a>]
<p>
That's trivial: mod_ssl uses version strings of the syntax
<em>&lt;mod_ssl-version&gt;</em>-<em>&lt;apache-version&gt;</em>, for
@@ -486,7 +485,7 @@ How do I know which mod_ssl version is for which Apache version?
<strong id="faq">
Is mod_ssl Year 2000 compliant?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#y2k"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#y2k"><b>L</b></a>]
<p>
Yes, mod_ssl is Year 2000 compliant.
<p>
@@ -511,7 +510,7 @@ Is mod_ssl Year 2000 compliant?
<strong id="faq">
What about mod_ssl and the Wassenaar Arrangement?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#wassenaar"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#wassenaar"><b>L</b></a>]
<p>
First, let us explain what <i>Wassenaar</i> and it's <i>Arrangement on
Export Controls for Conventional Arms and Dual-Use Goods and
@@ -570,7 +569,7 @@ What about mod_ssl and the Wassenaar Arrangement?
<strong id="faq">
When I access my website the first time via HTTPS I get a core dump?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#core-dbm"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#core-dbm"><b>L</b></a>]
<p>
There can be a lot of reasons why a core dump can occur, of course.
Ranging from buggy third-party modules, over buggy vendor libraries up to
@@ -586,7 +585,7 @@ When I access my website the first time via HTTPS I get a core dump?
<strong id="faq">
My Apache dumps core when I add both mod_ssl and PHP3?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#core-php3"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#core-php3"><b>L</b></a>]
<p>
Make sure you add mod_ssl to the Apache source tree first and then do a
fresh configuration and installation of PHP3. For SSL support EAPI patches
@@ -599,7 +598,7 @@ My Apache dumps core when I add both mod_ssl and PHP3?
<strong id="faq">
When I startup Apache I get errors about undefined symbols like ap_global_ctx?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#dso-sym"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#dso-sym"><b>L</b></a>]
<p>
This actually means you installed mod_ssl as a DSO, but without rebuilding
Apache with EAPI. Because EAPI is a requirement for mod_ssl, you need an
@@ -612,7 +611,7 @@ When I startup Apache I get errors about undefined symbols like ap_global_ctx?
<strong id="faq">
When I startup Apache I get permission errors related to SSLMutex?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#mutex-perm"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#mutex-perm"><b>L</b></a>]
<p>
When you receive entries like ``<code>mod_ssl: Child could not open
SSLMutex lockfile /opt/apache/logs/ssl_mutex.18332 (System error follows)
@@ -629,7 +628,7 @@ When I startup Apache I get permission errors related to SSLMutex?
When I use the MM library and the shared memory cache each process grows
1.5MB according to `top' although I specified 512000 as the cache size?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#mm"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#mm"><b>L</b></a>]
<p>
The additional 1MB are caused by the global shared memory pool EAPI
allocates for all modules and which is not used by mod_ssl for
@@ -648,7 +647,7 @@ Apache creates files in a directory declared by the internal
EAPI_MM_CORE_PATH define. Is there a way to override the path using a
configuration directive?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#mmpath"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#mmpath"><b>L</b></a>]
<p>
No, there is not configuration directive, because for technical
bootstrapping reasons, a directive not possible at all. Instead
@@ -663,7 +662,7 @@ When I fire up the server, mod_ssl stops with the error
"Failed to generate temporary 512 bit RSA private key", why?
And a "PRNG not seeded" error occurs if I try "make certificate".
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#entropy"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#entropy"><b>L</b></a>]
<p>
Cryptographic software needs a source of unpredictable data
to work correctly. Many open source operating systems provide
@@ -692,7 +691,7 @@ And a "PRNG not seeded" error occurs if I try "make certificate".
<strong id="faq">
Is it possible to provide HTTP and HTTPS with a single server?</strong>
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#https-parallel"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#https-parallel"><b>L</b></a>]
<p>
Yes, HTTP and HTTPS use different server ports, so there is no direct
conflict between them. Either run two separate server instances (one binds
@@ -706,7 +705,7 @@ Is it possible to provide HTTP and HTTPS with a single server?</strong>
<strong id="faq">
I know that HTTP is on port 80, but where is HTTPS?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#https-port"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#https-port"><b>L</b></a>]
<p>
You can run HTTPS on any port, but the standards specify port 443, which
is where any HTTPS compliant browser will look by default. You can force
@@ -718,7 +717,7 @@ I know that HTTP is on port 80, but where is HTTPS?
<strong id="faq">
How can I speak HTTPS manually for testing purposes?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#https-test"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#https-test"><b>L</b></a>]
<p>
While you usually just use
<p>
@@ -749,7 +748,7 @@ How can I speak HTTPS manually for testing purposes?
<strong id="faq">
Why does the connection hang when I connect to my SSL-aware Apache server?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#hang"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#hang"><b>L</b></a>]
<p>
Because you connected with HTTP to the HTTPS port, i.e. you used an URL of
the form ``<code>http://</code>'' instead of ``<code>https://</code>''.
@@ -765,7 +764,7 @@ Why does the connection hang when I connect to my SSL-aware Apache server?
Why do I get ``Connection Refused'' messages when trying to access my freshly
installed Apache+mod_ssl server via HTTPS?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#hang"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#hang"><b>L</b></a>]
<p>
There can be various reasons. Some of the common mistakes is that people
start Apache with just ``<tt>apachectl start</tt>'' (or
@@ -782,7 +781,7 @@ installed Apache+mod_ssl server via HTTPS?
In my CGI programs and SSI scripts the various documented
<code>SSL_XXX</code> variables do not exists. Why?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#env-vars"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#env-vars"><b>L</b></a>]
<p>
Just make sure you have ``<code>SSLOptions +StdEnvVars</code>''
enabled for the context of your CGI/SSI requests.
@@ -792,7 +791,7 @@ In my CGI programs and SSI scripts the various documented
<strong id="faq">
How can I use relative hyperlinks to switch between HTTP and HTTPS?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#relative-links"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#relative-links"><b>L</b></a>]
<p>
Usually you have to use fully-qualified hyperlinks because
you have to change the URL scheme. But with the help of some URL
@@ -818,7 +817,7 @@ How can I use relative hyperlinks to switch between HTTP and HTTPS?
<strong id="faq">
What are RSA Private Keys, CSRs and Certificates?</strong>
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#what-is"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#what-is"><b>L</b></a>]
<p>
The RSA private key file is a digital file that you can use to decrypt
messages sent to you. It has a public component which you distribute (via
@@ -838,7 +837,7 @@ What are RSA Private Keys, CSRs and Certificates?</strong>
<strong id="faq">
Seems like there is a difference on startup between the original Apache and an SSL-aware Apache?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#startup"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#startup"><b>L</b></a>]
<p>
Yes, in general, starting Apache with a built-in mod_ssl is just like
starting an unencumbered Apache, except for the fact that when you have a
@@ -856,7 +855,7 @@ Seems like there is a difference on startup between the original Apache and an S
<strong id="faq">
How can I create a dummy SSL server Certificate for testing purposes?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#cert-dummy"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#cert-dummy"><b>L</b></a>]
<p>
A Certificate does not have to be signed by a public CA. You can use your
private key to sign the Certificate which contains your public key. You
@@ -881,7 +880,7 @@ How can I create a dummy SSL server Certificate for testing purposes?
Ok, I've got my server installed and want to create a real SSL
server Certificate for it. How do I do it?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#cert-real"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#cert-real"><b>L</b></a>]
<p>
Here is a step-by-step description:
<p>
@@ -978,7 +977,7 @@ server Certificate for it. How do I do it?
<strong id="faq">
How can I create and use my own Certificate Authority (CA)?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#cert-ownca"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#cert-ownca"><b>L</b></a>]
<p>
The short answer is to use the <code>CA.sh</code> or <code>CA.pl</code>
script provided by OpenSSL. The long and manual answer is this:
@@ -1030,7 +1029,7 @@ How can I create and use my own Certificate Authority (CA)?
<strong id="faq">
How can I change the pass-phrase on my private key file?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#change-passphrase"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#change-passphrase"><b>L</b></a>]
<p>
You simply have to read it with the old pass-phrase and write it again
by specifying the new pass-phrase. You can accomplish this with the following
@@ -1048,7 +1047,7 @@ How can I change the pass-phrase on my private key file?
<strong id="faq">
How can I get rid of the pass-phrase dialog at Apache startup time?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#remove-passphrase"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#remove-passphrase"><b>L</b></a>]
<p>
The reason why this dialog pops up at startup and every re-start
is that the RSA private key inside your server.key file is stored in
@@ -1085,7 +1084,7 @@ How can I get rid of the pass-phrase dialog at Apache startup time?
<strong id="faq">
How do I verify that a private key matches its Certificate?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#verify-key"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#verify-key"><b>L</b></a>]
<p>
The private key contains a series of numbers. Two of those numbers form
the "public key", the others are part of your "private key". The "public
@@ -1118,7 +1117,7 @@ How do I verify that a private key matches its Certificate?
What does it mean when my connections fail with an "alert bad certificate"
error?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#keysize1"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#keysize1"><b>L</b></a>]
<p>
Usually when you see errors like ``<tt>OpenSSL: error:14094412: SSL
routines:SSL3_READ_BYTES:sslv3 alert bad certificate</tt>'' in the SSL
@@ -1131,7 +1130,7 @@ error?
<strong id="faq">
Why does my 2048-bit private key not work?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#keysize2"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#keysize2"><b>L</b></a>]
<p>
The private key sizes for SSL must be either 512 or 1024 for compatibility
with certain web browsers. A keysize of 1024 bits is recommended because
@@ -1145,7 +1144,7 @@ Why does my 2048-bit private key not work?
Why is client authentication broken after upgrading from
SSLeay version 0.8 to 0.9?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#hash-symlinks"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#hash-symlinks"><b>L</b></a>]
<p>
The CA certificates under the path you configured with
<code>SSLCACertificatePath</code> are found by SSLeay through hash
@@ -1160,7 +1159,7 @@ SSLeay version 0.8 to 0.9?
<strong id="faq">
How can I convert a certificate from PEM to DER format?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#pem-to-der"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#pem-to-der"><b>L</b></a>]
<p>
The default certificate format for SSLeay/OpenSSL is PEM, which actually
is Base64 encoded DER with header and footer lines. For some applications
@@ -1175,7 +1174,7 @@ How can I convert a certificate from PEM to DER format?
I try to install a Verisign certificate. Why can't I find neither the
<code>getca</code> nor <code>getverisign</code> programs Verisign mentions?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#verisign-getca"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#verisign-getca"><b>L</b></a>]
<p>
This is because Verisign has never provided specific instructions
for Apache+mod_ssl. Rather they tell you what you should do
@@ -1195,7 +1194,7 @@ I try to install a Verisign certificate. Why can't I find neither the
Can I use the Server Gated Cryptography (SGC) facility (aka Verisign Global
ID) also with mod_ssl?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#gid"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#gid"><b>L</b></a>]
<p>
Yes, mod_ssl since version 2.1 supports the SGC facility. You don't have
to configure anything special for this, just use a Global ID as your
@@ -1209,7 +1208,7 @@ ID) also with mod_ssl?
After I have installed my new Verisign Global ID server certificate, the
browsers complain that they cannot verify the server certificate?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#gid"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#gid"><b>L</b></a>]
<p>
That is because Verisign uses an intermediate CA certificate between
the root CA certificate (which is installed in the browsers) and
@@ -1230,7 +1229,7 @@ browsers complain that they cannot verify the server certificate?
<strong id="faq">
Why has my webserver a higher load now that I run SSL there?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#load"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#load"><b>L</b></a>]
<p>
Because SSL uses strong cryptographic encryption and this needs a lot of
number crunching. And because when you request a webpage via HTTPS even
@@ -1243,7 +1242,7 @@ Why has my webserver a higher load now that I run SSL there?
Often HTTPS connections to my server require up to 30 seconds for establishing
the connection, although sometimes it works faster?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#random"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#random"><b>L</b></a>]
<p>
Usually this is caused by using a <code>/dev/random</code> device for
<code>SSLRandomSeed</code> which is blocking in read(2) calls if not
@@ -1255,7 +1254,7 @@ the connection, although sometimes it works faster?
<strong id="faq">
What SSL Ciphers are supported by mod_ssl?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#ciphers"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#ciphers"><b>L</b></a>]
<p>
Usually just all SSL ciphers which are supported by the
version of OpenSSL in use (can depend on the way you built
@@ -1282,7 +1281,7 @@ What SSL Ciphers are supported by mod_ssl?
I want to use Anonymous Diffie-Hellman (ADH) ciphers, but I always get ``no
shared cipher'' errors?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#cipher-adh"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#cipher-adh"><b>L</b></a>]
<p>
In order to use Anonymous Diffie-Hellman (ADH) ciphers, it is not enough
to just put ``<code>ADH</code>'' into your <code>SSLCipherSuite</code>.
@@ -1297,7 +1296,7 @@ shared cipher'' errors?
I always just get a 'no shared ciphers' error if
I try to connect to my freshly installed server?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#cipher-shared"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#cipher-shared"><b>L</b></a>]
<p>
Either you have messed up your <code>SSLCipherSuite</code>
directive (compare it with the pre-configured example in
@@ -1316,7 +1315,7 @@ I try to connect to my freshly installed server?
<strong id="faq">
Why can't I use SSL with name-based/non-IP-based virtual hosts?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#vhosts"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#vhosts"><b>L</b></a>]
<p>
The reason is very technical. Actually it's some sort of a chicken and
egg problem: The SSL protocol layer stays below the HTTP protocol layer
@@ -1337,7 +1336,7 @@ When I use Basic Authentication over HTTPS the lock icon in Netscape browsers
still show the unlocked state when the dialog pops up. Does this mean the
username/password is still transmitted unencrypted?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#lock-icon"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#lock-icon"><b>L</b></a>]
<p>
No, the username/password is already transmitted encrypted. The icon in
Netscape browsers is just not really synchronized with the SSL/TLS layer
@@ -1355,7 +1354,7 @@ username/password is still transmitted unencrypted?
When I connect via HTTPS to an Apache+mod_ssl+OpenSSL server with Microsoft Internet
Explorer (MSIE) I get various I/O errors. What is the reason?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#io-ie"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#io-ie"><b>L</b></a>]
<p>
The first reason is that the SSL implementation in some MSIE versions has
some subtle bugs related to the HTTP keep-alive facility and the SSL close
@@ -1410,7 +1409,7 @@ When I connect via HTTPS to an Apache+mod_ssl server with Netscape Navigator I
get I/O errors and the message "Netscape has encountered bad data from the
server" What's the reason?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#io-ns"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#io-ns"><b>L</b></a>]
<p>
The problem usually is that you had created a new server certificate with
the same DN, but you had told your browser to accept forever the old
@@ -1429,15 +1428,15 @@ server" What's the reason?
<strong id="faq">
What information resources are available in case of mod_ssl problems?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#resources"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#resources"><b>L</b></a>]
<p>
The following information resources are available.
In case of problems you should search here first.
<p>
<ol>
<li><em>Answers in the User Manual's F.A.Q. List (this)</em><br>
- <a href="http://www.modssl.org/docs/2.6/ssl_faq.html">
- http://www.modssl.org/docs/2.6/ssl_faq.html</a><br>
+ <a href="http://www.modssl.org/docs/2.7/ssl_faq.html">
+ http://www.modssl.org/docs/2.7/ssl_faq.html</a><br>
First look inside the F.A.Q. (this text), perhaps your problem is such
popular that it was already answered a lot of times in the past.
<p>
@@ -1460,7 +1459,7 @@ In case of problems you should search here first.
<strong id="faq">
What support contacts are available in case of mod_ssl problems?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#contact"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#contact"><b>L</b></a>]
<p>
The following lists all support possibilities for mod_ssl, in order of
preference, i.e. start in this order and do not pick the support possibility
@@ -1497,7 +1496,7 @@ you just like most, please.
What information and details I've to provide to
the author when writing a bug report?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#report-details"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#report-details"><b>L</b></a>]
<p>
You have to at least always provide the following information:
<p>
@@ -1536,7 +1535,7 @@ You have to at least always provide the following information:
<strong id="faq">
I got a core dump, can you help me?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#core-dumped"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#core-dumped"><b>L</b></a>]
<p>
In general no, at least not unless you provide more details about the code
location where Apache dumped core. What is usually always required in
@@ -1549,7 +1548,7 @@ I got a core dump, can you help me?
<strong id="faq">
Ok, I got a core dump but how do I get a backtrace to find out the reason for it?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#report-backtrace"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#report-backtrace"><b>L</b></a>]
<p>
Follow the following steps:
<p>
@@ -1579,7 +1578,7 @@ Follow the following steps:
</ul>
<p>
<br>
- <table>
+ <table summary="">
<tr>
<td>
<table width="600" border="0" summary="">
@@ -1601,7 +1600,7 @@ Follow the following steps:
<td><table width="598" summary="">
<tr>
<td align="left"><font face="Arial,Helvetica">
- <a href="http://www.modssl.org/">mod_ssl</a> 2.6, User Manual<br>
+ <a href="http://www.modssl.org/">mod_ssl</a> 2.7, User Manual<br>
The Apache Interface to OpenSSL
</font>
</td>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml
index fc2dde8156e..5683974ecb3 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_faq.wml
@@ -69,7 +69,7 @@ author.
<a name="<get-var ref>"></a>
<strong id="faq">%body</strong>\
&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_faq.html#<get-var ref>"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_faq.html#<get-var ref>"><b>L</b></a>]
<p>
<restore toc>
<restore ref>
@@ -146,14 +146,15 @@ What are the major differences between mod_ssl and
the commercial alternatives like Raven or Stronghold?
</faq>
- As of this writing (end of the year 1999) the major difference is
- the RSA license which one receives (very cheaply in contrast to
+ In the past (until September 20th, 2000) the major difference was
+ the RSA license which one received (very cheaply in contrast to
a direct licensing from RSA DSI) with the commercial Apache SSL
- products. On the other hand, one needs this license only in the
- US, of course. So for non-US citizens this point is useless. And
- even for US citizens the situations is at least solved next year
- (September 20th, 2000) when the RSA patent expires.
-
+ products. On the other hand, one needed this license only in the US,
+ of course. So for non-US citizens this point was useless. But now
+ even for US citizens the situations changed because the RSA patent
+ expired on September 20th, 2000 and RSA DSI also placed the RSA
+ algorithm explicitly into the public domain.
+
<p>
Second, there is the point that one has guaranteed support from
the commercial vendors. On the other hand, if you monitored the
@@ -184,13 +185,11 @@ the commercial alternatives like Raven or Stronghold?
<p>
So, in short: There are lots of commercial versions of the popular
- Apache+mod_ssl+OpenSSL server combination available. And until the
- RSA patent expires in the year 2000, US citizens have no choice,
- of course. They have to buy one of the commercial versions. Non-US
- citizens are not forced into this situation and should decide
- carefully whether they really need to buy a commercial version or
- whether it would not be sufficient to directly use the free and
- official versions of the Apache, mod_ssl and OpenSSL packages.
+ Apache+mod_ssl+OpenSSL server combination available. Every user
+ should decide carefully whether they really need to buy a commercial
+ version or whether it would not be sufficient to directly use the
+ free and official versions of the Apache, mod_ssl and OpenSSL
+ packages.
<faq ref="what-version" toc="mod_ssl/Apache versions?">
How do I know which mod_ssl version is for which Apache version?
@@ -1119,8 +1118,8 @@ In case of problems you should search here first.
<p>
<ol>
<li><em>Answers in the User Manual's F.A.Q. List (this)</em><br>
- <a href="http://www.modssl.org/docs/2.6/ssl_faq.html">
- http://www.modssl.org/docs/2.6/ssl_faq.html</a><br>
+ <a href="http://www.modssl.org/docs/2.7/ssl_faq.html">
+ http://www.modssl.org/docs/2.7/ssl_faq.html</a><br>
First look inside the F.A.Q. (this text), perhaps your problem is such
popular that it was already answered a lot of times in the past.
<p>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_glossary.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_glossary.html
index fac3768ce2c..f3a6618c72d 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_glossary.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_glossary.html
@@ -369,7 +369,7 @@ Richard Nixon
</dl>
<p>
<br>
- <table>
+ <table summary="">
<tr>
<td>
<table width="600" border="0" summary="">
@@ -390,7 +390,7 @@ Richard Nixon
<td><table width="598" summary="">
<tr>
<td align="left"><font face="Arial,Helvetica">
- <a href="http://www.modssl.org/">mod_ssl</a> 2.6, User Manual<br>
+ <a href="http://www.modssl.org/">mod_ssl</a> 2.7, User Manual<br>
The Apache Interface to OpenSSL
</font>
</td>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.html
index fd277012bab..31178f3d593 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.html
@@ -303,7 +303,7 @@ coherences.
<strong id="howto">
How can I create a real SSLv2-only server?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#cipher-sslv2"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#cipher-sslv2"><b>L</b></a>]
<p>
The following creates an SSL server which speaks only the SSLv2 protocol and
its ciphers.
@@ -352,7 +352,7 @@ SSLCipherSuite SSLv2:+HIGH:+MEDIUM:+LOW:+EXP
<strong id="howto">
How can I create an SSL server which accepts strong encryption only?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#cipher-strong"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#cipher-strong"><b>L</b></a>]
<p>
The following enables only the seven strongest ciphers:
<p>
@@ -401,7 +401,7 @@ SSLCipherSuite HIGH:MEDIUM
How can I create an SSL server which accepts strong encryption only,
but allows export browsers to upgrade to stronger encryption?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#cipher-sgc"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#cipher-sgc"><b>L</b></a>]
<p>
This facility is called Server Gated Cryptography (SGC) and details you can
find in the <code>README.GlobalID</code> document in the mod_ssl distribution.
@@ -465,7 +465,7 @@ SSLRequire %{SSL_CIPHER_USEKEYSIZE} &gt;= 128
How can I create an SSL server which accepts all types of ciphers in general,
but requires a strong ciphers for access to a particular URL?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#cipher-perdir"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#cipher-perdir"><b>L</b></a>]
<p>
Obviously you cannot just use a server-wide <code>SSLCipherSuite</code> which
restricts the ciphers to the strong variants. But mod_ssl allows you to
@@ -525,7 +525,7 @@ SSLCipherSuite HIGH:MEDIUM
How can I authenticate clients based on certificates when I know all my
clients?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#auth-simple"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#auth-simple"><b>L</b></a>]
<p>
When you know your user community (i.e. a closed user group situation), as
it's the case for instance in an Intranet, you can use plain certificate
@@ -581,7 +581,7 @@ SSLCACertificateFile conf/ssl.crt/ca.crt
How can I authenticate my clients for a particular URL based on certificates
but still allow arbitrary clients to access the remaining parts of the server?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#auth-selective"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#auth-selective"><b>L</b></a>]
<p>
For this we again use the per-directory reconfiguration feature of mod_ssl:
<p>
@@ -635,7 +635,7 @@ How can I authenticate only particular clients for a some URLs based
on certificates but still allow arbitrary clients to access the remaining
parts of the server?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#auth-particular"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#auth-particular"><b>L</b></a>]
<p>
The key is to check for various ingredients of the client certficate. Usually
this means to check the whole or part of the Distinguished Name (DN) of the
@@ -797,7 +797,7 @@ certificates for access to a subarea on the Intranet website for clients
coming from the Internet but still allow plain HTTP access for clients on the
Intranet?
</strong>&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#auth-intranet"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#auth-intranet"><b>L</b></a>]
<p>
Let us assume the Intranet can be distinguished through the IP network
192.160.1.0/24 and the subarea on the Intranet website has the URL
@@ -883,7 +883,7 @@ Require valid-user
</ul>
<p>
<br>
- <table>
+ <table summary="">
<tr>
<td>
<table width="600" border="0" summary="">
@@ -905,7 +905,7 @@ Require valid-user
<td><table width="598" summary="">
<tr>
<td align="left"><font face="Arial,Helvetica">
- <a href="http://www.modssl.org/">mod_ssl</a> 2.6, User Manual<br>
+ <a href="http://www.modssl.org/">mod_ssl</a> 2.7, User Manual<br>
The Apache Interface to OpenSSL
</font>
</td>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.wml b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.wml
index 69c7d6ed5f9..7bb3932b6bf 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.wml
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_howto.wml
@@ -63,7 +63,7 @@ coherences.
<a name="<get-var ref>"></a>
<strong id="howto">%body</strong>\
&nbsp;&nbsp;
- [<a href="http://www.modssl.org/docs/2.6/ssl_howto.html#<get-var ref>"><b>L</b></a>]
+ [<a href="http://www.modssl.org/docs/2.7/ssl_howto.html#<get-var ref>"><b>L</b></a>]
<p>
<restore toc>
<restore ref>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_intro.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_intro.html
index 276ccdd0ced..4db11be91ec 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_intro.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_intro.html
@@ -430,7 +430,7 @@ information for the Certificate Authority's use, such as a serial number.
<tr><td bgcolor="#cccccc">
<table width="598" cellpadding="5" cellspacing="0" border="0" summary="">
<tr><td valign="top" align="center" bgcolor="#ffffff">
-<table>
+<table summary="">
<tr valign="top"><td><b>Subject:</b></td>
<td>Distinguished Name, Public Key</td></tr>
<tr valign="top"><td><b>Issuer:</b></td>
@@ -461,7 +461,7 @@ names, and abbreviations used to refer to the fields
<tr><td bgcolor="#cccccc">
<table width="598" cellpadding="5" cellspacing="0" border="0" summary="">
<tr><td valign="top" align="center" bgcolor="#ffffff">
-<table>
+<table summary="">
<tr valign="top"><td><b>DN Field:</b></td><td><b>Abbrev.:</b></td><td><b>Description:</b></td>
<td><b>Example:</b></td>
</t>
@@ -612,7 +612,7 @@ a protocol session.
<tr><td bgcolor="#cccccc">
<table width="598" cellpadding="5" cellspacing="0" border="0" summary="">
<tr><td valign="top" align="center" bgcolor="#ffffff">
-<table>
+<table summary="">
<tr valign="top">
<td><b>Version:</b></td>
<td><b>Source:</b></td>
@@ -874,7 +874,7 @@ is what mod_ssl provides to you for the Apache webserver...
</ul>
<p>
<br>
- <table>
+ <table summary="">
<tr>
<td>
<table width="600" border="0" summary="">
@@ -896,7 +896,7 @@ is what mod_ssl provides to you for the Apache webserver...
<td><table width="598" summary="">
<tr>
<td align="left"><font face="Arial,Helvetica">
- <a href="http://www.modssl.org/">mod_ssl</a> 2.6, User Manual<br>
+ <a href="http://www.modssl.org/">mod_ssl</a> 2.7, User Manual<br>
The Apache Interface to OpenSSL
</font>
</td>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.html
index 4be14f77d9a..5cf96253ee1 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.html
@@ -323,12 +323,9 @@ module. A lot of hints you can find in the <a
href="http://cwis.kub.nl/~frw/people/koops/lawsurvy.htm">International Law
Crypto Survey</a> which is a really comprehensive resource on this topic. At
least two countries with heavy cryptography restrictions are well known:
-In the United States (USA) first it's not allowed to (re-)export mod_ssl
-or OpenSSL and second it's not allowed to use Apache+mod_ssl+OpenSSL (because of
-patent issues on the RSA and RC4 algorithms) unless OpenSSL is built with RSA
-DSI's RSAref package and used for non-commercial purposes only. And inside
-France it's not allowed to use any cryptography at all when keys with more
-than 40 bits are used.
+In the United States (USA) it's not allowed to (re-)export mod_ssl
+or OpenSSL And inside France it's not allowed to use any cryptography at all
+when keys with more than 40 bits are used.
<p>
<table cellspacing="0" cellpadding="1" bgcolor="#cccccc" border="0" summary="">
<tr>
@@ -434,7 +431,7 @@ they support linking of a DSO against a static library (libssl.a, libcrypo.a).
Not all platform support this.
<p>
<br>
- <table>
+ <table summary="">
<tr>
<td>
<table width="600" border="0" summary="">
@@ -456,7 +453,7 @@ Not all platform support this.
<td><table width="598" summary="">
<tr>
<td align="left"><font face="Arial,Helvetica">
- <a href="http://www.modssl.org/">mod_ssl</a> 2.6, User Manual<br>
+ <a href="http://www.modssl.org/">mod_ssl</a> 2.7, User Manual<br>
The Apache Interface to OpenSSL
</font>
</td>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.wml b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.wml
index 2f969e44438..4180ddb0553 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.wml
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_overview.wml
@@ -93,12 +93,9 @@ module. A lot of hints you can find in the <a
href="http://cwis.kub.nl/~frw/people/koops/lawsurvy.htm">International Law
Crypto Survey</a> which is a really comprehensive resource on this topic. At
least two countries with heavy cryptography restrictions are well known:
-In the United States (USA) first it's not allowed to (re-)export mod_ssl
-or OpenSSL and second it's not allowed to use Apache+mod_ssl+OpenSSL (because of
-patent issues on the RSA and RC4 algorithms) unless OpenSSL is built with RSA
-DSI's RSAref package and used for non-commercial purposes only. And inside
-France it's not allowed to use any cryptography at all when keys with more
-than 40 bits are used.
+In the United States (USA) it's not allowed to (re-)export mod_ssl
+or OpenSSL And inside France it's not allowed to use any cryptography at all
+when keys with more than 40 bits are used.
<p>
<box bdcolor="#cccccc" bdwidth=1 bdspace=10 bgcolor=white>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html
index 0057ff3d1f3..4bb6375deff 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_reference.html
@@ -2342,7 +2342,7 @@ SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)-/ \
<tr><td bgcolor="#cccccc">
<table width="598" cellpadding="5" cellspacing="0" border="0" summary="">
<tr><td valign="top" align="center" bgcolor="#ffffff">
-<table><tr><td>
+<table summary=""><tr><td>
<em>Standard CGI/1.0 and Apache variables:</em>
<pre>
HTTP_USER_AGENT PATH_INFO AUTH_TYPE
@@ -2494,7 +2494,7 @@ CustomLog logs/ssl_request_log \
</blockquote>
<p>
<br>
- <table>
+ <table summary="">
<tr>
<td>
<table width="600" border="0" summary="">
@@ -2516,7 +2516,7 @@ CustomLog logs/ssl_request_log \
<td><table width="598" summary="">
<tr>
<td align="left"><font face="Arial,Helvetica">
- <a href="http://www.modssl.org/">mod_ssl</a> 2.6, User Manual<br>
+ <a href="http://www.modssl.org/">mod_ssl</a> 2.7, User Manual<br>
The Apache Interface to OpenSSL
</font>
</td>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_template.inc b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_template.inc
index edb88dae743..d1a656cb250 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_template.inc
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_ssl/ssl_template.inc
@@ -232,7 +232,7 @@ H4 {
<tr>
<td align=left>\
<font face="Arial,Helvetica">
- <a href="http://www.modssl.org/">mod_ssl</a> 2.6, User Manual<br>
+ <a href="http://www.modssl.org/">mod_ssl</a> 2.7, User Manual<br>
The Apache Interface to OpenSSL
</font>
</td>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_status.html b/usr.sbin/httpd/htdocs/manual/mod/mod_status.html
index f88c38c00b8..8cf0ae1a550 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_status.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_status.html
@@ -1,7 +1,9 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html><head>
-<title>Apache module mod_status</title>
-</head><!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+<HTML>
+ <HEAD>
+ <TITLE>Apache module mod_status</TITLE>
+ </HEAD>
+<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
BGCOLOR="#FFFFFF"
TEXT="#000000"
@@ -13,91 +15,105 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<h1 ALIGN="CENTER">Module mod_status</h1>
-
-The Status Module is only available in Apache 1.1 and later.<p>
-
-<h2>Function</h2>
-
-The Status module allows a server administrator to find out how well
+<H1 ALIGN="CENTER">Module mod_status</H1>
+
+<p>This module provides information on server activity and
+performance.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_status.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> status_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.1 and later.
+</P>
+
+
+<H2>Summary</H2>
+
+<p>The Status module allows a server administrator to find out how well
their server is performing. A HTML page is presented that gives
the current server statistics in an easily readable form. If required
this page can be made to automatically refresh (given a compatible
browser). Another page gives a simple machine-readable list of the current
-server state.
-<p>
+server state.</p>
+
+<P>
The details given are:
-<ul>
-<li>The number of children serving requests
-<li>The number of idle children
-<li>The status of each child, the number of requests that child has
+<UL>
+<LI>The number of children serving requests
+<LI>The number of idle children
+<LI>The status of each child, the number of requests that child has
performed and the total number of bytes served by the child (*)
-<li>A total number of accesses and byte count served (*)
-<li>The time the server was started/restarted and the
+<LI>A total number of accesses and byte count served (*)
+<LI>The time the server was started/restarted and the
time it has been running for
-<li>Averages giving the number of requests per second,
+<LI>Averages giving the number of requests per second,
the number of bytes served per second and the average number
of bytes per request (*)
-<li>The current percentage CPU used by each child and in total by
+<LI>The current percentage CPU used by each child and in total by
Apache (*)
-<li>The current hosts and requests being processed (*)
+<LI>The current hosts and requests being processed (*)
+</UL>
+
+<P>Details marked "(*)" are only available with
+<CODE>ExtendedStatus On</CODE>.
+
+<h2>Directives</h2>
+
+<ul>
+<li><a href="#extendedstatus">ExtendedStatus</a></li>
</ul>
-A compile-time option must be used to display the details marked "(*)" as
-the instrumentation required for obtaining these statistics does not
-exist within standard Apache.
-<h2>Enabling Status Support</h2>
+<H2>Enabling Status Support</H2>
To enable status reports only for browsers from the foo.com
-domain add this code to your <code>access.conf</code> configuration file
-<pre>
+domain add this code to your <CODE>access.conf</CODE> configuration file
+<PRE>
&lt;Location /server-status&gt;
SetHandler server-status
-
- order deny,allow
- deny from all
- allow from .foo.com
+
+ Order Deny,Allow
+ Deny from all
+ Allow from .foo.com
&lt;/Location&gt;
-</pre>
-<p>
+</PRE>
+<P>
You can now access server statistics by using a Web browser to access the
-page <code>http://your.server.name/server-status</code>
-<p>
-Note that mod_status will only work when you are running Apache in
-<A HREF="core.html#servertype">standalone</A> mode and not
+page <CODE>http://your.server.name/server-status</CODE>
+<P>
+Note that mod_status will only work when you are running Apache in
+<A HREF="core.html#servertype">standalone</A> mode and not
<A HREF="core.html#servertype">inetd</A> mode.
-<h3>Automatic Updates</h3>
+<H3>Automatic Updates</H3>
You can get the status page to update itself automatically if you have
a browser that supports "refresh". Access the page
-<code>http://your.server.name/server-status?refresh=N</code> to refresh the page
-every N seconds.
-<h3>Machine Readable Status File</h3>
+<CODE>http://your.server.name/server-status?refresh=N</CODE> to refresh the
+page every N seconds.
+<H3>Machine Readable Status File</H3>
A machine-readable version of the status file is available by accessing the
-page <code>http://your.server.name/server-status?auto</code>. This is useful
-when automatically run, see the Perl program in the <code>/support</code>
-directory of Apache, <code>log_server_status</code>.
-
-<h2>Full Instrumentation</h2>
-
-To obtain full statistics you must compile Apache with a special
-directive. On some machines there may be a small performance loss
-if you do this. Try full statistics and see if you notice any
-difference. If you do please contact <a href="mailto:mark@ukweb.com">
-mark@ukweb.com</a> and tell me your configuration.
-
-<p>
-
-Do this by adding the following to the AUX_CFLAGS line in the
-"Configuration" file and then recompiling as usual.
-<pre>
- AUX_CFLAGS= (something) -DSTATUS
-</pre>
+page <CODE>http://your.server.name/server-status?auto</CODE>. This is useful
+when automatically run, see the Perl program in the <CODE>/support</CODE>
+directory of Apache, <CODE>log_server_status</CODE>.
<BLOCKQUOTE>
<STRONG>
@@ -108,9 +124,51 @@ Do this by adding the following to the AUX_CFLAGS line in the
security-related ramifications for your site.
</STRONG>
</BLOCKQUOTE>
+
+<hr>
+
+<H2><A NAME="extendedstatus">ExtendedStatus directive</A></H2>
+<!--%plaintext &lt;?INDEX {\tt ExtendedStatus} directive&gt; -->
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> ExtendedStatus <EM>On|Off</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>ExtendedStatus Off</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config <BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+ <A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+ ><STRONG>Module:</STRONG></A> mod_status<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> ExtendedStatus is only available
+ in Apache 1.3.2 and later.
+
+<P>
+This directive controls whether the server keeps track of extended
+status information for each request. This is only useful if the status module
+is enabled on the server.
+</P>
+<P>
+This setting applies to the entire server, and cannot be enabled or
+disabled on a virtualhost-by-virtualhost basis.
+</P>
+
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html b/usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html
index 22f53108e61..85982305acf 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_unique_id.html
@@ -21,13 +21,44 @@
<H1 ALIGN="CENTER">Module mod_unique_id</H1>
-This module provides a magic token for each request which is guaranteed
+<p>This module provides an environment variable with a unique identifier
+for each request.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_unique_id.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> unique_id_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3 and later.
+</P>
+
+<h2>Summary</h2>
+
+<p>This module provides a magic token for each request which is guaranteed
to be unique across "all" requests under very specific conditions.
The unique identifier is even unique across multiple machines in a
properly configured cluster of machines. The environment variable
<CODE>UNIQUE_ID</CODE> is set to the identifier for each request.
Unique identifiers are useful for various reasons which are beyond the
-scope of this document.
+scope of this document.</p>
+
+<h2>Directives</h2>
+
+<p>This module has no directives.</p>
+
<H2>Theory</H2>
@@ -177,12 +208,6 @@ site, but there is no portable shorter replacement for it).
<HR>
-<H2>Directives</H2>
-
-<CODE>mod_unique_id</CODE> has no directives.
-
-<HR>
-
<H3 ALIGN="CENTER">
Apache HTTP Server Version 1.3
</H3>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html b/usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html
index 946f8da6db2..ebe8f19044c 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_userdir.html
@@ -15,70 +15,134 @@
<DIV ALIGN="CENTER">
<IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
</DIV>
-<H1 ALIGN="CENTER">Module mod_userdir</h1>
+<H1 ALIGN="CENTER">Module mod_userdir</H1>
-This module is contained in the <code>mod_userdir.c</code> file, and
-is compiled in by default. It provides for user-specific directories.
+<p>This module provides for user-specific directories.</p>
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Base
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_userdir.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> userdir_module
+</P>
-<ul>
-<li><A HREF="#userdir">UserDir</A>
-</ul>
-<hr>
+<h2>Directives</h2>
-<h2><A name="userdir">UserDir</A></h2>
+<UL>
+<LI><A HREF="#userdir">UserDir</A>
+</UL>
+<HR>
+
+<H2><A NAME="userdir">UserDir</A> directive</H2>
<!--%plaintext &lt;?INDEX {\tt UserDir} directive&gt; -->
-<strong>Syntax:</strong> UserDir <em>directory/filename</em><br>
-<strong>Default:</strong> <code>UserDir public_html</code><br>
-<Strong>Context:</strong> server config, virtual host<br>
-<strong>Status:</strong> Base<br>
-<strong>Module:</strong> mod_userdir<br>
-<strong>Compatibility:</strong> All forms except the <code>UserDir
-public_html</code> form are only available in Apache 1.1 or above.<p>
+<A
+ HREF="directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> UserDir <EM>directory/filename</EM><BR>
+<A
+ HREF="directive-dict.html#Default"
+ REL="Help"
+><STRONG>Default:</STRONG></A> <CODE>UserDir public_html</CODE><BR>
+<A
+ HREF="directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config, virtual host<BR>
+<A
+ HREF="directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> Base<BR>
+<A
+ HREF="directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_userdir<BR>
+<A
+ HREF="directive-dict.html#Compatibility"
+ REL="Help"
+><STRONG>Compatibility:</STRONG></A> All forms except the <CODE>UserDir
+public_html</CODE> form are only available in Apache 1.1 or above. Use
+of the <SAMP>enabled</SAMP> keyword, or <SAMP>disabled</SAMP> with a
+list of usernames, is only available in Apache 1.3 and above.<P>
The UserDir directive sets the real directory in a user's home directory
to use when a request for a document for a user is received.
-<em>Directory</em> is either <code>disabled</code>, to disable this feature,
- or the name of a directory, following one of the following
-patterns. If not disabled, then a request for
-<code>http://www.foo.com/~bob/one/two.html</code> will be translated to:
-<pre>
+<EM>Directory/filename</EM> is one of the following:
+</P>
+<UL>
+ <LI>The name of a directory or a pattern such as those shown below.
+ </LI>
+ <LI>The keyword <SAMP>disabled</SAMP>. This turns off <EM>all</EM>
+ username-to-directory translations except those explicitly named with
+ the <SAMP>enabled</SAMP> keyword (see below).
+ </LI>
+ <LI>The keyword <SAMP>disabled</SAMP> followed by a space-delimited
+ list of usernames. Usernames that appear in such a list will
+ <EM>never</EM> have directory translation performed, even if they
+ appear in an <SAMP>enabled</SAMP> clause.
+ </LI>
+ <LI>The keyword <SAMP>enabled</SAMP> followed by a space-delimited list
+ of usernames. These usernames will have directory translation
+ performed even if a global disable is in effect, but not if they also
+ appear in a <SAMP>disabled</SAMP> clause.
+ </LI>
+</UL>
+<P>
+If neither the <SAMP>enabled</SAMP> nor the <SAMP>disabled</SAMP>
+keywords appear in the <SAMP>Userdir</SAMP> directive, the argument is
+treated as a filename pattern, and is used to turn the name into a
+directory specification. A request for
+<CODE>http://www.foo.com/~bob/one/two.html</CODE> will be translated to:
+<PRE>
UserDir public_html -&gt; ~bob/public_html/one/two.html
UserDir /usr/web -&gt; /usr/web/bob/one/two.html
UserDir /home/*/www -&gt; /home/bob/www/one/two.html
-</pre>
+</PRE>
The following directives will send redirects to the client:
-<pre>
-UserDir http://www.foo.com/users -&gt; http//www.foo.com/users/bob/one/two.html
-UserDir http://www.foo.com/*/usr -&gt; http://www.foo.com/bob/usr/one/two.html
-UserDir http://www.foo.com/~*/ -&gt; http://www.foo.com/~bob/one/two.html
-</pre>
-
-<P>
-<STRONG>
-Be careful when using this directive; for instance, <SAMP>&quot;UserDir
-./&quot;</SAMP> would map <SAMP>&quot;/~root&quot;</SAMP> to
-<SAMP>&quot;/&quot;</SAMP> - which is probably undesirable. See also
-the
-<A
- HREF="core.html#directory"
->&lt;Directory&gt;</A>
-directive and the
-<A
- HREF="../misc/security_tips.html"
->Security Tips</A>
-page for more information.
-</STRONG>
+<PRE>
+UserDir http://www.foo.com/users -&gt; http://www.foo.com/users/bob/one/two.html
+UserDir http://www.foo.com/*/usr -&gt; http://www.foo.com/bob/usr/one/two.html
+UserDir http://www.foo.com/~*/ -&gt; http://www.foo.com/~bob/one/two.html
+</PRE>
</P>
+<BLOCKQUOTE>
+ <STRONG>
+ Be careful when using this directive; for instance,
+ <SAMP>&quot;UserDir&nbsp;./&quot;</SAMP> would map
+ <SAMP>&quot;/~root&quot;</SAMP> to
+ <SAMP>&quot;/&quot;</SAMP> - which is probably undesirable. If you are
+ running Apache 1.3 or above, it is strongly recommended that your
+ configuration include a
+ &quot;<SAMP>UserDir&nbsp;disabled&nbsp;root</SAMP>&quot; declaration.
+ See also
+ the
+ <A
+ HREF="core.html#directory"
+ >&lt;Directory&gt;</A>
+ directive and the
+ <A
+ HREF="../misc/security_tips.html"
+ >Security Tips</A>
+ page for more information.
+ </STRONG>
+</BLOCKQUOTE>
<HR>
+
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
+ Apache HTTP Server Version 1.3
</H3>
<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html b/usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html
index a949bfd91af..d0c2056951e 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_usertrack.html
@@ -21,25 +21,57 @@
<H1 ALIGN="CENTER">Module mod_usertrack</H1>
-Previous releases of Apache have included a module which generates a
+<p>This module uses cookies to provide for a <em>clickstream</em> log of user
+activity on a site.</p>
+
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_usertrack.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> usertrack_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Known as mod_cookies prior to
+Apache 1.3.
+</P>
+
+<h2>Summary</h2>
+
+<p>Previous releases of Apache have included a module which generates a
'clickstream' log of user activity on a site using cookies. This was
called the "cookies" module, mod_cookies. In Apache 1.2 and later this
module has been renamed the "user tracking" module,
mod_usertrack. This module has been simplified and new directives
-added.
+added.</p>
-<HR>
+<H2>Directives</H2>
+
+<UL>
+<LI><A HREF="#cookieexpires">CookieExpires</A>
+<LI><A HREF="#cookiename">CookieName</A>
+<LI><A HREF="#cookietracking">CookieTracking</A>
+</UL>
<H2>Logging</H2>
-Previously, the cookies module (now the user tracking module) did its
+<p>Previously, the cookies module (now the user tracking module) did its
own logging, using the <TT>CookieLog</TT> directive. In this release,
this module does no logging at all. Instead, a configurable log
format file should be used to log user click-streams. This is possible
because the logging module now allows <A
HREF="../multilogs.html">multiple log files</A>. The cookie itself is
logged by using the text <TT>%{cookie}n </TT>
-
in the log file format. For example:
<PRE>
CustomLog logs/clickstream "%{cookie}n %r %t"
@@ -49,17 +81,50 @@ For backward compatibility the configurable log module implements the
old <TT>CookieLog</TT> directive, but this should be upgraded to the
above <TT>CustomLog</TT> directive.
-<H2>Directives</H2>
+<H2>2-digit or 4-digit dates for cookies?</H2>
-<UL>
-<LI><A HREF="#cookieexpires">CookieExpires</A>
-<LI><A HREF="#cookiename">CookieName</A>
-<LI><A HREF="#cookietracking">CookieTracking</A>
-</UL>
+(the following is from message
+&lt;022701bda43d$9d32bbb0$1201a8c0@christian.office.sane.com&gt; in
+the new-httpd archives)
+
+<P>
+
+<PRE>
+From: "Christian Allen" &lt;christian@sane.com&gt;
+Subject: Re: Apache Y2K bug in mod_usertrack.c
+Date: Tue, 30 Jun 1998 11:41:56 -0400
+
+Did some work with cookies and dug up some info that might be useful.
+
+True, Netscape claims that the correct format NOW is four digit dates, and
+four digit dates do in fact work... for Netscape 4.x (Communicator), that
+is. However, 3.x and below do NOT accept them. It seems that Netscape
+originally had a 2-digit standard, and then with all of the Y2K hype and
+probably a few complaints, changed to a four digit date for Communicator.
+Fortunately, 4.x also understands the 2-digit format, and so the best way to
+ensure that your expiration date is legible to the client's browser is to
+use 2-digit dates.
+
+However, this does not limit expiration dates to the year 2000; if you use
+an expiration year of "13", for example, it is interpreted as 2013, NOT
+1913! In fact, you can use an expiration year of up to "37", and it will be
+understood as "2037" by both MSIE and Netscape versions 3.x and up (not sure
+about versions previous to those). Not sure why Netscape used that
+particular year as its cut-off point, but my guess is that it was in respect
+to UNIX's 2038 problem. Netscape/MSIE 4.x seem to be able to understand
+2-digit years beyond that, at least until "50" for sure (I think they
+understand up until about "70", but not for sure).
+
+Summary: Mozilla 3.x and up understands two digit dates up until "37"
+(2037). Mozilla 4.x understands up until at least "50" (2050) in 2-digit
+form, but also understands 4-digit years, which can probably reach up until
+9999. Your best bet for sending a long-life cookie is to send it for some
+time late in the year "37".
+</PRE>
<HR>
-<H2><A NAME="cookieexpires">CookieExpires</A></H2>
+<H2><A NAME="cookieexpires">CookieExpires</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -88,7 +153,8 @@ double quotes.
<P>If this directive is not used, cookies last only for the current
browser session.</P>
-<H2><A NAME="cookiename">CookieName</A></H2>
+<HR>
+<H2><A NAME="cookiename">CookieName</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -128,7 +194,8 @@ you use a name containing unusual characters. Valid characters
include A-Z, a-z, 0-9, "_", and "-".
</P>
-<H2><A NAME="cookietracking">CookieTracking</A></H2>
+<hr>
+<H2><A NAME="cookietracking">CookieTracking</A> directive</H2>
<A
HREF="directive-dict.html#Syntax"
REL="Help"
@@ -157,48 +224,7 @@ requests. This directive can be used to turn this behavior on or off
on a per-server or per-directory basis. By default, compiling
mod_usertrack will not activate cookies.
-<HR>
-<H2>2-digit or 4-digit dates for cookies?</H2>
-
-(the following is from message
-&lt;022701bda43d$9d32bbb0$1201a8c0@christian.office.sane.com&gt; in
-the new-httpd archives)
-
-<P>
-
-<PRE>
-From: "Christian Allen" &lt;christian@sane.com&gt;
-Subject: Re: Apache Y2K bug in mod_usertrack.c
-Date: Tue, 30 Jun 1998 11:41:56 -0400
-
-Did some work with cookies and dug up some info that might be useful.
-
-True, Netscape claims that the correct format NOW is four digit dates, and
-four digit dates do in fact work... for Netscape 4.x (Communicator), that
-is. However, 3.x and below do NOT accept them. It seems that Netscape
-originally had a 2-digit standard, and then with all of the Y2K hype and
-probably a few complaints, changed to a four digit date for Communicator.
-Fortunately, 4.x also understands the 2-digit format, and so the best way to
-ensure that your expiration date is legible to the client's browser is to
-use 2-digit dates.
-
-However, this does not limit expiration dates to the year 2000; if you use
-an expiration year of "13", for example, it is interpreted as 2013, NOT
-1913! In fact, you can use an expiration year of up to "37", and it will be
-understood as "2037" by both MSIE and Netscape versions 3.x and up (not sure
-about versions previous to those). Not sure why Netscape used that
-particular year as its cut-off point, but my guess is that it was in respect
-to UNIX's 2038 problem. Netscape/MSIE 4.x seem to be able to understand
-2-digit years beyond that, at least until "50" for sure (I think they
-understand up until about "70", but not for sure).
-
-Summary: Mozilla 3.x and up understands two digit dates up until "37"
-(2037). Mozilla 4.x understands up until at least "50" (2050) in 2-digit
-form, but also understands 4-digit years, which can probably reach up until
-9999. Your best bet for sending a long-life cookie is to send it for some
-time late in the year "37".
-</PRE>
<HR>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/mod_vhost_alias.html b/usr.sbin/httpd/htdocs/manual/mod/mod_vhost_alias.html
index d9331a57527..b402b6f8bca 100644
--- a/usr.sbin/httpd/htdocs/manual/mod/mod_vhost_alias.html
+++ b/usr.sbin/httpd/htdocs/manual/mod/mod_vhost_alias.html
@@ -22,12 +22,51 @@
<H1 ALIGN="CENTER">Module mod_vhost_alias</H1>
<P>
-This module is contained in the <CODE>mod_vhost_alias.c</CODE> file
-and is not compiled in by default. It provides support for
-<A HREF="../vhosts/mass.html">dynamically configured mass virtual
+This module provides support for <A
+HREF="../vhosts/mass.html">dynamically configured mass virtual
hosting</A>.
</P>
+<P><A
+HREF="module-dict.html#Status"
+REL="Help"
+><STRONG>Status:</STRONG></A> Extension
+<BR>
+<A
+HREF="module-dict.html#SourceFile"
+REL="Help"
+><STRONG>Source File:</STRONG></A> mod_vhost_alias.c
+<BR>
+<A
+HREF="module-dict.html#ModuleIdentifier"
+REL="Help"
+><STRONG>Module Identifier:</STRONG></A> vhost_alias_module
+<BR>
+<A
+HREF="module-dict.html#Compatibility"
+REL="Help"
+><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3.7 and later.
+</P>
+
+<h2>Summary</h2>
+
+<p>This module creates dynamically configured virtual hosts, by
+allowing the IP address and/or the <code>Host:</code> header of the
+HTTP request to be used as part of the pathname to determine what
+files to serve. This allows for easy use of a huge number of virtual
+hosts with similar configurations.</p>
+
+<H2>Directives</H2>
+<UL>
+ <LI><A HREF="#virtualdocumentroot">VirtualDocumentRoot</A>
+ <LI><A HREF="#virtualdocumentrootip">VirtualDocumentRootIP</A>
+ <LI><A HREF="#virtualscriptalias">VirtualScriptAlias</A>
+ <LI><A HREF="#virtualscriptaliasip">VirtualScriptAliasIP</A>
+</UL>
+
+<p>See also: <a href="core.html#usecanonicalname">UseCanonicalName</a>.</p>
+
+
<H2>Directory Name Interpolation</H2>
<P>
@@ -102,7 +141,7 @@ do this you might use the following in your configuration file:
</PRE>
A request for <CODE>http://www.example.isp.com/directory/file.html</CODE>
will be satisfied by the file
-<CODE>/usr/local/apache/isp.com/e/x/a/example/directory/file.html</CODE>.
+<CODE>/usr/local/apache/vhosts/isp.com/e/x/a/example/directory/file.html</CODE>.
A more even spread of files can be achieved by hashing from the end of
the name, for example:
<PRE>
@@ -123,16 +162,29 @@ For IP-based virtual hosting you might use the following in your
configuration file:
<PRE>
UseCanonicalName DNS
- VirtualDocumentRootIP /usr/local/apache/vhost/%1/%2/%3/%4/docs
- VirtualScriptAliasIP /usr/local/apache/vhost/%1/%2/%3/%4/cgi-bin
+ VirtualDocumentRootIP /usr/local/apache/vhosts/%1/%2/%3/%4/docs
+ VirtualScriptAliasIP /usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin
</PRE>
A request for <CODE>http://www.example.isp.com/directory/file.html</CODE>
would be satisfied by the file
-<CODE>/usr/local/apache/10/20/30/40/docs/directory/file.html</CODE> if
+<CODE>/usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html</CODE> if
the IP address of <CODE>www.example.com</CODE> were 10.20.30.40.
A request for <CODE>http://www.example.isp.com/cgi-bin/script.pl</CODE>
would be satisfied by executing the program
-<CODE>/usr/local/apache/10/20/30/40/cgi-bin/script.pl</CODE>.
+<CODE>/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl</CODE>.
+</P>
+
+<P>
+If you want to include the <CODE>.</CODE> character in a
+<CODE>VirtualDocumentRoot</CODE> directive, but it clashes with a
+<CODE>%</CODE> directive, you can work around the problem in the
+following way:
+<PRE>
+ VirtualDocumentRoot /usr/local/apache/vhosts/%2.0.%3.0
+</PRE>
+A request for <CODE>http://www.example.isp.com/directory/file.html</CODE>
+will be satisfied by the file
+<CODE>/usr/local/apache/vhosts/example.isp/directory/file.html</CODE>.
</P>
<P>
@@ -143,14 +195,6 @@ this module.
<HR>
-<H2>Directives</H2>
-<UL>
- <LI><A HREF="#virtualdocumentroot">VirtualDocumentRoot</A>
- <LI><A HREF="#virtualdocumentrootip">VirtualDocumentRootIP</A>
- <LI><A HREF="#virtualscriptalias">VirtualScriptAlias</A>
- <LI><A HREF="#virtualscriptaliasip">VirtualScriptAliasIP</A>
-</UL>
-<HR>
<H2><A NAME="virtualdocumentroot">VirtualDocumentRoot directive</A></H2>
<P>
diff --git a/usr.sbin/httpd/htdocs/manual/mod/module-dict.html b/usr.sbin/httpd/htdocs/manual/mod/module-dict.html
new file mode 100644
index 00000000000..c841c982bdf
--- /dev/null
+++ b/usr.sbin/httpd/htdocs/manual/mod/module-dict.html
@@ -0,0 +1,149 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+ <HEAD>
+ <TITLE>Definitions of terms used to describe Apache modules
+ </TITLE>
+ </HEAD>
+<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+ <BODY
+ BGCOLOR="#FFFFFF"
+ TEXT="#000000"
+ LINK="#0000FF"
+ VLINK="#000080"
+ ALINK="#FF0000"
+ >
+<DIV ALIGN="CENTER">
+ <IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]">
+ <H3>
+ Apache HTTP Server Version 1.3
+ </H3>
+</DIV>
+
+ <H1 ALIGN="CENTER">Terms Used to Describe Apache Modules</H1>
+
+ <P>
+ Each Apache module is described using a common format that looks
+ like this:
+ </P>
+ <DL>
+ <DD><A
+ HREF="#Status"
+ REL="Help"
+ ><STRONG>Status:</STRONG></A> <EM>status</EM>
+ <BR>
+ <A
+ HREF="#SourceFile"
+ REL="Help"
+ ><STRONG>Source File:</STRONG></A> <EM>source-file</EM>
+ <BR>
+ <A
+ HREF="#ModuleIdentifier"
+ REL="Help"
+ ><STRONG>Module Identifier:</STRONG></A> <EM>module-identifier</EM>
+ <BR>
+ <A
+ HREF="#Compatibility"
+ REL="Help"
+ ><STRONG>Compatibility:</STRONG></A> <EM>compatibility notes</EM>
+ </DD>
+ </DL>
+ <P>
+ Each of the attributes, complete with values where possible, are
+ described in this document.
+ </P>
+
+ <H2>Module Terms</H2>
+ <UL>
+ <LI><A HREF="#Status">Status</A>
+ </LI>
+ <LI><A HREF="#SourceFile">Source File</A>
+ </LI>
+ <LI><A HREF="#ModuleIdentifier">Module Identifier</A>
+ </LI>
+ <LI><A HREF="#Compatibility">Compatibility</A>
+ </LI>
+ </UL>
+
+ <HR>
+ <H2><A NAME="Status">Status</A></H2>
+ <P>
+ This indicates how tightly bound into the Apache Web server the
+ module is; in other words, you may need to recompile the server in
+ order to gain access to the module and its functionality. Possible
+ values for this attribute are:
+ </P>
+ <DL>
+ <DT><STRONG>Base</STRONG>
+ </DT>
+ <DD>A module labeled as having &quot;Base&quot; status is compiled
+ and loaded into the server by default, and is therefore normally
+ available unless you have taken steps to remove the module from your
+ configuration.
+ <P>
+ </P>
+ </DD>
+ <DT><STRONG>Extension</STRONG>
+ </DT>
+ <DD>A module with &quot;Extension&quot; status is not normally
+ compiled and loaded into the server. To enable the module and its
+ functionality, you may need to change the server build
+ configuration files and re-compile Apache.
+ <P>
+ </P>
+ </DD>
+ <DT><STRONG>Experimental</STRONG>
+ </DT>
+ <DD>&quot;Experimental&quot; status indicates that the module is
+ available as part of the Apache kit, but you are on your own if you
+ try to use it. The module is being documented for completeness,
+ and is not necessarily supported.
+ <P>
+ </P>
+ </DD>
+ <DT><STRONG>External</STRONG>
+ </DT>
+ <DD>Modules which are not included with the base Apache
+ distribution (&quot;third-party modules&quot;) may use the
+ &quot;External&quot; status. We are not responsible, nor do we
+ support such modules.
+ <P>
+ </P>
+ </DD>
+ </DL>
+
+ <HR>
+ <H2><A NAME="SourceFile">Source File</A></H2>
+ <P>
+ This quite simply lists the name of the source file which contains
+ the code for the module. This is also the name used by the <A
+ HREF="core.html#ifmodule"><CODE>&lt;IfModule&gt;</CODE></A>
+ directive.
+ </P>
+
+ <HR>
+ <H2><A NAME="ModuleIdentifier">Module Identifier</A></H2>
+ <P>
+ This is a string which identifies the module for use in the <A
+ HREF="mod_so.html#loadmodule">LoadModule</A> directive when
+ dynamically loading modules. In particular, it is the name
+ of the external variable of type module in the source file.
+ </P>
+
+ <HR>
+ <H2><A NAME="Compatibility">Compatibility</A></H2>
+ <P>
+ If the module was not part of the original Apache version 1
+ distribution, the version in which it was introduced should be listed
+ here.
+ </P>
+<HR>
+
+<H3 ALIGN="CENTER">
+ Apache HTTP Server Version 1.3
+</H3>
+
+<A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A>
+<A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A>
+
+ </BODY>
+</HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/multilogs.html b/usr.sbin/httpd/htdocs/manual/multilogs.html
index e777f0e9393..3f2d196131f 100644
--- a/usr.sbin/httpd/htdocs/manual/multilogs.html
+++ b/usr.sbin/httpd/htdocs/manual/multilogs.html
@@ -15,92 +15,104 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<h1 ALIGN="CENTER">Multiple Log Files</h1>
+<H1 ALIGN="CENTER">Multiple Log Files</H1>
It is now possible to specify multiple log files, each with a fully
customizable format. This is compatible with existing
-configurations. Multiple log files are implemented as part of the <a
-href="mod/mod_log_config.html">mod_log_config</a> module which as of
+configurations. Multiple log files are implemented as part of the <A
+HREF="mod/mod_log_config.html">mod_log_config</A> module which as of
Apache 1.2 is the default log module.
-<hr>
+<HR>
-<h2>Using Multiple Log Files</h2>
+<H2>Using Multiple Log Files</H2>
-Multiple log files be created with either the <code>TransferLog</code>
-or <code>CustomLog</code> directive. These directives can be
+Multiple log files be created with either the <CODE>TransferLog</CODE>
+or <CODE>CustomLog</CODE> directive. These directives can be
repeated to create more than one log file (in previous releases,
only one logfile could be given per server configuration).
-The <code>TransferLog</code> directive creates a log file
+The <CODE>TransferLog</CODE> directive creates a log file
in the standard "common log format", although this can be customized
-with <code>LogFormat</code>. The syntax of these two
+with <CODE>LogFormat</CODE>. The syntax of these two
directives is the same as for the config log module in previous
Apache releases.
-<p>
+<P>
The real power of multiple log files come from the ability to
create log files in different formats. For example, as well
as a CLF transfer log, the server could log the user agent of
each client, or the referrer information, or any other aspect of
the request, such as the language preferences of the user.
-<p>
+<P>
-The new <code>CustomLog</code> directive takes both a filename to log
-to, and a log file format.
+The new <CODE>CustomLog</CODE> directive takes both a filename to log
+to, and a log file format.
-<hr>
+<HR>
-<strong>Syntax:</strong> CustomLog <em>filename "format"</em><br>
-<strong>Context:</strong> server config, virtual host<br>
-<strong>Status:</strong> base<br>
-<strong>Module:</strong> mod_log_config<p>
+<A
+ HREF="mod/directive-dict.html#Syntax"
+ REL="Help"
+><STRONG>Syntax:</STRONG></A> CustomLog <EM>filename "format"</EM><BR>
+<A
+ HREF="mod/directive-dict.html#Context"
+ REL="Help"
+><STRONG>Context:</STRONG></A> server config, virtual host<BR>
+<A
+ HREF="mod/directive-dict.html#Status"
+ REL="Help"
+><STRONG>Status:</STRONG></A> base<BR>
+<A
+ HREF="mod/directive-dict.html#Module"
+ REL="Help"
+><STRONG>Module:</STRONG></A> mod_log_config<P>
The first argument is the filename to log to. This is used
-exactly like the argument to <code>TransferLog</code>, that is,
+exactly like the argument to <CODE>TransferLog</CODE>, that is,
it is either a file as a full path or relative to the current
server root, or |programname. Be aware that anyone who can write to
the directory where a log file is written can gain access to the uid
that starts the server. See the <A HREF="misc/security_tips.html">
-security tips</A> document for details.<p>
+security tips</A> document for details.<P>
The format argument specifies a format for each line of the log file.
The options available for the format are exactly the same as for
-the argument of the <code>LogFormat</code> directive. If the format
+the argument of the <CODE>LogFormat</CODE> directive. If the format
includes any spaces (which it will do in almost all cases) it
should be enclosed in double quotes.
-<p>
+<P>
-<h3>Use with Virtual Hosts</h3>
+<H3>Use with Virtual Hosts</H3>
If a &lt;VirtualHost&gt; section does not contain any
-<code>TransferLog</code> or <code>CustomLog</code> directives, the
+<CODE>TransferLog</CODE> or <CODE>CustomLog</CODE> directives, the
logs defined for the main server will be used. If it does
contain one or more of these directives, requests serviced by
this virtual host will only be logged in the log files defined
within its definition, not in any of the main server's log files.
See the examples below.
-<p>
+<P>
-<hr>
+<HR>
-<h3>Examples</h3>
+<H3>Examples</H3>
To create a normal (CLF) format log file in logs/access_log, and a
log of user agents:
-<pre>
+<PRE>
TransferLog logs/access_log
CustomLog logs/agents "%{user-agent}i"
-</pre>
+</PRE>
To define a CLF transfer log and a referrer log which log
all accesses to both the main server and a virtual host:
-<pre>
+<PRE>
TransferLog logs/access_log
CustomLog logs/referer "%{referer}i"
@@ -108,25 +120,25 @@ CustomLog logs/referer "%{referer}i"
DocumentRoot /whatever
ServerName my.virtual.host
&lt;/VirtualHost&gt;
-</pre>
+</PRE>
-Since no TransferLog or CustomLog directives appear inside the
+Since no TransferLog or CustomLog directives appear inside the
&lt;VirtualHost&gt; section, any requests for this virtual host
will be logged in the main server's log files. If however the
directive
-<pre>
+<PRE>
TransferLog logs/vhost_access_log
-</pre>
+</PRE>
was added inside the virtual host definition, then accesses to this
virtual host will be logged in vhost_access_log file (in common
-log format), and <i>not</i> in logs/access_log or logs/referer.
+log format), and <EM>not</EM> in logs/access_log or logs/referer.
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/netware.html b/usr.sbin/httpd/htdocs/manual/netware.html
index c7704901ed0..8f96328a429 100644
--- a/usr.sbin/httpd/htdocs/manual/netware.html
+++ b/usr.sbin/httpd/htdocs/manual/netware.html
@@ -31,14 +31,6 @@
use our <A HREF="http://www.apache.org/bug_report.html">bug reporting
page.</A></P>
-<P><STRONG>Warning: Apache on NetWare has not yet been optimized for performance.
-Apache still performs best, and is most reliable on Unix platforms. Over
-time we will improve NetWare performance. Folks doing comparative reviews
-of webserver performance are asked to compare against Apache
-on a Unix platform such as Solaris, FreeBSD, or Linux.</STRONG></P>
-
-<P>
-
Most of this document assumes that you are installing Apache from a
binary distribution. If you want to compile Apache yourself (possibly
to help with development, or to track down bugs), see the section on
@@ -60,14 +52,11 @@ to help with development, or to track down bugs), see the section on
<H2><A NAME="req">Requirements</A></H2>
Apache 1.3 is designed to run on NetWare 5.0 and 5.1.
+<P><STRONG>If running on NetWare 5.0 you must install Service Pack 5.</STRONG><P>
+<P><STRONG>If running on NetWare 5.1 you must install Service Pack 1.</STRONG><P>
<P>
-<STRONG>If running on NetWare 5.0 you must install Service Pack 4.</STRONG>
-
-<P>
-<P>
-
-Service pack 4 is available <A HREF="http://support.novell.com/misc/patlst.htm#nw">here.</A>
+NetWare service packs are available <A HREF="http://support.novell.com/misc/patlst.htm#nw">here.</A>
<H2><A NAME="down">Downloading Apache for NetWare 5</A></H2>
@@ -93,8 +82,6 @@ Follow these steps to install Apache on NetWare (assuming you will install to sy
<LI>Copy all the *.conf-dist-nw files to the <CODE>sys:/apache/conf</CODE> directory
and rename them all as *.conf files
<LI>Copy the mime.types and magic files to sys:/apache/conf directory
- <LI>Copy all files and subdirectories of \apache-1.3\htdocs to sys:/apache/htdocs and
- rename the proper index file (index.html.en) to index.html
<LI>Copy all files and subdirectories in \apache-1.3\icons to sys:/apache/icons
<LI>Create the directory sys:/apache/logs on the server
<LI>Create the directory sys:/apache/cgi-bin on the server
@@ -257,18 +244,10 @@ The main differences in Apache for NetWare are:
</P>
<P>All major pieces of Apache may be built using the ApacheNW.mcp project
- file. This includes modules such as status, info, and proxy. In addition,
- the following project files have been provided as well:
-<PRE>
- /apache-1.3/src/support/htpasswd.mcp.gz
- /apache-1.3/src/support/htdigest.mcp.gz
-</PRE>
-
+ file. This includes modules such as status, info, and proxy.
+
</P>
-<CODE>htpasswd.mcp.gz</CODE> and <CODE>htdigest.mcp.gz</CODE> will also need
-to be unzipped before they can be used with MetroWerks CodeWarrior.
-
-<P>Once Apache has been compiled, it needs to be installed in its server
+<P>Once Apache has been built, it needs to be installed in its server
root directory. The default is the <CODE>sys:/Apache</CODE>
directory. </P>
<P>
diff --git a/usr.sbin/httpd/htdocs/manual/new_features_1_0.html b/usr.sbin/httpd/htdocs/manual/new_features_1_0.html
index 812da8b2845..daec48f3faf 100644
--- a/usr.sbin/httpd/htdocs/manual/new_features_1_0.html
+++ b/usr.sbin/httpd/htdocs/manual/new_features_1_0.html
@@ -15,33 +15,35 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<h1 ALIGN="CENTER">Overview of new features</h1>
+<H1 ALIGN="CENTER">Overview of new features</H1>
<H2>New Features with Apache 1.0</H2>
<P>New features with this release, as extensions of the Apache
-functionality (see also more detailed <code>CHANGES</code> file) in
+functionality (see also more detailed <CODE>CHANGES</CODE> file) in
the source directory. Because the core code has changed so
significantly, there are certain liberties that earlier versions of
Apache (and the NCSA daemon) took that Apache 1.0 is pickier about -
-please check the <a href="misc/compat_notes.html">compatibility notes</a> if you have any problems.
+please check the <A HREF="misc/compat_notes.html">compatibility notes</A> if
+you have any problems.
<UL>
<LI> API for server extensions --- see below for a brief sermon on
-philosophy, or see <a href="misc/API.html">src/API.html</a> for an actual
+philosophy, or see <A HREF="misc/API.html">src/API.html</A> for an actual
overview. Most server functionality (including includes, CGI, and
most forms of access control) are actually implemented as
API-conformant modules; you can also do other neat stuff (we've
included a sample module, for instance, which one of us is using to
-track click-trails using the <a
-href="http://home.netscape.com/newsref/std/cookie_spec.html">Netscape
-cookie mechanism</a>, for visitors who come in through Netscape
-clients). <a href="mod/mod_dld.html">Modules</a> can also be loaded dynamically using GNU DLD.
+track click-trails using the <A
+HREF="http://home.netscape.com/newsref/std/cookie_spec.html">Netscape
+cookie mechanism</A>, for visitors who come in through Netscape
+clients). <A HREF="mod/mod_dld.html">Modules</A> can also be loaded
+dynamically using GNU DLD.
<P>
The API is not yet quite stable (see src/TODO for some possible
@@ -50,7 +52,8 @@ versions --- after all, we have more modules to adapt than you do.
<P>
-<LI> <a href="process-model.html">New Process Model - much less forking, no fixed number of children.</a>
+<LI> <A HREF="process-model.html">New Process Model - much less forking, no
+fixed number of children.</A>
We found that many people were using values for "MaxServers" either
too high or too low, and were hanging themselves on it. The model we
@@ -60,12 +63,13 @@ web-master specifies a maximum and minimum number of processes to be
"spare" - every couple of seconds the parent checks the actual number
of spare servers and adjusts accordingly. This should keep the number
of servers concurrently running relatively low while still ensuring
-minimal forking.
+minimal forking.
<P>
-<LI> <a href="virtual-host.html">&lt;VirtualHost&gt; (the configuration directive for
-multiple-homed servers)</a> is more general now. Just about any srm.conf or
+<LI> <A HREF="vhosts/index.html">&lt;VirtualHost&gt; (the configuration
+directive for
+multiple-homed servers)</A> is more general now. Just about any srm.conf or
httpd.conf command can go in a &lt;Virtualhost&gt; section, with the
following specific exceptions: ServerType, UserId, GroupId,
StartServers, MaxRequestsPerChild, BindAddress, PidFile, TypesConfig,
@@ -73,7 +77,8 @@ ServerRoot.
<P>
-<LI> <a href="content-negotiation.html">Support for content negotiation of languages through MultiViews</a>
+<LI> <A HREF="content-negotiation.html">Support for content negotiation of
+languages through MultiViews</A>
(*.fr, *.de, *.en suffixes), via the new AddLanguage and LanguagePriority
commands (code written by Florent Guillaume, guillaum@clipper.ens.fr).
@@ -107,28 +112,29 @@ commands (code written by Florent Guillaume, guillaum@clipper.ens.fr).
<P>
-<LI> <a href="mod/mod_log_config.html">Configurable logging module</a> --- this
+<LI> <A HREF="mod/mod_log_config.html">Configurable logging module</A> --- this
is a replacement for the standard plane-jane Common Log Format code, which
supports a LogFormat directive which allows you to control the formatting of
entries in the TransferLog, and add some new items if you like (in
particular, Referer and User-Agent). EXPERIMENTAL.
-</ul>
-<p><hr>
+</UL>
+<P><HR>
-<H2>Other features of Apache</h2>
-<ul>
+<H2>Other features of Apache</H2>
+<UL>
<LI><A HREF="mod/mod_dld.html">Dynamically loading modules using GNU DLD</A>
<LI><A HREF="mod/mod_imap.html">Imagemap Module</A>
-<li><A HREF="mod/mod_dir.html#directoryindex">Multiple DirectoryIndex filenames</A>
+<LI><A HREF="mod/mod_dir.html#directoryindex">Multiple DirectoryIndex
+filenames</A>
<LI><A HREF="mod/mod_asis.html"> &quot;Send as is&quot; file types</A>
-<li><A HREF="mod/mod_include.html#xbithack">XBITHACK last modified</A>
-</ul>
+<LI><A HREF="mod/mod_include.html#xbithack">XBITHACK last modified</A>
+</UL>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/new_features_1_1.html b/usr.sbin/httpd/htdocs/manual/new_features_1_1.html
index eb29707db1a..557be0f2f8d 100644
--- a/usr.sbin/httpd/htdocs/manual/new_features_1_1.html
+++ b/usr.sbin/httpd/htdocs/manual/new_features_1_1.html
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html><head>
-<title>New features with Apache 1.1</title>
-</head>
+<HTML><HEAD>
+<TITLE>New features with Apache 1.1</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -14,59 +14,59 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<h1 ALIGN="CENTER">Overview of new features</h1>
+<H1 ALIGN="CENTER">Overview of new features</H1>
-<h2>API Changes</h2>
+<H2>API Changes</H2>
A few changes to the Apache API were made for 1.1. It is possible
that some third-party modules will no longer work with 1.1, though
we have made every effort to provide backwards-compatibility. If you
-encounter a module that does not work with 1.1, please <a
-href="http://www.apache.org/bug_report.html">let us know</a>.
+encounter a module that does not work with 1.1, please <A
+HREF="http://www.apache.org/bug_report.html">let us know</A>.
-<h2>New Features with Apache 1.1</h2>
-<p>New features with this release, as extensions of the Apache
-functionality (see also more detailed <code>CHANGES</code> file in
+<H2>New Features with Apache 1.1</H2>
+<P>New features with this release, as extensions of the Apache
+functionality (see also more detailed <CODE>CHANGES</CODE> file in
the source directory.) Because the core code has changed so
significantly, there are certain liberties that earlier versions of
Apache (and the NCSA daemon) took that recent Apache versions are
-pickier about - please check the <a
-href="misc/compat_notes.html">compatibility notes</a> if you have any
-problems.</p>
-<hr>
+pickier about - please check the <A
+HREF="misc/compat_notes.html">compatibility notes</A> if you have any
+problems.</P>
+<HR>
-<p>In addition to a number of bug fixes and internal performance
-enhancements, <a href="http://www.apache.org/dist/">Apache
-1.1</a> has the following specific new user features:</p>
+<P>In addition to a number of bug fixes and internal performance
+enhancements, <A HREF="http://www.apache.org/dist/">Apache
+1.1</A> has the following specific new user features:</P>
-<ul>
+<UL>
-<li><b><a href="keepalive.html">Support for Keep-Alive Persistent
-Connections</a></b><br> Apache now has (optional) support for persistent
+<LI><STRONG><A HREF="keepalive.html">Support for Keep-Alive Persistent
+Connections</A></STRONG><BR> Apache now has (optional) support for persistent
connections, as defined by the HTTP/1.1 draft. This protocol,
supported by a number of current HTTP servers and browsers (including
Netscape Navigator 2.0) has been shown to increase speed of document
transfer by up to 50% in certain cases.
-<li><b><a href="host.html">New non-IP Intensive VirtualHost
-Support</a></b><br>
+<LI><STRONG><A HREF="vhosts/index.html">New non-IP Intensive VirtualHost
+Support</A></STRONG><BR>
Apache's support for virtual hosts has been enhanced to be able to
use information sent by some new Web browsers to determine the server
being accessed, without requiring an additional IP address for each
host.
-<li><b><a href="bind.html">Listen to Multiple Addresses and
-Ports</a></b><br>
-Using the new <code>Listen</code> directive, Apache can listen to more
+<LI><STRONG><A HREF="bind.html">Listen to Multiple Addresses and
+Ports</A></STRONG><BR>
+Using the new <CODE>Listen</CODE> directive, Apache can listen to more
than one port and IP address, using the same configuration set.
-<li><b><a href="mod/mod_status.html">Status
-Module</a></b><br>
+<LI><STRONG><A HREF="mod/mod_status.html">Status
+Module</A></STRONG><BR>
Apache now contains a module that gives the web-master accurate,
up-to-date information about the server's status and its resource
consumption. It also gives the current state of each server process
@@ -74,7 +74,7 @@ including the current URL being processed. For an example, check out
<A HREF="http://www.apache.org/status">the status of the
www.apache.org server</A>.
-<li><b><a href="mod/mod_info.html">Server Information Module</a></b></br>
+<LI><STRONG><A HREF="mod/mod_info.html">Server Information Module</A></STRONG>
This module gives a plethora of information about the other modules
installed, their directives, and their configurations. It is
extremely helpful in debugging configuration problems. For an
@@ -82,141 +82,156 @@ example, check out <A
HREF="http://www.apache.org/serv-info">information about the
www.apache.org server</A>.
-<li><b><a href="mod/mod_proxy.html">Experimental Caching Proxy Server</a></b><br>
+<LI><STRONG><A HREF="mod/mod_proxy.html">Experimental Caching Proxy
+Server</A></STRONG><BR>
Apache can now act as
an HTTP proxy server, allowing clients behind firewalls to use the
server to access the outside world. In addition, it can cache
documents it proxies, speeding up access to frequently requested
documents.
-<li><b><a href="location.html">URL-based Access Protection</a></b><br>
+<LI><STRONG><A HREF="location.html">URL-based Access Protection</A></STRONG>
+<BR>
In addition to access checking and authorization by filename (with
-<code><a href="mod/core.html#directory">&lt;Directory&gt;</a></code>),
-the new <code>&lt;Location&gt;</code> directive allows protection by
+<CODE><A HREF="mod/core.html#directory">&lt;Directory&gt;</A></CODE>),
+the new <CODE>&lt;Location&gt;</CODE> directive allows protection by
URL.
-<li><b><a href="mod/mod_actions.html">Filetype-based Script "Actions"</a></b><br>
+<LI><STRONG><A HREF="mod/mod_actions.html">Filetype-based Script
+"Actions"</A></STRONG><BR>
You can now run CGI scripts whenever a file of a certain type is
requested. This makes it much easier to execute scripts that process
-files. In addition, you can use the new <a
-href="mod/mod_actions.html#script">Script</a> directive to enable scripts
+files. In addition, you can use the new <A
+HREF="mod/mod_actions.html#script">Script</A> directive to enable scripts
for files called with HTTP methods Apache does not natively support.
-<li><b><a href="handler.html">New "Handler" Directives</a></b><br>
-The new <code>AddHandler</code> and <code>SetHandler</code> directive
+<LI><STRONG><A HREF="handler.html">New "Handler" Directives</A></STRONG><BR>
+The new <CODE>AddHandler</CODE> and <CODE>SetHandler</CODE> directive
allows "handlers" to be defined for filename extensions or
directories. These handlers, which can either be built into Apache or
-added with the <a href="mod/mod_actions.html">Action</a> directive, extend
+added with the <A HREF="mod/mod_actions.html">Action</A> directive, extend
Apache's range of usability, and almost entirely remove the "magic"
media types.
-<li><b><a href="mod/mod_env.html">Customizable CGI Environment
-Variables</a></b><br>
-New <code>PassEnv</code> and <code>SetEnv</code> directives allow you to
+<LI><STRONG><A HREF="mod/mod_env.html">Customizable CGI Environment
+Variables</A></STRONG><BR>
+New <CODE>PassEnv</CODE> and <CODE>SetEnv</CODE> directives allow you to
modify the environment variables passed to CGI scripts.
-<li><b><a href="mod/mod_cern_meta.html">CERN Metafile Support</a></b><br>
+<LI><STRONG><A HREF="mod/mod_cern_meta.html">CERN Metafile Support</A></STRONG>
+<BR>
Now emulates the CERN httpd's support for metafiles containing additional
HTTP headers to be supplied with a document.
-<li><b><a href="mod/mod_imap.html">Improved Imagemap Support</a></b><br>
+<LI><STRONG><A HREF="mod/mod_imap.html">Improved Imagemap Support</A></STRONG>
+<BR>
The internal imagemap handling code has been rewritten and
reorganized, adding new handling of default, base and relative URLs,
and support for creating non-graphical menus for use with clients that
do not support imagemaps.
-<li><b><a href="mod/mod_userdir.html">Improved UserDir Directive</a></b><br>
+<LI><STRONG><A HREF="mod/mod_userdir.html">Improved UserDir
+Directive</A></STRONG>
+<BR>
Now supports the ability to point user's files (as specified by URLs
-beginning with the "<code>~</code>" character) at directories other
+beginning with the "<CODE>~</CODE>" character) at directories other
than those specified by the Unix password file.
-<li><b>Minimal DNS Now Runtime Option</b><br>
-New <code>HostnameLookups</code>
-server configuration directive can be used to turn <code>On</code> or
-<code>Off</code> DNS lookups. This supersedes the -DMINIMAL_DNS
+<LI><STRONG>Minimal DNS Now Runtime Option</STRONG><BR>
+New <CODE>HostnameLookups</CODE>
+server configuration directive can be used to turn <CODE>On</CODE> or
+<CODE>Off</CODE> DNS lookups. This supersedes the -DMINIMAL_DNS
compile-time configuration option. This option can be set per-directory.
-<li><b>IdentityCheck Now Per-Directory Option</b><br>
-The <code>IdentityCheck</code> directive, which controls the use of
+<LI><STRONG>IdentityCheck Now Per-Directory Option</STRONG>
+<BR>
+The <CODE>IdentityCheck</CODE> directive, which controls the use of
ident to check the remote user name, can now be set per directory. The
ident support is also RFC 1413-compliant.
-<li><b>Redirect Now Usable in <code>.htaccess</code> Files</b><br>
-The <a href="mod/mod_alias.html#redirect"><code>Redirect</code></a>
-directive can now be used in <code>.htaccess</code> files when the
-<code>FileInfo</code> directive has been set on. This allows users to
+<LI><STRONG>Redirect Now Usable in <CODE>.htaccess</CODE> Files</STRONG>
+<BR>
+The <A HREF="mod/mod_alias.html#redirect"><CODE>Redirect</CODE></A>
+directive can now be used in <CODE>.htaccess</CODE> files when the
+<CODE>FileInfo</CODE> directive has been set on. This allows users to
redirect parts of their directories without requiring CGI scripts
-<li><b>ErrorDocument Now Usable in <code>.htaccess</code> Files</b><br>
-The <a href="custom-error.html"><code>ErrorDocument</code></a>
-directive can now be used in <code>.htaccess</code> files when the
-<code>FileInfo</code> directive has been set on. This allows users to
+<LI><STRONG>ErrorDocument Now Usable in <CODE>.htaccess</CODE> Files</STRONG>
+<BR>
+The <A HREF="custom-error.html"><CODE>ErrorDocument</CODE></A>
+directive can now be used in <CODE>.htaccess</CODE> files when the
+<CODE>FileInfo</CODE> directive has been set on. This allows users to
have different error messages for different sections of a site.
-<li><b><code>ForceType</code> Directive</b><br>
-This new directive, in <code>&lt;Directory&gt;</code> sections or
+<LI><STRONG><CODE>ForceType</CODE> Directive</STRONG>
+<BR>
+This new directive, in <CODE>&lt;Directory&gt;</CODE> sections or
.htaccess files, allows you to override the filename extensions and
-force a single content type. (e.g. <code>ForceType
-application/octet-stream</code>)
+force a single content type. (<EM>e.g.</EM>, <CODE>ForceType
+application/octet-stream</CODE>)
-<li><b>File Owner Available to Included CGI Scripts</b><br>
+<LI><STRONG>File Owner Available to Included CGI Scripts</STRONG>
+<BR>
Server-side includes that call CGI scripts will now set a
-<code>USER_NAME</code> environment variable that contains the owner of
+<CODE>USER_NAME</CODE> environment variable that contains the owner of
the file which included it.
-<li><b>Improved Icons</b><br>
-Thanks to <a href="mailto:kevinh@eit.com">Kevin
-Hughes</a>, Apache's nifty color GIF icons for directory listings have
-been updated. In addition, the <a
-href="../apache_pb.gif">Powered by Apache</a>
-(<code>apache_pb.gif</code>) logo has been included.
+<LI><STRONG>Improved Icons</STRONG>
+<BR>
+Thanks to <A HREF="mailto:kevinh@eit.com">Kevin
+Hughes</A>, Apache's nifty color GIF icons for directory listings have
+been updated. In addition, the <A
+HREF="../apache_pb.gif">Powered by Apache</A>
+(<CODE>apache_pb.gif</CODE>) logo has been included.
-</ul>
+</UL>
-<hr>
+<HR>
-<h3>New Authentication Modules</h3>
+<H3>New Authentication Modules</H3>
-<p><strong>Note:</strong> These modules are not
+<P><STRONG>Note:</STRONG> These modules are not
compiled into the server by default, as they require special support
on the host system. They must be enabled specifically in the
-<code>Configuration</code> file.</p>
+<CODE>Configuration</CODE> file.</P>
-<ul>
+<UL>
-<li><b><a href="mod/mod_auth_anon.html">Anonymous HTTP Logins</a></b><br>
+<LI><STRONG><A HREF="mod/mod_auth_anon.html">Anonymous HTTP Logins</A></STRONG>
+<BR>
New options allow you to allow, using Basic HTTP Authentication,
anonymous logins, like those of FTP. This allows you to collect email
addresses of people accessing your site.
-<li><b><a href="mod/mod_digest.html">Support for Digest
-Authentication</a></b><br>
+<LI><STRONG><A HREF="mod/mod_digest.html">Support for Digest
+Authentication</A></STRONG><BR>
Apache now supports digest authentication using RSA MD5
encryption. When used with a supporting web browser, this provides a
more secure alternative to Basic authentication.
-<li><strong><a href="mod/mod_auth_db.html">Support for Unix DB
-Authentication</a></strong> - <code>mod_auth_db.c</code><br> In
-addition to <a href="mod/mod_auth_dbm.html">DBM</a> support, Apache now
+<LI><STRONG><A HREF="mod/mod_auth_db.html">Support for Unix DB
+Authentication</A></STRONG> - <CODE>mod_auth_db.c</CODE><BR> In
+addition to <A HREF="mod/mod_auth_dbm.html">DBM</A> support, Apache now
contains optional support for Berkeley DB databases.
-<li><strong><a href="mod/mod_auth_msql.html">mSQL Database
-Authentication</a></strong> - <code>mod_auth_msql.html</code> <BR>
+<LI><STRONG>mSQL Database
+Authentication</STRONG> - <CODE>mod_auth_msql.html</CODE> <BR>
Support for the use of mSQL databases for user authentication via HTTP
is now supported.
-</ul>
+</UL>
-<hr>
+<HR>
-<h3>OS/2 Support</h3>
+<H3>OS/2 Support</H3>
-<p>Apache now includes support for OS/2, thanks to <a href="http://www.slink.com/ApacheOS2/">Softlink Services.</a></p>
+<P>Apache now includes support for OS/2, thanks to
+<A HREF="http://www.slink.com/ApacheOS2/">Softlink Services</A>.</P>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/new_features_1_2.html b/usr.sbin/httpd/htdocs/manual/new_features_1_2.html
index e46cf29c1f6..7314627e60e 100644
--- a/usr.sbin/httpd/htdocs/manual/new_features_1_2.html
+++ b/usr.sbin/httpd/htdocs/manual/new_features_1_2.html
@@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-<html><head>
-<title>New features with Apache 1.2</title>
-</head>
+<HTML><HEAD>
+<TITLE>New features with Apache 1.2</TITLE>
+</HEAD>
<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
<BODY
@@ -14,98 +14,101 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
-<h1 ALIGN="CENTER">Overview of new features</h1>
+<H1 ALIGN="CENTER">Overview of new features</H1>
-<h2>API Changes</h2>
+<H2>API Changes</H2>
-<p>Some non-compatible changes were made to the Apache API in order to
+<P>Some non-compatible changes were made to the Apache API in order to
deal with HTTP/1.1 compatibility. It is possible that some modules
will no longer work (specifically, those that process input using the
POST or PUT methods). If you encounter a module that does not work,
-please contact the author. A <a
-href="misc/client_block_api.html">programmer's note</a> on the subject is
-available.</p>
+please contact the author. A <A
+HREF="misc/client_block_api.html">programmer's note</A> on the subject is
+available.</P>
-<p>Additionally, some changes were made to the CGI environment that
+<P>Additionally, some changes were made to the CGI environment that
may cause some CGI scripts to work incorrectly. If you are
experiencing trouble with a CGI that worked fine under Apache 1.1.1,
-please see <a href="cgi_path.html">our explanation of the changes.</a></p>
+please see <A HREF="cgi_path.html">our explanation of the changes.</A></P>
-<h2>New Features with Apache 1.2</h2>
-<p>New features with this release, as extensions of the Apache
+<H2>New Features with Apache 1.2</H2>
+<P>New features with this release, as extensions of the Apache
functionality. Because the core code has changed so
significantly, there are certain liberties that earlier versions of
Apache (and the NCSA daemon) took that recent Apache versions are
-pickier about - please check the <a
-href="misc/compat_notes.html">compatibility notes</a> if you have any
-problems.</p>
-<hr>
+pickier about - please check the <A
+HREF="misc/compat_notes.html">compatibility notes</A> if you have any
+problems.</P>
+<HR>
-<p>In addition to a number of bug fixes and internal performance
-enhancements, <a href="http://www.apache.org/dist/">Apache
-1.2</a> has the following specific new user features:</p>
+<P>In addition to a number of bug fixes and internal performance
+enhancements, <A HREF="http://www.apache.org/dist/">Apache
+1.2</A> has the following specific new user features:</P>
-<ul>
+<UL>
-<li><b><xa href="http11.html">HTTP/1.1 Compliance</a></b>
-[Documentation to be written]<br>
+<!-- change the "name" to an "href" if/when there's such a document -->
+<LI><STRONG><A NAME="http11.html">HTTP/1.1 Compliance</A></STRONG>
+[Documentation to be written]<BR>
Aside from the optional proxy module (which operates as HTTP/1.0),
Apache is conditionally compliant with the HTTP/1.1 proposed standard,
as approved by the IESG and the
-<a href="http://www.ics.uci.edu/pub/ietf/http/">IETF HTTP working group</a>.
+<A HREF="http://www.ics.uci.edu/pub/ietf/http/">IETF HTTP working group</A>.
HTTP/1.1 provides a much-improved protocol, and
should allow for greater performance and efficiency when transferring
files. Apache does, however, still work great with HTTP/1.0 browsers.
We are very close to being unconditionally compliant; if you note any
deviance from the proposed standard, please report it as a bug.
-<li><b><a href="mod/mod_include.html">eXtended Server Side Includes
-(XSSI)</a></b><br>
+<LI><STRONG><A HREF="mod/mod_include.html">eXtended Server Side Includes
+(XSSI)</A></STRONG><BR>
A new set of server-side include
directives allows the user to better create WWW pages. This includes
number of powerful new features, such as the ability to set variables
and use conditional HTML.
-<li><b><a href="mod/core.html#files">File-based and Regex-enabled
-Directive Sections</a></b><br>
-The new
-<a href="mod/core.html#files"><code>&lt;Files&gt;</code></a>
-section allows directives to be enabled based on full filename, not just directory and URL. In
-addition, <code>&lt;Files&gt;</code> sections can appear in
-<code>.htaccess</code> files. <code>&lt;Files&gt;</code>, along with
-<a href="mod/core.html#directory"><code>&lt;Directory&gt;</code></a>
- and <a href="mod/core.html#location"><code>&lt;Location&gt;</code></a>, can
+<LI><STRONG><A HREF="mod/core.html#files">File-based and Regex-enabled
+Directive Sections</A></STRONG><BR>
+The new
+<A HREF="mod/core.html#files"><CODE>&lt;Files&gt;</CODE></A>
+section allows directives to be enabled based on full filename, not just
+directory and URL. In
+addition, <CODE>&lt;Files&gt;</CODE> sections can appear in
+<CODE>.htaccess</CODE> files. <CODE>&lt;Files&gt;</CODE>, along with
+<A HREF="mod/core.html#directory"><CODE>&lt;Directory&gt;</CODE></A>
+ and <A HREF="mod/core.html#location"><CODE>&lt;Location&gt;</CODE></A>, can
also now be based on regular expressions, not just simple prefix
-matching.
+matching.
-<li><b><a href="mod/mod_browser.html">Browser-based Environment
-Variables</a></b><br>
+<LI><STRONG><A HREF="mod/mod_browser.html">Browser-based Environment
+Variables</A></STRONG><BR>
Environment variables can now be set based on the
-<code>User-Agent</code> string of the browser. Combined with <a
-href="mod/mod_include.html">XSSI</a>, this allows you to write browser-based
+<CODE>User-Agent</CODE> string of the browser. Combined with <A
+HREF="mod/mod_include.html">XSSI</A>, this allows you to write browser-based
conditional HTML documents.
-<li><b><a href="suexec.html">SetUID CGI Execution</a></b><br>
+<LI><STRONG><A HREF="suexec.html">SetUID CGI Execution</A></STRONG><BR>
Apache now
supports the execution of CGI scripts as users other
than the server user. A number of security checks are built in
to try and make this as safe as possible.
-<li><b><a href="mod/mod_rewrite.html">URL Rewriting Module</a></b><br>
-The optional <code>mod_rewrite</code> module is now included. This
+<LI><STRONG><A HREF="mod/mod_rewrite.html">URL Rewriting Module</A></STRONG>
+<BR>
+The optional <CODE>mod_rewrite</CODE> module is now included. This
module can provide powerful URL mapping, using regular
expressions. There's nothing this module can't do!
-<li><b><a href="mod/mod_log_config.html">Enhanced, Configurable
-Logging</a></b><br>
-The optional <code>mod_log_config</code> included with earlier
+<LI><STRONG><A HREF="mod/mod_log_config.html">Enhanced, Configurable
+Logging</A></STRONG><BR>
+The optional <CODE>mod_log_config</CODE> included with earlier
versions of Apache is now standard, and has been enhanced to allow
logging of much more detail about the transaction, and can be used to
-open <a href="multilogs.html">more than one log file</a> at once
+open <A HREF="multilogs.html">more than one log file</A> at once
(each of which can have a different log format). If you have Apache
write any logs to a directory which is writable by anyone other than
the user that starts the server, see the <A HREF="misc/security_tips.html">
@@ -113,10 +116,10 @@ security tips</A> document to be sure you aren't putting the security
of your server at risk.
-<li><b><a href="mod/mod_usertrack.html">User Tracking (Cookies)
-Revisions</a></b><br>
-The <code>mod_cookies</code> included with previous versions of Apache
-has been renamed <code>mod_usertrack</code>, to more accurately
+<LI><STRONG><A HREF="mod/mod_usertrack.html">User Tracking (Cookies)
+Revisions</A></STRONG><BR>
+The <CODE>mod_cookies</CODE> included with previous versions of Apache
+has been renamed <CODE>mod_usertrack</CODE>, to more accurately
reflect its function (some people inadvertently thought it enabled
cookie support in Apache, which is not true - Apache supports the use
of cookies directly). It is also now possible to disable the
@@ -124,94 +127,93 @@ generation of cookies, even when
the cookie module is compiled in. Also, an expiry time can be set
on the cookies.
-<li><b><a href="mod/core.html#virtualhost">&lt;VirtualHost&gt; Enhancements</a></b><br>
+<LI><STRONG><A HREF="mod/core.html#virtualhost">&lt;VirtualHost&gt;
+Enhancements</A></STRONG><BR>
The &lt;VirtualHost&gt; directive can now take more than one IP
address or hostname. This lets a single vhost handles requests
for multiple IPs or hostnames. Also the special section
&lt;VirtualHost _default_&gt; can be used to handle requests normally
left for the main server configuration.
-<li><b><a href="mod/mod_cgi.html#cgi_debug">CGI Debugging Environment</a></b><br>
-<code>ScriptLog</code> allows you to now set up a log that records
+<LI><STRONG><A HREF="mod/mod_cgi.html#cgi_debug">CGI Debugging
+Environment</A></STRONG><BR>
+<CODE>ScriptLog</CODE> allows you to now set up a log that records
all input and output to failed CGI scripts. This includes environment
variables, input headers, POST data, output, and more. This makes CGI
scripts much easier to debug.
-<li><b><a href="mod/core.html#rlimit">Resource Limits for CGI Scripts</a></b><br>
+<LI><STRONG><A HREF="mod/core.html#rlimit">Resource Limits for CGI
+Scripts</A></STRONG><BR>
New directives allow the limiting of resources used by CGI scripts
-(e.g. max CPU time). This is helpful in preventing 'runaway' CGI
+(<EM>e.g.</EM>, max CPU time). This is helpful in preventing 'runaway' CGI
processes.
-<li><b><a href="mod/mod_alias.html">Redirect Directive Can Return Alternate Status</a></b><br>
+<LI><STRONG><A HREF="mod/mod_alias.html">Redirect Directive Can Return
+Alternate Status</A></STRONG><BR>
The Redirect directive can return permanent or temporary redirects,
- "Gone" or "See Other" HTTP status. For NCSA-compatibility,
+ "Gone" or "See Other" HTTP status. For NCSA-compatibility,
RedirectTemp and RedirectPermanent are also implemented.
-<li><b><a href="install.html">Simplified Compilation</a></b><br>
+<LI><STRONG><A HREF="install.html">Simplified Compilation</A></STRONG><BR>
The process of configuring Apache for compilation has been
simplified.
-<li><b><a href="mod/core.html#options">Add or Remove Options</a></b><br>
- The <code>Options</code> directive can now add or remove options from
+<LI><STRONG><A HREF="mod/core.html#options">Add or Remove
+Options</A></STRONG><BR>
+ The <CODE>Options</CODE> directive can now add or remove options from
those currently in force, rather than always replacing them.
-<li><b><a href="invoking.html#help">Command-line Help</a></b><br>
-The <code>-h</code> command-line option now lists all the available
+<LI><STRONG><A HREF="invoking.html#help">Command-line Help</A></STRONG><BR>
+The <CODE>-h</CODE> command-line option now lists all the available
directives.
-<li><b><a href="mod/mod_headers.html">Optional Headers Module to Set or Remove HTTP Headers</a></b><br>
-The optional <code>mod_headers</code> module can be used to set custom
+<LI><STRONG><A HREF="mod/mod_headers.html">Optional Headers Module to Set or
+Remove HTTP Headers</A></STRONG><BR>
+The optional <CODE>mod_headers</CODE> module can be used to set custom
headers in the HTTP response. It can append to existing headers,
replace them, or remove headers from the response.
-<li><b><a href="mod/core.html#ifmodule">Conditional Config Directives</a></b><br>
-A new <code>&lt;IfModule&gt;</code> section allows directives to be
+<LI><STRONG><A HREF="mod/core.html#ifmodule">Conditional Config
+Directives</A></STRONG><BR>
+A new <CODE>&lt;IfModule&gt;</CODE> section allows directives to be
enabled only if a given module is loaded into the server.
-<li><b><xa href="ncsa_auth.html">Authorization Directives Now Use
-NCSA-style Syntax</a></b><br>
-
-The <a href="mod/mod_auth.html#authuserfile">AuthUserFile</a>, <a
-href="mod/mod_auth.html#authgroupfile">AuthGroupFile</a> and <a
-href="mod/mod_digest.html#authdigestfile">AuthDigestFile</a> commands
-now have a syntax compatible with the NCSA server.
-
-<li><b><a href="mod/core.html#satisfy">NCSA Satisfy authentication
-directive now implemented</a></b><br>
-<code>Satisfy</code> allows for more flexible access control
+<LI><STRONG><A HREF="mod/core.html#satisfy">NCSA Satisfy authentication
+directive now implemented</A></STRONG><BR>
+<CODE>Satisfy</CODE> allows for more flexible access control
configurations.
-<li><b>Better NCSA Compatibility</b><br>
+<LI><STRONG>Better NCSA Compatibility</STRONG><BR>
Apache directives are now more compatible with NCSA 1.5 to make
moving between servers easier. In particular, Apache now implements the
-<a href="mod/core.html#satisfy"><code>Satisfy</code></a>,
-<a href="mod/core.html#maxkeepaliverequests">MaxKeepAliveRequests</A>,
-<a href="mod/mod_alias.html#redirectperm">RedirectPermanent</A> and
-<a href="mod/mod_alias.html#redirecttemp">RedirectTemp</A>,
+<A HREF="mod/core.html#satisfy"><CODE>Satisfy</CODE></A>,
+<A HREF="mod/core.html#maxkeepaliverequests">MaxKeepAliveRequests</A>,
+<A HREF="mod/mod_alias.html#redirectperm">RedirectPermanent</A> and
+<A HREF="mod/mod_alias.html#redirecttemp">RedirectTemp</A>,
directives, and the following directives are now syntax-compatible with
NCSA:
-<a href="mod/mod_auth.html#authuserfile">AuthUserFile</A>,
-<a href="mod/mod_auth.html#authgroupfile">AuthGroupFile</A>,
-<a href="mod/mod_digest.html#authdigestfile">AuthDigestFile</A>,
-<a href="mod/core.html#keepalive">KeepAlive</A> and
-<a href="mod/core.html#keepalivetimeout">KeepAliveTimeout</A>.
+<A HREF="mod/mod_auth.html#authuserfile">AuthUserFile</A>,
+<A HREF="mod/mod_auth.html#authgroupfile">AuthGroupFile</A>,
+<A HREF="mod/mod_digest.html#authdigestfile">AuthDigestFile</A>,
+<A HREF="mod/core.html#keepalive">KeepAlive</A> and
+<A HREF="mod/core.html#keepalivetimeout">KeepAliveTimeout</A>.
-<li><b><a href="mod/mod_proxy.html">Optional proxy module</a></b><br>
+<LI><STRONG><A HREF="mod/mod_proxy.html">Optional proxy module</A></STRONG><BR>
An improved FTP, HTTP, and CONNECT mode SSL proxy is included with
Apache 1.2. Some of the changes visible to users:
- <dl><dl>
- <dt>- Improved FTP proxy supporting PASV mode
- <dt>- ProxyBlock directive for excluding sites to proxy
- <dt>- NoCache * directive for disabling proxy caching
- <dt>- Numerous bug fixes
- </dl></dl>
+ <DL><DL>
+ <DT>- Improved FTP proxy supporting PASV mode
+ <DT>- ProxyBlock directive for excluding sites to proxy
+ <DT>- NoCache * directive for disabling proxy caching
+ <DT>- Numerous bug fixes
+ </DL></DL>
-</ul>
+</UL>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/new_features_1_3.html b/usr.sbin/httpd/htdocs/manual/new_features_1_3.html
index 7a8ff4a22e9..87b2b73677f 100644
--- a/usr.sbin/httpd/htdocs/manual/new_features_1_3.html
+++ b/usr.sbin/httpd/htdocs/manual/new_features_1_3.html
@@ -9,7 +9,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -695,7 +695,7 @@ MIME-typing</A></STRONG>
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/process-model.html b/usr.sbin/httpd/htdocs/manual/process-model.html
index 1671f5569f8..a971ecaedfa 100644
--- a/usr.sbin/httpd/htdocs/manual/process-model.html
+++ b/usr.sbin/httpd/htdocs/manual/process-model.html
@@ -14,7 +14,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
@@ -30,7 +30,7 @@ web-master specifies a maximum and minimum number of processes to be
"spare" - every couple of seconds the parent checks the actual number
of spare servers and adjusts accordingly. This should keep the number
of servers concurrently running relatively low while still ensuring
-minimal forking.
+minimal forking.
<P>
@@ -69,12 +69,12 @@ Apache uses
</OL>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
-</body></html>
+</BODY></HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/readme-tpf.html b/usr.sbin/httpd/htdocs/manual/readme-tpf.html
index 9d1a82a279c..bbf86aa4032 100644
--- a/usr.sbin/httpd/htdocs/manual/readme-tpf.html
+++ b/usr.sbin/httpd/htdocs/manual/readme-tpf.html
@@ -9,6 +9,7 @@
<HR>
<CENTER>[&nbsp;<A HREF="#configuration_files">Configuration Files</A>
&nbsp;|&nbsp;<A HREF="#whats_available">What's Available</A>
+ &nbsp;|&nbsp;<A HREF="#cgi">CGI Scripts</A>
&nbsp;|&nbsp;<A HREF="#porting_notes">Porting Notes</A>&nbsp;]
</CENTER>
<HR>
@@ -157,6 +158,69 @@
<LI>suexec.c
</UL></MULTICOL>
+<A NAME="cgi">&nbsp;</A>
+<H2 align=center>How to Use CGI Scripts</H2>
+<P>
+ The following is a very simple example of a CGI script ("Hello World") and the necessary steps to run it.<BR>
+ Refer to the <A HREF="http://www.apache.org/docs/mod/mod_cgi.html">mod_cgi module</A> for
+ additional information.<BR>
+
+ <H3>Add necessary directives to httpd.conf:</H3>
+ <UL>
+ Example:
+ <tt><BR><UL>
+ ScriptLog logs/script_log<BR>
+ ScriptAlias /cgi-bin/ /usr/local/apache/cgi-bin/
+ </tt></UL><BR>
+ A request for <tt>http://myserver/cgi-bin/filename.cgi</tt> would cause the server to run the script
+ <tt>/usr/local/apache/cgi-bin/filename.cgi</tt>
+ </UL>
+
+ <H3>Create the CGI script:</H3>
+ <UL>
+ For this example <tt>QZZ1</tt> is the name of the TPF program that will be executed by the CGI script.<BR>
+ The directory path must match what is in the httpd.conf file for <tt>ScriptAlias</tt> directive.<BR><BR>
+ <UL>
+ <tt>zfile echo "#!QZZ1" > /usr/local/apache/cgi-bin/filename.cgi <BR><BR>
+ zfile cat /usr/local/apache/cgi-bin/filename.cgi&nbsp;&nbsp;&nbsp;&nbsp;</tt>
+ (this should display<tt>#!QZZ1</tt>)<BR><BR>
+ </UL>
+ </UL>
+
+ <H3>Mark the script as executable:</H3>
+ <UL>
+ <tt>zfile chmod 755 /usr/local/apache/cgi-bin/filename.cgi<BR><BR></tt>
+ </UL>
+
+ <H3>Create, load, and activate a loadset containing the CGI program (QZZ1xx):</H3>
+ <UL>
+ <code>
+ /** QZZ1-- simple "Hello world" program to demonstrate basic CGI output **/<BR><BR>
+ #include &LT;stdio.h&GT<BR><BR>
+ void main() {<BR><BR>
+ <UL>
+ /** Print the CGI response header, required for all HTML output. **/<BR>
+ /** Note the extra \n, to send the blank line. **/<BR><BR>
+
+ printf("Content-type: text/html\n\n");<BR><BR>
+
+ /** Print the HTML response page to stdout. **/<BR>
+ printf("&LT;html&GT\n");<BR>
+ printf("&LT;head&GT&LT;title&GT CGI Output &LT;/title&GT&LT;/head&GT\n");<BR>
+ printf("&LT;body&GT\n");<BR>
+ printf("&LT;h1&GT Hello world &LT;/h1&GT \n");<BR>
+ printf("&LT/body&GT\n");<BR>
+ printf("&LT/html&GT\n");<BR><BR>
+ </UL>
+ }<BR>
+ </code>
+ </UL>
+
+ <H3>Request the CGI script from a browser:</H3>
+ <UL>
+ <tt>http://myserver/cgi-bin/filename.cgi</tt><BR>
+ </UL>
+
<A NAME="porting_notes">&nbsp;</A>
<H2 align=center>Porting Notes</H2>
<P>
@@ -201,6 +265,7 @@
<CENTER>[&nbsp;<A HREF="#top">top</A>
&nbsp;|&nbsp;<A HREF="#configuration_files">Configuration Files</A>
&nbsp;|&nbsp;<A HREF="#whats_available">What's Available</A>
+ &nbsp;|&nbsp;<A HREF="#cgi">CGI Scripts</A>
&nbsp;|&nbsp;<A HREF="#porting_notes">Porting Notes</A>&nbsp;]
</CENTER>
diff --git a/usr.sbin/httpd/htdocs/manual/sections.html b/usr.sbin/httpd/htdocs/manual/sections.html
index cf96b56226d..2cafef83a53 100644
--- a/usr.sbin/httpd/htdocs/manual/sections.html
+++ b/usr.sbin/httpd/htdocs/manual/sections.html
@@ -14,7 +14,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -82,7 +82,7 @@ the order shortest directory component to longest. If multiple
they they are processed in the configuration file order. The
configuration files are read in the order httpd.conf, srm.conf and
access.conf. Configurations included via the <CODE>Include</CODE>
-directive will be treated as if they where inside the including file
+directive will be treated as if they were inside the including file
at the location of the <CODE>Include</CODE> directive.
<P>
@@ -174,7 +174,7 @@ Another note:
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/sourcereorg.html b/usr.sbin/httpd/htdocs/manual/sourcereorg.html
index 6c47ae972df..8eb8bed6290 100644
--- a/usr.sbin/httpd/htdocs/manual/sourcereorg.html
+++ b/usr.sbin/httpd/htdocs/manual/sourcereorg.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -303,7 +303,7 @@ a separate module definition file.
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/stopping.html b/usr.sbin/httpd/htdocs/manual/stopping.html
index 1b2140a56e1..e96789178a5 100644
--- a/usr.sbin/httpd/htdocs/manual/stopping.html
+++ b/usr.sbin/httpd/htdocs/manual/stopping.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -186,7 +186,7 @@ empty documents.
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/suexec.html b/usr.sbin/httpd/htdocs/manual/suexec.html
index 7be9878127e..decb3e3a5fe 100644
--- a/usr.sbin/httpd/htdocs/manual/suexec.html
+++ b/usr.sbin/httpd/htdocs/manual/suexec.html
@@ -14,7 +14,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -521,7 +521,7 @@ limitations on server setup. Please review these before submitting any
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/suexec_1_2.html b/usr.sbin/httpd/htdocs/manual/suexec_1_2.html
index bcfc7252f2f..61a8bedf3ea 100644
--- a/usr.sbin/httpd/htdocs/manual/suexec_1_2.html
+++ b/usr.sbin/httpd/htdocs/manual/suexec_1_2.html
@@ -14,7 +14,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -194,7 +194,7 @@ your installation and try again.
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/unixware.html b/usr.sbin/httpd/htdocs/manual/unixware.html
index 4d8e1c53b99..56c0aed5ca5 100644
--- a/usr.sbin/httpd/htdocs/manual/unixware.html
+++ b/usr.sbin/httpd/htdocs/manual/unixware.html
@@ -15,7 +15,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.2
+ Apache HTTP Server
</H3>
</DIV>
@@ -29,16 +29,16 @@ bind errors, and accept errors, to name a few.
<H2>UnixWare 1.x</H2>
Make sure that USE_FCNTL_SERIALIZE_ACCEPT is defined (if not
-defined by Apache autoconfiguration). If using the UnixWare <i>cc</i>
+defined by Apache autoconfiguration). If using the UnixWare <EM>cc</EM>
compiler, and you still see accept() errors, don't use compiler optimization,
-or get <i>gcc</i>.
+or get <EM>gcc</EM>.
<H2>UnixWare 2.0.x</H2>
-SCO patch <a href="ftp://ftp.sco.com/UW20/tf2163.txt">tf2163</a> is required
+SCO patch <A HREF="ftp://ftp.sco.com/UW20/tf2163.txt">tf2163</A> is required
in order for Apache to work correctly on UnixWare 2.0.x. See
-<a href="http://www.sco.com">http://www.sco.com</a>
-for UnixWare patch information.<p>
+<A HREF="http://www.sco.com">http://www.sco.com</A>
+for UnixWare patch information.<P>
In addition, make sure that USE_FCNTL_SERIALIZE_ACCEPT is defined (if not
defined by Apache autoconfiguration). To reduce instances of connections
@@ -47,25 +47,26 @@ only).
<H2>UnixWare 2.1.x</H2>
-SCO patch <a href="ftp://ftp.sco.com/UW21/ptf3123b.txt">ptf3123</a> is required
+SCO patch <A HREF="ftp://ftp.sco.com/UW21/ptf3123b.txt">ptf3123</A> is required
in order for Apache to work correctly on UnixWare 2.1.x. See
-<a href="http://www.sco.com">http://www.sco.com</a>
-for UnixWare patch information.<p>
+<A HREF="http://www.sco.com">http://www.sco.com</A>
+for UnixWare patch information.<P>
-<b>NOTE:</b> Unixware 2.1.2 and later already have patch ptf3123 included<p>
+<STRONG>NOTE:</STRONG> Unixware 2.1.2 and later already have patch ptf3123
+included<P>
In addition, make sure that USE_FCNTL_SERIALIZE_ACCEPT is defined (if not
defined by Apache autoconfiguration). To reduce instances of connections
in FIN_WAIT_2 state, you may also want to define NO_LINGCLOSE (Apache 1.2
-only).<p>
+only).<P>
Thanks to Joe Doupnik &lt;JRD@cc.usu.edu&gt; and Rich Vaughn
-&lt;rvaughn@aad.com&gt; for additional info for UnixWare builds.<p>
+&lt;rvaughn@aad.com&gt; for additional info for UnixWare builds.<P>
<HR>
-<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.2
-</H3>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/upgrading_to_1_3.html b/usr.sbin/httpd/htdocs/manual/upgrading_to_1_3.html
index e4d9d081704..5c4b00dc6e3 100644
--- a/usr.sbin/httpd/htdocs/manual/upgrading_to_1_3.html
+++ b/usr.sbin/httpd/htdocs/manual/upgrading_to_1_3.html
@@ -14,7 +14,7 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
@@ -305,7 +305,7 @@ changes in third party modules not maintained by Apache.
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/details.html b/usr.sbin/httpd/htdocs/manual/vhosts/details.html
index 8a765e80dd6..411adb2ff5d 100644
--- a/usr.sbin/httpd/htdocs/manual/vhosts/details.html
+++ b/usr.sbin/httpd/htdocs/manual/vhosts/details.html
@@ -75,7 +75,8 @@ results from DNS lookups) are called the vhost's <EM>address set</EM>.
<P>Unless a <A HREF="../mod/core.html#namevirtualhost">NameVirtualHost</A>
directive is used for a specific IP address the first vhost with
-that address is treated as an IP-based vhost.
+that address is treated as an IP-based vhost. In 1.3.13 and later that
+includes the IP address <CODE>*</CODE>.
<P>If name-based vhosts should be used a <CODE>NameVirtualHost</CODE>
directive <EM>must</EM> appear with the IP address set to be used for the
@@ -208,6 +209,11 @@ for the port to which the client sent the request. If there is no
matching <SAMP>_default_</SAMP> vhost the request is served from the
main_server.
+<P>In Apache 1.3.13 and later, if the IP address is not found in the
+hash table then the match against the port number may also result in
+an entry corresponding to a <CODE>NameVirtualHost *</CODE>, which is
+subsequently handled like other name-based vhosts.
+
<P>If the lookup succeeded (a corresponding list for the IP address was
found) the next step is to decide if we have to deal with an IP-based
or a name-base vhost.
@@ -315,6 +321,8 @@ taken to be a proxy request.
<CODE>_default_</CODE> vhost which is your standard <CODE>Port</CODE>
by default. A wildcard port can be specified (<EM>i.e.</EM>,
<CODE>_default_:*</CODE>) to catch requests to any available port.
+ In Apache 1.3.13 and later this also applies to
+ <CODE>NameVirtualHost *</CODE> vhosts.
<P>
<LI>The main_server is only used to serve a request if the IP address
diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/examples.html b/usr.sbin/httpd/htdocs/manual/vhosts/examples.html
index f6e6f573b77..37b7d4e686c 100644
--- a/usr.sbin/httpd/htdocs/manual/vhosts/examples.html
+++ b/usr.sbin/httpd/htdocs/manual/vhosts/examples.html
@@ -24,8 +24,9 @@
<H2>Base configuration</H2>
<UL>
-<LI><A HREF="#ip">IP-based vhosts only</A>
-<LI><A HREF="#name">Name-based vhosts only</A>
+<LI><A HREF="#purename">Simple name-based vhosting</A>
+<LI><A HREF="#name">More complicated name-based vhosts</A>
+<LI><A HREF="#ip">IP-based vhosts</A>
<LI><A HREF="#mixed">Mixed name-/IP-based vhosts</A>
<LI><A HREF="#port">Port-based vhosts</A>
</UL>
@@ -40,43 +41,17 @@
<HR>
-<H3><A NAME="ip">IP-based vhosts only</A></H3>
+<H3><A NAME="purename">Simple name-based vhosting</A></H3>
<UL>
-<LI><STRONG>Setup 1:</STRONG>
- The server machine has two IP addresses (<SAMP>111.22.33.44</SAMP>
- and <SAMP>111.22.33.55</SAMP>)
- which resolve to the names <SAMP>server.domain.tld</SAMP> and
- <SAMP>www.otherdomain.tld</SAMP> respectively.
- The hostname <SAMP>www.domain.tld</SAMP> is an alias (CNAME)
- for <SAMP>server.domain.tld</SAMP> and will represent the
- main server.
- <P>
- <STRONG>Server configuration:</STRONG>
-
+<LI><STRONG>Compatibility:</STRONG>
+ This syntax was added in Apache 1.3.13.
- <BLOCKQUOTE><PRE>
- ...
- Port 80
- DocumentRoot /www/domain
- ServerName www.domain.tld
-
- &lt;VirtualHost 111.22.33.55&gt;
- DocumentRoot /www/otherdomain
- ServerName www.otherdomain.tld
- ...
- &lt;/VirtualHost&gt;
- </PRE>
- <SAMP>www.otherdomain.tld</SAMP> can only be reached through the
- address <SAMP>111.22.33.55</SAMP>, while <SAMP>www.domain.tld</SAMP>
- can only be reached through <SAMP>111.22.33.44</SAMP>
- (which represents our main server).
- </BLOCKQUOTE>
- <P>
-
-<LI><STRONG>Setup 2:</STRONG>
- Same as setup 1, but we don't want to have a dedicated main server.
+<LI><STRONG>Setup:</STRONG>
+ The server machine has a primary name <SAMP>server.domain.tld</SAMP>.
+ There are two aliases (CNAMEs) <SAMP>www.domain.tld</SAMP> and
+ <SAMP>www.sub.domain.tld</SAMP> for the address <SAMP>server.domain.tld</SAMP>.
<P>
<STRONG>Server configuration:</STRONG>
@@ -84,71 +59,33 @@
...
Port 80
ServerName server.domain.tld
-
- &lt;VirtualHost 111.22.33.44&gt;
- DocumentRoot /www/domain
- ServerName www.domain.tld
- ...
- &lt;/VirtualHost&gt;
- &lt;VirtualHost 111.22.33.55&gt;
- DocumentRoot /www/otherdomain
- ServerName www.otherdomain.tld
- ...
- &lt;/VirtualHost&gt;
- </PRE>
- The main server can never catch a request, because all IP addresses
- of our machine are in use for IP-based virtual hosts
- (only <SAMP>localhost</SAMP> requests can hit the main server).
- </BLOCKQUOTE>
- <P>
-
-<LI><STRONG>Setup 3:</STRONG>
- The server machine has two IP addresses (<SAMP>111.22.33.44</SAMP>
- and <SAMP>111.22.33.55</SAMP>)
- which resolve to the names <SAMP>server.domain.tld</SAMP> and
- <SAMP>www-cache.domain.tld</SAMP> respectively.
- The hostname <SAMP>www.domain.tld</SAMP> is an alias (CNAME)
- for <SAMP>server.domain.tld</SAMP> and will represent the
- main server.
- <SAMP>www-cache.domain.tld</SAMP> will become our proxy-cache
- listening on port 8080, while the web server itself uses the default
- port 80.
- <P>
- <STRONG>Server configuration:</STRONG>
+ NameVirtualHost *
- <BLOCKQUOTE><PRE>
- ...
- Port 80
- Listen 111.22.33.44:80
- Listen 111.22.33.55:8080
- ServerName server.domain.tld
-
- &lt;VirtualHost 111.22.33.44:80&gt;
+ &lt;VirtualHost *&gt;
DocumentRoot /www/domain
ServerName www.domain.tld
...
&lt;/VirtualHost&gt;
-
- &lt;VirtualHost 111.22.33.55:8080&gt;
- ServerName www-cache.domain.tld
+
+ &lt;VirtualHost *&gt;
+ DocumentRoot /www/subdomain
+ ServerName www.sub.domain.tld
...
- &lt;Directory proxy:&gt;
- order deny,allow
- deny from all
- allow from 111.22.33
- &lt;/Directory&gt;
- &lt;/VirtualHost&gt;
+ &lt;/VirtualHost&gt;
</PRE>
- The main server can never catch a request, because all IP addresses
- (apart from <SAMP>localhost</SAMP>) of our machine are in use for IP-based
- virtual hosts. The web server can only be reached on the first address
- through port 80 and the proxy only on the second address through port 8080.
+ The asterisks match all addresses, so the main server serves no
+ requests. Due to the fact that <SAMP>www.domain.tld</SAMP> is first
+ in the configuration file, it has the highest priority and can be
+ seen as the <CITE>default</CITE> or <CITE>primary</CITE> server.
</BLOCKQUOTE>
+ <P>
+
</UL>
+
<HR>
-<H3><A NAME="name">Name-based vhosts only</A></H3>
+<H3><A NAME="name">More complicated name-based vhosts</A></H3>
<UL>
@@ -196,10 +133,11 @@
The alias <SAMP>www.domain.tld</SAMP> should be used for the
main server which should also catch any unspecified addresses.
We want to use a virtual host for the alias
- <SAMP>www.otherdomain.tld</SAMP> and one virtual host should
+ <SAMP>www.otherdomain.tld</SAMP> and another virtual host,
+ with server name <SAMP>www.sub.domain.tld</SAMP>, should
catch any request to hostnames of the form
- <SAMP>*.sub.domain.tld</SAMP> with <SAMP>www.sub.domain.tld</SAMP>
- as its server name. The address <SAMP>111.22.33.55</SAMP> should be
+ <SAMP>*.sub.domain.tld</SAMP>.
+ The address <SAMP>111.22.33.55</SAMP> should be
used for the virtual hosts.
<P>
<STRONG>Server configuration:</STRONG>
@@ -230,6 +168,148 @@
<SAMP>111.22.33.55</SAMP> with an unknown or no <CODE>Host:</CODE>
header will be served from <SAMP>www.otherdomain.tld</SAMP>.
</BLOCKQUOTE>
+
+<LI><STRONG>Setup 3:</STRONG>
+ The server machine has two IP addresses (<SAMP>192.168.1.1</SAMP>
+ and <SAMP>111.22.33.55</SAMP>). The machine is sitting between
+ an internal (intranet) network and an external (internet) network.
+ Outside of the network, the name <SAMP>server1.domain.tld</SAMP>
+ resolves to the external address (<SAMP>111.22.33.55</SAMP>), but
+ inside the network, that same name resolves to the internal
+ address (<SAMP>192.168.1.1</SAMP>).<P>
+
+ The server can be made to respond to internal and external
+ requests with the same content, with just one <CODE>VirtualHost</CODE>
+ section.
+ <P>
+
+ <STRONG>Server configuration:</STRONG>
+
+ <BLOCKQUOTE><PRE>
+ ...
+ NameVirtualHost 192.168.1.1
+ NameVirtualHost 111.22.33.55
+
+ &lt;VirtualHost 192.168.1.1 111.22.33.55&gt;
+ DocumentRoot /www/server1
+ ServerName server1.domain.tld
+ ServerAlias server1
+ ...
+ &lt;/VirtualHost&gt;
+ </PRE></BLOCKQUOTE>
+
+ Now requests from both networks will be served from the same
+ <CODE>VirtualHost</CODE>
+
+</UL>
+
+<HR>
+
+<H3><A NAME="ip">IP-based vhosts</A></H3>
+
+<UL>
+
+<LI><STRONG>Setup 1:</STRONG>
+ The server machine has two IP addresses (<SAMP>111.22.33.44</SAMP>
+ and <SAMP>111.22.33.55</SAMP>)
+ which resolve to the names <SAMP>server.domain.tld</SAMP> and
+ <SAMP>www.otherdomain.tld</SAMP> respectively.
+ The hostname <SAMP>www.domain.tld</SAMP> is an alias (CNAME)
+ for <SAMP>server.domain.tld</SAMP> and will represent the
+ main server.
+ <P>
+ <STRONG>Server configuration:</STRONG>
+
+
+ <BLOCKQUOTE><PRE>
+ ...
+ Port 80
+ DocumentRoot /www/domain
+ ServerName www.domain.tld
+
+ &lt;VirtualHost 111.22.33.55&gt;
+ DocumentRoot /www/otherdomain
+ ServerName www.otherdomain.tld
+ ...
+ &lt;/VirtualHost&gt;
+ </PRE>
+ <SAMP>www.otherdomain.tld</SAMP> can only be reached through the
+ address <SAMP>111.22.33.55</SAMP>, while <SAMP>www.domain.tld</SAMP>
+ can only be reached through <SAMP>111.22.33.44</SAMP>
+ (which represents our main server).
+ </BLOCKQUOTE>
+ <P>
+
+<LI><STRONG>Setup 2:</STRONG>
+ Same as setup 1, but we don't want to have a dedicated main server.
+ <P>
+ <STRONG>Server configuration:</STRONG>
+
+ <BLOCKQUOTE><PRE>
+ ...
+ Port 80
+ ServerName server.domain.tld
+
+ &lt;VirtualHost 111.22.33.44&gt;
+ DocumentRoot /www/domain
+ ServerName www.domain.tld
+ ...
+ &lt;/VirtualHost&gt;
+
+ &lt;VirtualHost 111.22.33.55&gt;
+ DocumentRoot /www/otherdomain
+ ServerName www.otherdomain.tld
+ ...
+ &lt;/VirtualHost&gt;
+ </PRE>
+ The main server can never catch a request, because all IP addresses
+ of our machine are in use for IP-based virtual hosts
+ (only <SAMP>localhost</SAMP> requests can hit the main server).
+ </BLOCKQUOTE>
+ <P>
+
+<LI><STRONG>Setup 3:</STRONG>
+ The server machine has two IP addresses (<SAMP>111.22.33.44</SAMP>
+ and <SAMP>111.22.33.55</SAMP>)
+ which resolve to the names <SAMP>server.domain.tld</SAMP> and
+ <SAMP>www-cache.domain.tld</SAMP> respectively.
+ The hostname <SAMP>www.domain.tld</SAMP> is an alias (CNAME)
+ for <SAMP>server.domain.tld</SAMP> and will represent the
+ main server.
+ <SAMP>www-cache.domain.tld</SAMP> will become our proxy-cache
+ listening on port 8080, while the web server itself uses the default
+ port 80.
+ <P>
+ <STRONG>Server configuration:</STRONG>
+
+ <BLOCKQUOTE><PRE>
+ ...
+ Port 80
+ Listen 111.22.33.44:80
+ Listen 111.22.33.55:8080
+ ServerName server.domain.tld
+
+ &lt;VirtualHost 111.22.33.44:80&gt;
+ DocumentRoot /www/domain
+ ServerName www.domain.tld
+ ...
+ &lt;/VirtualHost&gt;
+
+ &lt;VirtualHost 111.22.33.55:8080&gt;
+ ServerName www-cache.domain.tld
+ ...
+ &lt;Directory proxy:&gt;
+ Order Deny,Allow
+ Deny from all
+ Allow from 111.22.33
+ &lt;/Directory&gt;
+ &lt;/VirtualHost&gt;
+ </PRE>
+ The main server can never catch a request, because all IP addresses
+ (apart from <SAMP>localhost</SAMP>) of our machine are in use for IP-based
+ virtual hosts. The web server can only be reached on the first address
+ through port 80 and the proxy only on the second address through port 8080.
+ </BLOCKQUOTE>
</UL>
<HR>
@@ -513,6 +593,7 @@
</UL>
+<LI><STRONG>Setup:</STRONG>
<HR>
<H3 ALIGN="CENTER">
diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/host.html b/usr.sbin/httpd/htdocs/manual/vhosts/host.html
index a00e1da49eb..1079b8d8cda 100644
--- a/usr.sbin/httpd/htdocs/manual/vhosts/host.html
+++ b/usr.sbin/httpd/htdocs/manual/vhosts/host.html
@@ -129,7 +129,7 @@ access to <CODE>www.foo.com</CODE> to get
private.foo.com</CODE> header. It is important to note that this
condition exists only if you only implement this policy at the IP
layer - all security controls used by Apache (<EM>i.e.</EM>, <A
-HREF="../mod/mod_access.html">allow, deny from,</A> <EM>etc.</EM>) are
+HREF="../mod/mod_access.html">Allow, Deny from,</A> <EM>etc.</EM>) are
consistently respected.
<H2>Compatibility with Older Browsers</H2>
diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/index.html b/usr.sbin/httpd/htdocs/manual/vhosts/index.html
index 5a26a956168..3dc45872da6 100644
--- a/usr.sbin/httpd/htdocs/manual/vhosts/index.html
+++ b/usr.sbin/httpd/htdocs/manual/vhosts/index.html
@@ -42,8 +42,8 @@ of virtual host support in Apache version 1.3 and later.</P>
<H2>Virtual Host Support</H2>
<UL>
-<LI><A HREF="ip-based.html">IP-based Virtual Hosts</A>
<LI><A HREF="name-based.html">Name-based Virtual Hosts</A>
+<LI><A HREF="ip-based.html">IP-based Virtual Hosts</A>
<LI><A HREF="examples.html">Virtual Host examples for common setups</A>
<LI><A HREF="details.html">In-Depth Discussion of Virtual Host Matching</A>
<LI><A HREF="fd-limits.html">File Descriptor Limits</A>
diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/ip-based.html b/usr.sbin/httpd/htdocs/manual/vhosts/ip-based.html
index 7aef0b67575..e3c922d11c9 100644
--- a/usr.sbin/httpd/htdocs/manual/vhosts/ip-based.html
+++ b/usr.sbin/httpd/htdocs/manual/vhosts/ip-based.html
@@ -114,20 +114,13 @@ It is recommended that you use an IP address instead of a hostname
<P>
-Almost <STRONG>any</STRONG> configuration directive can be put
-in the VirtualHost directive, with the exception of
-<A HREF="../mod/core.html#servertype">ServerType</A>,
-<A HREF="../mod/core.html#startservers">StartServers</A>,
-<A HREF="../mod/core.html#maxspareservers">MaxSpareServers</A>,
-<A HREF="../mod/core.html#minspareservers">MinSpareServers</A>,
-<A HREF="../mod/core.html#maxrequestsperchild">MaxRequestsPerChild</A>,
-<A HREF="../mod/core.html#bindaddress">BindAddress</A>,
-<A HREF="../mod/core.html#listen">Listen</A>,
-<A HREF="../mod/core.html#pidfile">PidFile</A>,
-<A HREF="../mod/mod_mime.html#typesconfig">TypesConfig</A>,
-<A HREF="../mod/core.html#serverroot">ServerRoot</A>,
-<A HREF="../mod/core.html#namevirtualhost">NameVirtualHost</A>
-and a few other directives.
+Almost <STRONG>any</STRONG> configuration directive can be put in the
+VirtualHost directive, with the exception of directives that control
+process creation and a few other directives. To find out if a
+directive can be used in the VirtualHost directive, check the
+<A HREF="../mod/directive-dict.html#Context">Context</A> using the
+<A HREF="../mod/directives.html">directive index</A>.
+
<P>
<A HREF="../mod/core.html#user">User</A> and
<A HREF="../mod/core.html#group">Group</A> may be used inside a VirtualHost
diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/mass.html b/usr.sbin/httpd/htdocs/manual/vhosts/mass.html
index 364293b9804..6274b75bf03 100644
--- a/usr.sbin/httpd/htdocs/manual/vhosts/mass.html
+++ b/usr.sbin/httpd/htdocs/manual/vhosts/mass.html
@@ -128,13 +128,15 @@ instead.</P>
<P>The other thing to `fake' is the document root (configured
with <CODE>DocumentRoot</CODE> and available to CGIs via the
-<CODE>DOCUMENT_ROOT</CODE> environment variable). This setting
-is used by the core module when mapping URIs to filenames, but
-when the server is configured to do dynamic virtual hosting that
-job is taken over by another module. If any CGIs or SSI documents
-make use of the <CODE>DOCUMENT_ROOT</CODE> environment variable
-they will therefore get a misleading value; there isn't any way to
-change <CODE>DOCUMENT_ROOT</CODE> dynamically.</P>
+<CODE>DOCUMENT_ROOT</CODE> environment variable). In a normal
+configuration this setting is used by the core module when mapping
+URIs to filenames, but when the server is configured to do dynamic
+virtual hosting that job is taken over by another module (either
+<CODE>mod_vhost_alias</CODE> or <CODE>mod_rewrite</CODE>) which has
+a different way of doing the mapping. Neither of these modules is
+responsible for setting the <CODE>DOCUMENT_ROOT</CODE> environment
+variable so if any CGIs or SSI documents make use of it they will
+get a misleading value.</P>
<HR><H2><A NAME="simple">Simple dynamic virtual hosts</A></H2>
diff --git a/usr.sbin/httpd/htdocs/manual/vhosts/name-based.html b/usr.sbin/httpd/htdocs/manual/vhosts/name-based.html
index 15eeab51fdb..21f44c48dde 100644
--- a/usr.sbin/httpd/htdocs/manual/vhosts/name-based.html
+++ b/usr.sbin/httpd/htdocs/manual/vhosts/name-based.html
@@ -27,25 +27,29 @@
<H2>Name-based vs. IP-based virtual hosts</H2>
-<P>While the approach with IP-based virtual hosts works very well,
-it is not the most elegant solution, because a dedicated IP address
-is needed for every virtual host and it is hard to implement on some
-machines. The <CODE>HTTP/1.1</CODE> protocol contains a method for the
-server to identify what name it is being addressed as. Apache 1.1 and
-later support this approach as well as the traditional
-IP-address-per-hostname method.</P>
-
-<P>The benefits of using the new name-based virtual host support is a
+<P>Early versions of HTTP (like many other protocols, e.g. FTP)
+required a different IP address for each virtual host on the server.
+On some platforms this can limit the number of virtual hosts you can
+run, and because there are concerns about the availability of IP
+addresses it is strongly discouraged by the registraries (ARIN, RIPE,
+and APNIC).</P>
+
+<P>The <CODE>HTTP/1.1</CODE> protocol, and a common extension to
+<CODE>HTTP/1.0</CODE>, includes a method for the server to identify
+what name it is being addressed as. Apache 1.1 and later support this
+approach as well as the old IP-address-per-hostname method.</P>
+
+<P>The benefits of using the name-based virtual hosts is a
practically unlimited number of servers, ease of configuration and use, and
requires no additional hardware or software.
The main disadvantage is that the client must support this part of the
-protocol. The latest versions of most browsers do, but there are still
+protocol. Almost all browsers do, but there are still small numbers of
old browsers in use who do not. This can cause problems, although a possible
solution is addressed below.</P>
-<H2>Using non-IP Virtual Hosts</H2>
+<H2>Using name-based virtual hosts</H2>
-<P>Using the new virtual hosts is quite easy, and superficially looks
+<P>Using name-based virtual hosts is quite easy, and superficially looks
like the old method. The notable difference between IP-based and
name-based virtual host configuration is the
<A HREF="../mod/core.html#namevirtualhost"><CODE>NameVirtualHost</CODE></A>
@@ -58,8 +62,6 @@ target for name-based virtual hosts.</P>
configuration files (most likely <CODE>httpd.conf</CODE> or
<CODE>srm.conf</CODE>) code similar to the following:</P>
-
-
<PRE>
NameVirtualHost 111.22.33.44
@@ -84,12 +86,21 @@ are pointing to the IP address <SAMP>111.22.33.44</SAMP></P>
directive then requests to that IP address will only ever be served
by matching &lt;VirtualHost&gt;s. The "main server" will
<STRONG>never</STRONG> be served from the specified IP address.
-If you start to use virtual hosts you should stop to use the "main server"
+If you start to use virtual hosts you should stop using the "main server"
as an independent server and rather use it as a place for
configuration directives that are common for all your virtual hosts.
In other words, you should add a &lt;VirtualHost&gt; section for
<EM>every</EM> server (hostname) you want to maintain on your server.
+<P>In Apache 1.3.13 and later you can specify the
+<CODE>NameVirtualHost</CODE> IP address as the wildcard <CODE>*</CODE>
+which matches any IP address not covered by more specific virtual
+host directive(s). This is useful for configuring a server whose IP
+address you do not know in advance, e.g. because it has a dynamically
+configured IP address or because it is part of a load-balanced cluster
+in which every machine shares the same configuration file.
+</P>
+
<P>Additionally, many servers may wish to be accessible by more than
one name. For example, the example server might want to be accessible
as <CODE>domain.tld</CODE>, or <CODE>www2.domain.tld</CODE>, assuming
diff --git a/usr.sbin/httpd/htdocs/manual/win_compiling.html b/usr.sbin/httpd/htdocs/manual/win_compiling.html
new file mode 100644
index 00000000000..9cf31642655
--- /dev/null
+++ b/usr.sbin/httpd/htdocs/manual/win_compiling.html
@@ -0,0 +1,207 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+<TITLE>Compiling Apache for Microsoft Windows</TITLE>
+</HEAD>
+
+<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+<BODY
+ BGCOLOR="#FFFFFF"
+ TEXT="#000000"
+ LINK="#0000FF"
+ VLINK="#000080"
+ ALINK="#FF0000"
+>
+<DIV ALIGN="CENTER">
+ <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
+ <H3>
+ Apache HTTP Server
+ </H3>
+</DIV>
+
+
+<H1 ALIGN="CENTER">Compiling Apache for Microsoft Windows</H1>
+
+<P>There are many important points before you begin compiling Apache.
+ See <A HREF="windows.html">Using Apache with Microsoft Windows</A>
+ before you begin.</P>
+
+<P>Compiling Apache requires Microsoft Visual C++ 5.0 or 6.0 to be properly
+ installed. It is easiest to compile with the command-line tools
+ (nmake, <EM>etc.</EM>..). Consult the VC++ manual to determine how
+ to install them. Be especially aware that the vcvars32.bat file
+ from the Program Files/DevStudio/VC/bin folder may be required to
+ prepare the command-line environment for command-line builds!</P>
+
+<P>First, unpack the Apache distribution into an appropriate
+ directory. Open a command-line prompt, and change to the
+ <CODE>src</CODE> subdirectory of the Apache distribution.</P>
+
+<P>The master Apache makefile instructions are contained in the
+ <CODE>Makefile.win</CODE> file. To compile Apache on Windows NT, simply
+ use one of the following commands:
+<UL>
+<LI><CODE>nmake /f Makefile.win _apacher</CODE> (release build)
+<LI><CODE>nmake /f Makefile.win _apached</CODE> (debug build)
+</UL>
+
+<P>These will both compile Apache. The latter will include debugging
+ information in the resulting files, making it easier to find bugs and
+ track down problems.</P>
+
+<P>If you get an error such as "the name specified is not recognized..."
+ then you need to run vcvars32.bat first. Enter the following command;
+<PRE>
+ "c:\Program Files\DevStudio\VC\Bin\VCVARS32.BAT"
+</PRE>
+ (you will need to adjust this command so it matches the directory where
+ your VC was installed.) Then try the nmake command again.</P>
+
+<P>Apache can also be compiled using VC++'s Visual Studio development
+ environment. To simplify this process, a Visual Studio workspace,
+ Apache.dsw, is provided in the <CODE>src</CODE> folder. This workspace
+ exposes the entire list of working .dsp projects that are required for the
+ complete Apache binary release. It includes dependencies between
+ the projects to assure that they are built in the appropriate order.</P>
+
+<P>These .dsp project files are distributed in Visual C++ 6.0 format. Visual
+ C++ 5.0 (97) will recognize them with the single exception of the /ZI flag,
+ which corresponds to the VC 5.0 /Zi flag for debugging symbols. To quickly
+ prepare the .dsp files for the Visual Studio 5.0 (97), you can use the
+ perl scripts distributed in the <CODE>src\helpers</CODE> folder:
+<PRE>
+ cd src\helpers
+ cvstodsp5.pl
+</PRE>
+ This command assumes you have a Perl interpreter installed and registered
+ for files of type .pl. The list of converted .dsp project files will
+ be displayed as they are converted. If you contribute back a patch that
+ offers revised project files, please convert them back with the script
+ dsp5tocvs.pl, which puts the projects back to Visual Studio 6.0 format.</P>
+
+<P>The core .dsp projects that are build by Apache.dsw or makefile.win are:</P>
+
+ <OL>
+ <LI><CODE>os\win32\ApacheOS.dsp</CODE>
+ <LI><CODE>regex\regex.dsp</CODE>
+ <LI><CODE>ap\ap.dsp</CODE>
+ <LI><CODE>lib\expat-lite\xmltok.dsp</CODE>
+ <LI><CODE>lib\expat-lite\xmlparse.dsp <EM>requires xmltok</EM></CODE>
+ <LI><CODE>main\gen_uri_delims.dsp</CODE>
+ <LI><CODE>main\gen_test_char.dsp</CODE>
+ <LI><CODE>ApacheCore.dsp <EM>requires all of the above</EM></CODE>
+ <LI><CODE>Apache.dsp <EM>requires ApacheCore</EM></CODE>
+ </OL>
+
+<P>In addition, the <CODE>os\win32</CODE> subdirectory contains
+ project files for the optional modules, all of which require ApacheCore.</P>
+
+<OL>
+ <LI><CODE>os\win32\ApacheModuleAuthAnon.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleAuthDigest.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleCERNMeta.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleDigest.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleExpires.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleHeaders.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleInfo.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleRewrite.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleSpeling.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleStatus.dsp</CODE>
+ <LI><CODE>os\win32\ApacheModuleUserTrack.dsp</CODE>
+ <LI><CODE>modules\proxy\ApacheModuleProxy.dsp</CODE>
+</OL>
+
+ The <CODE>support\</CODE> folder contains project files for additional
+ programs that are not part of the Apache runtime, but are used by
+ the administrator to maintain password and log files.</P>
+
+<OL>
+ <LI><CODE>support\htdigest.dsp</CODE>
+ <LI><CODE>support\htpasswd.dsp</CODE>
+ <LI><CODE>support\logresolve.dsp</CODE>
+ <LI><CODE>support\rotatelogs.dsp</CODE>
+</OL>
+
+<P>Once Apache has been compiled, it needs to be installed in its server
+ root directory. The default is the <CODE>\Apache</CODE>
+ directory, on the current hard drive.</P>
+
+<P>To install the files into the <CODE>c:\ServerRoot</CODE> directory
+ automatically, use one the following nmake commands (see above):</P>
+
+<UL>
+<LI><CODE>nmake /f Makefile.win installr INSTDIR=<EM>c:\ServerRoot</EM></CODE>
+ (for release build)
+<LI><CODE>nmake /f Makefile.win installd INSTDIR=<EM>c:\ServerRoot</EM></CODE>
+ (for debug build)
+</UL>
+
+<P>The <EM>c:\ServerRoot</EM> argument to INSTDIR gives the installation
+ directory (it can be omitted if Apache is to be installed into
+ <SAMP>\Apache</SAMP>).</P>
+
+<P>This will install the following:</P>
+
+<UL>
+ <LI><CODE><EM>c:\ServerRoot</EM>\Apache.exe</CODE> - Apache executable
+ <LI><CODE><EM>c:\ServerRoot</EM>\ApacheCore.dll</CODE> - Main Apache
+ shared library
+ <LI><CODE><EM>c:\ServerRoot</EM>\modules\ApacheModule*.dll</CODE> -
+ Loadable Apache modules
+ <LI><CODE><EM>c:\ServerRoot</EM>\bin\*.exe</CODE> - Administrator support
+ executables from support
+ <LI><CODE><EM>c:\ServerRoot</EM>\conf</CODE> - Empty configuration directory
+ <LI><CODE><EM>c:\ServerRoot</EM>\logs</CODE> - Empty logging directory
+</UL>
+
+<P>If you do not have nmake, or wish to install in a different directory,
+ be sure to use a similar naming scheme.</P>
+
+<P>To simplify the process, dependencies between all projects
+ are defined in the Microsoft VisualStudio workspace file:
+
+<PRE>
+ src/Apache.dsw
+</PRE>
+
+<P>This assures that lower-level sources are rebuilt from within
+ VisualStudio. The top level project is InstallBin, which invokes
+ Makefile.win to move the compiled executables and dlls. You may
+ personalize the INSTDIR= setting by changing the Settings for
+ InstallBin, Build command line entry under the General tab.
+ The default from within the InstallBin.dsp project is one level up
+ (..) from the src tree.</P>
+
+<P>Before running the server you must fill out the conf directory. Copy the
+ *.conf-dist-win from the distribution conf directory and rename them to
+ *.conf. You will need to copy over the conf/magic and conf/mime.types
+ files as well. In order to serve documents you will need to create a
+ htdocs\index.html or just copy over the standard Apache ones (This is a
+ good idea as then you get the full Apache documentation on line). If you
+ have previously run Apache from the c:\ServerRoot directory then please make
+ sure you backup any files you wish to retain or only copy the files you want
+ replaced. The following commands will copy all the required files to your
+ c:\ServerRoot directory (***over-writing any that were there***);</P>
+
+<UL>
+<LI><CODE>xcopy ..\conf\*.conf-dist-win <EM>c:\ServerRoot</EM>\conf\*.conf</CODE>
+<LI><CODE>xcopy ..\conf\magic <EM>c:\ServerRoot</EM>\conf\</CODE>
+<LI><CODE>xcopy ..\conf\mime.types <EM>c:\ServerRoot</EM>\conf\</CODE>
+<LI><CODE>xcopy ..\htdocs\*.* <EM>c:\ServerRoot</EM>\htdocs\ /s</CODE>
+</UL>
+<P>(adjust these so <EM>c:\ServerRoot</EM> matches the INSTDIR used above.)</P>
+
+<P>Change the @@ServerRoot@@ entries in <EM>c:\ServerRoot</EM>\conf\httpd.conf
+ to your actual server root (for example "<EM>c:/ServerRoot</EM>" Note: you
+ must use forward slashes in Apache configuration files!)</P>
+
+<HR>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
+
+<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
+
+</BODY>
+</HTML>
+
diff --git a/usr.sbin/httpd/htdocs/manual/win_service.html b/usr.sbin/httpd/htdocs/manual/win_service.html
new file mode 100644
index 00000000000..d933a504d3b
--- /dev/null
+++ b/usr.sbin/httpd/htdocs/manual/win_service.html
@@ -0,0 +1,337 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<HTML>
+<HEAD>
+<TITLE>Running Apache for Windows as a Service</TITLE>
+</HEAD>
+
+<!-- Background white, links blue (unvisited), navy (visited), red (active) -->
+<BODY
+ BGCOLOR="#FFFFFF"
+ TEXT="#000000"
+ LINK="#0000FF"
+ VLINK="#000080"
+ ALINK="#FF0000"
+>
+<DIV ALIGN="CENTER">
+ <IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
+ <H3>
+ Apache HTTP Server
+ </H3>
+</DIV>
+
+
+<H1 ALIGN="CENTER">Running Apache for Windows as a Service</H1>
+
+<P>Apache can be run as a service on Windows NT/2000. (There is also some
+ HIGHLY EXPERIMENTAL support for similar behavior on
+ <a href="#win95svc">Windows 95/98</a>, introduced with Apache 1.3.13).</P>
+
+<P>Installing Apache as a service should only be done once you can
+ successfully run it in a console window. See
+ <A HREF="windows.html">Using Apache with Microsoft Windows</A>
+ before you attempt to install or run Apache as a service. Changes to the
+ httpd.conf file should always be followed by starting Apache as a console
+ window. If this succeeds, the service should succeed.</P>
+
+<P><STRONG>NOTE: Prior to version 1.3.13, the configuration was <EM>not
+ tested</EM> prior to performing the installation</STRONG>, and a lack of
+ service dependencies often caused the console window to succeed, but the
+ service would still fail. See <A HREF="#service">below</A> if you are
+ having problems running a version of Apache prior to 1.3.13 to resolve the
+ issue. If you have this problem with version 1.3.13 or greater, first try
+ uninstalling (-u) and re-installing (-i) the Apache service.</P>
+
+<HR>
+
+<P>To start Apache as a service, you first need to install it as a
+ service. Multiple Apache services can be installed, each with a
+ different name and configuration. To install the default Apache
+ service named "Apache", run the "Install Apache as Service (NT only)"
+ option from the Start menu. Once this is done you can start the "Apache"
+ service by opening the Services window (in the Control Panel), selecting
+ Apache, then clicking on Start. Apache will now be running, hidden in the
+ background. You can later stop Apache by clicking on Stop. As an
+ alternative to using the Services window, you can start and stop the
+ "Apache" service from the command line with</P>
+
+<PRE>
+ NET START APACHE
+ NET STOP APACHE
+</PRE>
+
+<P>See <A HREF="#signal">Controlling Apache as a Service</A>
+ for more information on installing and controlling Apache services.</P>
+
+<P><STRONG>Apache, unlike many other Windows NT/2000 services, logs any
+ errors to it's own error.log file in the logs folder within the
+ Apache server root folder. You will <EM>not</EM> find Apache error
+ details in the Windows NT Event Log.</STRONG></P>
+
+<P>After starting Apache as a service (or if you have trouble starting it)
+ you can test it using the same <A HREF="windows.html#test">procedure</a>
+ as for running in a console window. Remember to use the command:</P>
+
+<PRE>
+ apache -n "service name"
+</PRE>
+
+<P>to assure you are using the service's configuration.</P>
+
+
+<H2><A NAME="service">Running Apache for Windows as a Service</A></H2>
+
+<P><STRONG>Note: The -n option to specify a service name is only available
+ with Apache 1.3.7 and later.</STRONG> Earlier versions of Apache only
+ support the default service name 'Apache'.</P>
+
+<P>You can install Apache as a Windows NT service as follows:</P>
+
+<PRE>
+ apache -i -n "service name"
+</PRE>
+
+<P>To install a service to use a particular configuration, specify the
+ configuration file when the service is installed:</P>
+
+<PRE>
+ apache -i -n "service name" -f "\my server\conf\my.conf"
+</PRE>
+
+<P>To remove an Apache service, use:</P>
+
+<PRE>
+ apache -u -n "service name"
+</PRE>
+
+<P>The default "service name", if one is not specified, is "Apache".</P>
+
+<P>Once a service is installed, you can use the <SAMP>-n</SAMP> option, in
+ conjunction with other options, to refer to a service's configuration file.
+ For example:</P>
+
+<P>To test a service's configuration file:</P>
+<PRE>
+ apache -n "service name" -t
+</PRE>
+
+<P>To start a console Apache using a service's configuration file:</P>
+<PRE>
+ apache -n "service name"
+</PRE>
+
+<H2><A NAME="depends">Important Note on service dependencies:</A></H2>
+
+<P>Prior to Apache release 1.3.13, the dependencies required to
+ successfully start an installed service were not configured.
+ After installing a service using earlier versions of Apache,
+ you must follow these steps:
+
+<PRE>
+ Run regedt32
+ Select <U>W</U>indow - "HKEY_LOCAL_MACHINE on Local Machine" from the menu
+ Double-click to open the SYSTEM, then the CurrentControlSet keys
+ Scroll down and click on the Apache servicename
+ Select <U>E</U>dit - Add <U>V</U>alue... from the menu
+ Fill in the Add Value dialog with
+ <U>V</U>alue Name: DependOnGroup
+ <U>D</U>ata Type: REG_MULTI_SZ
+ and click OK
+ Leave the Multi-String Editor dialog empty and click OK
+ Select <U>E</U>dit - Add <U>V</U>alue... from the menu
+ Fill in the Add Value dialog with
+ <U>V</U>alue Name: DependOnService
+ <U>D</U>ata Type: REG_MULTI_SZ
+ and click OK
+ Type the following list (one per line) in the Multi-String Editor dialog
+ Tcpip
+ Afd
+ and click OK
+</PRE>
+
+<P>If you are using COM or DCOM components from a third party module, ISAPI,
+ or other add-in scripting technologies such as ActiveState Perl, you may
+ also need to add the entry Rpcss to the DependOnService list. To avoid
+ exposing the TCP port 135 when it is unnecessary, Apache does not create
+ that entry upon installation. Follow the directions above to find or
+ create the DependOnService value, double click that value if it already
+ exists, and add the Rpcss entry to the list.</P>
+
+
+<H2>User Account for Apache Service to Run As (NT/2000)</H2>
+
+<P>When Apache is first installed as a service (e.g. with the -i option)
+ it will run as user "System" (the LocalSystem account). There should
+ be few issues if all resources for the web server reside on the local
+ system, but it has broad security privilages to affect the local machine!</P>
+
+<BLOCKQUOTE>
+ LocalSystem is a very privileged account locally, so
+ you shouldn't run any shareware applications there.
+ However, it has no network privileges and cannot leave
+ the machine via any NT-secured mechanism, including
+ file system, named pipes, DCOM, or secure RPC.
+</BLOCKQUOTE>
+
+<P><STRONG>NEVER grant network privilages to the SYSTEM account!</STRONG>
+ Create a new user account instead, grant the appropriate privilages to
+ that user, and use the the 'Log On As:' option. Select the Start Menu ->
+ Settings -> Control Panel -> Services -> apache service ... and click
+ the "Startup" button to access this setting.</P>
+
+<BLOCKQUOTE>
+ A service that runs in the context of the LocalSystem account
+ inherits the security context of the SCM. It is not associated with
+ any logged-on user account and does not have credentials (domain name,
+ user name, and password) to be used for verification.
+</BLOCKQUOTE>
+
+<P>The SYSTEM account has no privilages to the network, so shared pages or
+ a shared installation of Apache is invisible to the service. If you intend
+ to use <EM>any</EM> network resources, the following steps should help:</P>
+
+<UL>
+<LI>Select Apache from the Control Panel's Service dialog and click Startup.
+<LI>Verify that the service account is correct. You may wish to create an
+ account for your Apache services.
+<LI>Retype the password and password confirmation.
+<LI>Go to User Manager for Domains.
+<LI>Click on Policies from the title bar menu, and select User Rights.
+<LI>Select the option for Advanced User Rights.
+<LI>In the drop-down list, verify that the following rights have been
+ granted to the selected account:
+ <UL>
+ <LI>Act as part of the operating system
+ <LI>Back up files and directories
+ <LI>Log on as a service
+ <LI>Restore files and directories
+ </UL>
+<LI>Confirm that the selected account is a member of the Users group.
+<LI>Confirm the selected account has access to all document and script
+ directories (minimally read and browse access).
+<LI>Confirm the selected account has read/write/delete access to the Apache
+ logs directory!
+</UL>
+
+<P>If you allow the account to log in as a user, then you can log in yourself
+ and test that the account has the privilages to execute the scripts, read
+ the web pages, and that you can start Apache in a console window. If this
+ works, and you have followed the steps above, Apache should execute as
+ a service with no problems.</P>
+<P><STRONG>Note: error code 2186</STRONG> is a good indication that you need
+ to review the 'Log On As' configuration, since the server can't access a
+ required network resource.</STRONG></P>
+
+
+<H2><A NAME="trouble">Troubleshooting Apache for Windows as a Service</A></H2>
+
+<P>When starting Apache as a service you may encounter an error message from
+ Windows service manager. For example if you try to start Apache using the Services
+ applet in Windows Control Panel you may get the following message;
+<PRE>
+ Could not start the apache service on \\COMPUTER
+ Error 1067; The process terminated unexpectedly.
+</PRE>
+<P>You will get this error if there is any problem starting Apache. In order to see
+ what is causing the problem you should follow the instructions
+ for <a href="windows.html#test">Testing Apache at the Command Prompt</a>.</P>
+
+<P>Also, Apache 1.3.13 now records startup errors in the Application Event Log
+ under Windows NT/2000, if Apache is run as a service. Run the Event Viewer
+ and select <U>L</U>og ... <U>A</U>pplication to see these events.
+
+<P><STRONG>Check the Application Event Log with the Event Viewer in case of any
+ problems, even if no error message pops up to warn you that an error
+ occured.</STRONG></P>
+
+<H2><A NAME="cmdline">Running Apache for Windows from the Command Line</A></H2>
+
+For details on controlling Apache service from the command line, please refer to
+<a href="windows.html#cmdline">console command line</a> section.
+
+
+<H2><A NAME="signal">Controlling Apache as a Service</A></H2>
+
+<P>Multiple instances of Apache can be installed and run as services. Signal
+ an installed Apache service to start, restart, or shutdown/stop
+ as follows:</P>
+
+<PRE>
+ apache -n "service name" -k start
+ apache -n "service name" -k restart
+ apache -n "service name" -k shutdown
+ apache -n "service name" -k stop
+</PRE>
+
+<P>For the default "Apache" service, the -n Apache option is still required,
+ since the -k commands without the -n option are directed at Apache running
+ in a console window. The quotes are only required if the service name
+ contains spaces.</P>
+
+<P><STRONG>Note: the -k stop alias for the -k shutdown command was introduced
+ in Apache version 1.3.13.</STRONG> Earlier versions of Apache will only
+ recognize the -k shutdown option. Prior to 1.3.3, Apache did not recognize
+ <EM>any</EM> -k options at all!</P>
+
+<P>In addition, you can use the native NT NET command to
+ start and stop Apache services as follows:</P>
+
+<PRE>
+ NET START "service name"
+ NET STOP "service name"
+</PRE>
+
+<P>Again, quotes are only required if the service name contains spaces.</P>
+
+<H2><A NAME="win95svc">HIGHLY EXPERIMENTAL Windows 95/98 Service</A></H2>
+
+<P><STRONG>Note: The service options for Windows 95 and 98 are only available
+ with Apache 1.3.13 and later.</STRONG> Earlier versions of Apache only
+ supported Apache in a console window for Windows 95/98.</P>
+
+<P>There is some support for Apache on Windows 95/98 to behave in a similar
+ manner as a service on Windows NT/2000. It is <EM>highly experimental</EM>,
+ if it works (at all) the Apache Sofware Foundation will not attest to it's
+ reliability or future support. Proceed at your own risk!</P>
+
+<P>Once you have confirmed that Apache runs correctly at the
+ <a href="windows.html#test">Command Prompt</a> you can install, control
+ and uninstall it with the same commands as the Windows NT/2000 version.</P>
+
+<P>There are, however, significant differences that you should note:</P>
+
+<P>Apache will attempt to start and if successful it will run in the
+ background. If you run the command
+
+<PRE>
+ Apache -n "service name" -k start
+</PRE>
+
+ via a shortcut on your desktop, for example, then if the service starts
+ successfully a console window will flash up but immediately disappears.
+ If Apache detects any errors on startup such as a incorrect entries in the
+ httpd.conf file, then the console window will remain visible. This will
+ display an error message which will be useful in tracking down the cause of
+ the problem.</P>
+
+<P>Windows 95/98 does not support NET START or NET STOP commands so you must
+ use Apache's Service Control options at a command prompt. You may wish to
+ set up a shortcut for each of these commands so that you can just choose
+ it from the start menu or desktop to perform the required action.</P>
+
+<P>Apache and Windows 95/98 offer no support for running the Apache service
+ as a specific user with network privilages. In fact, Windows 95/98 offers
+ no security on the local machine, either. This is the simple reason that
+ the Apache Software Foundation never endorses the use of Windows 95/98 as a
+ public httpd server. These facilities exist only to assist the user in
+ developing web content and learning the Apache server, and perhaps as a
+ intranet server on a secured, private network.</P>
+
+<HR>
+ <H3 ALIGN="CENTER">
+ Apache HTTP Server
+ </H3>
+
+<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
+
+</BODY>
+</HTML>
diff --git a/usr.sbin/httpd/htdocs/manual/windows.html b/usr.sbin/httpd/htdocs/manual/windows.html
index 784b9cb39b3..6f20c41aa7e 100644
--- a/usr.sbin/httpd/htdocs/manual/windows.html
+++ b/usr.sbin/httpd/htdocs/manual/windows.html
@@ -15,34 +15,48 @@
<DIV ALIGN="CENTER">
<IMG SRC="images/sub.gif" ALT="[APACHE DOCUMENTATION]">
<H3>
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
</DIV>
-<H1 ALIGN="CENTER">Using Apache With Microsoft Windows</H1>
-
-<P>This document explains how to install, configure and run
- Apache 1.3 under Microsoft Windows. Please note that at
- this time, Windows support is entirely experimental, and is
- recommended only for experienced users. The Apache Group does not
- guarantee that this software will work as documented, or even at
- all. If you find any bugs, or wish to contribute in other ways, please
- use our <A HREF="http://www.apache.org/bug_report.html">bug reporting
- page.</A></P>
+<H1 ALIGN="CENTER"><A NAME="help">Using Apache With Microsoft Windows</A></H1>
+
+<P>This document explains how to install, configure and run Apache 1.3 under
+ Microsoft Windows. Please note that at this time, Windows support is
+ entirely experimental, and is recommended only for experienced users.
+ The Apache Group does not guarantee that this software will work as
+ documented, or even at all. If you find any bugs, please document them on
+ our <A HREF="http://www.apache.org/bug_report.html">bug reporting page.</A>
+ Contributions are welcomed, please submit your code or suggestions to the
+ bug report page, or join the new-httpd mailing list.</P>
+
+<P>The bug reporting page and new-httpd mailing list are <EMP>not</EMP>
+ provided to answer questions about configuration or running Apache.
+ Before you submit a bug report or request, first consult this document, the
+ <A HREF="misc/FAQ.html">Frequently Asked Questions</A> page and the other
+ relevant documentation topics. If you still have a question or problem,
+ post it to the <A HREF="news:comp.infosystems.www.servers.ms-windows">
+ comp.infosystems.www.servers.ms&minus;windows</A> newsgroup, where many
+ Apache users and several contributions are more than willing to answer new
+ and obscure questions about using Apache on Windows.</P>
+
+<P><A HREF="http://www.deja.com/group/comp.infosystems.www.servers.ms-windows">
+ deja.com's newsgroup archives</A> offer easy browsing of previous questions.
+ Searching the newsgroup archives, you will usually find your question was
+ already asked and answered by other users!</P>
<P><STRONG>Warning: Apache on NT has not yet been optimized for performance.
-Apache still performs best, and is most reliable on Unix platforms. Over
-time we will improve NT performance. Folks doing comparative reviews
-of webserver performance are asked to compare against Apache
-on a Unix platform such as Solaris, FreeBSD, or Linux.</STRONG></P>
-
-<P>
+ </STRONG>Apache still performs best, and is most reliable on Unix platforms.
+ Over time we will improve NT performance, and great progress is being made
+ in the upcoming version 2.0 of Apache for the Windows platforms. Folks doing
+ comparative reviews of webserver performance are asked to compare against
+ Apache on a Unix platform such as Solaris, FreeBSD, or Linux.</P>
-Most of this document assumes that you are installing Windows from a
-binary distribution. If you want to compile Apache yourself (possibly
-to help with development, or to track down bugs), see the section on
-<A HREF="#comp">Compiling Apache for Windows</A> below.
+<P>Most of this document assumes that you are installing Windows from a
+ binary distribution. If you want to compile Apache yourself (possibly
+ to help with development, or to track down bugs), see
+ <A HREF="win_compiling.html">Compiling Apache for Microsoft Windows</A>.
<HR>
@@ -51,61 +65,62 @@ to help with development, or to track down bugs), see the section on
<LI><A HREF="#down">Downloading Apache for Windows</A>
<LI><A HREF="#inst">Installing Apache for Windows (binary install)</A>
<LI><A HREF="#run">Running Apache for Windows</A>
- <LI><A HREF="#use">Using Apache for Windows</A>
- <LI><A HREF="#cmdline">Running Apache for Windows from the Command Line</A>
- <LI><A HREF="#service">Running Apache for Windows as a Service</A>
- <LI><A HREF="#signal">Signalling Console Apache when running</A>
- <LI><A HREF="#signalsrv">Signalling Service Apache when running</A>
- <LI><A HREF="#comp">Compiling Apache for Windows</A>
+ <LI><A HREF="#test">Testing Apache for Windows</A>
+ <LI><A HREF="#use">Configuring Apache for Windows</A>
+ <LI><A HREF="#cmdline">Running Apache in a Console Window</A>
+ <LI><A HREF="#signal">Controlling Apache in a Console Window</A>
+ <LI><A HREF="win_service.html">Running Apache for Windows as a Service</A>
+ <LI><A HREF="win_service.html#signal">Controlling Apache as a Service</A>
+ <LI><A HREF="win_compiling.html">Compiling Apache for Microsoft Windows</A>
</UL>
<HR>
<H2><A NAME="req">Requirements</A></H2>
-Apache 1.3 is designed to run on Windows NT 4.0. The binary installer
-will only work in Intel processors. Apache may also run on Windows 95,
-Windows 98 and Windows NT 3.5.1, but these have not been tested. In
-all cases TCP/IP networking must be installed.
-
-<P>
-
-If running on Windows 95, using the "Winsock2" upgrade is recommended
-but may not be necessary. If running on NT 4.0, installing Service Pack 2
-is recommended.
+<P>Apache 1.3 is designed to run on Windows NT 4.0 and Windows 2000.
+ The binary installer will only work with the x86 family of processors,
+ such as Intel's. Apache may also run on Windows 95 and 98, but these have
+ not been tested. In all cases TCP/IP networking must be installed.</P>
-<P>
+<P>If running on NT 4.0, installing Service Pack 3 or 6 is recommended, as
+ Service Pack 4 created known issues with TCPIP/WinSock integrity that
+ were resolved in later Service Packs.</P>
-<STRONG>Note: "Winsock 2" is required for Apache 1.3.7 and later.</STRONG>
+<P><STRONG>Note: "Winsock 2" is required for Apache 1.3.7 and
+ later.</STRONG></P>
-<P>
+<P>If running on Windows 95, the "Winsock2" upgrade must be installed
+ before Apache will run. "Winsock2" for Windows 95 is available
+ <A HREF="http://www.microsoft.com/windows95/downloads/contents/WUAdminTools/S_WUNetworkingTools/W95Sockets2/Default.asp">here</a>
+ or via <A HREF="http://www.microsoft.com/windows95/downloads/">here</A>.
+ Be warned that the Dialup Networking 1.2 (MS DUN) updates include a Winsock2
+ that is entirely insufficient, and the Winsock2 update must be reinstalled
+ after installing Windows 95 dialup networking.</P>
-"Winsock 2" for Windows 95 is available <A HREF="http://www.microsoft.com/windows95/downloads/">here.</A>
<H2><A NAME="down">Downloading Apache for Windows</A></H2>
<P>Information on the latest version of Apache can be found on the
-Apache web server at <A
-HREF="http://www.apache.org/">http://www.apache.org/</A>. This will
-list the current release, any more recent alpha or beta-test releases,
-together with details of mirror web and anonymous ftp sites.</P>
-
-<P>
-
-You should download the version of Apache for Windows with the
-<CODE>.exe</CODE> extension. This is a single file containing Apache,
-ready to install and run. There may also be a <CODE>.zip</CODE> file
-containing the source code, to compile Apache yourself. (If there is
-no <SAMP>.zip</SAMP> file, the source will be available in a
-<SAMP>.tar.gz</SAMP> file but this will contain Unix line endings. You
-will have to convert at least the <SAMP>.mak</SAMP> and
-<SAMP>.dsp</SAMP> files to have DOS line endings before MSVC will
-understand them).
+ Apache web server at <A HREF="http://www.apache.org/httpd">
+ http://www.apache.org/httpd</A>. This will
+ list the current release, any more recent alpha or beta-test releases,
+ together with details of mirror web and anonymous FTP sites.</P>
+
+<P>You should download the version of Apache for Windows with the
+ <CODE>.exe</CODE> extension. This is a single file containing Apache,
+ ready to install and run. There may also be a <CODE>.zip</CODE> file
+ containing the source code, to compile Apache yourself. (If there is
+ no <SAMP>.zip</SAMP> file, the source will be available in a
+ <SAMP>.tar.gz</SAMP> file but this will contain Unix line endings. You
+ will have to convert at least the <SAMP>.mak</SAMP> and
+ <SAMP>.dsp</SAMP> files to have DOS line endings before MSVC will
+ understand them).</P>
<H2><A NAME="inst">Installing Apache for Windows</A></H2>
-Run the Apache <SAMP>.exe</SAMP> file you downloaded above. This will
-ask for:
+<P>Run the Apache <SAMP>.exe</SAMP> file you downloaded above. This will
+ ask for:</P>
<UL>
@@ -122,160 +137,195 @@ ask for:
</UL>
-<P>
-
-During the installation, Apache will configure the files in the
-<SAMP>conf</SAMP> directory for your chosen installation
-directory. However if any of the files in this directory already exist
-they will <STRONG>not</STRONG> be overwritten. Instead the new copy of
-the corresponding file will be left with the extension
-<SAMP>.default</SAMP>. So, for example, if
-<SAMP>conf\httpd.conf</SAMP> already exists it will not be altered,
-but the version which would have been installed will be left in
-<SAMP>conf\httpd.conf.default</SAMP>. After the installation has
-finished you should manually check to see what in new in the
-<SAMP>.default</SAMP> file, and if necessary update your existing
-configuration files.
-
-<P>
-
-Also, if you already have a file called <SAMP>htdocs\index.html</SAMP>
-then it will not be overwritten (no <SAMP>index.html.default</SAMP>
-file will be installed either). This should mean it a safe to install
-Apache over an existing installation (but you will have to stop the
-existing server running before doing the installation, then start the
-new one after the installation is finished).
-
-<P>
-
-After installing Apache, you should edit the configuration files in
-the <SAMP>conf</SAMP> directory as required. These files will be
-configured during the install ready for Apache to be run from the
-directory where it was installed, with the documents served from the
-subdirectory <SAMP>htdocs</SAMP>. There are lots of other options
-which should be set before you start really using Apache. However to
-get started quickly the files should work as installed.
+<P>During the installation, Apache will configure the files in the
+ <SAMP>conf</SAMP> directory for your chosen installation
+ directory. However if any of the files in this directory already exist
+ they will <STRONG>not</STRONG> be overwritten. Instead the new copy of
+ the corresponding file will be left with the extension
+ <SAMP>.default</SAMP>. So, for example, if
+ <SAMP>conf\httpd.conf</SAMP> already exists it will not be altered,
+ but the version which would have been installed will be left in
+ <SAMP>conf\httpd.conf.default</SAMP>. After the installation has
+ finished you should manually check to see what in new in the
+ <SAMP>.default</SAMP> file, and if necessary update your existing
+ configuration files.</P>
+
+<P>Also, if you already have a file called <SAMP>htdocs\index.html</SAMP>
+ then it will not be overwritten (no <SAMP>index.html.default</SAMP>
+ file will be installed either). This should mean it is safe to install
+ Apache over an existing installation (but you will have to stop the
+ existing server running before doing the installation, then start the
+ new one after the installation is finished).</P>
+
+<P>After installing Apache, you should edit the configuration files in
+ the <SAMP>conf</SAMP> directory as required. These files will be
+ configured during the install ready for Apache to be run from the
+ directory where it was installed, with the documents served from the
+ subdirectory <SAMP>htdocs</SAMP>. There are lots of other options
+ which should be set before you start really using Apache. However to
+ get started quickly the files should work as installed.</P>
<H2><A NAME="run">Running Apache for Windows</A></H2>
-There are two ways you can run Apache:
+<P>There are two ways you can run Apache:</P>
<UL>
- <LI>As a <A HREF="#service">"service"</A> (available on NT only). This is the best option if
- you want Apache to automatically start when you machine boots, and to
- keep Apache running when you log-off.
-
- <LI>From a <A HREF="#cmdline">console window</A>. This is the only option
- available for
- Windows 95 users.
+ <LI>As a <A HREF="win_service.html">"service"</A> (tested on NT/2000 only,
+ but an <EM>experimental</EM> version is available for 95/98).
+ This is the best option if you want Apache to automatically start when your
+ machine boots, and to keep Apache running when you log-off.
+ <LI>From a <A HREF="#cmdline">console window</A>. This is the best option
+ available for Windows 95/98 users.
</UL>
-To start Apache as a service, you first need to install it as a
-service. Multiple Apache services can be installed, each with a
-different name and configuration. To install the default Apache
-service named "Apache", run the "Install Apache as Service (NT only)"
-option from the Start menu. Once this is done you can start the "Apache"
-service by opening the Services window (in the Control Panel), selecting Apache,
-then clicking on Start. Apache will now be running in the background. You
-can later stop Apache by clicking on Stop. As an alternative to using
-the Services window, you can start and stop the "Apache" service from the control
-line with
+<P><STRONG>Complete the steps below before you attempt to start Apache
+ as a Windows "<A HREF="win_service.html">service</A>"!</STRONG></P>
+
+<P>To run Apache from a console window, select the "Start Apache as
+ console app" option from the Start menu (in Apache 1.3.4 and earlier,
+ this option was called "Apache Server"). This will open a console
+ window and start Apache running inside it. The window will remain
+ active until you stop Apache. To stop Apache running, either press select
+ the "Shutdown Apache console app" icon option from the Start menu
+ (this is not available in Apache 1.3.4 or earlier), or see
+ <A HREF="#signal">Controlling Apache in a Console Window</A> for commands
+ to control Apache in a console window.</P>
+
+<P>In Apache 1.3.13 and above it is now quite safe to press Ctrl+C or
+ Ctrl+Break to stop the Apache in the console window. And on Windows NT/2000
+ with version 1.3.13, Apache will also gladly stop if you select 'Close'
+ from the system menu (clicking the icon on the top-left corner of the
+ console window) or click the close (X) button on the top-right corner.
+ But do <EM>not</em> try any of these approaches on earlier versions of the
+ Apache server, since Apache did not shut down cleanly.</P>
+
+<H2><A NAME="test">Testing Apache for Windows</A></H2>
+
+<P>If you have trouble starting Apache please use the following steps to
+ isolate the problem. This applies if you started Apache using the
+ "Start Apache as a console app" shortcut from the Start menu and
+ the Apache console window closes immediately (or unexpectedly)
+ or if you have trouble starting Apache as a service.</P>
+
+<P>Run the "Command Prompt" from the Start Menu - Programs list. Change
+ to the folder to which you installed Apache, type the command apache, and
+ read the error message. Then review the error.log file for configuration
+ mistakes. If you accepted the defaults when you installed Apache, the
+ commands would be:</P>
<PRE>
- NET START APACHE
- NET STOP APACHE
+ c:
+ cd "\program files\apache group\apache"
+ apache
+ <EM>Wait for Apache to exit, or press </EM>Ctrl+C
+ more &lt;logs\error.log
</PRE>
-See <A HREF="#signalsrv">Signalling Service Apache when Running</A>
-for more information on installing and controlling Apache services.
-
-<P>
-
-To run Apache from a console window, select the "Start Apache as
-console app" option from the Start menu (in Apache 1.3.4 and earlier,
-this option was called "Apache Server"). This will open a console
-window and start Apache running inside it. The window will remain
-active until you stop Apache. To stop Apache running, either select
-the "Shutdown Apache console app" icon option from the Start menu
-(this is not available in Apache 1.3.4 or earlier), or see <A
-HREF="#signal">Signalling Console Apache when Running</A> for how
-to control Apache from the command line.
-
-<P>
+<P>After looking at the error.log you will probably have a good chance of
+ working out what went wrong and be able to fix the problem and try again.
+ If you are unable to work it out then please follow the
+ <A HREF="#help">guidelines for assistance</A> at the top of this document
+ or in the <a href="misc/FAQ.html#what2do">FAQ</a>. Many users discover that
+ the nature of the httpd.conf file is easier to manage and audit than page
+ after page of configuration dialog boxes.</P>
-After starting Apache running (either in a console window or as a
-service) if will be listening to port 80 (unless you changed the
-<SAMP>Port</SAMP>, <SAMP>Listen</SAMP> or <SAMP>BindAddress</SAMP>
-directives in the configuration files). To connect to the server and
-access the default page, launch a browser and enter this URL:
+<P>After starting Apache running (either in a console window or as a
+ service) if will be listening to port 80 (unless you changed the
+ <SAMP>Port</SAMP>, <SAMP>Listen</SAMP> or <SAMP>BindAddress</SAMP>
+ directives in the configuration files). To connect to the server and
+ access the default page, launch a browser and enter this URL:</P>
<PRE>
http://localhost/
</PRE>
-This should respond with a welcome page, and a link to the Apache
-manual. If nothing happens or you get an error, look in the
-<SAMP>error_log</SAMP> file in the <SAMP>logs</SAMP> directory.
-If your host isn't connected to the net, you may have to use
-this URL:
+<P>This should respond with a welcome page, and a link to the Apache
+ manual. If nothing happens or you get an error, look in the
+ <SAMP>error.log</SAMP> file in the <SAMP>logs</SAMP> directory.
+ If your host isn't connected to the net, you may have to use
+ this URL:</P>
<PRE>
http://127.0.0.1/
</PRE>
-<P>
+<P>Once your basic installation is working, you should configure it
+ properly by editing the files in the <SAMP>conf</SAMP> directory.</P>
-Once your basic installation is working, you should configure it
-properly by editing the files in the <SAMP>conf</SAMP> directory.
+<P>Because Apache <EM>CANNOT</EM> share the same port with another
+ TCP/IP application, you may need to stop or uninstall certain
+ services first. These include (but are not limited to) other
+ web servers, and firewall products such as BlackIce. If you can
+ only start Apache with these services disabled, reconfigure either
+ Apache or the other product so that they do not listen on the
+ same TCP/IP ports. You may find the Windows "netstat -an" command useful
+ in finding out what ports are in use.</P>
<H2><A NAME="use">Configuring Apache for Windows</A></H2>
-Apache is configured by files in the <SAMP>conf</SAMP>
-directory. These are the same as files used to configure the Unix
-version, but there are a few different directives for Apache on
-Windows. See the <A HREF="./">Apache documentation</A> for all the
-available directives.
+<P>Apache is configured by files in the <SAMP>conf</SAMP>
+ directory. These are the same as files used to configure the Unix
+ version, but there are a few different directives for Apache on
+ Windows. See the <A HREF="./">Apache documentation</A> for all the
+ available directives.</P>
-<P>
+<P>Begin configuring the Apache server by reviewing <CODE>httpd.conf</CODE>
+ and it's directives. Although the files <CODE>access.conf</CODE> and
+ <CODE>srm.conf</CODE> both exist, these are old files which are no longer
+ used by most administrators, and you will find no directives there.</P>
-The main differences in Apache for Windows are:
+<P><CODE>httpd.conf</CODE> contains a great deal of documentation itself,
+ followed by the default configuration directives recommended when starting
+ with the Apache server. Begin by reading these comments to understand the
+ configuration file, and make small changes, starting Apache in a console
+ window with each change. If you make a mistake, it will be easier to back
+ up to configuration that last worked. You will have a better idea of
+ which change caused the server to fail.</P>
+
+<P>The main differences in Apache for Windows are:</P>
<UL>
- <LI><P>Because Apache for Windows is multithreaded, it does not use a
+ <LI>Because Apache for Windows is multithreaded, it does not use a
separate process for each request, as Apache does with
Unix. Instead there are usually only two Apache processes running:
a parent process, and a child which handles the requests. Within
- the child each request is handled by a separate thread.
- <P>
-
- So the "process"-management directives are different:
- <P><A
- HREF="mod/core.html#maxrequestsperchild">MaxRequestsPerChild</A>
+ the child each request is handled by a separate thread. So,
+ "process"-management directives are different:
+ <UL>
+ <LI><A HREF="mod/core.html#maxrequestsperchild">MaxRequestsPerChild</A>
- Like the Unix directive, this controls how many requests a
process will serve before exiting. However, unlike Unix, a
process serves all the requests at once, not just one, so if
this is set, it is recommended that a very high number is
used. The recommended default, <CODE>MaxRequestsPerChild
0</CODE>, does not cause the process to ever exit.
- <P><A HREF="mod/core.html#threadsperchild">ThreadsPerChild</A> -
+ <LI><A HREF="mod/core.html#threadsperchild">ThreadsPerChild</A> -
This directive is new, and tells the server how many threads it
should use. This is the maximum number of connections the server
can handle at once; be sure and set this number high enough for
your site if you get a lot of hits. The recommended default is
- <CODE>ThreadsPerChild 50</CODE>.</P>
- <LI><P>The directives that accept filenames as arguments now must use
+ <CODE>ThreadsPerChild 50</CODE>.
+ </UL>
+ <LI>The directives that accept filenames as arguments now must use
Windows filenames instead of Unix ones. However, because Apache
uses Unix-style names internally, you must use forward slashes, not
backslashes. Drive letters can be used; if omitted, the drive with
- the Apache executable will be assumed.</P>
- <LI><P>Apache for Windows contains the ability to load modules at runtime,
+ the Apache executable will be assumed.
+ <LI>Apache for Windows has the ability to load modules at runtime,
without recompiling the server. If Apache is compiled normally, it
will install a number of optional modules in the
- <CODE>\Apache\modules</CODE> directory. To activate these, or other
+ <CODE>\modules</CODE> directory. To activate these, or other
modules, the new <A HREF="mod/mod_so.html#loadmodule">LoadModule</A>
directive must be used. For example, to active the status module,
use the following (in addition to the status-activating directives
- in <CODE>access.conf</CODE>):</P>
+ in <CODE>access.conf</CODE>):
+ <LI>Apache for Windows version 1.3 series is implemented in synchronous
+ calls. This poses an enormous problem for CGI authors, who won't
+ see unbuffered results sent immediately to the browser. This is not
+ the behavior described for CGI in Apache, but it is a side-effect of
+ the Windows port. Apache 2.0 is making progress to implement the
+ expected asynchronous behavior, and we hope to discover that the
+ NT/2000 implementation allows CGI's to behave as documented.
<PRE>
LoadModule status_module modules/ApacheModuleStatus.dll
</PRE>
@@ -284,297 +334,152 @@ The main differences in Apache for Windows are:
<LI><P>Apache can also load ISAPI Extensions (<EM>i.e.</EM>, Internet Server
Applications), such as those used by Microsoft's IIS, and other
Windows servers. <A HREF="mod/mod_isapi.html">More information
- is available.</A>
+ is available.</A> Note that Apache <EM>CANNOT</EM> load ISAPI
+ Filters.
</UL>
-<H2><A NAME="service">Running Apache for Windows as a Service</A></H2>
- <STRONG>Note: The -n option to specify a service name is only available
- with Apache 1.3.7 and later. Earlier versions of Apache only support
- the default service name 'Apache'.</STRONG>
-<P>
+<H2><A NAME="cmdline">Running Apache in a Console Window</A></H2>
-You can install Apache as a Windows NT service as follows:
+<P>The Start menu icons and the NT Service manager can provide a simple
+ interface for administering Apache. But in some cases it is easier to
+ work from the command line.</P>
-<PRE>
- apache -i -n "service name"
-</PRE>
-
-To install a service to use a particular configuration, specify the
-configuration file when the service is installed:
-
-<PRE>
- apache -i -n "service name" -f "\my server\conf\my.conf"
-</PRE>
-
-To remove an Apache service, use
-
-<PRE>
- apache -u -n "service name"
-</PRE>
-
-The default "service name", if one is not specified, is "Apache".
-
-<P>
-
-Once a service is installed, you can use the <SAMP>-n</SAMP> option, in conjunction
-with other options, to refer to a service's configuration file. For example:<br>
-
-To test a service's configuration file:
-<PRE>
- apache -n "service name" -t
-</PRE>
-
-To start a console Apache using a service's configuration file:
-<PRE>
- apache -n "service name"
-</PRE>
-
-<H2><A NAME="cmdline">Running Apache for Windows from the Command Line</A></H2>
-
-The Start menu icons and the NT Service manager can provide a simple
-interface for administering Apache. But in some cases it is easier to
-work from the command line.
-
-<P>
-When working with Apache it is important to know how it will find the
-configuration files. You can specify a configuration file on the command line
-in two ways:
+<P>When working with Apache it is important to know how it will find the
+ configuration files. You can specify a configuration file on the command
+ line in two ways:</P>
<UL>
-<LI>-f specifies a path to a particular configuration file
+<LI>-f specifies a path to a particular configuration file:
</UL>
<PRE> apache -f "c:\my server\conf\my.conf"</PRE>
<PRE> apache -f test\test.conf</PRE>
<UL>
-<LI>-n specifies the configuration file of an installed Apache service (Apache 1.3.7 and later)
+<LI>-n specifies the configuration file of an installed Apache service (Apache 1.3.7 and later):
</UL>
<PRE> apache -n "service name"</PRE>
-In these cases, the proper ServerRoot should be set in the configuration file.
-
-<P>
+<P>In these cases, the proper ServerRoot should be set in the configuration
+ file.</P>
-If you don't specify a configuration file name with -f or -n, Apache will
-use the file name compiled into the server, usually "conf/httpd.conf". Invoking
-Apache with the -V switch will display this value labeled as SERVER_CONFIG_FILE.
-Apache will then determine its ServerRoot by trying the following, in this order:
+<P>If you don't specify a configuration file name with -f or -n, Apache will
+ use the file name compiled into the server, usually "conf/httpd.conf".
+ Invoking Apache with the -V switch will display this value labeled as
+ SERVER_CONFIG_FILE. Apache will then determine its ServerRoot by trying
+ the following, in this order:</P>
<UL>
<LI>A ServerRoot directive via a -C switch.
<LI>The -d switch on the command line.
-<LI>Current working directory
+<LI>The current working directory
<LI>A registry entry, created if you did a binary install.
<LI>The server root compiled into the server.
</UL>
-<P>
-The server root compiled into the server is usually "/apache".
-invoking apache with the -V switch will display this value
-labeled as HTTPD_ROOT.
+<P>The server root compiled into the server is usually "/apache".
+ invoking apache with the -V switch will display this value
+ labeled as HTTPD_ROOT.</P>
-<P>
-When invoked from the start menu, Apache is usually passed no arguments,
-so using the registry entry is the preferred technique for console Apache.
+<P>When invoked from the start menu, Apache is usually passed no arguments,
+ so using the registry entry is the preferred technique for console Apache.
+ </P>
+
+<P>During a binary installation, a registry key will have
+ been installed, for example:</P>
-<P>
-During a binary installation, a registry key will have
-been installed, for example:
<PRE>
- HKEY_LOCAL_MACHINE\Software\Apache Group\Apache\1.3.4\ServerRoot
+ HKEY_LOCAL_MACHINE\Software\Apache Group\Apache\1.3.13\ServerRoot
</PRE>
-<P>
-This key is compiled into the server and can enable you to test
-new versions without affecting the current version. Of course
-you must take care not to install the new version on top of the
-old version in the file system.
-
-<P>
-If you did not do a binary install then Apache will in some
-scenarios complain that about the missing registry key. This
-warning can be ignored if it otherwise was able to find its
-configuration files.
-
-<P>
-The value of this key is the "ServerRoot" directory, containing the
-<SAMP>conf</SAMP> directory. When Apache starts it will read the
-<SAMP>httpd.conf</SAMP> file from this directory. If this file
-contains a <SAMP>ServerRoot</SAMP> directive which is different from
-the directory obtained from the registry key above, Apache will forget
-the registry key and use the directory from the configuration file.
-If you copy the Apache directory or configuration files to a new
-location it is vital that you update the <SAMP>ServerRoot</SAMP>
-directory in the <SAMP>httpd.conf</SAMP> file to the new location.
-
-<P>
-To run Apache from the command line as a console application, use the
-following command:
+<P>This key is compiled into the server and can enable you to test
+ new versions without affecting the current version. Of course
+ you must take care not to install the new version on top of the
+ old version in the file system.</P>
+
+<P>If you did not do a binary install then Apache will in some
+ scenarios complain about the missing registry key. This
+ warning can be ignored if it otherwise was able to find its
+ configuration files.
+
+<P>The value of this key is the "ServerRoot" directory, containing the
+ <SAMP>conf</SAMP> directory. When Apache starts it will read the
+ <SAMP>httpd.conf</SAMP> file from this directory. If this file
+ contains a <SAMP>ServerRoot</SAMP> directive which is different from
+ the directory obtained from the registry key above, Apache will forget
+ the registry key and use the directory from the configuration file.
+ If you copy the Apache directory or configuration files to a new
+ location it is vital that you update the <SAMP>ServerRoot</SAMP>
+ directory in the <SAMP>httpd.conf</SAMP> file to the new location.</P>
+
+<P>To run Apache from the command line as a console application, use the
+ following command:</P>
<PRE>
apache
</PRE>
-Apache will execute, and will remain running until it is stopped by pressing
-control-C.
-
-<H2><A NAME="signalsrv">Signalling Service Apache when running</A></H2>
-
-On Windows NT, multiple instances of Apache can be run as services.
-Signal an Apache service to start, restart, or shutdown as follows:
+<P>Apache will execute, and will remain running until it is stopped by pressing
+ control-C.</P>
-<PRE>
- apache -n "service name" -k start
- apache -n "service name" -k restart
- apache -n "service name" -k shutdown
-</PRE>
+<H2><A NAME="signal">Controlling Apache in a Console Window</A></H2>
-In addition, you can use the native NT NET command to
-start and stop Apache services as follows:
+<P>You can tell a running Apache to stop by opening another console window and
+ running:</P>
<PRE>
- NET START "service name"
- NET STOP "service name"
+ apache -k shutdown
</PRE>
-<H2><A NAME="signal">Signalling Console Apache when running</A></H2>
-
-On Windows 95, Apache runs as a console application. You can tell a
-running Apache to stop by opening another console window and running
+<P><STRONG>Note: This option is only available with Apache 1.3.3 and
+ later.</STRONG></P>
-<PRE>
- apache -k shutdown
-</PRE>
-<BLOCKQUOTE>
- <STRONG>Note: This option is only available with Apache 1.3.3 and
- later. For earlier versions, you need to use Control-C in the
- Apache console window to shut down the server.</STRONG>
-</BLOCKQUOTE>
+<P>For earlier versions, you must use Control-C in the
+ Apache console window to shut down the server.</P>
-<P>
-This should be used instead of pressing Control-C in the running
-Apache console window, because it lets Apache end any current
-transactions and cleanup gracefully.
+<P>From version 1.3.3 through 1.3.12, this should be used instead of pressing
+ Control-C in a running Apache console window, because it allowed Apache
+ to end any current transactions and cleanup gracefully.</P>
-<P>
+<P>As of version 1.3.13 pressing Control-C in the running window will cleanup
+ Apache quite gracefully, and you may use -k stop as an alias for
+ -k shutdown. Earlier versions do not understand -k stop.</P>
-You can also tell Apache to restart. This makes it re-read the
-configuration files. Any transactions in progress are allowed to
-complete without interruption. To restart Apache, run
+<P>You can also tell Apache to restart. This makes it re-read the
+ configuration files. Any transactions in progress are allowed to
+ complete without interruption. To restart Apache, run:</P>
<PRE>
apache -k restart
</PRE>
-<BLOCKQUOTE>
- <STRONG>Note: This option is only available with Apache 1.3.3 and
- later. For earlier versions, you need to use Control-C in the
- Apache console window to shut down the server.</STRONG>
-</BLOCKQUOTE>
-
-<P>
-Note for people familiar with the Unix version of Apache: these
-commands provide a Windows equivalent to <CODE>kill -TERM
-<EM>pid</EM></CODE> and <CODE>kill -USR1 <EM>pid</EM></CODE>. The command
-line option used, <CODE>-k</CODE>, was chosen as a reminder of the
-"kill" command used on Unix.
-
-<H2><A NAME="comp">Compiling Apache for Windows</A></H2>
-
-<P>Compiling Apache requires Microsoft Visual C++ 5.0 to be properly
- installed. It is easiest to compile with the command-line tools
- (nmake, <EM>etc.</EM>..). Consult the VC++ manual to determine how to install
- them.</P>
-
-<P>First, unpack the Apache distribution into an appropriate
- directory. Open a command-line prompt, and change to the
- <CODE>src</CODE> subdirectory of the Apache distribution.</P>
-
-<P>The master Apache makefile instructions are contained in the
- <CODE>Makefile.nt</CODE> file. To compile Apache on Windows NT, simply
- use one of the following commands:
-<UL>
-<LI><CODE>nmake /f Makefile.nt _apacher</CODE> (release build)
-<LI><CODE>nmake /f Makefile.nt _apached</CODE> (debug build)
-</UL>
-
-<P><em>(1.3.4 and later)</em> To compile Apache on Windows 95, use one of
-<UL>
-<LI><CODE>nmake /f Makefile_win32.txt</CODE> (release build)
-<LI><CODE>nmake /f Makefile_win32_debug.txt</CODE> (debug build)
-</UL>
-
-<P>These will both compile Apache. The latter will include debugging
- information in the resulting files, making it easier to find bugs and
- track down problems.</P>
-
-<P>Apache can also be compiled using VC++'s Visual Studio development
- environment. Although compiling Apache in this manner is not as
- simple, it makes it possible to easily modify the Apache source, or
- to compile Apache if the command-line tools are not installed.
- Project files (<CODE>.DSP</CODE>) are included for each of the
- portions of Apache. To build Apache from the these projects files
- you will need to build the following projects <EM>in this order</EM>:
-
- <OL>
- <LI><CODE>os\win32\ApacheOS.dsp</CODE>
- <LI><CODE>regex\regex.dsp</CODE>
- <LI><CODE>ap\ap.dsp</CODE>
- <LI><CODE>main\gen_uri_delims.dsp</CODE>
- <LI><CODE>main\gen_test_char.dsp</CODE>
- <LI><CODE>ApacheCore.dsp</CODE>
- <LI><CODE>Apache.dsp</CODE>
- </OL>
-
- In addition, the <CODE>src\os\win32</CODE> subdirectory contains
- project files for the optional modules (see below).</P>
-
-<P>Once Apache has been compiled, it needs to be installed in its server
- root directory. The default is the <CODE>\Apache</CODE>
- directory, on the current hard drive. </P>
-
-<P>To install the files into the <CODE>\Apache</CODE> directory
- automatically, use one the following nmake commands (see above):</P>
-<UL>
-<LI><CODE>nmake /f Makefile.nt installr INSTDIR=<EM>dir</EM></CODE>
- (for release build)
-<LI><CODE>nmake /f Makefile.nt installd INSTDIR=<EM>dir</EM></CODE>
- (for debug build)
-</UL>
-or, for Windows 95 (1.3.4 and later), use one of:
-<UL>
-<LI><CODE>nmake /f Makefile_win32.txt install INSTDIR=<EM>dir</EM></CODE>
- (for release build)
-<LI><CODE>nmake /f Makefile_win32_debug.txt install INSTDIR=<EM>dir</EM></CODE>
- (for debug build)
-</UL>
-The dir argument to INSTDIR gives the installation directory; it can
-be omitted if Apache is to be installed into <SAMP>\Apache</SAMP>.
+<P><STRONG>Note: This option is only available with Apache 1.3.3 and
+ later. For earlier versions, you need to use Control-C in the
+ Apache console window to shut down the server, and then restart the
+ server with the Apache command.</STRONG></P>
-<P>This will install the following:</P>
+<P>Another <EM>very useful</EM> feature is the configuration files test option.
+ To test the Apache configuration files, run:</P>
-<UL>
- <LI><CODE><EM>dir</EM>\Apache.exe</CODE> - Apache executable
- <LI><CODE><EM>dir</EM>\ApacheCore.dll</CODE> - Main Apache shared library
- <LI><CODE><EM>dir</EM>\modules\ApacheModule*.dll</CODE> - Optional Apache
- modules (7 files)
- <LI><CODE><EM>dir</EM>\conf</CODE> - Empty configuration directory
- <LI><CODE><EM>dir</EM>\logs</CODE> - Empty logging directory
-</UL>
+<PRE>
+ apache -t
+</PRE>
-<P>If you do not have nmake, or wish to install in a different directory,
- be sure to use a similar naming scheme.</P>
+<P>This is especially useful following alterations to the configuration files
+ while Apache is still running. You can make the changes, confirm that the
+ syntax is good by issuing the "apache -t" command, then restart Apache with
+ "apache -k restart". Apache will re-read the configuration files, allowing
+ any transactions in progress to complete without interruption. Any new
+ request will then be served using the new configuration.</P>
-<P>
-Before running the server you must fill out the conf directory.
-Copy the *.conf-dist-win from the distribution conf directory
-and rename *.conf. Edit the @@ServerRoot@@ entries to your
-actual server root (for example "C:\apache"). Copy over
-the conf/magic and conf/mime.types files as well.
+<P>Note: for people familiar with the Unix version of Apache, these commands
+ provide a Windows equivalent to <CODE>kill -TERM <EM>pid</EM></CODE> and
+ <CODE>kill -USR1 <EM>pid</EM></CODE>. The command line option used,
+ <CODE>-k</CODE>, was chosen as a reminder of the "kill" command used on
+ Unix.</P>
<HR>
<H3 ALIGN="CENTER">
- Apache HTTP Server Version 1.3
+ Apache HTTP Server
</H3>
<A HREF="./"><IMG SRC="images/index.gif" ALT="Index"></A>
diff --git a/usr.sbin/httpd/src/Apache.dsp b/usr.sbin/httpd/src/Apache.dsp
index bbb644ded95..c63bbc43fd3 100644
--- a/usr.sbin/httpd/src/Apache.dsp
+++ b/usr.sbin/httpd/src/Apache.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="Apache" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
@@ -22,6 +22,7 @@ CFG=Apache - Win32 Release
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -36,12 +37,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheR"
-# PROP Intermediate_Dir ".\ApacheR"
+# PROP Output_Dir "ApacheR"
+# PROP Intermediate_Dir "ApacheR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /FD /c
# ADD BASE RSC /l 0x809 /d "NDEBUG"
# ADD RSC /l 0x809 /d "NDEBUG"
BSC32=bscmake.exe
@@ -49,7 +50,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 /nologo /subsystem:console /map /machine:I386
!ELSEIF "$(CFG)" == "Apache - Win32 Debug"
@@ -60,12 +61,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheD"
-# PROP Intermediate_Dir ".\ApacheD"
+# PROP Output_Dir "ApacheD"
+# PROP Intermediate_Dir "ApacheD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /FD /c
# ADD BASE RSC /l 0x809 /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG"
BSC32=bscmake.exe
@@ -73,7 +74,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386
-# ADD LINK32 CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386
+# ADD LINK32 /nologo /subsystem:console /incremental:no /map /debug /machine:I386
!ENDIF
@@ -81,18 +82,6 @@ LINK32=link.exe
# Name "Apache - Win32 Release"
# Name "Apache - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
-# Begin Source File
-
-SOURCE=.\os\win32\main_win32.c
-# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
@@ -105,5 +94,9 @@ SOURCE=.\os\win32\apache.ico
SOURCE=.\os\win32\apache.rc
# End Source File
# End Group
+# Begin Source File
+
+SOURCE=.\os\win32\main_win32.c
+# End Source File
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/Apache.mak b/usr.sbin/httpd/src/Apache.mak
index b44f43e0721..994665fd368 100644
--- a/usr.sbin/httpd/src/Apache.mak
+++ b/usr.sbin/httpd/src/Apache.mak
@@ -30,7 +30,7 @@ NULL=nul
OUTDIR=.\ApacheR
INTDIR=.\ApacheR
# Begin Custom Macros
-OutDir=.\.\ApacheR
+OutDir=.\ApacheR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -39,22 +39,27 @@ ALL : "$(OUTDIR)\Apache.exe"
!ELSE
-ALL : "$(OUTDIR)\Apache.exe"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\Apache.exe"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\apache.res"
-@erase "$(INTDIR)\main_win32.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\Apache.exe"
+ -@erase "$(OUTDIR)\Apache.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
- /Fp"$(INTDIR)\Apache.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheR/
CPP_SBRS=.
@@ -95,13 +100,13 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\Apache.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:console\
- /incremental:no /pdb:"$(OUTDIR)\Apache.pdb" /machine:I386\
+LINK32_FLAGS=/nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)\Apache.pdb" /map:"$(INTDIR)\Apache.map" /machine:I386\
/out:"$(OUTDIR)\Apache.exe"
LINK32_OBJS= \
"$(INTDIR)\apache.res" \
- "$(INTDIR)\main_win32.obj"
+ "$(INTDIR)\main_win32.obj" \
+ ".\CoreR\ApacheCore.lib"
"$(OUTDIR)\Apache.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -113,7 +118,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheD
INTDIR=.\ApacheD
# Begin Custom Macros
-OutDir=.\.\ApacheD
+OutDir=.\ApacheD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -122,17 +127,21 @@ ALL : "$(OUTDIR)\Apache.exe"
!ELSE
-ALL : "$(OUTDIR)\Apache.exe"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\Apache.exe"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\apache.res"
-@erase "$(INTDIR)\main_win32.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\Apache.exe"
- -@erase "$(OUTDIR)\Apache.ilk"
+ -@erase "$(OUTDIR)\Apache.map"
-@erase "$(OUTDIR)\Apache.pdb"
"$(OUTDIR)" :
@@ -140,7 +149,7 @@ CLEAN :
CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
- /Fp"$(INTDIR)\Apache.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheD/
CPP_SBRS=.
@@ -181,13 +190,13 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\Apache.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:console\
- /incremental:yes /pdb:"$(OUTDIR)\Apache.pdb" /debug /machine:I386\
+LINK32_FLAGS=/nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)\Apache.pdb" /map:"$(INTDIR)\Apache.map" /debug /machine:I386\
/out:"$(OUTDIR)\Apache.exe"
LINK32_OBJS= \
"$(INTDIR)\apache.res" \
- "$(INTDIR)\main_win32.obj"
+ "$(INTDIR)\main_win32.obj" \
+ ".\CoreD\ApacheCore.lib"
"$(OUTDIR)\Apache.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -198,12 +207,6 @@ LINK32_OBJS= \
!IF "$(CFG)" == "Apache - Win32 Release" || "$(CFG)" == "Apache - Win32 Debug"
-SOURCE=.\os\win32\main_win32.c
-
-"$(INTDIR)\main_win32.obj" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
SOURCE=.\os\win32\apache.rc
DEP_RSC_APACH=\
".\os\win32\apache.ico"\
@@ -225,6 +228,41 @@ DEP_RSC_APACH=\
!ENDIF
+!IF "$(CFG)" == "Apache - Win32 Release"
+
+"ApacheCore - Win32 Release" :
+ cd "."
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd "."
+
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "."
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd "."
+
+!ELSEIF "$(CFG)" == "Apache - Win32 Debug"
+
+"ApacheCore - Win32 Debug" :
+ cd "."
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd "."
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "."
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd "."
+
+!ENDIF
+
+SOURCE=.\os\win32\main_win32.c
+
+"$(INTDIR)\main_win32.obj" : $(SOURCE) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
!ENDIF
diff --git a/usr.sbin/httpd/src/ApacheCore.def b/usr.sbin/httpd/src/ApacheCore.def
index c81df4845e6..15002d7a0d0 100644
--- a/usr.sbin/httpd/src/ApacheCore.def
+++ b/usr.sbin/httpd/src/ApacheCore.def
@@ -360,17 +360,48 @@ EXPORTS
ap_SHA1Final @355
ap_sha1_base64 @356
ap_send_error_response @357
- ap_add_config_define @358
- ap_global_ctx @359
- ap_ctx_new @360
- ap_ctx_get @361
- ap_ctx_set @362
- ap_hook_init @363
- ap_hook_kill @364
- ap_hook_configure @365
- ap_hook_register_I @366
- ap_hook_unregister_I @367
- ap_hook_status @368
- ap_hook_use @369
- ap_hook_call @370
+ ap_my_generation @358 DATA
+
+ ; These were exported implicitly prior to 1.3.13, so they
+ ; had _prefixed names, maintain ordinal values from 1.3.12:
+ ap_os_case_canonical_filename @359
+ ap_os_systemcase_filename @360
+ ap_set_config_vectors @361
+ ap_strcasestr @362
+ ap_to64 @363
+ ap_vrprintf @365
+ os_strftime @366
+ regerror @367
+
+ ; Introduced in 1.3.13
+ ap_add_file_conf @368
+ ap_configtestonly @369 DATA
+ ap_get_service_key @370
+ ap_get_win32_interpreter @371
+ ap_is_rdirectory @372
+ ap_registry_get_server_root @373
+ ap_registry_get_service_conf @374
+ ap_registry_set_service_conf @375
+ ap_remove_spaces @376
+ ap_scan_script_header_err_strs @377
+ ap_start_shutdown @378
+ ap_start_restart @379
+ ap_stripprefix @380
+ ap_os_dso_load @381
+ ap_os_dso_error @382
+
+ ; Introduces with mod_ssl
+ ap_add_config_define @383
+ ap_global_ctx @384
+ ap_ctx_new @385
+ ap_ctx_get @386
+ ap_ctx_set @387
+ ap_hook_init @388
+ ap_hook_kill @389
+ ap_hook_configure @390
+ ap_hook_register_I @391
+ ap_hook_unregister_I @392
+ ap_hook_status @393
+ ap_hook_use @394
+ ap_hook_call @395
diff --git a/usr.sbin/httpd/src/ApacheCore.dsp b/usr.sbin/httpd/src/ApacheCore.dsp
index 511e5feefe1..e2a53643b3b 100644
--- a/usr.sbin/httpd/src/ApacheCore.dsp
+++ b/usr.sbin/httpd/src/ApacheCore.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheCore" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -17,13 +17,12 @@ CFG=ApacheCore - Win32 Release
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheCore - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheCore - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheCore - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheCore - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -39,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\CoreR"
-# PROP Intermediate_Dir ".\CoreR"
+# PROP Output_Dir "CoreR"
+# PROP Intermediate_Dir "CoreR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I ".\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I ".\include" /I ".\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -53,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 os\win32\ApacheOSR\ApacheOS.lib regex\release\regex.lib ap\Release\ap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
@@ -65,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\CoreD"
-# PROP Intermediate_Dir ".\CoreD"
+# PROP Output_Dir "CoreD"
+# PROP Intermediate_Dir "CoreD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I ".\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /FR /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I ".\include" /I ".\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -79,9 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 os\win32\ApacheOSD\ApacheOS.lib regex\debug\regex.lib ap\Debug\ap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# SUBTRACT LINK32 /map
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
+# ADD LINK32 kernel32.lib user32.lib advapi32.lib ws2_32.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /base:@"os\win32\BaseAddr.ref",ApacheCore
!ENDIF
@@ -266,15 +264,15 @@ SOURCE=.\os\win32\util_win32.c
# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
# Begin Source File
-SOURCE=.\include\alloc.h
+SOURCE=.\include\ap_alloc.h
# End Source File
# Begin Source File
-SOURCE=.\include\ap.h
+SOURCE=.\include\ap_config.h
# End Source File
# Begin Source File
-SOURCE=.\include\ap_md5.h
+SOURCE=.\include\ap_mmn.h
# End Source File
# Begin Source File
@@ -290,10 +288,6 @@ SOURCE=.\include\explain.h
# End Source File
# Begin Source File
-SOURCE=.\include\fnmatch.h
-# End Source File
-# Begin Source File
-
SOURCE=.\os\win32\getopt.h
# End Source File
# Begin Source File
@@ -385,10 +379,6 @@ SOURCE=.\include\util_script.h
SOURCE=.\include\util_uri.h
# End Source File
# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# Begin Group "Generated Files"
# PROP Default_Filter ""
diff --git a/usr.sbin/httpd/src/ApacheCore.mak b/usr.sbin/httpd/src/ApacheCore.mak
index 8b012c51223..f06ff86be49 100644
--- a/usr.sbin/httpd/src/ApacheCore.mak
+++ b/usr.sbin/httpd/src/ApacheCore.mak
@@ -28,16 +28,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheCore - Win32 Release"
OUTDIR=.\CoreR
INTDIR=.\CoreR
# Begin Custom Macros
-OutDir=.\.\CoreR
+OutDir=.\CoreR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -46,11 +42,19 @@ ALL : "$(OUTDIR)\ApacheCore.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheCore.dll"
+ALL : "regex - Win32 Release" "gen_uri_delims - Win32 Release"\
+ "gen_test_char - Win32 Release" "ApacheOS - Win32 Release" "ap - Win32 Release"\
+ "$(OUTDIR)\ApacheCore.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ap - Win32 ReleaseCLEAN" "ApacheOS - Win32 ReleaseCLEAN"\
+ "gen_test_char - Win32 ReleaseCLEAN" "gen_uri_delims - Win32 ReleaseCLEAN"\
+ "regex - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\alloc.obj"
-@erase "$(INTDIR)\buff.obj"
-@erase "$(INTDIR)\buildmark.obj"
@@ -96,27 +100,61 @@ CLEAN :
-@erase "$(OUTDIR)\ApacheCore.dll"
-@erase "$(OUTDIR)\ApacheCore.exp"
-@erase "$(OUTDIR)\ApacheCore.lib"
+ -@erase "$(OUTDIR)\ApacheCore.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I ".\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /Fp"$(INTDIR)\ApacheCore.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I ".\include" /I ".\os\win32" /D "NDEBUG" /D\
+ "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\CoreR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheCore.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=os\win32\ApacheOSR\ApacheOS.lib regex\release\regex.lib\
- ap\Release\ap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:windows /dll\
- /incremental:no /pdb:"$(OUTDIR)\ApacheCore.pdb" /machine:I386\
- /def:".\ApacheCore.def" /out:"$(OUTDIR)\ApacheCore.dll"\
- /implib:"$(OUTDIR)\ApacheCore.lib"
+LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib /nologo\
+ /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\ApacheCore.pdb"\
+ /map:"$(INTDIR)\ApacheCore.map" /machine:I386 /def:".\ApacheCore.def"\
+ /out:"$(OUTDIR)\ApacheCore.dll" /implib:"$(OUTDIR)\ApacheCore.lib"\
+ /base:@"os\win32\BaseAddr.ref",ApacheCore
DEF_FILE= \
".\ApacheCore.def"
LINK32_OBJS= \
@@ -160,7 +198,10 @@ LINK32_OBJS= \
"$(INTDIR)\util_md5.obj" \
"$(INTDIR)\util_script.obj" \
"$(INTDIR)\util_uri.obj" \
- "$(INTDIR)\util_win32.obj"
+ "$(INTDIR)\util_win32.obj" \
+ ".\ap\Release\ap.lib" \
+ ".\os\win32\ApacheOSR\ApacheOS.lib" \
+ ".\regex\Release\regex.lib"
"$(OUTDIR)\ApacheCore.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -172,177 +213,131 @@ LINK32_OBJS= \
OUTDIR=.\CoreD
INTDIR=.\CoreD
# Begin Custom Macros
-OutDir=.\.\CoreD
+OutDir=.\CoreD
# End Custom Macros
!IF "$(RECURSE)" == "0"
-ALL : "$(OUTDIR)\ApacheCore.dll" "$(OUTDIR)\ApacheCore.bsc"
+ALL : "$(OUTDIR)\ApacheCore.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheCore.dll" "$(OUTDIR)\ApacheCore.bsc"
+ALL : "regex - Win32 Debug" "gen_uri_delims - Win32 Debug"\
+ "gen_test_char - Win32 Debug" "ApacheOS - Win32 Debug" "ap - Win32 Debug"\
+ "$(OUTDIR)\ApacheCore.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ap - Win32 DebugCLEAN" "ApacheOS - Win32 DebugCLEAN"\
+ "gen_test_char - Win32 DebugCLEAN" "gen_uri_delims - Win32 DebugCLEAN"\
+ "regex - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\alloc.obj"
- -@erase "$(INTDIR)\alloc.sbr"
-@erase "$(INTDIR)\buff.obj"
- -@erase "$(INTDIR)\buff.sbr"
-@erase "$(INTDIR)\buildmark.obj"
- -@erase "$(INTDIR)\buildmark.sbr"
-@erase "$(INTDIR)\getopt.obj"
- -@erase "$(INTDIR)\getopt.sbr"
-@erase "$(INTDIR)\http_config.obj"
- -@erase "$(INTDIR)\http_config.sbr"
-@erase "$(INTDIR)\http_core.obj"
- -@erase "$(INTDIR)\http_core.sbr"
-@erase "$(INTDIR)\http_log.obj"
- -@erase "$(INTDIR)\http_log.sbr"
-@erase "$(INTDIR)\http_main.obj"
- -@erase "$(INTDIR)\http_main.sbr"
-@erase "$(INTDIR)\http_protocol.obj"
- -@erase "$(INTDIR)\http_protocol.sbr"
-@erase "$(INTDIR)\http_request.obj"
- -@erase "$(INTDIR)\http_request.sbr"
-@erase "$(INTDIR)\http_vhost.obj"
- -@erase "$(INTDIR)\http_vhost.sbr"
-@erase "$(INTDIR)\mod_access.obj"
- -@erase "$(INTDIR)\mod_access.sbr"
-@erase "$(INTDIR)\mod_actions.obj"
- -@erase "$(INTDIR)\mod_actions.sbr"
-@erase "$(INTDIR)\mod_alias.obj"
- -@erase "$(INTDIR)\mod_alias.sbr"
-@erase "$(INTDIR)\mod_asis.obj"
- -@erase "$(INTDIR)\mod_asis.sbr"
-@erase "$(INTDIR)\mod_auth.obj"
- -@erase "$(INTDIR)\mod_auth.sbr"
-@erase "$(INTDIR)\mod_autoindex.obj"
- -@erase "$(INTDIR)\mod_autoindex.sbr"
-@erase "$(INTDIR)\mod_cgi.obj"
- -@erase "$(INTDIR)\mod_cgi.sbr"
-@erase "$(INTDIR)\mod_dir.obj"
- -@erase "$(INTDIR)\mod_dir.sbr"
-@erase "$(INTDIR)\mod_env.obj"
- -@erase "$(INTDIR)\mod_env.sbr"
-@erase "$(INTDIR)\mod_imap.obj"
- -@erase "$(INTDIR)\mod_imap.sbr"
-@erase "$(INTDIR)\mod_include.obj"
- -@erase "$(INTDIR)\mod_include.sbr"
-@erase "$(INTDIR)\mod_isapi.obj"
- -@erase "$(INTDIR)\mod_isapi.sbr"
-@erase "$(INTDIR)\mod_log_config.obj"
- -@erase "$(INTDIR)\mod_log_config.sbr"
-@erase "$(INTDIR)\mod_mime.obj"
- -@erase "$(INTDIR)\mod_mime.sbr"
-@erase "$(INTDIR)\mod_negotiation.obj"
- -@erase "$(INTDIR)\mod_negotiation.sbr"
-@erase "$(INTDIR)\mod_setenvif.obj"
- -@erase "$(INTDIR)\mod_setenvif.sbr"
-@erase "$(INTDIR)\mod_so.obj"
- -@erase "$(INTDIR)\mod_so.sbr"
-@erase "$(INTDIR)\mod_userdir.obj"
- -@erase "$(INTDIR)\mod_userdir.sbr"
-@erase "$(INTDIR)\modules.obj"
- -@erase "$(INTDIR)\modules.sbr"
-@erase "$(INTDIR)\multithread.obj"
- -@erase "$(INTDIR)\multithread.sbr"
-@erase "$(INTDIR)\readdir.obj"
- -@erase "$(INTDIR)\readdir.sbr"
-@erase "$(INTDIR)\registry.obj"
- -@erase "$(INTDIR)\registry.sbr"
-@erase "$(INTDIR)\rfc1413.obj"
- -@erase "$(INTDIR)\rfc1413.sbr"
-@erase "$(INTDIR)\service.obj"
- -@erase "$(INTDIR)\service.sbr"
-@erase "$(INTDIR)\util.obj"
- -@erase "$(INTDIR)\util.sbr"
-@erase "$(INTDIR)\util_date.obj"
- -@erase "$(INTDIR)\util_date.sbr"
-@erase "$(INTDIR)\util_md5.obj"
- -@erase "$(INTDIR)\util_md5.sbr"
-@erase "$(INTDIR)\util_script.obj"
- -@erase "$(INTDIR)\util_script.sbr"
-@erase "$(INTDIR)\util_uri.obj"
- -@erase "$(INTDIR)\util_uri.sbr"
-@erase "$(INTDIR)\util_win32.obj"
- -@erase "$(INTDIR)\util_win32.sbr"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
- -@erase "$(OUTDIR)\ApacheCore.bsc"
-@erase "$(OUTDIR)\ApacheCore.dll"
-@erase "$(OUTDIR)\ApacheCore.exp"
-@erase "$(OUTDIR)\ApacheCore.ilk"
-@erase "$(OUTDIR)\ApacheCore.lib"
+ -@erase "$(OUTDIR)\ApacheCore.map"
-@erase "$(OUTDIR)\ApacheCore.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I ".\include" /D "_DEBUG" /D "WIN32"\
- /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /FR"$(INTDIR)\\"\
- /Fp"$(INTDIR)\ApacheCore.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I ".\include" /I ".\os\win32" /D\
+ "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "WIN32_LEAN_AND_MEAN" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\CoreD/
-CPP_SBRS=.\CoreD/
+CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheCore.bsc"
BSC32_SBRS= \
- "$(INTDIR)\alloc.sbr" \
- "$(INTDIR)\buff.sbr" \
- "$(INTDIR)\buildmark.sbr" \
- "$(INTDIR)\getopt.sbr" \
- "$(INTDIR)\http_config.sbr" \
- "$(INTDIR)\http_core.sbr" \
- "$(INTDIR)\http_log.sbr" \
- "$(INTDIR)\http_main.sbr" \
- "$(INTDIR)\http_protocol.sbr" \
- "$(INTDIR)\http_request.sbr" \
- "$(INTDIR)\http_vhost.sbr" \
- "$(INTDIR)\mod_access.sbr" \
- "$(INTDIR)\mod_actions.sbr" \
- "$(INTDIR)\mod_alias.sbr" \
- "$(INTDIR)\mod_asis.sbr" \
- "$(INTDIR)\mod_auth.sbr" \
- "$(INTDIR)\mod_autoindex.sbr" \
- "$(INTDIR)\mod_cgi.sbr" \
- "$(INTDIR)\mod_dir.sbr" \
- "$(INTDIR)\mod_env.sbr" \
- "$(INTDIR)\mod_imap.sbr" \
- "$(INTDIR)\mod_include.sbr" \
- "$(INTDIR)\mod_isapi.sbr" \
- "$(INTDIR)\mod_log_config.sbr" \
- "$(INTDIR)\mod_mime.sbr" \
- "$(INTDIR)\mod_negotiation.sbr" \
- "$(INTDIR)\mod_setenvif.sbr" \
- "$(INTDIR)\mod_so.sbr" \
- "$(INTDIR)\mod_userdir.sbr" \
- "$(INTDIR)\modules.sbr" \
- "$(INTDIR)\multithread.sbr" \
- "$(INTDIR)\readdir.sbr" \
- "$(INTDIR)\registry.sbr" \
- "$(INTDIR)\rfc1413.sbr" \
- "$(INTDIR)\service.sbr" \
- "$(INTDIR)\util.sbr" \
- "$(INTDIR)\util_date.sbr" \
- "$(INTDIR)\util_md5.sbr" \
- "$(INTDIR)\util_script.sbr" \
- "$(INTDIR)\util_uri.sbr" \
- "$(INTDIR)\util_win32.sbr"
-
-"$(OUTDIR)\ApacheCore.bsc" : "$(OUTDIR)" $(BSC32_SBRS)
- $(BSC32) @<<
- $(BSC32_FLAGS) $(BSC32_SBRS)
-<<
-
+
LINK32=link.exe
-LINK32_FLAGS=os\win32\ApacheOSD\ApacheOS.lib regex\debug\regex.lib\
- ap\Debug\ap.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:windows /dll\
- /incremental:yes /pdb:"$(OUTDIR)\ApacheCore.pdb" /debug /machine:I386\
- /def:".\ApacheCore.def" /out:"$(OUTDIR)\ApacheCore.dll"\
- /implib:"$(OUTDIR)\ApacheCore.lib"
+LINK32_FLAGS=kernel32.lib user32.lib advapi32.lib ws2_32.lib /nologo\
+ /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheCore.pdb"\
+ /map:"$(INTDIR)\ApacheCore.map" /debug /machine:I386 /def:".\ApacheCore.def"\
+ /out:"$(OUTDIR)\ApacheCore.dll" /implib:"$(OUTDIR)\ApacheCore.lib"\
+ /base:@"os\win32\BaseAddr.ref",ApacheCore
DEF_FILE= \
".\ApacheCore.def"
LINK32_OBJS= \
@@ -386,7 +381,10 @@ LINK32_OBJS= \
"$(INTDIR)\util_md5.obj" \
"$(INTDIR)\util_script.obj" \
"$(INTDIR)\util_uri.obj" \
- "$(INTDIR)\util_win32.obj"
+ "$(INTDIR)\util_win32.obj" \
+ ".\ap\Debug\ap.lib" \
+ ".\os\win32\ApacheOSD\ApacheOS.lib" \
+ ".\regex\Debug\regex.lib"
"$(OUTDIR)\ApacheCore.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -395,46 +393,13 @@ LINK32_OBJS= \
!ENDIF
-.c{$(CPP_OBJS)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(CPP_OBJS)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(CPP_OBJS)}.obj::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.c{$(CPP_SBRS)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cpp{$(CPP_SBRS)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
-.cxx{$(CPP_SBRS)}.sbr::
- $(CPP) @<<
- $(CPP_PROJ) $<
-<<
-
!IF "$(CFG)" == "ApacheCore - Win32 Release" || "$(CFG)" ==\
"ApacheCore - Win32 Debug"
SOURCE=.\main\alloc.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_ALLOC=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -447,43 +412,20 @@ DEP_CPP_ALLOC=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\alloc.obj" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_ALLOC=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\multithread.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_ALLOC=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\alloc.obj" "$(INTDIR)\alloc.sbr" : $(SOURCE) $(DEP_CPP_ALLOC)\
- "$(INTDIR)"
+"$(INTDIR)\alloc.obj" : $(SOURCE) $(DEP_CPP_ALLOC) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\buff.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_BUFF_=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -496,43 +438,20 @@ DEP_CPP_BUFF_=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\buff.obj" : $(SOURCE) $(DEP_CPP_BUFF_) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_BUFF_=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_BUFF_=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\buff.obj" "$(INTDIR)\buff.sbr" : $(SOURCE) $(DEP_CPP_BUFF_)\
- "$(INTDIR)"
+"$(INTDIR)\buff.obj" : $(SOURCE) $(DEP_CPP_BUFF_) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\buildmark.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_BUILD=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -543,57 +462,25 @@ DEP_CPP_BUILD=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\buildmark.obj" : $(SOURCE) $(DEP_CPP_BUILD) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_BUILD=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_BUILD=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\buildmark.obj" "$(INTDIR)\buildmark.sbr" : $(SOURCE)\
- $(DEP_CPP_BUILD) "$(INTDIR)"
+"$(INTDIR)\buildmark.obj" : $(SOURCE) $(DEP_CPP_BUILD) "$(INTDIR)"
-!ENDIF
-
SOURCE=.\os\win32\getopt.c
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
-
"$(INTDIR)\getopt.obj" : $(SOURCE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-
-"$(INTDIR)\getopt.obj" "$(INTDIR)\getopt.sbr" : $(SOURCE) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
SOURCE=.\main\http_config.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_HTTP_=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -611,48 +498,20 @@ DEP_CPP_HTTP_=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\http_config.obj" : $(SOURCE) $(DEP_CPP_HTTP_) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_HTTP_=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\explain.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_request.h"\
- ".\include\http_vhost.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_HTTP_=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\http_config.obj" "$(INTDIR)\http_config.sbr" : $(SOURCE)\
- $(DEP_CPP_HTTP_) "$(INTDIR)"
+"$(INTDIR)\http_config.obj" : $(SOURCE) $(DEP_CPP_HTTP_) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\http_core.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_HTTP_C=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_md5.h"\
@@ -676,54 +535,20 @@ DEP_CPP_HTTP_C=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\http_core.obj" : $(SOURCE) $(DEP_CPP_HTTP_C) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_HTTP_C=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_md5.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\fnmatch.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\http_vhost.h"\
- ".\include\httpd.h"\
- ".\include\rfc1413.h"\
- ".\include\scoreboard.h"\
- ".\include\util_md5.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_HTTP_C=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\http_core.obj" "$(INTDIR)\http_core.sbr" : $(SOURCE)\
- $(DEP_CPP_HTTP_C) "$(INTDIR)"
+"$(INTDIR)\http_core.obj" : $(SOURCE) $(DEP_CPP_HTTP_C) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\http_log.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_HTTP_L=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -739,46 +564,20 @@ DEP_CPP_HTTP_L=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\http_log.obj" : $(SOURCE) $(DEP_CPP_HTTP_L) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_HTTP_L=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_HTTP_L=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\http_log.obj" "$(INTDIR)\http_log.sbr" : $(SOURCE) $(DEP_CPP_HTTP_L)\
- "$(INTDIR)"
+"$(INTDIR)\http_log.obj" : $(SOURCE) $(DEP_CPP_HTTP_L) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\http_main.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_HTTP_M=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -804,56 +603,21 @@ DEP_CPP_HTTP_M=\
".\os\win32\registry.h"\
".\os\win32\service.h"\
-
-"$(INTDIR)\http_main.obj" : $(SOURCE) $(DEP_CPP_HTTP_M) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_HTTP_M=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\explain.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\http_vhost.h"\
- ".\include\httpd.h"\
- ".\include\multithread.h"\
- ".\include\scoreboard.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\getopt.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
- ".\os\win32\registry.h"\
- ".\os\win32\service.h"\
+NODEP_CPP_HTTP_M=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
+ ".\main\xmlparse.h"\
-"$(INTDIR)\http_main.obj" "$(INTDIR)\http_main.sbr" : $(SOURCE)\
- $(DEP_CPP_HTTP_M) "$(INTDIR)"
+"$(INTDIR)\http_main.obj" : $(SOURCE) $(DEP_CPP_HTTP_M) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\http_protocol.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_HTTP_P=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -873,50 +637,20 @@ DEP_CPP_HTTP_P=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\http_protocol.obj" : $(SOURCE) $(DEP_CPP_HTTP_P) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_HTTP_P=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\http_vhost.h"\
- ".\include\httpd.h"\
- ".\include\util_date.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_HTTP_P=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\http_protocol.obj" "$(INTDIR)\http_protocol.sbr" : $(SOURCE)\
- $(DEP_CPP_HTTP_P) "$(INTDIR)"
+"$(INTDIR)\http_protocol.obj" : $(SOURCE) $(DEP_CPP_HTTP_P) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\http_request.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_HTTP_R=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -936,50 +670,20 @@ DEP_CPP_HTTP_R=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\http_request.obj" : $(SOURCE) $(DEP_CPP_HTTP_R) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_HTTP_R=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\fnmatch.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\scoreboard.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_HTTP_R=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\http_request.obj" "$(INTDIR)\http_request.sbr" : $(SOURCE)\
- $(DEP_CPP_HTTP_R) "$(INTDIR)"
+"$(INTDIR)\http_request.obj" : $(SOURCE) $(DEP_CPP_HTTP_R) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\http_vhost.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_HTTP_V=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -995,46 +699,20 @@ DEP_CPP_HTTP_V=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\http_vhost.obj" : $(SOURCE) $(DEP_CPP_HTTP_V) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_HTTP_V=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_log.h"\
- ".\include\http_protocol.h"\
- ".\include\http_vhost.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_HTTP_V=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\http_vhost.obj" "$(INTDIR)\http_vhost.sbr" : $(SOURCE)\
- $(DEP_CPP_HTTP_V) "$(INTDIR)"
+"$(INTDIR)\http_vhost.obj" : $(SOURCE) $(DEP_CPP_HTTP_V) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_access.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_A=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1049,45 +727,20 @@ DEP_CPP_MOD_A=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_access.obj" : $(SOURCE) $(DEP_CPP_MOD_A) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_A=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_A=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_access.obj" "$(INTDIR)\mod_access.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_A) "$(INTDIR)"
+"$(INTDIR)\mod_access.obj" : $(SOURCE) $(DEP_CPP_MOD_A) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_actions.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_AC=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1105,48 +758,20 @@ DEP_CPP_MOD_AC=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_actions.obj" : $(SOURCE) $(DEP_CPP_MOD_AC) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_AC=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_AC=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_actions.obj" "$(INTDIR)\mod_actions.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_AC) "$(INTDIR)"
+"$(INTDIR)\mod_actions.obj" : $(SOURCE) $(DEP_CPP_MOD_AC) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_alias.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_AL=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1158,42 +783,20 @@ DEP_CPP_MOD_AL=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_alias.obj" : $(SOURCE) $(DEP_CPP_MOD_AL) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_AL=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_AL=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_alias.obj" "$(INTDIR)\mod_alias.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_AL) "$(INTDIR)"
+"$(INTDIR)\mod_alias.obj" : $(SOURCE) $(DEP_CPP_MOD_AL) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_asis.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_AS=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1210,50 +813,22 @@ DEP_CPP_MOD_AS=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_asis.obj" : $(SOURCE) $(DEP_CPP_MOD_AS) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_AS=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_AS=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_asis.obj" "$(INTDIR)\mod_asis.sbr" : $(SOURCE) $(DEP_CPP_MOD_AS)\
- "$(INTDIR)"
+"$(INTDIR)\mod_asis.obj" : $(SOURCE) $(DEP_CPP_MOD_AS) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_auth.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_AU=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
- ".\include\ap_md5.h"\
".\include\ap_mmn.h"\
".\include\buff.h"\
".\include\hsregex.h"\
@@ -1266,46 +841,20 @@ DEP_CPP_MOD_AU=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_auth.obj" : $(SOURCE) $(DEP_CPP_MOD_AU) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_AU=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_md5.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_protocol.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_AU=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_auth.obj" "$(INTDIR)\mod_auth.sbr" : $(SOURCE) $(DEP_CPP_MOD_AU)\
- "$(INTDIR)"
+"$(INTDIR)\mod_auth.obj" : $(SOURCE) $(DEP_CPP_MOD_AU) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_autoindex.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_AUT=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1324,49 +873,20 @@ DEP_CPP_MOD_AUT=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_autoindex.obj" : $(SOURCE) $(DEP_CPP_MOD_AUT) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_AUT=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\fnmatch.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_AUT=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_autoindex.obj" "$(INTDIR)\mod_autoindex.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_AUT) "$(INTDIR)"
+"$(INTDIR)\mod_autoindex.obj" : $(SOURCE) $(DEP_CPP_MOD_AUT) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_cgi.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_C=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1385,49 +905,20 @@ DEP_CPP_MOD_C=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_cgi.obj" : $(SOURCE) $(DEP_CPP_MOD_C) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_C=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_C=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_cgi.obj" "$(INTDIR)\mod_cgi.sbr" : $(SOURCE) $(DEP_CPP_MOD_C)\
- "$(INTDIR)"
+"$(INTDIR)\mod_cgi.obj" : $(SOURCE) $(DEP_CPP_MOD_C) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_dir.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_D=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1445,48 +936,20 @@ DEP_CPP_MOD_D=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_dir.obj" : $(SOURCE) $(DEP_CPP_MOD_D) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_D=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_D=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_dir.obj" "$(INTDIR)\mod_dir.sbr" : $(SOURCE) $(DEP_CPP_MOD_D)\
- "$(INTDIR)"
+"$(INTDIR)\mod_dir.obj" : $(SOURCE) $(DEP_CPP_MOD_D) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_env.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_E=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1498,42 +961,20 @@ DEP_CPP_MOD_E=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_env.obj" : $(SOURCE) $(DEP_CPP_MOD_E) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_E=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_E=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_env.obj" "$(INTDIR)\mod_env.sbr" : $(SOURCE) $(DEP_CPP_MOD_E)\
- "$(INTDIR)"
+"$(INTDIR)\mod_env.obj" : $(SOURCE) $(DEP_CPP_MOD_E) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_imap.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_I=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1551,48 +992,20 @@ DEP_CPP_MOD_I=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_imap.obj" : $(SOURCE) $(DEP_CPP_MOD_I) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_I=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_I=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_imap.obj" "$(INTDIR)\mod_imap.sbr" : $(SOURCE) $(DEP_CPP_MOD_I)\
- "$(INTDIR)"
+"$(INTDIR)\mod_imap.obj" : $(SOURCE) $(DEP_CPP_MOD_I) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_include.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_IN=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1610,48 +1023,22 @@ DEP_CPP_MOD_IN=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_include.obj" : $(SOURCE) $(DEP_CPP_MOD_IN) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_IN=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_IN=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
+ ".\modules\standard\config.h"\
+ ".\modules\standard\modules\perl\mod_perl.h"\
-"$(INTDIR)\mod_include.obj" "$(INTDIR)\mod_include.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_IN) "$(INTDIR)"
+"$(INTDIR)\mod_include.obj" : $(SOURCE) $(DEP_CPP_MOD_IN) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\os\win32\mod_isapi.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_IS=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1668,47 +1055,20 @@ DEP_CPP_MOD_IS=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_isapi.obj" : $(SOURCE) $(DEP_CPP_MOD_IS) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_IS=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_IS=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_isapi.obj" "$(INTDIR)\mod_isapi.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_IS) "$(INTDIR)"
+"$(INTDIR)\mod_isapi.obj" : $(SOURCE) $(DEP_CPP_MOD_IS) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_log_config.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_L=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1722,44 +1082,20 @@ DEP_CPP_MOD_L=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_log_config.obj" : $(SOURCE) $(DEP_CPP_MOD_L) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_L=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_L=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_log_config.obj" "$(INTDIR)\mod_log_config.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_L) "$(INTDIR)"
+"$(INTDIR)\mod_log_config.obj" : $(SOURCE) $(DEP_CPP_MOD_L) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_mime.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_M=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1772,43 +1108,20 @@ DEP_CPP_MOD_M=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_mime.obj" : $(SOURCE) $(DEP_CPP_MOD_M) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_M=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_M=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_mime.obj" "$(INTDIR)\mod_mime.sbr" : $(SOURCE) $(DEP_CPP_MOD_M)\
- "$(INTDIR)"
+"$(INTDIR)\mod_mime.obj" : $(SOURCE) $(DEP_CPP_MOD_M) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_negotiation.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_N=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1825,47 +1138,20 @@ DEP_CPP_MOD_N=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_negotiation.obj" : $(SOURCE) $(DEP_CPP_MOD_N) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_N=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_N=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_negotiation.obj" "$(INTDIR)\mod_negotiation.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_N) "$(INTDIR)"
+"$(INTDIR)\mod_negotiation.obj" : $(SOURCE) $(DEP_CPP_MOD_N) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_setenvif.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_S=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1879,44 +1165,20 @@ DEP_CPP_MOD_S=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_setenvif.obj" : $(SOURCE) $(DEP_CPP_MOD_S) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_S=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_S=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_setenvif.obj" "$(INTDIR)\mod_setenvif.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_S) "$(INTDIR)"
+"$(INTDIR)\mod_setenvif.obj" : $(SOURCE) $(DEP_CPP_MOD_S) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_so.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_SO=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1929,43 +1191,20 @@ DEP_CPP_MOD_SO=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_so.obj" : $(SOURCE) $(DEP_CPP_MOD_SO) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_SO=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_SO=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_so.obj" "$(INTDIR)\mod_so.sbr" : $(SOURCE) $(DEP_CPP_MOD_SO)\
- "$(INTDIR)"
+"$(INTDIR)\mod_so.obj" : $(SOURCE) $(DEP_CPP_MOD_SO) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\modules\standard\mod_userdir.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MOD_U=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -1977,42 +1216,20 @@ DEP_CPP_MOD_U=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\mod_userdir.obj" : $(SOURCE) $(DEP_CPP_MOD_U) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MOD_U=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MOD_U=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\mod_userdir.obj" "$(INTDIR)\mod_userdir.sbr" : $(SOURCE)\
- $(DEP_CPP_MOD_U) "$(INTDIR)"
+"$(INTDIR)\mod_userdir.obj" : $(SOURCE) $(DEP_CPP_MOD_U) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\os\win32\modules.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MODUL=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -2024,39 +1241,17 @@ DEP_CPP_MODUL=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\modules.obj" : $(SOURCE) $(DEP_CPP_MODUL) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MODUL=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_config.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_MODUL=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\modules.obj" "$(INTDIR)\modules.sbr" : $(SOURCE) $(DEP_CPP_MODUL)\
- "$(INTDIR)"
+"$(INTDIR)\modules.obj" : $(SOURCE) $(DEP_CPP_MODUL) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\os\win32\multithread.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_MULTI=\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
@@ -2065,58 +1260,27 @@ DEP_CPP_MULTI=\
".\include\multithread.h"\
".\os\win32\os.h"\
-
-"$(INTDIR)\multithread.obj" : $(SOURCE) $(DEP_CPP_MULTI) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_MULTI=\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\hsregex.h"\
- ".\include\multithread.h"\
- ".\os\win32\os.h"\
+NODEP_CPP_MULTI=\
+ ".\include\ap_config_auto.h"\
-"$(INTDIR)\multithread.obj" "$(INTDIR)\multithread.sbr" : $(SOURCE)\
- $(DEP_CPP_MULTI) "$(INTDIR)"
+"$(INTDIR)\multithread.obj" : $(SOURCE) $(DEP_CPP_MULTI) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\os\win32\readdir.c
DEP_CPP_READD=\
".\os\win32\readdir.h"\
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
-
"$(INTDIR)\readdir.obj" : $(SOURCE) $(DEP_CPP_READD) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-
-"$(INTDIR)\readdir.obj" "$(INTDIR)\readdir.sbr" : $(SOURCE) $(DEP_CPP_READD)\
- "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
SOURCE=.\os\win32\registry.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_REGIS=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -2128,42 +1292,20 @@ DEP_CPP_REGIS=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\registry.obj" : $(SOURCE) $(DEP_CPP_REGIS) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_REGIS=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_REGIS=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\registry.obj" "$(INTDIR)\registry.sbr" : $(SOURCE) $(DEP_CPP_REGIS)\
- "$(INTDIR)"
+"$(INTDIR)\registry.obj" : $(SOURCE) $(DEP_CPP_REGIS) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\rfc1413.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_RFC14=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -2177,44 +1319,20 @@ DEP_CPP_RFC14=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\rfc1413.obj" : $(SOURCE) $(DEP_CPP_RFC14) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_RFC14=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\httpd.h"\
- ".\include\rfc1413.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_RFC14=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\rfc1413.obj" "$(INTDIR)\rfc1413.sbr" : $(SOURCE) $(DEP_CPP_RFC14)\
- "$(INTDIR)"
+"$(INTDIR)\rfc1413.obj" : $(SOURCE) $(DEP_CPP_RFC14) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\os\win32\service.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_SERVI=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -2231,47 +1349,20 @@ DEP_CPP_SERVI=\
".\os\win32\registry.h"\
".\os\win32\service.h"\
-
-"$(INTDIR)\service.obj" : $(SOURCE) $(DEP_CPP_SERVI) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_SERVI=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\httpd.h"\
- ".\include\multithread.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
- ".\os\win32\registry.h"\
- ".\os\win32\service.h"\
+NODEP_CPP_SERVI=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\service.obj" "$(INTDIR)\service.sbr" : $(SOURCE) $(DEP_CPP_SERVI)\
- "$(INTDIR)"
+"$(INTDIR)\service.obj" : $(SOURCE) $(DEP_CPP_SERVI) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\util.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_UTIL_=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -2285,37 +1376,16 @@ DEP_CPP_UTIL_=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\util.obj" : $(SOURCE) $(DEP_CPP_UTIL_) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_UTIL_=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\main\test_char.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_UTIL_=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\util.obj" "$(INTDIR)\util.sbr" : $(SOURCE) $(DEP_CPP_UTIL_)\
- "$(INTDIR)"
+"$(INTDIR)\util.obj" : $(SOURCE) $(DEP_CPP_UTIL_) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\util_date.c
DEP_CPP_UTIL_D=\
".\include\ap_config.h"\
@@ -2325,31 +1395,18 @@ DEP_CPP_UTIL_D=\
".\include\util_date.h"\
".\os\win32\os.h"\
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
+NODEP_CPP_UTIL_D=\
+ ".\include\ap_config_auto.h"\
+
"$(INTDIR)\util_date.obj" : $(SOURCE) $(DEP_CPP_UTIL_D) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-
-"$(INTDIR)\util_date.obj" "$(INTDIR)\util_date.sbr" : $(SOURCE)\
- $(DEP_CPP_UTIL_D) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
SOURCE=.\main\util_md5.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_UTIL_M=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_md5.h"\
@@ -2362,43 +1419,20 @@ DEP_CPP_UTIL_M=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\util_md5.obj" : $(SOURCE) $(DEP_CPP_UTIL_M) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_UTIL_M=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_md5.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\httpd.h"\
- ".\include\util_md5.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_UTIL_M=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\util_md5.obj" "$(INTDIR)\util_md5.sbr" : $(SOURCE) $(DEP_CPP_UTIL_M)\
- "$(INTDIR)"
+"$(INTDIR)\util_md5.obj" : $(SOURCE) $(DEP_CPP_UTIL_M) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\util_script.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_UTIL_S=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -2418,50 +1452,20 @@ DEP_CPP_UTIL_S=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
-
-"$(INTDIR)\util_script.obj" : $(SOURCE) $(DEP_CPP_UTIL_S) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_UTIL_S=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
- ".\include\http_config.h"\
- ".\include\http_core.h"\
- ".\include\http_log.h"\
- ".\include\http_main.h"\
- ".\include\http_protocol.h"\
- ".\include\http_request.h"\
- ".\include\httpd.h"\
- ".\include\util_date.h"\
- ".\include\util_script.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
+NODEP_CPP_UTIL_S=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
-"$(INTDIR)\util_script.obj" "$(INTDIR)\util_script.sbr" : $(SOURCE)\
- $(DEP_CPP_UTIL_S) "$(INTDIR)"
+"$(INTDIR)\util_script.obj" : $(SOURCE) $(DEP_CPP_UTIL_S) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\main\util_uri.c
-
-!IF "$(CFG)" == "ApacheCore - Win32 Release"
-
DEP_CPP_UTIL_U=\
- ".\include\alloc.h"\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
@@ -2475,81 +1479,181 @@ DEP_CPP_UTIL_U=\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
+NODEP_CPP_UTIL_U=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
+
"$(INTDIR)\util_uri.obj" : $(SOURCE) $(DEP_CPP_UTIL_U) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-
-DEP_CPP_UTIL_U=\
- ".\include\alloc.h"\
+SOURCE=.\os\win32\util_win32.c
+DEP_CPP_UTIL_W=\
".\include\ap.h"\
+ ".\include\ap_alloc.h"\
".\include\ap_config.h"\
".\include\ap_ctype.h"\
".\include\ap_mmn.h"\
".\include\buff.h"\
".\include\hsregex.h"\
- ".\include\http_conf_globals.h"\
".\include\http_log.h"\
".\include\httpd.h"\
".\include\util_uri.h"\
- ".\main\uri_delims.h"\
".\os\win32\os.h"\
".\os\win32\readdir.h"\
+NODEP_CPP_UTIL_W=\
+ ".\include\ap_config_auto.h"\
+ ".\include\ebcdic.h"\
+ ".\include\sfio.h"\
+
-"$(INTDIR)\util_uri.obj" "$(INTDIR)\util_uri.sbr" : $(SOURCE) $(DEP_CPP_UTIL_U)\
- "$(INTDIR)"
+"$(INTDIR)\util_win32.obj" : $(SOURCE) $(DEP_CPP_UTIL_W) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
+!IF "$(CFG)" == "ApacheCore - Win32 Release"
+
+"ap - Win32 Release" :
+ cd ".\ap"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ap.mak" CFG="ap - Win32 Release"
+ cd ".."
+
+"ap - Win32 ReleaseCLEAN" :
+ cd ".\ap"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ap.mak" CFG="ap - Win32 Release" RECURSE=1\
+
+ cd ".."
+
+!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
+
+"ap - Win32 Debug" :
+ cd ".\ap"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ap.mak" CFG="ap - Win32 Debug"
+ cd ".."
+
+"ap - Win32 DebugCLEAN" :
+ cd ".\ap"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ap.mak" CFG="ap - Win32 Debug" RECURSE=1
+ cd ".."
+
!ENDIF
-SOURCE=.\os\win32\util_win32.c
+!IF "$(CFG)" == "ApacheCore - Win32 Release"
+
+"ApacheOS - Win32 Release" :
+ cd ".\os\win32"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheOS.mak" CFG="ApacheOS - Win32 Release"
+ cd "..\.."
+
+"ApacheOS - Win32 ReleaseCLEAN" :
+ cd ".\os\win32"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheOS.mak"\
+ CFG="ApacheOS - Win32 Release" RECURSE=1
+ cd "..\.."
+
+!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
+
+"ApacheOS - Win32 Debug" :
+ cd ".\os\win32"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheOS.mak" CFG="ApacheOS - Win32 Debug"
+ cd "..\.."
+
+"ApacheOS - Win32 DebugCLEAN" :
+ cd ".\os\win32"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheOS.mak" CFG="ApacheOS - Win32 Debug"\
+ RECURSE=1
+ cd "..\.."
+
+!ENDIF
!IF "$(CFG)" == "ApacheCore - Win32 Release"
-DEP_CPP_UTIL_W=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
-
+"gen_test_char - Win32 Release" :
+ cd ".\main"
+ $(MAKE) /$(MAKEFLAGS) /F ".\gen_test_char.mak"\
+ CFG="gen_test_char - Win32 Release"
+ cd ".."
-"$(INTDIR)\util_win32.obj" : $(SOURCE) $(DEP_CPP_UTIL_W) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"gen_test_char - Win32 ReleaseCLEAN" :
+ cd ".\main"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\gen_test_char.mak"\
+ CFG="gen_test_char - Win32 Release" RECURSE=1
+ cd ".."
+
+!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
+
+"gen_test_char - Win32 Debug" :
+ cd ".\main"
+ $(MAKE) /$(MAKEFLAGS) /F ".\gen_test_char.mak"\
+ CFG="gen_test_char - Win32 Debug"
+ cd ".."
+"gen_test_char - Win32 DebugCLEAN" :
+ cd ".\main"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\gen_test_char.mak"\
+ CFG="gen_test_char - Win32 Debug" RECURSE=1
+ cd ".."
+
+!ENDIF
+
+!IF "$(CFG)" == "ApacheCore - Win32 Release"
+
+"gen_uri_delims - Win32 Release" :
+ cd ".\main"
+ $(MAKE) /$(MAKEFLAGS) /F ".\gen_uri_delims.mak"\
+ CFG="gen_uri_delims - Win32 Release"
+ cd ".."
+
+"gen_uri_delims - Win32 ReleaseCLEAN" :
+ cd ".\main"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\gen_uri_delims.mak"\
+ CFG="gen_uri_delims - Win32 Release" RECURSE=1
+ cd ".."
!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
-DEP_CPP_UTIL_W=\
- ".\include\alloc.h"\
- ".\include\ap.h"\
- ".\include\ap_config.h"\
- ".\include\ap_ctype.h"\
- ".\include\ap_mmn.h"\
- ".\include\buff.h"\
- ".\include\hsregex.h"\
- ".\include\http_log.h"\
- ".\include\httpd.h"\
- ".\include\util_uri.h"\
- ".\os\win32\os.h"\
- ".\os\win32\readdir.h"\
-
+"gen_uri_delims - Win32 Debug" :
+ cd ".\main"
+ $(MAKE) /$(MAKEFLAGS) /F ".\gen_uri_delims.mak"\
+ CFG="gen_uri_delims - Win32 Debug"
+ cd ".."
-"$(INTDIR)\util_win32.obj" "$(INTDIR)\util_win32.sbr" : $(SOURCE)\
- $(DEP_CPP_UTIL_W) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"gen_uri_delims - Win32 DebugCLEAN" :
+ cd ".\main"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\gen_uri_delims.mak"\
+ CFG="gen_uri_delims - Win32 Debug" RECURSE=1
+ cd ".."
+
+!ENDIF
+
+!IF "$(CFG)" == "ApacheCore - Win32 Release"
+
+"regex - Win32 Release" :
+ cd ".\regex"
+ $(MAKE) /$(MAKEFLAGS) /F ".\regex.mak" CFG="regex - Win32 Release"
+ cd ".."
+
+"regex - Win32 ReleaseCLEAN" :
+ cd ".\regex"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\regex.mak" CFG="regex - Win32 Release"\
+ RECURSE=1
+ cd ".."
+
+!ELSEIF "$(CFG)" == "ApacheCore - Win32 Debug"
+
+"regex - Win32 Debug" :
+ cd ".\regex"
+ $(MAKE) /$(MAKEFLAGS) /F ".\regex.mak" CFG="regex - Win32 Debug"
+ cd ".."
+"regex - Win32 DebugCLEAN" :
+ cd ".\regex"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\regex.mak" CFG="regex - Win32 Debug"\
+ RECURSE=1
+ cd ".."
!ENDIF
diff --git a/usr.sbin/httpd/src/ApacheCoreOS2.def b/usr.sbin/httpd/src/ApacheCoreOS2.def
index 6a3bdb3e516..d6f15a5ce88 100644
--- a/usr.sbin/httpd/src/ApacheCoreOS2.def
+++ b/usr.sbin/httpd/src/ApacheCoreOS2.def
@@ -366,3 +366,7 @@ EXPORTS
ap_sha1_base64 @360
ap_add_file_conf @361
ap_set_config_vectors @362
+ ap_os_case_canonical_filename @363
+ ap_find_types @364
+ ap_is_rdirectory @365
+ ap_stripprefix @366
diff --git a/usr.sbin/httpd/src/CHANGES b/usr.sbin/httpd/src/CHANGES
index b4863aa7285..6b3fe82cb78 100644
--- a/usr.sbin/httpd/src/CHANGES
+++ b/usr.sbin/httpd/src/CHANGES
@@ -1,3 +1,397 @@
+Changes with Apache 1.3.14
+
+ *) Fixes to allow compilation on NetWare [Brad Nicholes
+ <bnicholes@novell.com>]
+
+Changes with Apache 1.3.13 [not released]
+
+ *) NOTE: A number of Win32 symbols were exported without explicit
+ declaration in the ApacheCore.def file. These are now exported
+ with the same ordinal export values from 1.3.12, but are now
+ named consistent with Apache's conventions. [William Rowe]
+
+ *) Add support for a "conf directory" which operates similar to
+ /etc/rc.d/init. Basically, if a config file is actually a
+ directory, all the files in that directory will be parsed
+ as conf files. PR #6397 [Jim Jagielski, Lionel Clark
+ <bishop@platypus.bc.ca>]
+
+ *) Initial support added for mod_proxy under MPE/iX.
+ [Mark Bixby <mark_bixby@hp.com>]
+
+ *) Refined UID/GID management and permissions on MPE/iX to deal
+ with some limitations. [Mark Bixby <mark_bixby@hp.com>]
+
+ *) Updated the MPE DSO code to be compatible with an OS patch that
+ fixed an earlier DSO problem, #include tweakage required for
+ using apxs to build modules without access to the full source
+ tree, and other minor MPE tweaks.
+ [Mark Bixby <mark_bixby@hp.com>]
+
+ *) Tighten up the syntax checking of Host: headers to fix a
+ security bug in some mass virtual hosting configurations
+ that can allow a remote attacker to retrieve some files
+ on the system that should be inaccessible. [Tony Finch]
+
+ *) Add support for /, //, //servername and //server/sharename
+ parsing of <Directory > blocks under Win32 and OS2.
+ [Tim Costello, William Rowe, Brian Harvard]
+
+ *) Expand dbmmanage to allow -d -m -s -p options for Crypt, MD5,
+ SHA1 and plaintext password encodings. Make feature tests a
+ bit more flexible. [William Rowe]
+
+ *) Fix a security problem that affects some configurations of
+ mod_rewrite. If the result of a RewriteRule is a filename that
+ contains expansion specifiers, especially regexp backreferences
+ $0..$9 and %0..%9, then it may have been possible for an attacker
+ to access any file on the web server. [Tony Finch]
+
+ *) Add mod_auth_dbm (sdbm flavor) binary build for Win32.
+ [William Rowe]
+
+ *) Overhaul of dbmmanage to allow a groups arg (as in Apache 1.2)
+ as well as a comment arg to the add, adduser and update cmds.
+ update allows the user to clear or preserve pw/groups/comment.
+ Fixed a bug in dbmmanage that prevented the check option from
+ parsing a password followed by :group... text. Corrected the
+ seed calcualation for Win32 systems, and added -lsdbm support.
+ [William Rowe]
+
+ *) Radical surgery to improve mod_isapi support under Win32.
+ Includes a number of newer ServerSupportFunction calls, support
+ for ReadClient (in order to retrieve POSTs greater than 48KB),
+ and general bug fixes to more reliably load ISAPI .dll's and
+ prevent leaking handle resources. Note: There are still
+ discrepancies between IIS's and Apache's ServerVariables, and
+ async calls are still not supported. Additional warnings are
+ logged to facilitate debugging of unsupported ISAPI calls.
+ [William Rowe]
+
+ *) Update Configure script to allow building Apache on IBM's
+ IA64 version of AIX. [Paul Reder]
+
+ *) NameVirtualHost can now take "*" as an argument instead of
+ an IP address. This allows you to create a purely name-based
+ virtual hosting server that does not have any IP addresses in
+ the configuration file and which ignores the local address
+ of any connections. PR #5595, PR #4455 [Tony Finch]
+
+ *) Fix processing/merging of Remove* MIME directives.
+ PR #5597 [Sander van Zoest <sander@covalent.net>]
+
+ *) Fix merging of AddDefaultCharset directive.
+ PR #5872 [Jun Kuriyama <kuriyama@imgsrc.co.jp>]
+
+ *) Win32: Work around bug in Win32 select on network reads. Select
+ can indicate a socket has data to read, but the subsequent read
+ can return WSAEWOULDBLOCK. This problem has been observed
+ when running with SSL enabled Apache, specifically, browsers
+ sometimes cannot complete the SSL handshake when an SGC
+ certificate is used, receiving a network error message.
+ [Richard Scholz richard.scholz@subito.de]
+
+ *) Use "accept filtering" on recent versions of FreeBSD iff the
+ kernel is configured to support them. This allows Apache to avoid
+ having to handle new connections until the request has arrived.
+ [Tony Finch]
+
+ *) Fix error handling in make_sock. [Tony Finch]
+
+ *) The htdocs/ tree has been moved out of the CVS source tree into
+ a separate area for easier development. This has NO EFFECT on
+ end-users or Apache installations. [Ken Coar]
+
+ *) Fix problem matching Configure guessos on HP-UX 10.
+ [Victor J. Orlikowski] PR#6015
+
+ *) Correct the problem where the only local host name that the IP stack
+ can discover are 'undotted' private names. If no fully qualified
+ domain name can be identified, the default ServerName will be set to
+ the machine's IP address string. A warning is provided if Apache has
+ to assume the IP dotted address string or the localhost/loopback
+ address as the ServerName. The default ServerName is removed from
+ the default Win32 httpd.conf file. [William Rowe]
+
+ *) Add new directives RemoveType and RemoveEncoding to accompany the
+ RemoveHandler directive added in 1.3.4. AddType, AddEncoding, and
+ AddHandler now all have corresponding 'undo' directives. This allows
+ things like marking foo.tar.gz.asc as *not* being gzipped, so it will be
+ correctly interpreted as an unzipped signature of a gzipped file.
+ [Ken Coar]
+
+ *) Win32 NT and 2000 services now capture stderr messages that occur
+ before Apache's logs are opened to the Application Event Log.
+ Console and Win9x services now hold the console open for 30 seconds
+ (and may be dismissed with the <ESC> key) if they exit with an error.
+ [William Rowe]
+
+ *) Expand Win32 protection for pathname length, to provide protection
+ from future potential bugs such as that which caused directory index
+ to be displayed rather than returning an error.
+ [William Rowe, Allan Edwards <ake@raleigh.ibm.com>]
+
+ *) USE_SYSVSEM_SERIALIZED_ACCEPT locking on OS/390
+ [Ovies Brabson]
+
+ *) Change Win32 the isProcessService() routine to compensate for other
+ helper apps that invoke Apache.exe without a console. Recognize that
+ we are running NT, and use the STARTF_FORCEOFFFEEDBACK flag to be
+ sure that the SCM has invoked the process. [William Rowe,
+ Jim Patterson <jim-patterson@ncf.ca>, Kevin Kiley <TOKILEY@aol.com>]
+
+ *) Export from Win32 the ap_start_shutdown and ap_start_restart symbols
+ for modules and executables dynamically linked to the core.
+ [William Rowe; Jim Patterson <jim-patterson@ncf.ca>]
+
+ *) Prevent the source code for CGIs from being revealed when using
+ mod_vhost_alias and the CGI directory is under the document root
+ and a user makes a request like http://www.example.com//cgi-bin/cgi
+ as reported in <news:960999105.344321@ernani.logica.co.uk>
+ [Tony Finch]
+
+ *) Under Win32, The console input mode is fixed to ignore mouse events
+ and always listen for a Ctrl+C interrupt, even if the console window
+ defaults to another mode. [William Rowe]
+
+ *) All Win32 services will now perform a graceful restart when given
+ the -n servicename -k restart signal. No equivilant control exists
+ in the service control panel applet or through the NET command.
+ There is no useful acknowledgement on Windows 95/98, however.
+ [William Rowe]
+
+ *) Significant overhaul of the Win32 port documentation contained in
+ the README-WIN.TXT, as well as the htdocs/manual pages windows.html,
+ win_compiling.html, and the new win_service.html.
+ [Andrew Braund <abraund@dingoblue.net.au>, William Rowe]
+
+ *) Add 'services' for Windows 95 and 98, including install/uninstall
+ options. The Apache server therefore can start when the OS loads,
+ and will not stop between logoffs. This implementation remains
+ -HIGHLY EXPERIMENTAL-. Additional changes provide for clean shutdown
+ of Win95/98 when Apache is running as a 'service' or a console.
+ [William Rowe, Jan Just Keijser <KEIJSERJJ@logica.com>]
+
+ *) USE_PTHREAD_SERIALIZED_ACCEPT on AIX 4.3 and above. This change
+ provides a substantial performance improvement on multi-CPU
+ machines serving large numbers of concurrent clients.
+ [Victor J. Orlikowski <vjo@raleigh.ibm.com>]
+
+ *) Brought httpd.conf-dist-win into sync with httpd.conf-dist, and added
+ explicit documentation of many Win32 specific features. [William Rowe]
+
+ *) Convert Win32 build files (.dsp) to MSVC 6.0 format, and add perl
+ scripts cvstodsp5.pl and dsp5tocvs.pl for portability to version 5.0.
+ [William Rowe]
+
+ *) Fix mod_expires to merge its settings for Cache-Control into any
+ existing value for the field. It was unconditionally setting it,
+ wiping out anything from, say, a 'Header Append Cache-Control'.
+ PR#5769 [Ken Coar]
+
+ *) Add Win32 option -k stop as an alias of -k shutdown, to correspond to
+ the NET START/NET STOP syntax. [William Rowe]
+
+ *) Force Apache to test the Win32 config prior to any operation,
+ except the [-k shutdown -n service] and [-u -n service] combinations.
+ [William Rowe]
+
+ *) Add Win32 Ctrl+C/Ctrl+Break/Close/Logoff/Shutdown handler.
+ [William Rowe, Jan Just Keijser <KEIJSERJJ@logica.com>]
+
+ *) Expand mod_setenvif so its directives can be used in <Files> and
+ <Directory> containers, and in .htaccess files when FileInfo
+ overriding is allowed. PR#3000 [Ken Coar]
+
+ *) Fix Win32 bug when pathname length exactly equals MAX_PATH.
+ This bug caused directory index to be displayed rather than
+ returning an error. [Allan Edwards <ake@raleigh.ibm.com>]
+
+ *) Correct mod_proxy Win95 dynamic link __declspec(thread) bug.
+ David Whitmarsh <david.whitmarsh@dial.pipex.com>
+ PR: 1462, 2216, 3645
+
+ *) Changed Apache for NetWare build to link with XDC data which
+ marks the NLMs as being able to run on any processor.
+ [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Ported expat-lite to NetWare and integrated project files into the
+ ApacheNW.mcp. [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Switched thread storage data mechanism on NetWare to use updated
+ system calls. [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Fixed problem with multilanguage support that prevented Apache on
+ NetWare from displaying the correct language page.
+ [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Fixed memory leaks on NetWare port. When unloading Apache with
+ the developer option turned on NetWare would spew messages
+ complaining about unreleased resources.
+ [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Fixed a problem that prevented Apache on NetWare from shutting down
+ correctly when loading multiple instances in individual address
+ spaces. [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Changed threading primitives to use faster more scalable calls.
+ [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Added -s option for NetWare port to allow Apache to run without a
+ screen. [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Added code for NetWare port to display the listening ports and loaded
+ DSO modules to the console screen.
+ [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Removed ugly NetWare specific code from the modules and added libpre.c
+ and libprews.c instead. These files implement the NLM startup code
+ for shared NLMs (DSOs). The result of using these files is less
+ obtrusive code, faster load times, and a smaller executable size.
+ libprews.c contains WSAStartup and WSACleanup WinSock calls needed for
+ initialization and termination of DSO modules.
+ [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Moved htpasswd and htdigest projects files for NetWare into the main
+ ApacheNW.mcp project file. [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Added mod_tls (SSL/TLS) module for NetWare SSL/TLS support.
+ [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Updated httpd.conf-dist-nw with <IfModule> directives around
+ standard DSO modules. [Mike Gardiner <mgardiner@novell.com>]
+
+ *) Correct mod_proxy Win32 garbage collection bug (clean failing
+ due to stat() against directory).
+ PR: 1891, 3278, 3640, 4139, 5997
+ [Michael Friedel <mfriedel@lbell.slctnet.com>]
+
+ *) Add '-n' option to htpasswd to make it print its user:pw record
+ on stdout rather than having to frob a text file. [Ken Coar]
+
+ *) Set default ServerName setting to 127.0.0.1 for the Windows
+ config file (httpd.conf-dist-win)
+ PR: 5509, 5783, 5953, 5903, 5983, 5259, 5515, 5858
+ [Oliver Wendemuth <owendemuth@ko.hbv.de>]
+
+ *) [EBCDIC] Update mod_mmap_static so that an ebcdic box can use
+ MMapFile for files that shouldn't be converted from ebcdic->ascii.
+ [Greg Ames <gregames@us.ibm.com>]
+
+ *) Revamp the Win32 make environment. Apache.dsw created to bring
+ together all the pieces. Create new file os/win32/BaseAddr.ref
+ to define module base addresses (to prevent dll relocation at
+ start-up). Extraneous compiler files were removed (precompiled
+ headers, incremental link images), and .map files were added
+ for consistent diagnostics of gpfaults of the binary release.
+ [William Rowe, Greg Marr, Tim Costello, Bill Stoddard]
+
+ *) Resolved Win32 mod_info (ApacheModuleInfo.dll) errors.
+ PR1442, PR2472, PR4125, PR1643 and PR2208
+ Jim Patterson, Jan Just Keijser <KEIJSERJJ@logica.com>
+
+ *) Add some more error reporting to htpasswd in the case of problems
+ generating or accessing the temporary file. Also, pass in a
+ buffer if the implementation knows how to use it (i.e., if L_tmpnam
+ is defined). [Ken Coar] PR#3945, 5253, 5383, 5558
+
+ *) PORT: Add recognition of the GNU/Hurd platform.
+ [Adam Farrell <skate111@stampede.org>]
+
+ *) More FAQs and answers from comp.infosystems.www.servers.unix.
+ [Joshua Slive <slive@finance.commerce.ubc.ca>]
+
+ *) Win32: Add dependency checking to the CreateService call to ensure
+ TCPIP and AFP (winsock) are started before Apache.
+ [William Rowe <wrowe@lnd.com>]
+
+ *) FAQ changes related to tidying up historical documents on the web site.
+ [Joshua Slive <slive@finance.commerce.ubc.ca>]
+
+ *) Various fixes to mod_auth_digest:
+ - Reworked MD5-sess stuff. The semantics of userpw_hash() have been
+ changed for it to return
+ MD5(MD5(username ":" realm ":" password) ":" nonce ":" cnonce)
+ instead of just
+ MD5(username ":" realm ":" password)
+ because one of the points of MD5-sess is to allow the info to be
+ retrieved from login servers so that the server itself never has
+ the full auth info (after all, MD5(u/r/p) is equivalent to the
+ password for auth purposes).
+ - In order to allow for servers to share a realm the server-name
+ and port have been removed from the nonce-hash. Even so, sharing
+ the realm has problems - see the new comments at the beginning.
+ - Fixed uri-comparison when request-uri isn't identical to uri in
+ Authorization header (some fields were not being initialized).
+ - Handle non-FQDN's (i.e. simple hostnames) in uri parameter in
+ the Authorization header. Thanks to Joe Orton
+ <joe@orton.demon.co.uk> for pointing out the problem.
+ [Ronald Tschalär]
+
+ *) Add case_preserved_filename field to the request_rec structure.
+ On systems with case insensitive file systems (Windows, OS/2, etc.),
+ r->filename is case canonicalized (folded to either lower or upper
+ case, depending on the specific system) to accomodate file access
+ checking. case_preserved_filename is the same as r->filename
+ except case is preserved. There is at least one instance where Apache
+ needs access to the case preserved filename: Java class files published
+ with WebDAV need to preserve filename case to make the Java compiler
+ happy. [Bill Stoddard]
+
+ *) Put in Korean and Norwegian index.html pages (2.0 and 1.3)
+ which where donated by Lee Kuk Hyun and Lorant Czaran [dirkx].
+
+ *) Modules which load third-party DLLs (ala mod_dav)
+ expect them to be in the path or cwd. Tweak the
+ service startup code to not only change to correct
+ drive but also correct directory.
+ [Keith Wannamaker <wannamaker@us.ibm.com>]
+
+ *) WinNT: Do a better job at handling spaces in service names.
+ Add the util function ap_remove_spaces and export it on all
+ platforms. Change some Win32 service and registry functions to
+ make use of this new function.
+ [Keith Wannamaker <wannamaker@us.ibm.com>]
+
+ *) use send/recv instead of write/read in proxy_connect -- fixes
+ https through proxy on NT. [willem.vanpelt@philips.com]
+ PR 5963, 5899, 5823, 5107, 4990?, 4885, 4680, 4468, 3801, 2014
+
+ *) [EBCDIC] Make chunked encoding work again; it was broken by the
+ recent CRLF macro changes. An oversight. [Martin Kraemer]
+
+ *) Work around a popular restriction of some sed(1)'s in APACI where
+ "1,/<pattern>/" commands start searching for <pattern> at line 2 only.
+ [Ralf S. Engelschall]
+
+ *) Merged in a small subset of SGI's latest `10x' patchkit for Apache
+ 1.3.11. The extracted and merged in parts are entirely cleanup and
+ non-performance related changes only. SGI's remaining changes are
+ not taken over, because they are either cluttering the Apache 1.3
+ sources too much (e.g. the lint(1) related changes) or cause too
+ much internal changes (e.g. the ap_int32 types, etc.) which are not
+ reasonable to do any longer for Apache 1.3 (they should be done for
+ Apache 2.0 instead).
+ [Mike Abbott <mja@sgi.com>, Ralf S. Engelschall]
+
+ *) Fixes to mod_proxy for BeOS support.
+ [David Reid <dreid@jetnet.co.uk>]
+
+ *) Fix return value calculation in APXS' error messages.
+ This should avoid the confusion on APXS errors.
+ [Ralf S. Engelschall]
+
+ *) Make ApacheBench (ab) compile again stand-alone under
+ -DNO_APACHE_INCLUDES.
+ [Ralf S. Engelschall]
+
+ *) The ServerTokens directive now accepts the 'ProductOnly' keyword,
+ which results in the display of just 'Apache' with no version
+ information. Additional product tokens are still only visible
+ with ServerTokens Full. In addition, ServerTokens now complains
+ about bogus keywords (which it used to silently treat as 'Full').
+ [Ken Coar]
+
Changes with Apache 1.3.12
*) Only OS/2 requires the addition "t" flag for ap_pfopen()
@@ -6182,8 +6576,7 @@ Changes with Apache 1.2b5
*) Added description of "." mode in server-status [Jim Jagielski]
-
-Changes with Apache 1.2b4:
+Changes with Apache 1.2b4
*) Fix possible race condition in accept_mutex_init() that
could leave a small security hole open allowing files to be
@@ -6359,11 +6752,11 @@ Changes with Apache 1.2b2:
NCR Unix (-ncr-sysv4)
and fixed something in helpers/PrintPath [Ben Laurie]
-Changes with Apache 1.2b1:
+Changes with Apache 1.2b1
*) Not listed. See <http://www.apache.org/docs/new_features_1_2.html>
-Changes with Apache 1.1.1:
+Changes with Apache 1.1.1
*) Fixed bug where Cookie module would make two entries in the
logfile for each access [Mark Cox]
@@ -6377,7 +6770,7 @@ Changes with Apache 1.1.1:
*) Fix misspelling of "Anonymous_Authorative" directive in mod_auth_anon.
-Changes with Apache 1.1.0:
+Changes with Apache 1.1.0
*) Bring NeXT support up to date. [Takaaki Matsumoto]
@@ -6399,7 +6792,7 @@ Changes with Apache 1.1.0:
c) Leading colons were stripped from passwords [osm@interguide.com]
d) Another fix to multi-method Limit problem [jk@tools.de]
-Changes with Apache 1.1b4:
+Changes with Apache 1.1b4
*) r->bytes_sent variable restored. [Robert Thau]
@@ -6424,7 +6817,7 @@ Changes with Apache 1.1b4:
c) compile warnings on several systems
d) problems when scripts stop reading output early
-Changes with Apache 1.1b3:
+Changes with Apache 1.1b3
*) Much of cgi-bin and all of cgi-src has been removed, due to
various security holes found and that we could no longer support
@@ -6473,18 +6866,18 @@ Changes with Apache 1.1b3:
e) closing fd's twice in mod_include (causing core dumps on
Linux and elsewhere).
-Changes with Apache 1.1b2:
+Changes with Apache 1.1b2
*) Bugfixes:
a) core dumps in mod_digest
b) truncated hostnames/ip address in the logs
c) relative URL's in mod_imap map files
-Changes with Apache 1.1b1:
+Changes with Apache 1.1b1
*) Not listed. See <http://www.apache.org/docs/new_features_1_1.html>
-Changes with Apache 1.0.3:
+Changes with Apache 1.0.3
*) Internal redirects which occur in mod_dir.c now preserve the
query portion of a request (the bit after the question mark).
@@ -6571,11 +6964,11 @@ Changes with Apache 1.0.1
*) Fix typo in license. [David Robinson]
-Changes with Apache 1.0.0
+Changes with Apache 1.0.0 23 Nov 1995
*) Not listed. See <http://www.apache.org/docs/new_features_1_0.html>
-Changes with Apache 0.8.16
+Changes with Apache 0.8.16 05 Nov 1995
*) New man page for 'httpd' added to support directory [David Robinson]
@@ -6614,7 +7007,7 @@ Changes with Apache 0.8.16
*) Fixed bug involving handling URIs with escaped %-characters
in redirects [David Robinson]
-Changes with Apache 0.8.15
+Changes with Apache 0.8.15 14 Oct 1995
*) Switched to new, simpler license
@@ -6669,7 +7062,7 @@ Changes with Apache 0.8.15
*) Doesn't send itself SIGHUP on startup when run in the -X debug-only mode
[Ben Laurie]
-Changes with Apache 0.8.14
+Changes with Apache 0.8.14 19 Sep 1995
*) Compiles on SCO ODT 3.0 [Ben Laurie]
@@ -6687,7 +7080,7 @@ Changes with Apache 0.8.14
*) Nuked another compiler warning for -Wall on Linux [Aram Mirzadeh]
-Changes with Apache 0.8.13
+Changes with Apache 0.8.13 07 Sep 1995
*) Make IndexIgnore *work* (ooops) [Jarkko Torppa]
@@ -6719,7 +7112,7 @@ Changes with Apache 0.8.13
*) Suppress -Wall warning by initializing variable in negotiation code
[Tobias Weingartner]
-Changes with Apache 0.8.12
+Changes with Apache 0.8.12 31 Aug 1995
*) Doesn't pause three seconds after including a CGI script which is
too slow to die off (this is done by not even trying to kill off
@@ -6757,7 +7150,7 @@ Changes with Apache 0.8.12
*) Cleaned up comments in mod_cgi.c [Robert Thau]
-Changes with Apache 0.8.11
+Changes with Apache 0.8.11 24 Aug 1995
*) Wildcard <Directory> specifications work. [Robert Thau]
@@ -6802,8 +7195,7 @@ Changes with Apache 0.8.11
NCSA code did not check Options ExecCGI in ScriptAlias directories).
[Robert Thau]
-
-Changes with Apache 0.8.10
+Changes with Apache 0.8.10 18 Aug 1995
*) AllowOverride applies to the named directory, and not just
subdirectories. [David Robinson]
@@ -6815,7 +7207,7 @@ Changes with Apache 0.8.10
lot of "server hang" problems with Solaris. [David Robinson;
thanks to Merten Schumann for help diagnosing the problem].
-Changes with Apache 0.8.9
+Changes with Apache 0.8.9 12 Aug 1995
*) Compiles with -DMAXIMUM_DNS ---- ooops! [Henrik Mortensen]
@@ -6865,7 +7257,7 @@ Changes with Apache 0.8.9
it seems to work well enough without it (even in a 10 hits/sec
workout), and the overhead for the locking under A/UX is
alarmingly high (though it is very low on other systems).
- [Eric Hagberg]
+ [Eric Hagberg, Jim Jagielski]
*) Fixed portability problems with mod_cookies.c [Cliff Skolnick]
@@ -6878,7 +7270,7 @@ Changes with Apache 0.8.9
*) Compiles clean on SGI [Robert Thau]
-Changes with Apache 0.8.8
+Changes with Apache 0.8.8 08 Aug 1995
*) SunOS library prototypes now never included unless explicitly
requested in the configuration (via -DSUNOS_LIB_PROTOTYPES);
@@ -6894,7 +7286,7 @@ Changes with Apache 0.8.8
*) Strips trailing '/' characters off both args to the Alias command,
to make 'Alias /foo/ /bar/' work.
-Changes with Apache 0.8.7
+Changes with Apache 0.8.7 03 Aug 1995
*) Don't hang when restarting with a child from 'TransferLog "|..."' running
[reported by David Robinson]
@@ -6905,7 +7297,7 @@ Changes with Apache 0.8.7
experimental LogFormat support) to CHANGES file in distribution root
directory
-Changes with Apache 0.8.6
+Changes with Apache 0.8.6 02 Aug 1995
*) Deleted Netscape reload workaround --- it's in violation of HTTP specs.
(If you actually wanted a conditional GET which bypassed the cache, you
@@ -6924,7 +7316,7 @@ Changes with Apache 0.8.6
*) Scoreboard file (/tmp/htstatus.*) no longer publically writable.
-Changes with Apache 0.8.5
+Changes with Apache 0.8.5 01 Aug 1995
*) Added last-minute configurable log experiment, as optional module
@@ -6939,7 +7331,8 @@ Changes with Apache 0.8.5
*) Added parameter to set maximum number of server processes.
- *) Added patches to make it work on A/UX. A/UX is *weird*. [Eric Hagberg]
+ *) Added patches to make it work on A/UX. A/UX is *weird*. [Eric Hagberg,
+ Jim Jagielski]
*) IdentityCheck bugfix [Chuck Murcko].
@@ -7012,7 +7405,7 @@ Changes with Apache 0.8.3
deleted his old, and no doubt non-functional email address). Would be
nice to have examples of new features...
-Changes with Apache 0.8.2
+Changes with Apache 0.8.2 19 Jul 1995
*) Added AddLanuage code [Florent Guillaume]
@@ -7053,7 +7446,7 @@ Changes with Apache 0.8.1
*) Don't mung directory listings with very long filenames.
[Florent Guillaume]
-Changes with Apache 0.8.0 (nee Shambhala 0.6.2):
+Changes with Apache 0.8.0 (nee Shambhala 0.6.2) 16 Jul 1995
*) New config script. See INSTALL for info. [Robert Thau]
@@ -7113,7 +7506,7 @@ Changes with Apache 0.8.0 (nee Shambhala 0.6.2):
*) Another acc-related fix. (It doesn't like const char
in some places...). [Mark Cox]
-Changes with 0.6.1
+Changes with Shambhala 0.6.1 13 Jul 1995
*) Fixed auth_name-related typos in http_core.c [Brian Behlendorf]
Also, fixed auth typo in http_protocol.c unmasked by this fix.
@@ -7134,7 +7527,7 @@ Changes with 0.6.1
*) No longer kills off nph- child processes before they are
finished sending output. [Matthew Gray]
-Changes with 0.6.0
+Changes with Shambhala 0.6.0 10 Jul 1995
*) Two styles of timeout --- hard and soft. soft_timeout()s just put
the connection to the client in an "aborted" state, but otherwise
@@ -7181,7 +7574,7 @@ Changes with 0.6.0
directories. (On Linux, readdir() returns a pointer to the same
memory area every time). Fix is in mod_dir.c. [Paul Sutton]
-Changes with 0.5.3 [not released]
+Changes with Shambhala 0.5.3 [not released]
*) Default response handler notes "file not found" in the error log,
if the file was not found. [Cliff Skolnick].
@@ -7190,7 +7583,7 @@ Changes with 0.5.3 [not released]
code no longer sets up bogus PATH_INFO which fakes out the directory
handler). [Cliff Skolnick]
-Changes with 0.5.2
+Changes with Shambhala 0.5.2 06 Jul 1995
*) Changes to http_main.c --- root server no longer plays silly
games with SIGCHLD, and so now detects and replaces dying
@@ -7210,7 +7603,7 @@ Changes with 0.5.2
*) More directory handling bugs (reported by Cox)
Parent Directory link is now set correctly. [Robert Thau]
-Changes with 0.5.1: [Hopefully complete] 10 Apr 1995
+Changes with Shambhala 0.5.1 04 Jul 1995
*) Generalized cleanup interface in alloc.c --- any function can be
registered with alloc.c as a cleanup for a resource pool;
@@ -7252,18 +7645,156 @@ Changes with 0.5.1: [Hopefully complete] 10 Apr 1995
*) CHANGES file added to distribution ;-).
-Changes with 0.4 02 Apr 1995
+Changes with Shambhala 0.4.5
+
+ *) mod_dld --- early dynamic loading support [rst]
+ *) Add wildcard content handlers for XBITHACK; default_hander now
+ invoked with that mechanism (as a handler hanging off mod_core) [rst]
+ *) XBITHACK supported as a wildcard content-handler, and
+ configurable at run-time (not just at compile time, as in the
+ "patchy server" releases) [rst]
+
+Changes with Shambhala 0.4.4 30 Jun 1995
+
+ *) Fixed basic thinkos in mod_dbm_auth.c [rst, reported by Mark Cox]
+ *) Handle Addtype x/y .z [rst, reported by Cox]
+
+Changes with Shambhala 0.4.3
+
+ *) Fixed very dumb bug in mod_alias; "Alias" and "Redirect" are not
+ synonymous [rst, terbush]
+
+Changes with Shambhala 0.4.1 28 Jun 1995
+
+ *) First-cut virtual host implementation; some refit in the config
+ reading code, and log management, was necessary to support this [rst]
+ *) Sub-pool machinery, originally added to avoid excessive storage
+ allocation on listings of large directories (which turned out to
+ be the problem that the 0.3 storage accounting was added to
+ find). Subrequests and mod_dir changed to use subpools. [rst]
+ *) More memory debugging --- free list consistency checks. [rst]
+ *) Added err_headers to request_rec, with support elsewhere [rst]
+ *) Other fixes to minor bugs in mod_dir and mod_includes [rst, terbush]
+
+Changes with Shambhala 0.3 19 Jun 1995
+
+ *) Switch ONE_PROCESS to a runtime command-line option (-X)
+ *) Don't compile in mod_ai_backcompat by default
+ *) Switch name of server from Apache to Shambhala in Makefile
+ *) Add some accounting routines to track memory usage in the pools,
+ for debugging
+
+Changes with Shambhala 0.2
+
+ *) Set DOCUMENT_ROOT CGI variable
+ *) Add single-process debugging, as a compile-time option (ONE_PROCESS)
+ *) Add critical section protection to handling of cleanup structures
+ in alloc.c [rst]
+ *) Significant code reorg within the server core to group related
+ functions together [rst]
+ *) Correctly handle clients that hang up before sending any request
+ [rst]
+ *) Replace dying child processes. [rst]
+
+Changes with Shambhala 0.1 12 Jun 1995
+
+ Major rewrite of the pre-existing "patchy server" codebase, by
+ Robert Thau (rst). Significant portions of the server code, such
+ as configuration-file handling and HTTP authentication support,
+ were ripped out and rewritten from scratch. Code that was not
+ completely rewritten was significantly altered.
+
+ Major changes with this release include:
+
+ *) Introduction of the module API; in request handling, the central
+ machinery just dispatches to various modules, which actually do
+ most of the work. Configuration handling is similar --- modules
+ declare their own commands, and the central machinery just
+ dispatches to them.
+
+ API features from shambhala/0.1 were substantially unchanged in
+ Apache 1.0 and 1.1. (1.0 API features not yet present in this
+ release, such as wildcard handlers and subpools, were added in
+ subsequent Shambhala releases, and were also generally rst's
+ work).
+
+ *) This release included the following modules:
+
+ mod_access (access control --- allow and deny directives),
+ mod_alias (Alias and Redirect commands),
+ mod_auth (straight HTTP authentication, based on flat-files)
+ mod_auth_dbm (same, with dbm files)
+ mod_cgi (CGI scripts and, in this release, ScriptAlias)
+ mod_common_log (CLF access logs; later renamed mod_log_common)
+ mod_dir (directory indexing)
+ mod_include (server-side includes)
+ mod_mime (AddType directives)
+ mod_negotiation (content negotiation)
+ mod_userdir (support for users' public_html directories)
+
+ It also included a mod_ai_backcompat, which was a private hack
+ for back-compatibility with rst's own AI-lab servers.
+
+ All of these modules were substantially complete, and functional
+ or nearly so (a few, which implemented features not in use at
+ Thau's site, required patches of a few lines).
+
+ *) sub-request machinery, to allow modules to determine how other
+ modules would assign MIME types to a given file, or optionally
+ serve its content (this is heavily used by mod_dir, mod_include
+ and mod_negotiation).
+
+ *) Resource pool system for keeping track of memory allocated and
+ files opened in service of a particular request. Much of the
+ code in the modules (when they weren't rewrites) was adjusted to
+ replace a pervasive convention of using fixed-size buffers on
+ the stack with an equally pervasive convention of using memory
+ allocated with palloc().
+
+ *) Reorganization of data structures associated with a given
+ request to eliminate use of global variables and the troublesome
+ unmunge_name function (used in NCSA and early Apache releases to
+ attempt to determine the URI which mapped to a given filename
+ --- a difficult proposition, given that it is easy to produce
+ setups in which multiple URIs map to the same file).
+
+ *) Source files renamed and rearranged
+
+ *) Very simple pre-forking behavior --- parent process forked off a
+ fixed number of children, and then just waited for SIGHUP.
+
+ *) Other more minor changes too numerous to list.
+
+ This release included modified versions of a lot of code from the
+ Apache 0.6.4 public release, plus an early pre-forking patch
+ codeveloped by Robert Thau and Rob Hartill.
+
+Changes with Apache 0.7.3 20 Jun 1995
+
+ *) There were a bunch of changes between Apache 0.6.4 and 0.7.3 that
+ were incorporated by Rob Hartill on the main branch while Robert Thau
+ worked on the Shambhala rewrite above. Most were merged into the
+ Shambala architecture after Apache 0.8.0.
+
+Changes with Apache 0.6.4 13 May 1995
+
+ *) Patches by Rob Hartill, Cliff Skolnick, Randy Terbush, Robert Thau,
+ and others.
+
+Changes with Apache 0.5.1 10 Apr 1995
+
+Changes with Apache 0.4 02 Apr 1995
*) Patches by Brian Behlendorf, Andrew Wilson, Robert Thau,
and Rob Hartill.
-Changes with 0.3 24 Mar 1995
+Changes with Apache 0.3 24 Mar 1995
*) Patches by Robert Thau, David Robinson, Rob Hartill, and
- Carlos Varela
+ Carlos Varela.
-Changes with 0.2 18 Mar 1995
+Changes with Apache 0.2 18 Mar 1995
*) Based on NCSA httpd 1.3 by Rob McCool and patches by CERT,
Roy Fielding, Robert Thau, Nicolas Pioch, David Robinson,
- Brian Behlendorf, Rob Hartill, and Cliff Skolnick
+ Brian Behlendorf, Rob Hartill, and Cliff Skolnick.
diff --git a/usr.sbin/httpd/src/CHANGES.SSL b/usr.sbin/httpd/src/CHANGES.SSL
index 36d648425ac..4558dfe4bd0 100644
--- a/usr.sbin/httpd/src/CHANGES.SSL
+++ b/usr.sbin/httpd/src/CHANGES.SSL
@@ -17,6 +17,52 @@
_INTENTIONALLY_ no contributor names attached to the entries. Instead all
contributors are listed in the CREDITS file.
+ ____ _____
+ |___ \ |___ |
+ __) | / /
+ / __/ _ / /
+ __ |_____(_)_/______________________________________________
+
+ Changes with mod_ssl 2.7.1 (13-Oct-2000 to 14-Oct-2000)
+
+ *) Fixed the parsing of SSLSessionCache directives. The prefixes were
+ incorrectly skipped and leaded to "unable to open semaphore file"
+ errors.
+
+ Changes with mod_ssl 2.7.0 (12-Aug-2000 to 13-Oct-2000)
+
+ *) Upgraded to Apache 1.3.14 as base version.
+
+ *) Added new Cyclic Buffer based Shared Memory Session Cache
+ as ssl_scache_shmcb.c. This was contributed by Geoff Thorpe
+ <geoff@geoffthorpe.net> and is derived from the "c2shm" variant
+ used in Stronghold V3. It uses a fixed size cyclic buffer placed
+ over a shared memory segment for storing SSL session ids. This
+ way it is even more efficient and faster than the old hash table
+ based shared memory cache (ssl_scache_shmht.c). It can be used
+ by building mod_ssl with --enable-rule=SSL_EXPERIMENTAL and then
+ using "SSLSessionCache shmcb:<path-to-temp-file>(<bytes>)".
+
+ *) Cleaned up and restructured the session cache implementation.
+ ssl_engine_scache.c was split into ssl_scache.c (the abstraction
+ layer), ssl_scache_dbm.c (the DBM-based implementation) and
+ ssl_scache_shmht.c (the shared memory based implementation which
+ uses a hash table).
+
+ *) Added experimental support for the ENGINE branch of OpenSSL 0.9.6.
+ A new SSLCryptoDevice configuration directive is available if the
+ OpenSSL-ENGINE 0.9.6 package and --enable-rule=SSL_EXPERIMENTAL
+ is used. The default is "SSLCryptoDevice builtin". To enable
+ to use of a crypto device use "SSLCryptoDevice <name>",
+ where <name> is its ID as used with the OpenSSL command line
+ option "-engine <name>".
+
+ *) Completely removed RSAref support to make sure US residents no
+ longer try to use this ancient piece of restricted/buggy code.
+
+ *) mod_ssl failed to start if two certificate keys are encrypted
+ with different pass phrases and SSLProxyVerify was specified.
+
____ __
|___ \ / /_
__) || '_ \
diff --git a/usr.sbin/httpd/src/Configuration.tmpl b/usr.sbin/httpd/src/Configuration.tmpl
index 9574ca46c3c..71163d636af 100644
--- a/usr.sbin/httpd/src/Configuration.tmpl
+++ b/usr.sbin/httpd/src/Configuration.tmpl
@@ -33,15 +33,6 @@
# installation tree. Alternatively you can also use the value 'SYSTEM' which
# then indicates that OpenSSL is installed under various system locations.
#
-# o If you're a US-citizen you have to compile OpenSSL with the RSAref library
-# (which replaces the RSA code of OpenSSL) because of patent legalities with
-# the RSA algorithm used for the SSL protocol. For this situation you
-# already have to compile OpenSSL with the -DRSAref define and now you have
-# to force Apache to link against the RSAglue library (from OpenSSL) and the
-# rsaref library (from RSA). So, set RSA_BASE to the directory of your
-# RSAref source tree or to 'SYSTEM' (indicating that librsaref.a is
-# installed under a system location)
-#
# o Disable SSL_COMPAT rule to build mod_ssl without backward compatibility
# code for Apache-SSL 1.x, mod_ssl 2.0.x, Sioux 1.x and Stronghold 2.x.
#
@@ -67,7 +58,6 @@
# picked up by the compilation process.
#SSL_BASE=/usr/local/ssl
-#RSA_BASE=/usr/local/rsa
Rule SSL_COMPAT=yes
Rule SSL_SDBM=default
Rule SSL_EXPERIMENTAL=no
diff --git a/usr.sbin/httpd/src/Configure b/usr.sbin/httpd/src/Configure
index a86015392f1..69e7fac3250 100644
--- a/usr.sbin/httpd/src/Configure
+++ b/usr.sbin/httpd/src/Configure
@@ -1,5 +1,5 @@
#!/bin/sh
-# $OpenBSD: Configure,v 1.12 2000/10/16 21:23:35 brad Exp $
+# $OpenBSD: Configure,v 1.13 2000/12/15 22:17:52 beck Exp $
## ====================================================================
## Copyright (c) 1995-1999 The Apache Group. All rights reserved.
##
@@ -318,11 +318,18 @@ case "$PLAT" in
;;
*-ibm-aix4.3)
OS='IBM AIX 4.3'
- CFLAGS="$CFLAGS -DAIX=43 -U__STR__"
- LDFLAGS="$LDFLAGS -lm"
+ CFLAGS="$CFLAGS -DAIX=43 -DUSE_PTHREAD_SERIALIZED_ACCEPT -U__STR__"
+ LDFLAGS="$LDFLAGS -lm -lpthread"
RULE_SHARED_CORE=no
DEF_SHARED_CORE=no
;;
+ ia64-ibm-aix*)
+ OS='IBM AIX IA64'
+ CFLAGS="$CFLAGS -DAIXIA64 -U__STR__"
+ LDFLAGS="$LDFLAGS -lm"
+ RULE_SHARED_CORE=no
+ DEF_SHARED_CORE=no
+ ;;
*-ibm-aix*)
OS='IBM AIX'
CFLAGS="$CFLAGS -DAIX=1 -U__STR__"
@@ -351,14 +358,14 @@ case "$PLAT" in
OS='HI-UX'
CFLAGS="$CFLAGS -DHIUX"
;;
- *-hp-hpux11.*)
+ *-hp*-hpux11.*)
OS='HP-UX 11'
CFLAGS="$CFLAGS -DHPUX11"
RANLIB="/bin/true"
LIBS="$LIBS -lm -lpthread"
DEF_WANTHSREGEX=yes
;;
- *-hp-hpux10.*)
+ *-hp*-hpux10.*)
OS='HP-UX 10'
CFLAGS="$CFLAGS -DHPUX10"
RANLIB="/bin/true"
@@ -371,7 +378,7 @@ case "$PLAT" in
esac
DEF_WANTHSREGEX=yes
;;
- *-hp-hpux*)
+ *-hp*-hpux*)
OS='HP-UX'
CFLAGS="$CFLAGS -DHPUX"
RANLIB="/bin/true"
@@ -430,6 +437,12 @@ case "$PLAT" in
CFLAGS="$CFLAGS -DLINUX=2"
LIBS="$LIBS -lm"
;;
+ *-GNU*)
+ DEF_WANTHSREGEX=yes
+ OS='GNU/Hurd'
+ CFLAGS="$CFLAGS -DHURD"
+ LIBS="$LIBS -lm -lcrypt"
+ ;;
*-linux1)
DEF_WANTHSREGEX=yes
OS='Linux'
@@ -469,7 +482,7 @@ case "$PLAT" in
PLATOSVERS=`echo $PLAT | sed 's/^.*freebsd//'`
OS="FreeBSD $PLATOSVERS"
case "$PLATOSVERS" in
- [234]*)
+ [2345]*)
DEF_WANTHSREGEX=no
CFLAGS="$CFLAGS -funsigned-char"
;;
@@ -499,12 +512,12 @@ case "$PLAT" in
;;
*-apple-rhapsody*)
OS='Mac OS X Server'
- CFLAGS="$CFLAGS -DMAC_OS_X_SERVER"
+ CFLAGS="$CFLAGS -DDARWIN -DMAC_OS_X_SERVER"
DEF_WANTHSREGEX=yes
;;
- *-apple-macos*)
- OS='Mac OS'
- CFLAGS="$CFLAGS -DMAC_OS"
+ *-apple-darwin*)
+ OS='Darwin'
+ CFLAGS="$CFLAGS -DDARWIN"
DEF_WANTHSREGEX=yes
;;
*-dec-osf*)
@@ -1021,7 +1034,6 @@ if [ "x$using_shlib" = "x1" ] ; then
LD_SHLIB=ld
LDFLAGS_SHLIB='-b -a archive'
LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB
- LIBS_SHLIB='$(OSDIR)/mpe_dl_stub.o'
;;
*-linux1)
CFLAGS_SHLIB="-fpic"
@@ -1045,7 +1057,7 @@ if [ "x$using_shlib" = "x1" ] ; then
LDFLAGS_SHLIB_EXPORT=""
SHLIB_SUFFIX_DEPTH=2
;;
- *-freebsd3*|*-freebsd4*)
+ *-freebsd[3-9]*)
LD_SHLIB="gcc"
CFLAGS_SHLIB="-fpic"
LDFLAGS_SHLIB="-shared"
@@ -1106,7 +1118,7 @@ if [ "x$using_shlib" = "x1" ] ; then
LDFLAGS_SHLIB_EXPORT=''
SHLIB_SUFFIX_DEPTH=0
;;
- *-apple-rhapsody* | *-apple-macos* )
+ *-apple-rhapsody* | *-apple-darwin* )
LD_SHLIB="cc"
CFLAGS_SHLIB=""
LDFLAGS_SHLIB='$(EXTRA_LDFLAGS) -bundle -undefined suppress'
@@ -1233,6 +1245,14 @@ if [ "x$using_shlib" = "x1" ] ; then
LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB
LDFLAGS_SHLIB_EXPORT="-Wl,-Blargedynsym"
;;
+ BS2000-siemens-sysv4*)
+ CFLAGS_SHLIB="-K PIC"
+ LDFLAGS_SHLIB="-G"
+ LDFLAGS_MOD_SHLIB=$LDFLAGS_SHLIB
+ LDFLAGS_SHLIB_EXPORT=""
+ SHLIB_SUFFIX_DEPTH=0
+ DEF_SHARED_CORE=no
+ ;;
*-siemens-sysv4*)
# Older SINIX machines must be linked as "shared core"-Apache
case $CC in
@@ -1275,6 +1295,18 @@ if [ "x$using_shlib" = "x1" ] ; then
LDFLAGS_SHLIB_EXPORT="-Wl,-E -Wl,-B,deferred -Wl,+s"
SHLIB_SUFFIX_NAME=sl
;;
+ ia64-ibm-aix*)
+ case $CC in
+ */gcc|gcc ) CFLAGS_SHLIB="-fpic" ;;
+ */cc|cc ) CFLAGS_SHLIB="" ;;
+ esac
+ LDFLAGS_SHLIB=" -L /usr/lib/ia64l32 -G "
+ LDFLAGS_MOD_SHLIB="$LDFLAGS_SHLIB -bI:@libexecdir@/httpd.exp -lc"
+ LDFLAGS_SHLIB="$LDFLAGS_SHLIB -Bexport:\`echo \$@|sed -e 's:\.so\$\$:.exp:'\`"
+ LDFLAGS_SHLIB="$LDFLAGS_SHLIB -lc"
+ LDFLAGS_SHLIB_EXPORT="-Wl,-Bexport:\$(SRCDIR)/support/httpd.exp"
+ SHLIB_EXPORT_FILES=yes
+ ;;
*-ibm-aix*)
case $CC in
*/gcc|gcc ) CFLAGS_SHLIB="-fpic" ;;
@@ -1455,6 +1487,13 @@ case "$OS" in
;;
esac
;;
+ 'IBM AIX IA64')
+ case $CC in
+ */cc|cc )
+ CFLAGS="$CFLAGS -qnogenpcomp -qnousepcomp"
+ ;;
+ esac
+ ;;
esac
####################################################################
@@ -1524,6 +1563,18 @@ case "$PLAT" in
if TLIB=$TLIB ${SHELL} helpers/TestCompile lib socket; then
LIBS="-lsocket $LIBS"
fi
+ # Auto-detect presence of libdl for dynamic loading
+ if ${SHELL} /helpers/TestCompile lib dl; then
+ if ${SHELL} /helpers/TestCompile func dlopen; then
+ LIBS="$LIBS -ldl"
+ TLIB='-ldl'
+ fi
+ fi
+ # Test for the presence of the _rini_struct typedef:
+ if TCADDINCL='#include <pwd.h>' ${SHELL} /helpers/TestCompile sizeof _rini_struct; then
+ CFLAGS="$CFLAGS -DHAVE_RINI_STRUCT"
+ fi
+ # Test whether initgroups() must be emulated:
if ${SHELL} helpers/TestCompile func initgroups; then
:
else
@@ -1859,7 +1910,7 @@ if [ "x$using_shlib" = "x1" ] ; then
# select the special subtarget for shared core generation
SUBTARGET=target_shared
# determine additional suffixes for libhttpd.so
- V=1 R=3 P=12
+ V=1 R=3 P=14
if [ "x$SHLIB_SUFFIX_DEPTH" = "x0" ]; then
SHLIB_SUFFIX_LIST=""
fi
@@ -2090,6 +2141,9 @@ echo "RANLIB=$RANLIB" >>Makefile.config
if [ "x$using_shlib" = "x1" ] ; then
DL_LIB=""
case $PLAT in
+ ia64-ibm-aix* )
+ DL_LIB="-ldl"
+ ;;
*-ibm-aix* )
DL_LIB="-lld"
;;
diff --git a/usr.sbin/httpd/src/Makefile.nt b/usr.sbin/httpd/src/Makefile.nt
index 9d0dbab491d..e69de29bb2d 100644
--- a/usr.sbin/httpd/src/Makefile.nt
+++ b/usr.sbin/httpd/src/Makefile.nt
@@ -1,158 +0,0 @@
-# Makefile for Windows NT and Windows 95
-
-# Targets are:
-# _apacher - build Apache in Release mode
-# _apached - build Apache in Debug mode
-# installr - build and install a Release build
-# installd - build and install a Debug build
-# clean - remove (most) generated files
-# _cleanr - remove (most) files generated by a Release build
-# _cleand - remove (most) files generated by a Debug build
-#
-# The default installation directory is \Apache. This can be changed
-# with the INSTDIR macro, for example:
-#
-# nmake /f Makefile.nt INSTDIR="d:\Program Files\Apache" installr
-#
-# Note: this does *NOT* change the compiled in default "server root"
-
-!IF "$(INSTDIR)" == ""
-INSTDIR=\Apache
-!MESSAGE Using default install directory \Apache
-!ENDIF
-
-default: _apacher
-
-_release:
- set SHORT=R
- set LONG=Release
-
-_debug:
- set SHORT=D
- set LONG=Debug
-
-_apacher: _release _build
-_apached: _debug _build
-installr: _release _build _install
-installd: _debug _build _install
-_cleanr: _release _clean
-_cleand: _debug _clean
-
-clean:
- $(MAKE) /f Makefile.nt _cleanr
- $(MAKE) /f Makefile.nt _cleand
-
-installdll: _release _installdll
-
-_build:
-# echo LONG %LONG% SHORT %SHORT% x
- cd os\win32
- nmake /nologo CFG="ApacheOS - Win32 %LONG%" -f ApacheOS.mak
- cd ..\..
- cd regex
- nmake /nologo CFG="regex - Win32 %LONG%" -f regex.mak
- cd ..
- cd ap
- nmake /nologo CFG="ap - Win32 %LONG%" -f ap.mak
- cd ..
- cd support
- nmake /nologo CFG="htpasswd - Win32 %LONG%" -f htpasswd.mak
- nmake /nologo CFG="htdigest - Win32 %LONG%" -f htdigest.mak
- cd ..
- cd lib/expat-lite
- nmake /nologo CFG="xmlparse - Win32 %LONG%" -f xmlparse.mak
- cd ../..
- cd main
- nmake /nologo CFG="gen_uri_delims - Win32 %LONG%" -f gen_uri_delims.mak
- nmake /nologo CFG="gen_test_char - Win32 %LONG%" -f gen_test_char.mak
- cd ..
- -del Core%SHORT%\buildmark.obj
- nmake /nologo CFG="ApacheCore - Win32 %LONG%" -f ApacheCore.mak
- nmake /nologo CFG="Apache - Win32 %LONG%" -f Apache.mak
- cd os\win32
- set CFG=ApacheModuleStatus - Win32 %LONG%
- nmake /nologo CFG="ApacheModuleStatus - Win32 %LONG%" -f ApacheModuleStatus.mak
-# nmake /nologo CFG ""/nologo -f ApacheModuleStatus.mak"=ApacheModuleInfo - Win32 %LONG%" -f ApacheModuleInfo.mak
- nmake /nologo CFG="ApacheModuleAuthAnon - Win32 %LONG%" -f ApacheModuleAuthAnon.mak
- nmake /nologo CFG="ApacheModuleDigest - Win32 %LONG%" -f ApacheModuleDigest.mak
- nmake /nologo CFG="ApacheModuleCERNMeta - Win32 %LONG%" -f ApacheModuleCERNMeta.mak
- nmake /nologo CFG="ApacheModuleExpires - Win32 %LONG%" -f ApacheModuleExpires.mak
- nmake /nologo CFG="ApacheModuleHeaders - Win32 %LONG%" -f ApacheModuleHeaders.mak
- nmake /nologo CFG="ApacheModuleSpeling - Win32 %LONG%" -f ApacheModuleSpeling.mak
- nmake /nologo CFG="ApacheModuleUserTrack - Win32 %LONG%" -f ApacheModuleUserTrack.mak
- nmake /nologo CFG="ApacheModuleRewrite - Win32 %LONG%" -f ApacheModuleRewrite.mak
- cd ..\..
- cd modules\proxy
- nmake /nologo CFG="ApacheModuleProxy - Win32 %LONG%" -f ApacheModuleProxy.mak
- cd ..\..
-
-_install:
- -mkdir $(INSTDIR)
- -mkdir $(INSTDIR)\modules
- -mkdir $(INSTDIR)\logs
- -mkdir $(INSTDIR)\conf
- -mkdir $(INSTDIR)\bin
- copy Apache%SHORT%\Apache.exe $(INSTDIR)
- copy Core%SHORT%\ApacheCore.dll $(INSTDIR)
- copy os\win32\ApacheModuleStatus%SHORT%\ApacheModuleStatus.dll $(INSTDIR)\modules
-# copy os\win32\ApacheModuleInfo%SHORT%\ApacheModuleInfo.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleAuthAnon%SHORT%\ApacheModuleAuthAnon.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleDigest%SHORT%\ApacheModuleDigest.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleCERNMeta%SHORT%\ApacheModuleCERNMeta.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleExpires%SHORT%\ApacheModuleExpires.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleHeaders%SHORT%\ApacheModuleHeaders.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleRewrite%SHORT%\ApacheModuleRewrite.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleSpeling%SHORT%\ApacheModuleSpeling.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleUserTrack%SHORT%\ApacheModuleUserTrack.dll $(INSTDIR)\modules
- copy modules\proxy\%LONG%\ApacheModuleProxy.dll $(INSTDIR)\modules
- copy support\%LONG%\htpasswd.exe $(INSTDIR)\bin
- copy support\%LONG%\htdigest.exe $(INSTDIR)\bin
-
-_clean:
- cd os\win32
- nmake /nologo CFG="ApacheOS - Win32 %LONG%" -f ApacheOS.mak clean
- cd ..\..
- cd regex
- nmake /nologo CFG="regex - Win32 %LONG%" -f regex.mak clean
- cd ..
- cd ap
- nmake /nologo CFG="ap - Win32 %LONG%" -f ap.mak clean
- cd ..
- cd support
- nmake /nologo CFG="htpasswd - Win32 %LONG%" -f htpasswd.mak clean
- nmake /nologo CFG="htdigest - Win32 %LONG%" -f htdigest.mak clean
- cd ..
- cd lib/expat-lite
- nmake /nologo CFG="xmlparse - Win32 %LONG%" -f xmlparse.mak clean
- cd ../..
- cd main
- nmake /nologo CFG="gen_uri_delims - Win32 %LONG%" -f gen_uri_delims.mak clean
- del uri_delims.h
- nmake /nologo CFG="gen_test_char - Win32 %LONG%" -f gen_test_char.mak clean
- del test_char.h
- cd ..
- nmake /nologo CFG="ApacheCore - Win32 %LONG%" -f ApacheCore.mak clean
- nmake /nologo CFG="Apache - Win32 %LONG%" -f Apache.mak clean
- cd os\win32
- nmake /nologo CFG="ApacheModuleStatus - Win32 %LONG%" -f ApacheModuleStatus.mak clean
-# nmake /nologo CFG="ApacheModuleInfo - Win32 %LONG%" -f ApacheModuleInfo.mak clean
- nmake /nologo CFG="ApacheModuleAuthAnon - Win32 %LONG%" -f ApacheModuleAuthAnon.mak clean
- nmake /nologo CFG="ApacheModuleDigest - Win32 %LONG%" -f ApacheModuleDigest.mak clean
- nmake /nologo CFG="ApacheModuleCERNMeta - Win32 %LONG%" -f ApacheModuleCERNMeta.mak clean
- nmake /nologo CFG="ApacheModuleExpires - Win32 %LONG%" -f ApacheModuleExpires.mak clean
- nmake /nologo CFG="ApacheModuleHeaders - Win32 %LONG%" -f ApacheModuleHeaders.mak clean
- nmake /nologo CFG="ApacheModuleSpeling - Win32 %LONG%" -f ApacheModuleSpeling.mak clean
- nmake /nologo CFG="ApacheModuleUserTrack - Win32 %LONG%" -f ApacheModuleUserTrack.mak clean
- nmake /nologo CFG="ApacheModuleRewrite - Win32 %LONG%" -f ApacheModuleRewrite.mak clean
- cd ..\..
- cd modules\proxy
- nmake /nologo CFG="ApacheModuleProxy - Win32 %LONG%" -f ApacheModuleProxy.mak clean
- cd ..\..
- cd os\win32\installer\installdll
- nmake /nologo CFG="install - Win32 %LONG%" -f install.mak clean
- cd ..\..\..
-
-_installdll:
- cd os\win32\installer\installdll
- nmake /nologo CFG="install - Win32 %LONG%" -f install.mak
- cd ..\..\..
diff --git a/usr.sbin/httpd/src/Makefile.tmpl b/usr.sbin/httpd/src/Makefile.tmpl
index bbc4b729f61..c06d17ca176 100644
--- a/usr.sbin/httpd/src/Makefile.tmpl
+++ b/usr.sbin/httpd/src/Makefile.tmpl
@@ -139,9 +139,9 @@ $(OBJS): Makefile subdirs
# DO NOT REMOVE
buildmark.o: buildmark.c include/ap_config.h include/ap_mmn.h \
include/ap_config_auto.h os/unix/os.h include/ap_ctype.h \
- include/hsregex.h include/httpd.h include/alloc.h include/buff.h \
+ include/hsregex.h include/httpd.h include/ap_alloc.h include/buff.h \
include/ap.h include/util_uri.h
modules.o: modules.c include/httpd.h include/ap_config.h \
include/ap_mmn.h include/ap_config_auto.h os/unix/os.h \
- include/ap_ctype.h include/hsregex.h include/alloc.h include/buff.h \
+ include/ap_ctype.h include/hsregex.h include/ap_alloc.h include/buff.h \
include/ap.h include/util_uri.h include/http_config.h
diff --git a/usr.sbin/httpd/src/Makefile_win32.txt b/usr.sbin/httpd/src/Makefile_win32.txt
index b64607daacf..e69de29bb2d 100644
--- a/usr.sbin/httpd/src/Makefile_win32.txt
+++ b/usr.sbin/httpd/src/Makefile_win32.txt
@@ -1,136 +0,0 @@
-# Makefile for Windows NT and Windows 95
-
-# Targets are:
-# _apache - build Apache in Release mode
-# install - build and install a Release build
-# clean - remove (most) files generated by a Release build
-#
-# The default installation directory is \Apache. This can be changed
-# with the INSTDIR macro, for example:
-#
-# nmake /f Makefile_win32.txt INSTDIR="d:\Program Files\Apache" install
-#
-# Note: this does *NOT* change the compiled in default "server root"
-
-!IF "$(INSTDIR)" == ""
-INSTDIR=\Apache
-!MESSAGE Using default install directory \Apache
-!ENDIF
-
-default: _apache
-
-_apache: _build
-
-install: _build _install
-
-_build:
- cd os\win32
- nmake /nologo CFG="ApacheOS - Win32 Release" -f ApacheOS.mak
- cd ..\..
- cd regex
- nmake /nologo CFG="regex - Win32 Release" -f regex.mak
- cd ..
- cd ap
- nmake /nologo CFG="ap - Win32 Release" -f ap.mak
- cd ..
- cd support
- nmake /nologo CFG="htpasswd - Win32 Release" -f htpasswd.mak
- nmake /nologo CFG="htdigest - Win32 Release" -f htdigest.mak
- cd ..
- cd lib/expat-lite
- nmake /nologo CFG="xmlparse - Win32 Release" -f xmlparse.mak
- cd ../..
- cd main
- nmake /nologo CFG="gen_uri_delims - Win32 Release" -f gen_uri_delims.mak
- nmake /nologo CFG="gen_test_char - Win32 Release" -f gen_test_char.mak
- cd ..
- -del CoreR\buildmark.obj
- nmake /nologo CFG="ApacheCore - Win32 Release" -f ApacheCore.mak
- nmake /nologo CFG="Apache - Win32 Release" -f Apache.mak
- cd os\win32
- set CFG=ApacheModuleStatus - Win32 Release
- nmake /nologo CFG="ApacheModuleStatus - Win32 Release" -f ApacheModuleStatus.mak
-# nmake /nologo CFG ""/nologo -f ApacheModuleStatus.mak"=ApacheModuleInfo - Win32 Release" -f ApacheModuleInfo.mak
- nmake /nologo CFG="ApacheModuleAuthAnon - Win32 Release" -f ApacheModuleAuthAnon.mak
- nmake /nologo CFG="ApacheModuleDigest - Win32 Release" -f ApacheModuleDigest.mak
- nmake /nologo CFG="ApacheModuleCERNMeta - Win32 Release" -f ApacheModuleCERNMeta.mak
- nmake /nologo CFG="ApacheModuleExpires - Win32 Release" -f ApacheModuleExpires.mak
- nmake /nologo CFG="ApacheModuleHeaders - Win32 Release" -f ApacheModuleHeaders.mak
- nmake /nologo CFG="ApacheModuleSpeling - Win32 Release" -f ApacheModuleSpeling.mak
- nmake /nologo CFG="ApacheModuleUserTrack - Win32 Release" -f ApacheModuleUserTrack.mak
- nmake /nologo CFG="ApacheModuleRewrite - Win32 Release" -f ApacheModuleRewrite.mak
- cd ..\..
- cd modules\proxy
- nmake /nologo CFG="ApacheModuleProxy - Win32 Release" -f ApacheModuleProxy.mak
- cd ..\..
-
-_install:
- -mkdir $(INSTDIR)
- -mkdir $(INSTDIR)\modules
- -mkdir $(INSTDIR)\logs
- -mkdir $(INSTDIR)\conf
- -mkdir $(INSTDIR)\bin
- copy ApacheR\Apache.exe $(INSTDIR)
- copy CoreR\ApacheCore.dll $(INSTDIR)
- copy os\win32\ApacheModuleStatusR\ApacheModuleStatus.dll $(INSTDIR)\modules
-# copy os\win32\ApacheModuleInfoR\ApacheModuleInfo.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleAuthAnonR\ApacheModuleAuthAnon.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleDigestR\ApacheModuleDigest.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleCERNMetaR\ApacheModuleCERNMeta.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleExpiresR\ApacheModuleExpires.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleHeadersR\ApacheModuleHeaders.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleRewriteR\ApacheModuleRewrite.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleSpelingR\ApacheModuleSpeling.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleUserTrackR\ApacheModuleUserTrack.dll $(INSTDIR)\modules
- copy modules\proxy\Release\ApacheModuleProxy.dll $(INSTDIR)\modules
- copy support\Release\htpasswd.exe $(INSTDIR)\bin
- copy support\Release\htdigest.exe $(INSTDIR)\bin
-
-clean:
- cd os\win32
- nmake /nologo CFG="ApacheOS - Win32 Release" -f ApacheOS.mak clean
- cd ..\..
- cd regex
- nmake /nologo CFG="regex - Win32 Release" -f regex.mak clean
- cd ..
- cd ap
- nmake /nologo CFG="ap - Win32 Release" -f ap.mak clean
- cd ..
- cd support
- nmake /nologo CFG="htpasswd - Win32 Release" -f htpasswd.mak clean
- nmake /nologo CFG="htdigest - Win32 Release" -f htdigest.mak clean
- cd ..
- cd lib/expat-lite
- nmake /nologo CFG="xmlparse - Win32 Release" -f xmlparse.mak clean
- cd ../..
- cd main
- nmake /nologo CFG="gen_uri_delims - Win32 Release" -f gen_uri_delims.mak clean
- del uri_delims.h
- nmake /nologo CFG="gen_test_char - Win32 Release" -f gen_test_char.mak clean
- del test_char.h
- cd ..
- nmake /nologo CFG="ApacheCore - Win32 Release" -f ApacheCore.mak clean
- nmake /nologo CFG="Apache - Win32 Release" -f Apache.mak clean
- cd os\win32
- nmake /nologo CFG="ApacheModuleStatus - Win32 Release" -f ApacheModuleStatus.mak clean
-# nmake /nologo CFG="ApacheModuleInfo - Win32 Release" -f ApacheModuleInfo.mak clean
- nmake /nologo CFG="ApacheModuleAuthAnon - Win32 Release" -f ApacheModuleAuthAnon.mak clean
- nmake /nologo CFG="ApacheModuleDigest - Win32 Release" -f ApacheModuleDigest.mak clean
- nmake /nologo CFG="ApacheModuleCERNMeta - Win32 Release" -f ApacheModuleCERNMeta.mak clean
- nmake /nologo CFG="ApacheModuleExpires - Win32 Release" -f ApacheModuleExpires.mak clean
- nmake /nologo CFG="ApacheModuleHeaders - Win32 Release" -f ApacheModuleHeaders.mak clean
- nmake /nologo CFG="ApacheModuleSpeling - Win32 Release" -f ApacheModuleSpeling.mak clean
- nmake /nologo CFG="ApacheModuleUserTrack - Win32 Release" -f ApacheModuleUserTrack.mak clean
- nmake /nologo CFG="ApacheModuleRewrite - Win32 Release" -f ApacheModuleRewrite.mak clean
- cd ..\..
- cd modules\proxy
- nmake /nologo CFG="ApacheModuleProxy - Win32 Release" -f ApacheModuleProxy.mak clean
- cd ..\..
- cd os\win32\installer\installdll
- nmake /nologo CFG="install - Win32 Release" -f install.mak clean
- cd ..\..\..
-
-installdll:
- cd os\win32\installer\installdll
- nmake /nologo CFG="install - Win32 Release" -f install.mak
- cd ..\..\..
diff --git a/usr.sbin/httpd/src/Makefile_win32_debug.txt b/usr.sbin/httpd/src/Makefile_win32_debug.txt
index 220427fadf3..e69de29bb2d 100644
--- a/usr.sbin/httpd/src/Makefile_win32_debug.txt
+++ b/usr.sbin/httpd/src/Makefile_win32_debug.txt
@@ -1,136 +0,0 @@
-# Makefile for Windows NT and Windows 95
-
-# Targets are:
-# _apache - build Apache in Debug mode
-# install - build and install a Debug build
-# clean - remove (most) files generated by a Debug build
-#
-# The default installation directory is \Apache. This can be changed
-# with the INSTDIR macro, for example:
-#
-# nmake /f Makefile_win32_debug.txt INSTDIR="d:\Program Files\Apache" install
-#
-# Note: this does *NOT* change the compiled in default "server root"
-
-!IF "$(INSTDIR)" == ""
-INSTDIR=\Apache
-!MESSAGE Using default install directory \Apache
-!ENDIF
-
-default: _apache
-
-_apache: _build
-
-install: _build _install
-
-_build:
- cd os\win32
- nmake /nologo CFG="ApacheOS - Win32 Debug" -f ApacheOS.mak
- cd ..\..
- cd regex
- nmake /nologo CFG="regex - Win32 Debug" -f regex.mak
- cd ..
- cd ap
- nmake /nologo CFG="ap - Win32 Debug" -f ap.mak
- cd ..
- cd support
- nmake /nologo CFG="htpasswd - Win32 Debug" -f htpasswd.mak
- nmake /nologo CFG="htdigest - Win32 Debug" -f htdigest.mak
- cd ..
- cd lib/expat-lite
- nmake /nologo CFG="xmlparse - Win32 Debug" -f xmlparse.mak
- cd ../..
- cd main
- nmake /nologo CFG="gen_uri_delims - Win32 Debug" -f gen_uri_delims.mak
- nmake /nologo CFG="gen_test_char - Win32 Debug" -f gen_test_char.mak
- cd ..
- -del CoreD\buildmark.obj
- nmake /nologo CFG="ApacheCore - Win32 Debug" -f ApacheCore.mak
- nmake /nologo CFG="Apache - Win32 Debug" -f Apache.mak
- cd os\win32
- set CFG=ApacheModuleStatus - Win32 Debug
- nmake /nologo CFG="ApacheModuleStatus - Win32 Debug" -f ApacheModuleStatus.mak
-# nmake /nologo CFG ""/nologo -f ApacheModuleStatus.mak"=ApacheModuleInfo - Win32 Debug" -f ApacheModuleInfo.mak
- nmake /nologo CFG="ApacheModuleAuthAnon - Win32 Debug" -f ApacheModuleAuthAnon.mak
- nmake /nologo CFG="ApacheModuleDigest - Win32 Debug" -f ApacheModuleDigest.mak
- nmake /nologo CFG="ApacheModuleCERNMeta - Win32 Debug" -f ApacheModuleCERNMeta.mak
- nmake /nologo CFG="ApacheModuleExpires - Win32 Debug" -f ApacheModuleExpires.mak
- nmake /nologo CFG="ApacheModuleHeaders - Win32 Debug" -f ApacheModuleHeaders.mak
- nmake /nologo CFG="ApacheModuleSpeling - Win32 Debug" -f ApacheModuleSpeling.mak
- nmake /nologo CFG="ApacheModuleUserTrack - Win32 Debug" -f ApacheModuleUserTrack.mak
- nmake /nologo CFG="ApacheModuleRewrite - Win32 Debug" -f ApacheModuleRewrite.mak
- cd ..\..
- cd modules\proxy
- nmake /nologo CFG="ApacheModuleProxy - Win32 Debug" -f ApacheModuleProxy.mak
- cd ..\..
-
-_install:
- -mkdir $(INSTDIR)
- -mkdir $(INSTDIR)\modules
- -mkdir $(INSTDIR)\logs
- -mkdir $(INSTDIR)\conf
- -mkdir $(INSTDIR)\bin
- copy ApacheD\Apache.exe $(INSTDIR)
- copy CoreD\ApacheCore.dll $(INSTDIR)
- copy os\win32\ApacheModuleStatusD\ApacheModuleStatus.dll $(INSTDIR)\modules
-# copy os\win32\ApacheModuleInfoD\ApacheModuleInfo.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleAuthAnonD\ApacheModuleAuthAnon.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleDigestD\ApacheModuleDigest.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleCERNMetaD\ApacheModuleCERNMeta.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleExpiresD\ApacheModuleExpires.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleHeadersD\ApacheModuleHeaders.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleRewriteD\ApacheModuleRewrite.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleSpelingD\ApacheModuleSpeling.dll $(INSTDIR)\modules
- copy os\win32\ApacheModuleUserTrackD\ApacheModuleUserTrack.dll $(INSTDIR)\modules
- copy modules\proxy\Debug\ApacheModuleProxy.dll $(INSTDIR)\modules
- copy support\Debug\htpasswd.exe $(INSTDIR)\bin
- copy support\Debug\htdigest.exe $(INSTDIR)\bin
-
-clean:
- cd os\win32
- nmake /nologo CFG="ApacheOS - Win32 Debug" -f ApacheOS.mak clean
- cd ..\..
- cd regex
- nmake /nologo CFG="regex - Win32 Debug" -f regex.mak clean
- cd ..
- cd ap
- nmake /nologo CFG="ap - Win32 Debug" -f ap.mak clean
- cd ..
- cd support
- nmake /nologo CFG="htpasswd - Win32 Debug" -f htpasswd.mak clean
- nmake /nologo CFG="htdigest - Win32 Debug" -f htdigest.mak clean
- cd ..
- cd lib/expat-lite
- nmake /nologo CFG="xmlparse - Win32 Debug" -f xmlparse.mak clean
- cd ../..
- cd main
- nmake /nologo CFG="gen_uri_delims - Win32 Debug" -f gen_uri_delims.mak clean
- del uri_delims.h
- nmake /nologo CFG="gen_test_char - Win32 Debug" -f gen_test_char.mak clean
- del test_char.h
- cd ..
- nmake /nologo CFG="ApacheCore - Win32 Debug" -f ApacheCore.mak clean
- nmake /nologo CFG="Apache - Win32 Debug" -f Apache.mak clean
- cd os\win32
- nmake /nologo CFG="ApacheModuleStatus - Win32 Debug" -f ApacheModuleStatus.mak clean
-# nmake /nologo CFG="ApacheModuleInfo - Win32 Debug" -f ApacheModuleInfo.mak clean
- nmake /nologo CFG="ApacheModuleAuthAnon - Win32 Debug" -f ApacheModuleAuthAnon.mak clean
- nmake /nologo CFG="ApacheModuleDigest - Win32 Debug" -f ApacheModuleDigest.mak clean
- nmake /nologo CFG="ApacheModuleCERNMeta - Win32 Debug" -f ApacheModuleCERNMeta.mak clean
- nmake /nologo CFG="ApacheModuleExpires - Win32 Debug" -f ApacheModuleExpires.mak clean
- nmake /nologo CFG="ApacheModuleHeaders - Win32 Debug" -f ApacheModuleHeaders.mak clean
- nmake /nologo CFG="ApacheModuleSpeling - Win32 Debug" -f ApacheModuleSpeling.mak clean
- nmake /nologo CFG="ApacheModuleUserTrack - Win32 Debug" -f ApacheModuleUserTrack.mak clean
- nmake /nologo CFG="ApacheModuleRewrite - Win32 Debug" -f ApacheModuleRewrite.mak clean
- cd ..\..
- cd modules\proxy
- nmake /nologo CFG="ApacheModuleProxy - Win32 Debug" -f ApacheModuleProxy.mak clean
- cd ..\..
- cd os\win32\installer\installdll
- nmake /nologo CFG="install - Win32 Debug" -f install.mak clean
- cd ..\..\..
-
-installdll:
- cd os\win32\installer\installdll
- nmake /nologo CFG="install - Win32 Debug" -f install.mak
- cd ..\..\..
diff --git a/usr.sbin/httpd/src/ap/Makefile.tmpl b/usr.sbin/httpd/src/ap/Makefile.tmpl
index 75209a1522c..2f62f27badd 100644
--- a/usr.sbin/httpd/src/ap/Makefile.tmpl
+++ b/usr.sbin/httpd/src/ap/Makefile.tmpl
@@ -43,12 +43,12 @@ depend:
ap_cpystrn.o: ap_cpystrn.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h
ap_execve.o: ap_execve.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h
ap_fnmatch.o: ap_fnmatch.c $(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h $(OSDIR)/os-inline.c \
@@ -65,15 +65,15 @@ ap_sha1.o: ap_sha1.c $(INCDIR)/ap_config.h $(INCDIR)/ap_sha1.h \
ap_signal.o: ap_signal.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h
ap_slack.o: ap_slack.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_log.h
ap_snprintf.o: ap_snprintf.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h
diff --git a/usr.sbin/httpd/src/ap/ap.dsp b/usr.sbin/httpd/src/ap/ap.dsp
index 9d9c3194f14..4c44f613dd3 100644
--- a/usr.sbin/httpd/src/ap/ap.dsp
+++ b/usr.sbin/httpd/src/ap/ap.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ap" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
@@ -22,6 +22,7 @@ CFG=ap - Win32 Debug
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -38,8 +39,9 @@ CPP=cl.exe
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+RSC=rc.exe
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\os\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
@@ -59,8 +61,9 @@ LIB32=link.exe -lib
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+RSC=rc.exe
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "..\include" /I "..\os\win32" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
@@ -79,6 +82,14 @@ LIB32=link.exe -lib
# PROP Default_Filter ""
# Begin Source File
+SOURCE=.\ap_base64.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ap_checkpass.c
+# End Source File
+# Begin Source File
+
SOURCE=.\ap_cpystrn.c
# End Source File
# Begin Source File
@@ -87,6 +98,14 @@ SOURCE=.\ap_fnmatch.c
# End Source File
# Begin Source File
+SOURCE=.\ap_md5c.c
+# End Source File
+# Begin Source File
+
+SOURCE=.\ap_sha1.c
+# End Source File
+# Begin Source File
+
SOURCE=.\ap_signal.c
# End Source File
# Begin Source File
@@ -101,22 +120,26 @@ SOURCE=.\ap_snprintf.c
# Begin Group "Header Files"
# PROP Default_Filter ""
-# End Group
# Begin Source File
-SOURCE=.\ap_md5c.c
+SOURCE=..\include\ap.h
# End Source File
# Begin Source File
-SOURCE=.\ap_sha1.c
+SOURCE=..\include\ap_ctype.h
# End Source File
# Begin Source File
-SOURCE=.\ap_checkpass.c
+SOURCE=..\include\ap_md5.h
# End Source File
# Begin Source File
-SOURCE=.\ap_base64.c
+SOURCE=..\include\ap_sha1.h
+# End Source File
+# Begin Source File
+
+SOURCE=..\include\fnmatch.h
# End Source File
+# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/ap/ap.mak b/usr.sbin/httpd/src/ap/ap.mak
index 84f7b22898b..a39c1a5109a 100644
--- a/usr.sbin/httpd/src/ap/ap.mak
+++ b/usr.sbin/httpd/src/ap/ap.mak
@@ -44,27 +44,28 @@ ALL : "$(OUTDIR)\ap.lib"
!ENDIF
CLEAN :
+ -@erase "$(INTDIR)\ap_base64.obj"
+ -@erase "$(INTDIR)\ap_checkpass.obj"
-@erase "$(INTDIR)\ap_cpystrn.obj"
-@erase "$(INTDIR)\ap_fnmatch.obj"
-@erase "$(INTDIR)\ap_md5c.obj"
-@erase "$(INTDIR)\ap_hook.obj"
-@erase "$(INTDIR)\ap_ctx.obj"
-@erase "$(INTDIR)\ap_mm.obj"
+ -@erase "$(INTDIR)\ap_sha1.obj"
-@erase "$(INTDIR)\ap_signal.obj"
-@erase "$(INTDIR)\ap_slack.obj"
-@erase "$(INTDIR)\ap_snprintf.obj"
- -@erase "$(INTDIR)\ap_sha1.obj"
- -@erase "$(INTDIR)\ap_base64.obj"
- -@erase "$(INTDIR)\ap_checkpass.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ap.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+RSC=rc.exe
CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "../include" /D "WIN32" /D "NDEBUG" /D\
- "_WINDOWS" /Fp"$(INTDIR)\ap.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\include" /I "..\os\win32" /D "WIN32" /D\
+ "NDEBUG" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Release/
CPP_SBRS=.
@@ -101,22 +102,22 @@ CPP_SBRS=.
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ap.bsc"
BSC32_SBRS= \
-
+
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\ap.lib"
LIB32_OBJS= \
+ "$(INTDIR)\ap_base64.obj" \
+ "$(INTDIR)\ap_checkpass.obj" \
"$(INTDIR)\ap_cpystrn.obj" \
"$(INTDIR)\ap_fnmatch.obj" \
"$(INTDIR)\ap_md5c.obj" \
"$(INTDIR)\ap_hook.obj" \
"$(INTDIR)\ap_ctx.obj" \
"$(INTDIR)\ap_mm.obj" \
+ "$(INTDIR)\ap_sha1.obj" \
"$(INTDIR)\ap_signal.obj" \
"$(INTDIR)\ap_slack.obj" \
- "$(INTDIR)\ap_snprintf.obj" \
- "$(INTDIR)\ap_sha1.obj" \
- "$(INTDIR)\ap_base64.obj" \
- "$(INTDIR)\ap_checkpass.obj"
+ "$(INTDIR)\ap_snprintf.obj"
"$(OUTDIR)\ap.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
@@ -142,27 +143,28 @@ ALL : "$(OUTDIR)\ap.lib"
!ENDIF
CLEAN :
+ -@erase "$(INTDIR)\ap_base64.obj"
+ -@erase "$(INTDIR)\ap_checkpass.obj"
-@erase "$(INTDIR)\ap_cpystrn.obj"
-@erase "$(INTDIR)\ap_fnmatch.obj"
-@erase "$(INTDIR)\ap_md5c.obj"
-@erase "$(INTDIR)\ap_hook.obj"
-@erase "$(INTDIR)\ap_ctx.obj"
-@erase "$(INTDIR)\ap_mm.obj"
+ -@erase "$(INTDIR)\ap_sha1.obj"
-@erase "$(INTDIR)\ap_signal.obj"
-@erase "$(INTDIR)\ap_slack.obj"
-@erase "$(INTDIR)\ap_snprintf.obj"
- -@erase "$(INTDIR)\ap_sha1.obj"
- -@erase "$(INTDIR)\ap_base64.obj"
- -@erase "$(INTDIR)\ap_checkpass.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ap.lib"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+RSC=rc.exe
CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /GX /Z7 /Od /I "../include" /D "WIN32" /D "_DEBUG" /D\
- "_WINDOWS" /Fp"$(INTDIR)\ap.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MDd /W3 /GX /Z7 /Od /I "..\include" /I "..\os\win32" /D\
+ "WIN32" /D "_DEBUG" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Debug/
CPP_SBRS=.
@@ -199,22 +201,22 @@ CPP_SBRS=.
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ap.bsc"
BSC32_SBRS= \
-
+
LIB32=link.exe -lib
LIB32_FLAGS=/nologo /out:"$(OUTDIR)\ap.lib"
LIB32_OBJS= \
+ "$(INTDIR)\ap_base64.obj" \
+ "$(INTDIR)\ap_checkpass.obj" \
"$(INTDIR)\ap_cpystrn.obj" \
"$(INTDIR)\ap_fnmatch.obj" \
"$(INTDIR)\ap_md5c.obj" \
"$(INTDIR)\ap_hook.obj" \
"$(INTDIR)\ap_ctx.obj" \
"$(INTDIR)\ap_mm.obj" \
+ "$(INTDIR)\ap_sha1.obj" \
"$(INTDIR)\ap_signal.obj" \
"$(INTDIR)\ap_slack.obj" \
- "$(INTDIR)\ap_snprintf.obj" \
- "$(INTDIR)\ap_sha1.obj" \
- "$(INTDIR)\ap_base64.obj" \
- "$(INTDIR)\ap_checkpass.obj"
+ "$(INTDIR)\ap_snprintf.obj"
"$(OUTDIR)\ap.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
$(LIB32) @<<
@@ -225,101 +227,88 @@ LIB32_OBJS= \
!IF "$(CFG)" == "ap - Win32 Release" || "$(CFG)" == "ap - Win32 Debug"
-SOURCE=.\ap_cpystrn.c
+SOURCE=.\ap_base64.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_CP=\
- "..\include\alloc.h"\
+DEP_CPP_AP_BA=\
"..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
- "..\include\buff.h"\
"..\include\hsregex.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
"..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_CP=\
+
+NODEP_CPP_AP_BA=\
"..\include\ap_config_auto.h"\
- "..\include\ebcdic.h"\
- "..\include\os.h"\
- "..\include\sfio.h"\
-
+ ".\ebcdic.h"\
+
-"$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)"
+"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_CP=\
- "..\include\alloc.h"\
+DEP_CPP_AP_BA=\
"..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
- "..\include\buff.h"\
"..\include\hsregex.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
"..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
-
+
-"$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)"
+"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)"
!ENDIF
-SOURCE=.\ap_fnmatch.c
+SOURCE=.\ap_checkpass.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_FN=\
+DEP_CPP_AP_CH=\
+ "..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
+ "..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
- "..\include\fnmatch.h"\
+ "..\include\ap_sha1.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_FN=\
+
+NODEP_CPP_AP_CH=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
-
+
-"$(INTDIR)\ap_fnmatch.obj" : $(SOURCE) $(DEP_CPP_AP_FN) "$(INTDIR)"
+"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_FN=\
+DEP_CPP_AP_CH=\
+ "..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
+ "..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
- "..\include\fnmatch.h"\
+ "..\include\ap_sha1.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
+
-
-"$(INTDIR)\ap_fnmatch.obj" : $(SOURCE) $(DEP_CPP_AP_FN) "$(INTDIR)"
+"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)"
!ENDIF
-SOURCE=.\ap_signal.c
+SOURCE=.\ap_cpystrn.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_SI=\
- "..\include\alloc.h"\
+DEP_CPP_AP_CP=\
"..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
@@ -329,24 +318,21 @@ DEP_CPP_AP_SI=\
"..\include\util_uri.h"\
"..\os\win32\os.h"\
"..\os\win32\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_SI=\
+
+NODEP_CPP_AP_CP=\
"..\include\ap_config_auto.h"\
"..\include\ebcdic.h"\
- "..\include\os.h"\
"..\include\sfio.h"\
+
-
-"$(INTDIR)\ap_signal.obj" : $(SOURCE) $(DEP_CPP_AP_SI) "$(INTDIR)"
+"$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_SI=\
- "..\include\alloc.h"\
+DEP_CPP_AP_CP=\
"..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
@@ -356,267 +342,267 @@ DEP_CPP_AP_SI=\
"..\include\util_uri.h"\
"..\os\win32\os.h"\
"..\os\win32\readdir.h"\
+
-
-"$(INTDIR)\ap_signal.obj" : $(SOURCE) $(DEP_CPP_AP_SI) "$(INTDIR)"
+"$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)"
!ENDIF
-SOURCE=.\ap_slack.c
+SOURCE=.\ap_fnmatch.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_SL=\
- "..\include\alloc.h"\
- "..\include\ap.h"\
+DEP_CPP_AP_FN=\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
- "..\include\buff.h"\
+ "..\include\fnmatch.h"\
"..\include\hsregex.h"\
- "..\include\http_log.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
"..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_SL=\
+
+NODEP_CPP_AP_FN=\
"..\include\ap_config_auto.h"\
- "..\include\ebcdic.h"\
- "..\include\os.h"\
- "..\include\sfio.h"\
+
-
-"$(INTDIR)\ap_slack.obj" : $(SOURCE) $(DEP_CPP_AP_SL) "$(INTDIR)"
+"$(INTDIR)\ap_fnmatch.obj" : $(SOURCE) $(DEP_CPP_AP_FN) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_SL=\
- "..\include\alloc.h"\
- "..\include\ap.h"\
+DEP_CPP_AP_FN=\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
- "..\include\buff.h"\
+ "..\include\fnmatch.h"\
"..\include\hsregex.h"\
- "..\include\http_log.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
"..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
+
-
-"$(INTDIR)\ap_slack.obj" : $(SOURCE) $(DEP_CPP_AP_SL) "$(INTDIR)"
+"$(INTDIR)\ap_fnmatch.obj" : $(SOURCE) $(DEP_CPP_AP_FN) "$(INTDIR)"
!ENDIF
-SOURCE=.\ap_snprintf.c
+SOURCE=.\ap_md5c.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_SN=\
- "..\include\alloc.h"\
+DEP_CPP_AP_MD=\
"..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
+ "..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
- "..\include\buff.h"\
"..\include\hsregex.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
"..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_SN=\
+
+NODEP_CPP_AP_MD=\
"..\include\ap_config_auto.h"\
- "..\include\ebcdic.h"\
- "..\include\os.h"\
- "..\include\sfio.h"\
-
+ ".\ebcdic.h"\
+
-"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)"
+"$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_SN=\
- "..\include\alloc.h"\
+DEP_CPP_AP_MD=\
"..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
+ "..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
- "..\include\buff.h"\
"..\include\hsregex.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
"..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
+
-
-"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)"
+"$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)"
!ENDIF
-SOURCE=.\ap_md5c.c
+SOURCE=.\ap_sha1.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_MD=\
+DEP_CPP_AP_SH=\
+ "..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
- "..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
+ "..\include\ap_sha1.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_MD=\
+
+NODEP_CPP_AP_SH=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
".\ebcdic.h"\
+
-
-"$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)"
+"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_MD=\
+DEP_CPP_AP_SH=\
+ "..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
- "..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
+ "..\include\ap_sha1.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
+
-
-"$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)"
+"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)"
!ENDIF
-
-SOURCE=.\ap_checkpass.c
+SOURCE=.\ap_signal.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_CH=\
+DEP_CPP_AP_SI=\
+ "..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
+ "..\include\buff.h"\
"..\include\hsregex.h"\
+ "..\include\httpd.h"\
+ "..\include\util_uri.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_CH=\
+ "..\os\win32\readdir.h"\
+
+NODEP_CPP_AP_SI=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
- ".\ebcdic.h"\
-
+ "..\include\ebcdic.h"\
+ "..\include\sfio.h"\
+
-"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)"
+"$(INTDIR)\ap_signal.obj" : $(SOURCE) $(DEP_CPP_AP_SI) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_CH=\
+DEP_CPP_AP_SI=\
+ "..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
+ "..\include\buff.h"\
"..\include\hsregex.h"\
+ "..\include\httpd.h"\
+ "..\include\util_uri.h"\
"..\os\win32\os.h"\
+ "..\os\win32\readdir.h"\
+
-
-"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)"
+"$(INTDIR)\ap_signal.obj" : $(SOURCE) $(DEP_CPP_AP_SI) "$(INTDIR)"
!ENDIF
-SOURCE=.\ap_sha1.c
+SOURCE=.\ap_slack.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_SH=\
+DEP_CPP_AP_SL=\
+ "..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
- "..\include\ap_sha1.h"\
"..\include\ap_mmn.h"\
+ "..\include\buff.h"\
"..\include\hsregex.h"\
+ "..\include\http_log.h"\
+ "..\include\httpd.h"\
+ "..\include\util_uri.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_SH=\
+ "..\os\win32\readdir.h"\
+
+NODEP_CPP_AP_SL=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
- ".\ebcdic.h"\
-
+ "..\include\ebcdic.h"\
+ "..\include\sfio.h"\
+
-"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)"
+"$(INTDIR)\ap_slack.obj" : $(SOURCE) $(DEP_CPP_AP_SL) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_SH=\
+DEP_CPP_AP_SL=\
+ "..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
- "..\include\ap_sha1.h"\
"..\include\ap_mmn.h"\
+ "..\include\buff.h"\
"..\include\hsregex.h"\
+ "..\include\http_log.h"\
+ "..\include\httpd.h"\
+ "..\include\util_uri.h"\
"..\os\win32\os.h"\
+ "..\os\win32\readdir.h"\
+
-
-"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)"
+"$(INTDIR)\ap_slack.obj" : $(SOURCE) $(DEP_CPP_AP_SL) "$(INTDIR)"
!ENDIF
-SOURCE=.\ap_base64.c
+SOURCE=.\ap_snprintf.c
!IF "$(CFG)" == "ap - Win32 Release"
-DEP_CPP_AP_BA=\
+DEP_CPP_AP_SN=\
+ "..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
+ "..\include\buff.h"\
"..\include\hsregex.h"\
+ "..\include\httpd.h"\
+ "..\include\util_uri.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_BA=\
+ "..\os\win32\readdir.h"\
+
+NODEP_CPP_AP_SN=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
- ".\ebcdic.h"\
-
+ "..\include\ebcdic.h"\
+ "..\include\sfio.h"\
+
-"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)"
+"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)"
!ELSEIF "$(CFG)" == "ap - Win32 Debug"
-DEP_CPP_AP_BA=\
+DEP_CPP_AP_SN=\
+ "..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
+ "..\include\buff.h"\
"..\include\hsregex.h"\
+ "..\include\httpd.h"\
+ "..\include\util_uri.h"\
"..\os\win32\os.h"\
+ "..\os\win32\readdir.h"\
+
-
-"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)"
+"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)"
!ENDIF
+
!ENDIF
diff --git a/usr.sbin/httpd/src/buildmark.c b/usr.sbin/httpd/src/buildmark.c
index 575b9731a09..00a9529bf67 100644
--- a/usr.sbin/httpd/src/buildmark.c
+++ b/usr.sbin/httpd/src/buildmark.c
@@ -64,7 +64,7 @@ static const char server_built[] = __DATE__ " " __TIME__;
static const char server_built[] = "unknown";
#endif
-API_EXPORT(const char *) ap_get_server_built()
+API_EXPORT(const char *) ap_get_server_built(void)
{
return server_built;
}
diff --git a/usr.sbin/httpd/src/helpers/GuessOS b/usr.sbin/httpd/src/helpers/GuessOS
index 4d41d1ff2ee..d8786a1fdec 100644
--- a/usr.sbin/httpd/src/helpers/GuessOS
+++ b/usr.sbin/httpd/src/helpers/GuessOS
@@ -122,6 +122,10 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
echo "${MACHINE}-whatever-linux1"; exit 0
;;
+ GNU:*)
+ echo "${MACHINE}-GNU-GNU/Hurd"; exit 0
+ ;;
+
LynxOS:*)
echo "${MACHINE}-lynx-lynxos"; exit 0
;;
@@ -274,9 +278,9 @@ case "${SYSTEM}:${RELEASE}:${VERSION}:${MACHINE}" in
echo "${MACHINE}-apple-rhapsody${RELEASE}"; exit 0
;;
- "Mac OS":*:*:*)
+ Darwin:*:*:*)
MACHINE=`uname -p`
- echo "${MACHINE}-apple-macos${RELEASE}"; exit 0
+ echo "${MACHINE}-apple-darwin${RELEASE}"; exit 0
;;
"RISC iX":*)
diff --git a/usr.sbin/httpd/src/helpers/TestCompile b/usr.sbin/httpd/src/helpers/TestCompile
index 2ec57ffac95..66a4a464c11 100644
--- a/usr.sbin/httpd/src/helpers/TestCompile
+++ b/usr.sbin/httpd/src/helpers/TestCompile
@@ -40,6 +40,51 @@ trap 'rm -f Makefile dummy ../dummy.o dummy.exe testfunc.c testfunc ../testfunc.
# located) if you want to test it out. Configure must
# also call it as './helpers/TestCompile'
#
+#
+# INVOCATION SWITCHES:
+# TestCompile evaluates the following switches
+# (currently, it accepts only *ONE* of them!):
+#
+# -v (enable verbose operation)
+# Enables VERBOSE=yes, see below.
+#
+# -s (enforce silent operation)
+# Override a VERBOSE=yes, force it to VERBOSE=no.
+#
+# -r (run generated test program)
+# Enables TCRUNIT=yes, see below
+#
+#
+# ENVIRONMENT VARIABLES:
+# The following environment variables have influence on
+# TestCompile's operation:
+#
+# $VERBOSE (yes|no; default=no)
+# If set to "yes", will print compiler messages to stderr
+# Otherwise, stderr of all invoked programs is sent to /dev/null
+#
+# $TCRUNIT (yes|no; default=no)
+# (This variable is obsoleted by the "-r" switch)
+# If set to "yes", will invoke the test program which was
+# generated by TestCompile. Useful for "TestCompile sizeof"
+# and "TestCompile byteorder" tests.
+# Otherwise, TestCompile only tests for the presence of a
+# generated program when deciding whether the compilation was
+# successful.
+#
+# $TCADDINCL (#include <> stmt list; default=empty)
+# If set to an "#include <file>" preprocessor directive
+# (optionally several #include's separated by newlines), these
+# directives will be added to the generated test sources.
+# That allows, e.g., the "TestCompile sizeof" test to check for
+# types which are not defined in the standard locations.
+#
+# $TLIB (additional libraries; default=empty)
+# If set to a list of additional libraries, these libs will be used
+# in addition to the one tested by the "TestCompile lib" call.
+# For the other TextCompile tests, it is ignored.
+#
+#
# Initially written by Jim Jagielski for the Apache configuration mechanism
#
# This script falls under the Apache License.
@@ -74,7 +119,7 @@ case "$1" in
esac
#
-# Make sure have the right arguments
+# Make sure we have the right arguments
#
case "$1" in
@@ -109,6 +154,7 @@ case "$1" in
cat <<EOF >testfunc.c
#include <stdio.h>
#include <sys/types.h>
+$TCADDINCL
int main(void) {
printf("%d\n", sizeof($2));
return(0);
@@ -126,6 +172,7 @@ EOF
cat <<EOF >testfunc.c
#include <stdio.h>
#include <sys/types.h>
+$TCADDINCL
int main(void) {
/* Are we little or big endian? From Harbison & Steele */
union {
@@ -159,6 +206,7 @@ EOF
fi
TARGET='testfunc'
cat <<EOF >testfunc.c
+$TCADDINCL
int main(void) {
$2();
return(0);
@@ -177,6 +225,7 @@ EOF
fi
TARGET='testfunc'
cat <<EOF >testfunc.c
+$TCADDINCL
#include <$2>
int main(void) {
return(0);
diff --git a/usr.sbin/httpd/src/include/alloc.h b/usr.sbin/httpd/src/include/alloc.h
index bc2777acd8d..e69de29bb2d 100644
--- a/usr.sbin/httpd/src/include/alloc.h
+++ b/usr.sbin/httpd/src/include/alloc.h
@@ -1,414 +0,0 @@
-/* ====================================================================
- * Copyright (c) 1995-1999 The Apache Group. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgment:
- * "This product includes software developed by the Apache Group
- * for use in the Apache HTTP server project (http://www.apache.org/)."
- *
- * 4. The names "Apache Server" and "Apache Group" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * apache@apache.org.
- *
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by the Apache Group
- * for use in the Apache HTTP server project (http://www.apache.org/)."
- *
- * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- *
- * This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Group and was originally based
- * on public domain software written at the National Center for
- * Supercomputing Applications, University of Illinois, Urbana-Champaign.
- * For more information on the Apache Group and the Apache HTTP server
- * project, please see <http://www.apache.org/>.
- *
- */
-
-#ifndef APACHE_ALLOC_H
-#define APACHE_ALLOC_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/*
- * Resource allocation routines...
- *
- * designed so that we don't have to keep track of EVERYTHING so that
- * it can be explicitly freed later (a fundamentally unsound strategy ---
- * particularly in the presence of die()).
- *
- * Instead, we maintain pools, and allocate items (both memory and I/O
- * handlers) from the pools --- currently there are two, one for per
- * transaction info, and one for config info. When a transaction is over,
- * we can delete everything in the per-transaction pool without fear, and
- * without thinking too hard about it either.
- *
- * rst
- */
-
-/* Arenas for configuration info and transaction info
- * --- actual layout of the pool structure is private to
- * alloc.c.
- */
-
- /* Need declaration of DIR on Win32 */
-#ifdef WIN32
-#include "../os/win32/readdir.h"
-#endif
-
-typedef struct pool pool;
-typedef struct pool ap_pool;
-
-pool * ap_init_alloc(void); /* Set up everything */
-API_EXPORT(pool *) ap_make_sub_pool(pool *); /* All pools are subpools of permanent_pool */
-#if defined(EAPI)
-typedef enum { AP_POOL_RD, AP_POOL_RW } ap_pool_lock_mode;
-int ap_shared_pool_possible(void);
-void ap_init_alloc_shared(int);
-void ap_kill_alloc_shared(void);
-API_EXPORT(pool *) ap_make_shared_sub_pool(pool *);
-API_EXPORT(int) ap_acquire_pool(pool *, ap_pool_lock_mode);
-API_EXPORT(int) ap_release_pool(pool *);
-#endif
-API_EXPORT(void) ap_destroy_pool(pool *);
-
-/* pools have nested lifetimes -- sub_pools are destroyed when the
- * parent pool is cleared. We allow certain liberties with operations
- * on things such as tables (and on other structures in a more general
- * sense) where we allow the caller to insert values into a table which
- * were not allocated from the table's pool. The table's data will
- * remain valid as long as all the pools from which its values are
- * allocated remain valid.
- *
- * For example, if B is a sub pool of A, and you build a table T in
- * pool B, then it's safe to insert data allocated in A or B into T
- * (because B lives at most as long as A does, and T is destroyed when
- * B is cleared/destroyed). On the other hand, if S is a table in
- * pool A, it is safe to insert data allocated in A into S, but it
- * is *not safe* to insert data allocated from B into S... because
- * B can be cleared/destroyed before A is (which would leave dangling
- * pointers in T's data structures).
- *
- * In general we say that it is safe to insert data into a table T
- * if the data is allocated in any ancestor of T's pool. This is the
- * basis on which the POOL_DEBUG code works -- it tests these ancestor
- * relationships for all data inserted into tables. POOL_DEBUG also
- * provides tools (ap_find_pool, and ap_pool_is_ancestor) for other
- * folks to implement similar restrictions for their own data
- * structures.
- *
- * However, sometimes this ancestor requirement is inconvenient --
- * sometimes we're forced to create a sub pool (such as through
- * ap_sub_req_lookup_uri), and the sub pool is guaranteed to have
- * the same lifetime as the parent pool. This is a guarantee implemented
- * by the *caller*, not by the pool code. That is, the caller guarantees
- * they won't destroy the sub pool individually prior to destroying the
- * parent pool.
- *
- * In this case the caller must call ap_pool_join() to indicate this
- * guarantee to the POOL_DEBUG code. There are a few examples spread
- * through the standard modules.
- */
-#ifndef POOL_DEBUG
-#ifdef ap_pool_join
-#undef ap_pool_join
-#endif
-#define ap_pool_join(a,b)
-#else
-API_EXPORT(void) ap_pool_join(pool *p, pool *sub);
-API_EXPORT(pool *) ap_find_pool(const void *ts);
-API_EXPORT(int) ap_pool_is_ancestor(pool *a, pool *b);
-#endif
-
-/* Clearing out EVERYTHING in an pool... destroys any sub-pools */
-
-API_EXPORT(void) ap_clear_pool(struct pool *);
-
-/* Preparing for exec() --- close files, etc., but *don't* flush I/O
- * buffers, *don't* wait for subprocesses, and *don't* free any memory.
- */
-
-API_EXPORT(void) ap_cleanup_for_exec(void);
-
-/* routines to allocate memory from an pool... */
-
-API_EXPORT(void *) ap_palloc(struct pool *, int nbytes);
-API_EXPORT(void *) ap_pcalloc(struct pool *, int nbytes);
-API_EXPORT(char *) ap_pstrdup(struct pool *, const char *s);
-/* make a nul terminated copy of the n characters starting with s */
-API_EXPORT(char *) ap_pstrndup(struct pool *, const char *s, int n);
-API_EXPORT_NONSTD(char *) ap_pstrcat(struct pool *,...); /* all '...' must be char* */
-API_EXPORT_NONSTD(char *) ap_psprintf(struct pool *, const char *fmt, ...)
- __attribute__((format(printf,2,3)));
-API_EXPORT(char *) ap_pvsprintf(struct pool *, const char *fmt, va_list);
-
-/* array and alist management... keeping lists of things.
- * Common enough to want common support code ...
- */
-
-typedef struct {
- ap_pool *pool;
- int elt_size;
- int nelts;
- int nalloc;
- char *elts;
-} array_header;
-
-API_EXPORT(array_header *) ap_make_array(pool *p, int nelts, int elt_size);
-API_EXPORT(void *) ap_push_array(array_header *);
-API_EXPORT(void) ap_array_cat(array_header *dst, const array_header *src);
-API_EXPORT(array_header *) ap_append_arrays(pool *, const array_header *,
- const array_header *);
-
-/* ap_array_pstrcat generates a new string from the pool containing
- * the concatenated sequence of substrings referenced as elements within
- * the array. The string will be empty if all substrings are empty or null,
- * or if there are no elements in the array.
- * If sep is non-NUL, it will be inserted between elements as a separator.
- */
-API_EXPORT(char *) ap_array_pstrcat(pool *p, const array_header *arr,
- const char sep);
-
-/* copy_array copies the *entire* array. copy_array_hdr just copies
- * the header, and arranges for the elements to be copied if (and only
- * if) the code subsequently does a push or arraycat.
- */
-
-API_EXPORT(array_header *) ap_copy_array(pool *p, const array_header *src);
-API_EXPORT(array_header *) ap_copy_array_hdr(pool *p, const array_header *src);
-
-
-/* Tables. Implemented alist style, for now, though we try to keep
- * it so that imposing a hash table structure on top in the future
- * wouldn't be *too* hard...
- *
- * Note that key comparisons for these are case-insensitive, largely
- * because that's what's appropriate and convenient everywhere they're
- * currently being used...
- */
-
-typedef struct table table;
-
-typedef struct {
- char *key; /* maybe NULL in future;
- * check when iterating thru table_elts
- */
- char *val;
-} table_entry;
-
-API_EXPORT(table *) ap_make_table(pool *p, int nelts);
-API_EXPORT(table *) ap_copy_table(pool *p, const table *);
-API_EXPORT(void) ap_clear_table(table *);
-API_EXPORT(const char *) ap_table_get(const table *, const char *);
-API_EXPORT(void) ap_table_set(table *, const char *name, const char *val);
-API_EXPORT(void) ap_table_setn(table *, const char *name, const char *val);
-API_EXPORT(void) ap_table_merge(table *, const char *name, const char *more_val);
-API_EXPORT(void) ap_table_mergen(table *, const char *name, const char *more_val);
-API_EXPORT(void) ap_table_unset(table *, const char *key);
-API_EXPORT(void) ap_table_add(table *, const char *name, const char *val);
-API_EXPORT(void) ap_table_addn(table *, const char *name, const char *val);
-API_EXPORT(void) ap_table_do(int (*comp) (void *, const char *, const char *), void *rec,
- const table *t,...);
-
-API_EXPORT(table *) ap_overlay_tables(pool *p, const table *overlay, const table *base);
-
-/* Conceptually, ap_overlap_tables does this:
-
- array_header *barr = ap_table_elts(b);
- table_entry *belt = (table_entry *)barr->elts;
- int i;
-
- for (i = 0; i < barr->nelts; ++i) {
- if (flags & AP_OVERLAP_TABLES_MERGE) {
- ap_table_mergen(a, belt[i].key, belt[i].val);
- }
- else {
- ap_table_setn(a, belt[i].key, belt[i].val);
- }
- }
-
- Except that it is more efficient (less space and cpu-time) especially
- when b has many elements.
-
- Notice the assumptions on the keys and values in b -- they must be
- in an ancestor of a's pool. In practice b and a are usually from
- the same pool.
-*/
-#define AP_OVERLAP_TABLES_SET (0)
-#define AP_OVERLAP_TABLES_MERGE (1)
-API_EXPORT(void) ap_overlap_tables(table *a, const table *b, unsigned flags);
-
-/* XXX: these know about the definition of struct table in alloc.c. That
- * definition is not here because it is supposed to be private, and by not
- * placing it here we are able to get compile-time diagnostics from modules
- * written which assume that a table is the same as an array_header. -djg
- */
-#define ap_table_elts(t) ((array_header *)(t))
-#define ap_is_empty_table(t) (((t) == NULL)||(((array_header *)(t))->nelts == 0))
-
-/* routines to remember allocation of other sorts of things...
- * generic interface first. Note that we want to have two separate
- * cleanup functions in the general case, one for exec() preparation,
- * to keep CGI scripts and the like from inheriting access to things
- * they shouldn't be able to touch, and one for actually cleaning up,
- * when the actual server process wants to get rid of the thing,
- * whatever it is.
- *
- * kill_cleanup disarms a cleanup, presumably because the resource in
- * question has been closed, freed, or whatever, and it's scarce
- * enough to want to reclaim (e.g., descriptors). It arranges for the
- * resource not to be cleaned up a second time (it might have been
- * reallocated). run_cleanup does the same, but runs it first.
- *
- * Cleanups are identified for purposes of finding & running them off by the
- * plain_cleanup and data, which should presumably be unique.
- *
- * NB any code which invokes register_cleanup or kill_cleanup directly
- * is a critical section which should be guarded by block_alarms() and
- * unblock_alarms() below...
- */
-
-API_EXPORT(void) ap_register_cleanup(pool *p, void *data,
- void (*plain_cleanup) (void *),
- void (*child_cleanup) (void *));
-
-API_EXPORT(void) ap_kill_cleanup(pool *p, void *data, void (*plain_cleanup) (void *));
-API_EXPORT(void) ap_run_cleanup(pool *p, void *data, void (*cleanup) (void *));
-
-/* A "do-nothing" cleanup, for register_cleanup; it's faster to do
- * things this way than to test for NULL. */
-API_EXPORT_NONSTD(void) ap_null_cleanup(void *data);
-
-/* The time between when a resource is actually allocated, and when it
- * its cleanup is registered is a critical section, during which the
- * resource could leak if we got interrupted or timed out. So, anything
- * which registers cleanups should bracket resource allocation and the
- * cleanup registry with these. (This is done internally by run_cleanup).
- *
- * NB they are actually implemented in http_main.c, since they are bound
- * up with timeout handling in general...
- */
-
-#ifdef TPF
-#define ap_block_alarms() (0)
-#define ap_unblock_alarms() (0)
-#else
-API_EXPORT(void) ap_block_alarms(void);
-API_EXPORT(void) ap_unblock_alarms(void);
-#endif /* TPF */
-
-/* Common cases which want utility support..
- * the note_cleanups_for_foo routines are for
- */
-
-API_EXPORT(FILE *) ap_pfopen(struct pool *, const char *name, const char *fmode);
-API_EXPORT(FILE *) ap_pfdopen(struct pool *, int fd, const char *fmode);
-API_EXPORT(int) ap_popenf(struct pool *, const char *name, int flg, int mode);
-
-API_EXPORT(void) ap_note_cleanups_for_file(pool *, FILE *);
-API_EXPORT(void) ap_note_cleanups_for_fd(pool *, int);
-#ifdef WIN32
-API_EXPORT(void) ap_note_cleanups_for_h(pool *, HANDLE);
-#endif
-API_EXPORT(void) ap_kill_cleanups_for_fd(pool *p, int fd);
-
-API_EXPORT(void) ap_note_cleanups_for_socket(pool *, int);
-API_EXPORT(void) ap_kill_cleanups_for_socket(pool *p, int sock);
-API_EXPORT(int) ap_psocket(pool *p, int, int, int);
-API_EXPORT(int) ap_pclosesocket(pool *a, int sock);
-
-API_EXPORT(regex_t *) ap_pregcomp(pool *p, const char *pattern, int cflags);
-API_EXPORT(void) ap_pregfree(pool *p, regex_t * reg);
-
-/* routines to note closes... file descriptors are constrained enough
- * on some systems that we want to support this.
- */
-
-API_EXPORT(int) ap_pfclose(struct pool *, FILE *);
-API_EXPORT(int) ap_pclosef(struct pool *, int fd);
-#ifdef WIN32
-API_EXPORT(int) ap_pcloseh(struct pool *, HANDLE hDevice);
-#endif
-
-/* routines to deal with directories */
-API_EXPORT(DIR *) ap_popendir(pool *p, const char *name);
-API_EXPORT(void) ap_pclosedir(pool *p, DIR * d);
-
-/* ... even child processes (which we may want to wait for,
- * or to kill outright, on unexpected termination).
- *
- * ap_spawn_child is a utility routine which handles an awful lot of
- * the rigamarole associated with spawning a child --- it arranges
- * for pipes to the child's stdin and stdout, if desired (if not,
- * set the associated args to NULL). It takes as args a function
- * to call in the child, and an argument to be passed to the function.
- */
-
-enum kill_conditions {
- kill_never, /* process is never sent any signals */
- kill_always, /* process is sent SIGKILL on pool cleanup */
- kill_after_timeout, /* SIGTERM, wait 3 seconds, SIGKILL */
- just_wait, /* wait forever for the process to complete */
- kill_only_once /* send SIGTERM and then wait */
-};
-
-typedef struct child_info child_info;
-API_EXPORT(void) ap_note_subprocess(pool *a, pid_t pid,
- enum kill_conditions how);
-API_EXPORT(int) ap_spawn_child(pool *, int (*)(void *, child_info *),
- void *, enum kill_conditions,
- FILE **pipe_in, FILE **pipe_out,
- FILE **pipe_err);
-
-/* magic numbers --- min free bytes to consider a free pool block useable,
- * and the min amount to allocate if we have to go to malloc() */
-
-#ifndef BLOCK_MINFREE
-#define BLOCK_MINFREE 4096
-#endif
-#ifndef BLOCK_MINALLOC
-#define BLOCK_MINALLOC 8192
-#endif
-
-/* Finally, some accounting */
-
-API_EXPORT(long) ap_bytes_in_pool(pool *p);
-API_EXPORT(long) ap_bytes_in_free_blocks(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* !APACHE_ALLOC_H */
diff --git a/usr.sbin/httpd/src/include/ap_config.h b/usr.sbin/httpd/src/include/ap_config.h
index f60be1c3b5e..1170a470cd2 100644
--- a/usr.sbin/httpd/src/include/ap_config.h
+++ b/usr.sbin/httpd/src/include/ap_config.h
@@ -135,8 +135,16 @@ int gethostname (char *name, int namelen);
#define NO_WRITEV
#define HAVE_SHMGET 1
#define USE_SHMGET_SCOREBOARD
-#define SHM_R 0400 /* Read permission */
-#define SHM_W 0200 /* Write permission */
+/*
+ UID/GID isn't a native concept for MPE, and it's definitely not a 100%
+ Unix implementation. There isn't a traditional superuser concept either,
+ so we're forced to liberalize SHM security a bit so the parent & children
+ can communicate when they're running with different UIDs within the same
+ GID (the GID will *always* be the same on MPE). Thus the weird SHM_R and
+ SHM_W below.
+*/
+#define SHM_R 0440 /* Read permission */
+#define SHM_W 0220 /* Write permission */
#define NEED_INITGROUPS
#define NEED_STRCASECMP
#define NEED_STRDUP
@@ -149,6 +157,7 @@ extern char *inet_ntoa();
#define S_IREAD S_IRUSR
#define S_IWRITE S_IWUSR
#define PF_INET AF_INET
+#define USE_FCNTL_SERIALIZED_ACCEPT
#elif defined(SUNOS4)
#define HAVE_GMTOFF 1
@@ -268,7 +277,9 @@ typedef int rlim_t;
#ifdef NEED_RLIM_T
typedef int rlim_t;
#endif
+#if !defined(USE_PTHREAD_SERIALIZED_ACCEPT)
#define USE_FCNTL_SERIALIZED_ACCEPT
+#endif
#ifdef USEBCOPY
#define memmove(a,b,c) bcopy(b,a,c)
#endif
@@ -409,13 +420,9 @@ typedef int pid_t;
#define DYLD_CANT_UNLOAD
#endif
-#elif defined(MAC_OS) || defined(MAC_OS_X_SERVER) /* Mac OS (>= 10.0) and Mac OS X Server (<= 5.x) */
+#elif defined(DARWIN) /* Darwin (Mac OS) */
#undef PLATFORM
-#ifdef MAC_OS_X_SERVER
-#define PLATFORM "Mac OS X Server"
-#else
-#define PLATFORM "Mac OS"
-#endif
+#define PLATFORM "Darwin"
#define HAVE_DYLD
#define HAVE_GMTOFF
#define HAVE_MMAP
@@ -743,6 +750,9 @@ typedef quad_t rlim_t;
#define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
#define HAVE_SYSLOG 1
#define SYS_SIGLIST sys_siglist
+#if (defined(__FreeBSD_version) && (__FreeBSD_version >= 400000))
+#define NET_SIZE_T socklen_t
+#endif
#elif defined(QNX)
#ifndef crypt
@@ -812,6 +822,7 @@ typedef int rlim_t;
#define NO_RELIABLE_PIPED_LOGS
#define USE_OS2SEM_SERIALIZED_ACCEPT
#define SINGLE_LISTEN_UNSERIALIZED_ACCEPT
+#define NO_SLACK
#define FOPEN_REQUIRES_T
#elif defined(__MACHTEN__)
@@ -885,11 +896,15 @@ typedef int rlim_t;
#define NEED_STRDUP
#elif defined(BEOS)
+#undef PLATFORM
+#define PLATFORM "BeOS"
#include <stddef.h>
#define NO_WRITEV
#define NO_KILLPG
#define NEED_INITGROUPS
+#define PF_INET AF_INET
+#define S_IEXEC S_IXUSR
#elif defined(_CX_SX)
#define JMP_BUF sigjmp_buf
@@ -955,7 +970,8 @@ typedef int rlim_t;
#define HAVE_SHMGET
#define USE_SHMGET_SCOREBOARD
#define USE_MMAP_FILES
-#define USE_FCNTL_SERIALIZED_ACCEPT
+#define NEED_UNION_SEMUN
+#define USE_SYSVSEM_SERIALIZED_ACCEPT
#define _POSIX_SOURCE
#include <signal.h>
#ifdef SIGDUMP /* SIGDUMP is not defined by OS/390 v1r2 */
@@ -1028,12 +1044,12 @@ typedef int rlim_t;
#define CORE_EXPORT_NONSTD API_EXPORT_NONSTD
#endif
-/* On Mac OS X Server, symbols that conflict with loaded dylibs
+/* On Darwin, symbols that conflict with loaded dylibs
* (eg. System framework) need to be declared as private symbols with
* __private_extern__.
* For other systems, make that a no-op.
*/
-#if (defined(MAC_OS) || defined(MAC_OS_X_SERVER)) && defined(__DYNAMIC__)
+#if defined(DARWIN) && defined(__DYNAMIC__)
#define ap_private_extern __private_extern__
#else
#define ap_private_extern
@@ -1129,7 +1145,7 @@ typedef int rlim_t;
#undef NSIG
#endif
#include <errno.h>
-#if !defined(QNX) && !defined(CONVEXOS11) && !defined(NEXT) && !defined(TPF) && !defined(NETWARE)
+#if !defined(QNX) && !defined(CONVEXOS11) && !defined(NEXT) && !defined(TPF) && !defined(NETWARE) && !defined(MPE)
#include <memory.h>
#endif
@@ -1231,7 +1247,7 @@ Sigfunc *signal(int signo, Sigfunc * func);
#endif
/* Majority of os's want to verify FD_SETSIZE */
-#if !defined(WIN32) && !defined(TPF)
+#if !defined(WIN32) && !defined(TPF) && !defined(NETWARE)
#define CHECK_FD_SETSIZE
#endif
@@ -1403,7 +1419,7 @@ int gethostname(char *name, int namelen);
void syslog(int, char *,...);
char *mktemp(char *);
-long vfprintf(FILE *, const char *, va_list);
+int vfprintf(FILE *, const char *, va_list);
#endif /* SUNOS_LIB_PROTOTYPES */
diff --git a/usr.sbin/httpd/src/include/ap_mmn.h b/usr.sbin/httpd/src/include/ap_mmn.h
index bb043ad0c7f..c7bb51ee4c2 100644
--- a/usr.sbin/httpd/src/include/ap_mmn.h
+++ b/usr.sbin/httpd/src/include/ap_mmn.h
@@ -227,6 +227,9 @@
* ap_base64decode_binary(), ap_base64decode_len(),
* ap_pbase64decode(), ap_pbase64encode()
* 19990320.7 - add ap_strcasestr()
+ * 19990320.8 - add request_rec.case_preserved_filename
+ * 19990320.9 - renamed alloc.h to ap_alloc.h
+ * 19990320.10 - add ap_is_rdirectory() and ap_stripprefix()
*/
/*
@@ -250,24 +253,28 @@
#ifndef MODULE_MAGIC_NUMBER_MAJOR
#define MODULE_MAGIC_NUMBER_MAJOR 19990320
#endif
-#define MODULE_MAGIC_NUMBER_MINOR 7 /* 0...n */
-#define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR /* backward compat */
+#define MODULE_MAGIC_NUMBER_MINOR 10 /* 0...n */
/* Useful for testing for features. */
-#define MODULE_MAGIC_AT_LEAST(major,minor) \
- ((major) > MODULE_MAGIC_NUMBER_MAJOR \
+#define AP_MODULE_MAGIC_AT_LEAST(major,minor) \
+ ((major) < MODULE_MAGIC_NUMBER_MAJOR \
|| ((major) == MODULE_MAGIC_NUMBER_MAJOR \
- && (minor) >= MODULE_MAGIC_NUMBER_MINOR))
+ && (minor) <= MODULE_MAGIC_NUMBER_MINOR))
-/* For example, suppose you wish to use the ap_overlap_tables
- function. You can do this:
-
-#if MODULE_MAGIC_AT_LEAST(19980812,2)
- ... use ap_overlap_tables()
-#else
- ... alternative code which doesn't use ap_overlap_tables()
-#endif
+/*
+ * For example, suppose you wish to use the ap_overlap_tables
+ * function. You can do this:
+ *
+ * #if AP_MODULE_MAGIC_AT_LEAST(19980812,2)
+ * ... use ap_overlap_tables()
+ * #else
+ * ... alternative code which doesn't use ap_overlap_tables()
+ * #endif
+ *
+ */
-*/
+/* deprecated. present for backwards compatibility */
+#define MODULE_MAGIC_NUMBER MODULE_MAGIC_NUMBER_MAJOR
+#define MODULE_MAGIC_AT_LEAST old_broken_macro_we_hope_you_are_not_using
#endif /* !APACHE_AP_MMN_H */
diff --git a/usr.sbin/httpd/src/include/hsregex.h b/usr.sbin/httpd/src/include/hsregex.h
index 1d76e5b41d3..fc17aa82f7b 100644
--- a/usr.sbin/httpd/src/include/hsregex.h
+++ b/usr.sbin/httpd/src/include/hsregex.h
@@ -16,11 +16,13 @@ extern "C" {
#endif
#endif
-#if defined(MAC_OS) || defined(MAC_OS_X_SERVER)
+#ifndef ap_private_extern
+#if defined(DARWIN)
#define ap_private_extern __private_extern__
#else
#define ap_private_extern
#endif
+#endif
typedef off_t regoff_t;
typedef struct {
diff --git a/usr.sbin/httpd/src/include/http_conf_globals.h b/usr.sbin/httpd/src/include/http_conf_globals.h
index c78b336a825..7a839cf584b 100644
--- a/usr.sbin/httpd/src/include/http_conf_globals.h
+++ b/usr.sbin/httpd/src/include/http_conf_globals.h
@@ -66,28 +66,28 @@ extern "C" {
* Process config --- what the process ITSELF is doing
*/
-extern int ap_standalone;
-extern int ap_configtestonly;
+extern API_VAR_EXPORT int ap_standalone;
+extern API_VAR_EXPORT int ap_configtestonly;
extern int ap_docrootcheck;
-extern uid_t ap_user_id;
-extern char *ap_user_name;
-extern gid_t ap_group_id;
+extern API_VAR_EXPORT uid_t ap_user_id;
+extern API_VAR_EXPORT char *ap_user_name;
+extern API_VAR_EXPORT gid_t ap_group_id;
#ifdef NETWARE
extern unsigned int ap_thread_stack_size;
#endif
#ifdef MULTIPLE_GROUPS
extern gid_t group_id_list[NGROUPS_MAX];
#endif
-extern int ap_max_requests_per_child;
-extern int ap_threads_per_child;
-extern int ap_excess_requests_per_child;
+extern API_VAR_EXPORT int ap_max_requests_per_child;
+extern API_VAR_EXPORT int ap_threads_per_child;
+extern API_VAR_EXPORT int ap_excess_requests_per_child;
extern struct in_addr ap_bind_address;
extern listen_rec *ap_listeners;
-extern int ap_daemons_to_start;
-extern int ap_daemons_min_free;
-extern int ap_daemons_max_free;
-extern int ap_daemons_limit;
-extern MODULE_VAR_EXPORT int ap_suexec_enabled;
+extern API_VAR_EXPORT int ap_daemons_to_start;
+extern API_VAR_EXPORT int ap_daemons_min_free;
+extern API_VAR_EXPORT int ap_daemons_max_free;
+extern API_VAR_EXPORT int ap_daemons_limit;
+extern API_VAR_EXPORT int ap_suexec_enabled;
extern int ap_listenbacklog;
extern int ap_dump_settings;
extern API_VAR_EXPORT int ap_extended_status;
@@ -95,10 +95,10 @@ extern API_VAR_EXPORT int ap_extended_status;
extern API_VAR_EXPORT ap_ctx *ap_global_ctx;
#endif /* EAPI */
-extern char *ap_pid_fname;
-extern char *ap_scoreboard_fname;
+extern API_VAR_EXPORT char *ap_pid_fname;
+extern API_VAR_EXPORT char *ap_scoreboard_fname;
extern char *ap_lock_fname;
-extern MODULE_VAR_EXPORT char *ap_server_argv0;
+extern API_VAR_EXPORT char *ap_server_argv0;
extern enum server_token_type ap_server_tokens;
@@ -109,7 +109,7 @@ extern enum server_token_type ap_server_tokens;
*/
extern API_VAR_EXPORT char ap_server_root[MAX_STRING_LEN];
-extern char ap_server_confname[MAX_STRING_LEN];
+extern API_VAR_EXPORT char ap_server_confname[MAX_STRING_LEN];
/* for -C, -c and -D switches */
extern array_header *ap_server_pre_read_config;
diff --git a/usr.sbin/httpd/src/include/http_config.h b/usr.sbin/httpd/src/include/http_config.h
index 271eff1d7eb..b50d4ed1eed 100644
--- a/usr.sbin/httpd/src/include/http_config.h
+++ b/usr.sbin/httpd/src/include/http_config.h
@@ -415,6 +415,7 @@ void ap_child_exit_modules(pool *p, server_rec *s);
void ap_setup_prelinked_modules(void);
void ap_show_directives(void);
void ap_show_modules(void);
+void ap_cleanup_method_ptrs(void);
/* For http_request.c... */
diff --git a/usr.sbin/httpd/src/include/http_main.h b/usr.sbin/httpd/src/include/http_main.h
index fec41a6034c..589ea02f15b 100644
--- a/usr.sbin/httpd/src/include/http_main.h
+++ b/usr.sbin/httpd/src/include/http_main.h
@@ -112,8 +112,8 @@ extern "C" {
* reset_timeout() resets the timeout in progress.
*/
-void ap_start_shutdown(void);
-void ap_start_restart(int);
+API_EXPORT(void) ap_start_shutdown(void);
+API_EXPORT(void) ap_start_restart(int);
API_EXPORT(void) ap_hard_timeout(char *, request_rec *);
void ap_keepalive_timeout(char *, request_rec *);
API_EXPORT(void) ap_soft_timeout(char *, request_rec *);
@@ -131,6 +131,8 @@ unsigned int ap_set_callback_and_alarm(void (*fn) (int), int x);
#endif
API_EXPORT(int) ap_check_alarm(void);
+void setup_signal_names(char *prefix);
+
#ifndef NO_OTHER_CHILD
/*
* register an other_child -- a child which the main loop keeps track of
diff --git a/usr.sbin/httpd/src/include/httpd.h b/usr.sbin/httpd/src/include/httpd.h
index d817ac4f628..8a0547bc285 100644
--- a/usr.sbin/httpd/src/include/httpd.h
+++ b/usr.sbin/httpd/src/include/httpd.h
@@ -72,10 +72,10 @@ extern "C" {
#ifdef EAPI
#include "ap_mm.h"
#endif
-#include "alloc.h"
+#include "ap_alloc.h"
/*
* Include the Extended API headers.
- * Don't move the position. It has to be after alloc.h because it uses the
+ * Don't move the position. It has to be after ap_alloc.h because it uses the
* pool stuff but before buff.h because the buffer stuff uses the EAPI, too.
*/
#ifdef EAPI
@@ -457,12 +457,19 @@ extern "C" {
* Example: "Apache/1.1.0 MrWidget/0.1-alpha"
*/
-#define SERVER_BASEVERSION "Apache/1.3.12" /* SEE COMMENTS ABOVE */
-#define SERVER_VERSION SERVER_BASEVERSION
+#define SERVER_BASEVENDOR "Apache Group"
+#define SERVER_BASEPRODUCT "Apache"
+#define SERVER_BASEREVISION "1.3.14"
+#define SERVER_BASEVERSION SERVER_BASEPRODUCT "/" SERVER_BASEREVISION
+
+#define SERVER_PRODUCT SERVER_BASEPRODUCT
+#define SERVER_REVISION SERVER_BASEREVISION
+#define SERVER_VERSION SERVER_PRODUCT "/" SERVER_REVISION
enum server_token_type {
SrvTk_MIN, /* eg: Apache/1.3.0 */
SrvTk_OS, /* eg: Apache/1.3.0 (UNIX) */
- SrvTk_FULL /* eg: Apache/1.3.0 (UNIX) PHP/3.0 FooBar/1.2b */
+ SrvTk_FULL, /* eg: Apache/1.3.0 (UNIX) PHP/3.0 FooBar/1.2b */
+ SrvTk_PRODUCT_ONLY /* eg: Apache */
};
API_EXPORT(const char *) ap_get_server_version(void);
@@ -476,7 +483,7 @@ API_EXPORT(void) ap_add_config_define(const char *define);
* Always increases along the same track as the source branch.
* For example, Apache 1.4.2 would be '10402100', 2.5b7 would be '20500007'.
*/
-#define APACHE_RELEASE 10312100
+#define APACHE_RELEASE 10314100
#define SERVER_PROTOCOL "HTTP/1.1"
#ifndef SERVER_SUPPORT
@@ -847,6 +854,17 @@ struct request_rec {
*/
const struct htaccess_result *htaccess;
+ /* On systems with case insensitive file systems (Windows, OS/2, etc.),
+ * r->filename is case canonicalized (folded to either lower or upper
+ * case, depending on the specific system) to accomodate file access
+ * checking. case_preserved_filename is the same as r->filename
+ * except case is preserved. There is at least one instance where Apache
+ * needs access to the case preserved filename: Java class files published
+ * with WebDAV need to preserve filename case to make the Java compiler
+ * happy.
+ */
+ char *case_preserved_filename;
+
/* Things placed at the end of the record to avoid breaking binary
* compatibility. It would be nice to remember to reorder the entire
* record to improve 64bit alignment the next time we need to break
@@ -1052,6 +1070,7 @@ API_EXPORT(char *) ap_make_full_path(pool *a, const char *dir, const char *f);
API_EXPORT(int) ap_is_matchexp(const char *str);
API_EXPORT(int) ap_strcmp_match(const char *str, const char *exp);
API_EXPORT(int) ap_strcasecmp_match(const char *str, const char *exp);
+API_EXPORT(char *) ap_stripprefix(const char *bigstring, const char *prefix);
API_EXPORT(char *) ap_strcasestr(const char *s1, const char *s2);
API_EXPORT(char *) ap_pbase64decode(pool *p, const char *bufcoded);
API_EXPORT(char *) ap_pbase64encode(pool *p, char *string);
@@ -1076,6 +1095,7 @@ API_EXPORT(int) ap_ind(const char *, char); /* Sigh... */
API_EXPORT(int) ap_rind(const char *, char);
API_EXPORT(char *) ap_escape_quotes (pool *p, const char *instring);
+API_EXPORT(void) ap_remove_spaces(char *dest, char *src);
/* Common structure for reading of config files / passwd files etc. */
typedef struct {
@@ -1115,6 +1135,7 @@ char *strerror(int err);
API_EXPORT(uid_t) ap_uname2id(const char *name);
API_EXPORT(gid_t) ap_gname2id(const char *name);
API_EXPORT(int) ap_is_directory(const char *name);
+API_EXPORT(int) ap_is_rdirectory(const char *name);
API_EXPORT(int) ap_can_exec(const struct stat *);
API_EXPORT(void) ap_chdir_file(const char *file);
@@ -1130,7 +1151,12 @@ API_EXPORT(char *) ap_os_canonical_filename(pool *p, const char *file);
#ifdef WIN32
API_EXPORT(char *) ap_os_case_canonical_filename(pool *pPool, const char *szFile);
API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool, const char *szFile);
+#elif defined(OS2)
+API_EXPORT(char *) ap_os_case_canonical_filename(pool *pPool, const char *szFile);
+API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool, const char *szFile);
#else
+/* XXX: This makes little sense for NETWARE ... NETWARE is case insensitive?
+ */
#define ap_os_case_canonical_filename(p,f) ap_os_canonical_filename(p,f)
#define ap_os_systemcase_filename(p,f) ap_os_canonical_filename(p,f)
#endif
diff --git a/usr.sbin/httpd/src/include/multithread.h b/usr.sbin/httpd/src/include/multithread.h
index 901046fd082..f64f67e3971 100644
--- a/usr.sbin/httpd/src/include/multithread.h
+++ b/usr.sbin/httpd/src/include/multithread.h
@@ -58,7 +58,7 @@ extern void *ap_dummy_mutex;
#define ap_create_mutex(name) ((mutex *)ap_dummy_mutex)
#define ap_acquire_mutex(mutex_id) ((int)MULTI_OK)
#define ap_release_mutex(mutex_id) ((int)MULTI_OK)
-#define ap_destroy_mutex(mutex_id) (0)
+#define ap_destroy_mutex(mutex_id)
#endif /* ndef MULTITHREAD */
diff --git a/usr.sbin/httpd/src/include/util_script.h b/usr.sbin/httpd/src/include/util_script.h
index 416d72942dc..b2704c3d60a 100644
--- a/usr.sbin/httpd/src/include/util_script.h
+++ b/usr.sbin/httpd/src/include/util_script.h
@@ -80,6 +80,10 @@ API_EXPORT(int) ap_scan_script_header_err_buff(request_rec *r, BUFF *f,
API_EXPORT(int) ap_scan_script_header_err_core(request_rec *r, char *buffer,
int (*getsfunc) (char *, int, void *),
void *getsfunc_data);
+API_EXPORT_NONSTD(int) ap_scan_script_header_err_strs(request_rec *r,
+ char *buffer,
+ const char **termch,
+ int *termarg, ...);
API_EXPORT(void) ap_send_size(size_t size, request_rec *r);
API_EXPORT(int) ap_call_exec(request_rec *r, child_info *pinfo, char *argv0, char **env,
int shellcmd);
diff --git a/usr.sbin/httpd/src/lib/expat-lite/xmlparse.c b/usr.sbin/httpd/src/lib/expat-lite/xmlparse.c
index 62f4116171e..7b64fc26b5c 100644
--- a/usr.sbin/httpd/src/lib/expat-lite/xmlparse.c
+++ b/usr.sbin/httpd/src/lib/expat-lite/xmlparse.c
@@ -2411,7 +2411,6 @@ appendAttributeValue(XML_Parser parser, const ENCODING *enc, int isCdata,
if (!poolAppend(pool, enc, ptr, next))
return XML_ERROR_NO_MEMORY;
break;
- break;
case XML_TOK_TRAILING_CR:
next = ptr + enc->minBytesPerChar;
/* fall through */
diff --git a/usr.sbin/httpd/src/lib/expat-lite/xmlparse.dsp b/usr.sbin/httpd/src/lib/expat-lite/xmlparse.dsp
index 6681620e8c0..ff601312ca7 100644
--- a/usr.sbin/httpd/src/lib/expat-lite/xmlparse.dsp
+++ b/usr.sbin/httpd/src/lib/expat-lite/xmlparse.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="xmlparse" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -17,12 +17,12 @@ CFG=xmlparse - Win32 Release
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "xmlparse - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "xmlparse - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "xmlparse - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -38,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir "."
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\Release"
-# PROP Intermediate_Dir ".\Release"
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir "."
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -52,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /machine:I386 /out:"Release\xmlparse.dll"
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"..\..\os\win32\BaseAddr.ref",xmlparse
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"..\..\os\win32\BaseAddr.ref",xmlparse
# SUBTRACT LINK32 /profile
!ELSEIF "$(CFG)" == "xmlparse - Win32 Debug"
@@ -65,12 +65,12 @@ LINK32=link.exe
# PROP BASE Target_Dir "."
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\Debug"
-# PROP Intermediate_Dir ".\Debug"
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir "."
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /GX /Od /I "..\xmltok" /I "..\xmlwf" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /YX /FD /ZI /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /I "..\xmltok" /I "..\xmlwf" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllimport) /D XMLPARSEAPI=__declspec(dllexport) /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -79,8 +79,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /debug /machine:I386 /out:"Debug\xmlparse.dll"
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"..\..\os\win32\BaseAddr.ref",xmlparse
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /debug /machine:I386 /base:@"..\..\os\win32\BaseAddr.ref",xmlparse
!ENDIF
diff --git a/usr.sbin/httpd/src/lib/expat-lite/xmlparse.mak b/usr.sbin/httpd/src/lib/expat-lite/xmlparse.mak
index 4f878df12cb..3ed9bd25e59 100644
--- a/usr.sbin/httpd/src/lib/expat-lite/xmlparse.mak
+++ b/usr.sbin/httpd/src/lib/expat-lite/xmlparse.mak
@@ -32,7 +32,7 @@ NULL=nul
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
-OutDir=.\.\Release
+OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -61,10 +61,9 @@ CLEAN :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /D "NDEBUG" /D\
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\xmltok" /I "..\xmlwf" /D "NDEBUG" /D\
"WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllimport) /D\
- XMLPARSEAPI=__declspec(dllexport) /Fp"$(INTDIR)\xmlparse.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+ XMLPARSEAPI=__declspec(dllexport) /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Release/
CPP_SBRS=.
@@ -106,11 +105,10 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\xmlparse.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
- odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll /incremental:no\
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
/pdb:"$(OUTDIR)\xmlparse.pdb" /machine:I386 /def:".\xmlparse.def"\
- /out:"$(OUTDIR)\xmlparse.dll" /implib:"$(OUTDIR)\xmlparse.lib"
+ /out:"$(OUTDIR)\xmlparse.dll" /implib:"$(OUTDIR)\xmlparse.lib"\
+ /base:@"..\..\os\win32\BaseAddr.ref",xmlparse
DEF_FILE= \
".\xmlparse.def"
LINK32_OBJS= \
@@ -128,7 +126,7 @@ LINK32_OBJS= \
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
-OutDir=.\.\Debug
+OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -148,10 +146,10 @@ CLEAN :
!ENDIF
-@erase "$(INTDIR)\hashtable.obj"
-@erase "$(INTDIR)\vc50.idb"
+ -@erase "$(INTDIR)\vc50.pdb"
-@erase "$(INTDIR)\xmlparse.obj"
-@erase "$(OUTDIR)\xmlparse.dll"
-@erase "$(OUTDIR)\xmlparse.exp"
- -@erase "$(OUTDIR)\xmlparse.ilk"
-@erase "$(OUTDIR)\xmlparse.lib"
-@erase "$(OUTDIR)\xmlparse.pdb"
@@ -159,10 +157,9 @@ CLEAN :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /GX /Od /I "..\xmltok" /I "..\xmlwf" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllimport) /D\
- XMLPARSEAPI=__declspec(dllexport) /Fp"$(INTDIR)\xmlparse.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /Zi /c
+CPP_PROJ=/nologo /MDd /W3 /GX /Zi /Od /I "..\xmltok" /I "..\xmlwf" /D "_DEBUG"\
+ /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllimport) /D\
+ XMLPARSEAPI=__declspec(dllexport) /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Debug/
CPP_SBRS=.
@@ -204,12 +201,10 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\xmlparse.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
- odbccp32.lib /nologo /base:"0x20000000" /subsystem:windows /dll\
- /incremental:yes /pdb:"$(OUTDIR)\xmlparse.pdb" /debug /machine:I386\
- /def:".\xmlparse.def" /out:"$(OUTDIR)\xmlparse.dll"\
- /implib:"$(OUTDIR)\xmlparse.lib"
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\xmlparse.pdb" /debug /machine:I386 /def:".\xmlparse.def"\
+ /out:"$(OUTDIR)\xmlparse.dll" /implib:"$(OUTDIR)\xmlparse.lib"\
+ /base:@"..\..\os\win32\BaseAddr.ref",xmlparse
DEF_FILE= \
".\xmlparse.def"
LINK32_OBJS= \
diff --git a/usr.sbin/httpd/src/lib/expat-lite/xmltok.dsp b/usr.sbin/httpd/src/lib/expat-lite/xmltok.dsp
index f506f15165e..ad626a1ba95 100644
--- a/usr.sbin/httpd/src/lib/expat-lite/xmltok.dsp
+++ b/usr.sbin/httpd/src/lib/expat-lite/xmltok.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="xmltok" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -22,6 +22,7 @@ CFG=xmltok - Win32 Release
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -37,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir "."
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\Release"
-# PROP Intermediate_Dir ".\Release"
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir "."
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllexport) /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllexport) /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -51,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /entry:"DllMain" /subsystem:windows /dll /machine:I386 /out:"Release\xmltok.dll"
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"..\..\os\win32\BaseAddr.ref",xmltok
+# ADD LINK32 /nologo /entry:"DllMain" /subsystem:windows /dll /machine:I386 /base:@"..\..\os\win32\BaseAddr.ref",xmltok
!ELSEIF "$(CFG)" == "xmltok - Win32 Debug"
@@ -63,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir "."
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\Debug"
-# PROP Intermediate_Dir ".\Debug"
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir "."
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MTd /W3 /GX /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllexport) /YX /FD /ZI /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /GX /ZI /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D XMLTOKAPI=__declspec(dllexport) /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -77,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /out:"Debug\xmltok.dll"
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"..\..\os\win32\BaseAddr.ref",xmltok
+# ADD LINK32 /nologo /subsystem:windows /dll /incremental:no /debug /machine:I386 /base:@"..\..\os\win32\BaseAddr.ref",xmltok
!ENDIF
diff --git a/usr.sbin/httpd/src/lib/expat-lite/xmltok.mak b/usr.sbin/httpd/src/lib/expat-lite/xmltok.mak
index 45e1e3b6794..d67065c61ad 100644
--- a/usr.sbin/httpd/src/lib/expat-lite/xmltok.mak
+++ b/usr.sbin/httpd/src/lib/expat-lite/xmltok.mak
@@ -30,7 +30,7 @@ NULL=nul
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
-OutDir=.\.\Release
+OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -56,9 +56,8 @@ CLEAN :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MT /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D\
- XMLTOKAPI=__declspec(dllexport) /Fp"$(INTDIR)\xmltok.pch" /YX /Fo"$(INTDIR)\\"\
- /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D\
+ XMLTOKAPI=__declspec(dllexport) /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Release/
CPP_SBRS=.
@@ -100,11 +99,10 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\xmltok.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
- odbccp32.lib /nologo /entry:"DllMain" /subsystem:windows /dll /incremental:no\
+LINK32_FLAGS=/nologo /entry:"DllMain" /subsystem:windows /dll /incremental:no\
/pdb:"$(OUTDIR)\xmltok.pdb" /machine:I386 /def:".\xmltok.def"\
- /out:"$(OUTDIR)\xmltok.dll" /implib:"$(OUTDIR)\xmltok.lib"
+ /out:"$(OUTDIR)\xmltok.dll" /implib:"$(OUTDIR)\xmltok.lib"\
+ /base:@"..\..\os\win32\BaseAddr.ref",xmltok
DEF_FILE= \
".\xmltok.def"
LINK32_OBJS= \
@@ -122,7 +120,7 @@ LINK32_OBJS= \
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
-OutDir=.\.\Debug
+OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -138,11 +136,11 @@ ALL : "$(OUTDIR)\xmltok.dll"
CLEAN :
-@erase "$(INTDIR)\dllmain.obj"
-@erase "$(INTDIR)\vc50.idb"
+ -@erase "$(INTDIR)\vc50.pdb"
-@erase "$(INTDIR)\xmlrole.obj"
-@erase "$(INTDIR)\xmltok.obj"
-@erase "$(OUTDIR)\xmltok.dll"
-@erase "$(OUTDIR)\xmltok.exp"
- -@erase "$(OUTDIR)\xmltok.ilk"
-@erase "$(OUTDIR)\xmltok.lib"
-@erase "$(OUTDIR)\xmltok.pdb"
@@ -150,9 +148,8 @@ CLEAN :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MTd /W3 /GX /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D\
- XMLTOKAPI=__declspec(dllexport) /Fp"$(INTDIR)\xmltok.pch" /YX /Fo"$(INTDIR)\\"\
- /Fd"$(INTDIR)\\" /FD /Zi /c
+CPP_PROJ=/nologo /MDd /W3 /GX /Zi /Od /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D\
+ XMLTOKAPI=__declspec(dllexport) /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Debug/
CPP_SBRS=.
@@ -194,11 +191,10 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\xmltok.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
- odbccp32.lib /nologo /subsystem:windows /dll /incremental:yes\
+LINK32_FLAGS=/nologo /subsystem:windows /dll /incremental:no\
/pdb:"$(OUTDIR)\xmltok.pdb" /debug /machine:I386 /def:".\xmltok.def"\
- /out:"$(OUTDIR)\xmltok.dll" /implib:"$(OUTDIR)\xmltok.lib"
+ /out:"$(OUTDIR)\xmltok.dll" /implib:"$(OUTDIR)\xmltok.lib"\
+ /base:@"..\..\os\win32\BaseAddr.ref",xmltok
DEF_FILE= \
".\xmltok.def"
LINK32_OBJS= \
diff --git a/usr.sbin/httpd/src/lib/sdbm/sdbm.ncb b/usr.sbin/httpd/src/lib/sdbm/sdbm.ncb
new file mode 100644
index 00000000000..954d0534b5d
--- /dev/null
+++ b/usr.sbin/httpd/src/lib/sdbm/sdbm.ncb
@@ -0,0 +1 @@
+Microsoft C/C++ program database 2.00
diff --git a/usr.sbin/httpd/src/lib/sdbm/sdbm.opt b/usr.sbin/httpd/src/lib/sdbm/sdbm.opt
new file mode 100644
index 00000000000..e6837560092
--- /dev/null
+++ b/usr.sbin/httpd/src/lib/sdbm/sdbm.opt
@@ -0,0 +1 @@
+ÐÏࡱ
diff --git a/usr.sbin/httpd/src/main/Makefile.tmpl b/usr.sbin/httpd/src/main/Makefile.tmpl
index 0d774c3abb0..531dea66f74 100644
--- a/usr.sbin/httpd/src/main/Makefile.tmpl
+++ b/usr.sbin/httpd/src/main/Makefile.tmpl
@@ -60,30 +60,30 @@ $(OBJS): Makefile
# DO NOT REMOVE
alloc.o: alloc.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/multithread.h $(INCDIR)/http_log.h
buff.o: buff.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_main.h $(INCDIR)/http_log.h
gen_test_char.o: gen_test_char.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h $(INCDIR)/ap_ctype.h \
- $(INCDIR)/hsregex.h $(INCDIR)/alloc.h $(INCDIR)/buff.h \
+ $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h
gen_uri_delims.o: gen_uri_delims.c
http_config.o: http_config.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_request.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_vhost.h $(INCDIR)/explain.h
http_core.o: http_core.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_core.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
@@ -93,13 +93,13 @@ http_core.o: http_core.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/fnmatch.h
http_log.o: http_log.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_main.h
http_main.o: http_main.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_main.h $(INCDIR)/http_log.h $(INCDIR)/http_config.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
@@ -109,7 +109,7 @@ http_main.o: http_main.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
http_protocol.o: http_protocol.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h $(INCDIR)/ap_ctype.h \
- $(INCDIR)/hsregex.h $(INCDIR)/alloc.h $(INCDIR)/buff.h \
+ $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_protocol.h \
$(INCDIR)/http_main.h $(INCDIR)/http_request.h \
@@ -118,7 +118,7 @@ http_protocol.o: http_protocol.c $(INCDIR)/httpd.h \
http_request.o: http_request.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h $(INCDIR)/ap_ctype.h \
- $(INCDIR)/hsregex.h $(INCDIR)/alloc.h $(INCDIR)/buff.h \
+ $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_request.h $(INCDIR)/http_core.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_conf_globals.h \
@@ -126,19 +126,19 @@ http_request.o: http_request.c $(INCDIR)/httpd.h \
$(INCDIR)/fnmatch.h
http_vhost.o: http_vhost.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_log.h $(INCDIR)/http_vhost.h \
$(INCDIR)/http_protocol.h
rfc1413.o: rfc1413.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_log.h $(INCDIR)/rfc1413.h $(INCDIR)/http_main.h
util.o: util.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_conf_globals.h $(INCDIR)/http_log.h test_char.h
util_date.o: util_date.c $(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
@@ -146,12 +146,12 @@ util_date.o: util_date.c $(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/hsregex.h $(INCDIR)/util_date.h
util_md5.o: util_md5.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h
util_script.o: util_script.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_main.h $(INCDIR)/http_log.h \
@@ -160,6 +160,6 @@ util_script.o: util_script.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/util_date.h
util_uri.o: util_uri.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/alloc.h \
+ $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/buff.h $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_log.h $(INCDIR)/http_conf_globals.h uri_delims.h
diff --git a/usr.sbin/httpd/src/main/alloc.c b/usr.sbin/httpd/src/main/alloc.c
index e134c33bf37..79ad127c32b 100644
--- a/usr.sbin/httpd/src/main/alloc.c
+++ b/usr.sbin/httpd/src/main/alloc.c
@@ -663,6 +663,12 @@ void ap_kill_alloc_shared(void)
}
#endif /* EAPI */
+void ap_cleanup_alloc(void)
+{
+ ap_destroy_mutex(alloc_mutex);
+ ap_destroy_mutex(spawn_mutex);
+}
+
API_EXPORT(void) ap_clear_pool(struct pool *a)
{
ap_block_alarms();
@@ -1398,7 +1404,7 @@ API_EXPORT(char *) ap_array_pstrcat(pool *p, const array_header *arr,
*/
/* XXX: if you tweak this you should look at is_empty_table() and table_elts()
- * in alloc.h */
+ * in ap_alloc.h */
struct table {
/* This has to be first to promote backwards compatibility with
* older modules which cast a table * to an array_header *...
diff --git a/usr.sbin/httpd/src/main/buff.c b/usr.sbin/httpd/src/main/buff.c
index 70b8ed08865..fa43a152c81 100644
--- a/usr.sbin/httpd/src/main/buff.c
+++ b/usr.sbin/httpd/src/main/buff.c
@@ -82,6 +82,7 @@
#define CHUNK_HEADER_SIZE (5)
#endif
+#define ascii_CRLF "\015\012" /* A CRLF which won't pass the conversion machinery */
/* bwrite()s of greater than this size can result in a large_write() call,
* which can result in a writev(). It's a little more work to set up the
@@ -208,6 +209,7 @@ int recvwithtimeout(int sock, char *buf, int len, int flags)
struct timeval tv;
int err = WSAEWOULDBLOCK;
int rv;
+ int retry;
if (!(tv.tv_sec = ap_check_alarm()))
return (recv(sock, buf, len, flags));
@@ -220,24 +222,38 @@ int recvwithtimeout(int sock, char *buf, int len, int flags)
if (rv == SOCKET_ERROR) {
err = WSAGetLastError();
if (err == WSAEWOULDBLOCK) {
- FD_ZERO(&fdset);
- FD_SET(sock, &fdset);
- tv.tv_usec = 0;
- rv = select(FD_SETSIZE, &fdset, NULL, NULL, &tv);
- if (rv == SOCKET_ERROR)
- err = WSAGetLastError();
- else if (rv == 0) {
- ioctlsocket(sock, FIONBIO, (u_long*)&iostate);
- ap_check_alarm();
- WSASetLastError(WSAEWOULDBLOCK);
- return (SOCKET_ERROR);
- }
- else {
- rv = recv(sock, buf, len, flags);
- if (rv == SOCKET_ERROR)
- err = WSAGetLastError();
- }
- }
+ do {
+ retry = 0;
+ FD_ZERO(&fdset);
+ FD_SET(sock, &fdset);
+ tv.tv_usec = 0;
+ rv = select(FD_SETSIZE, &fdset, NULL, NULL, &tv);
+ if (rv == SOCKET_ERROR)
+ err = WSAGetLastError();
+ else if (rv == 0) {
+ ioctlsocket(sock, FIONBIO, (u_long*)&iostate);
+ ap_check_alarm();
+ WSASetLastError(WSAEWOULDBLOCK);
+ return (SOCKET_ERROR);
+ }
+ else {
+ rv = recv(sock, buf, len, flags);
+ if (rv == SOCKET_ERROR) {
+ err = WSAGetLastError();
+ if (err == WSAEWOULDBLOCK) {
+ ap_log_error(APLOG_MARK, APLOG_DEBUG, NULL,
+ "select claimed we could read, but in fact we couldn't.");
+ retry = 1;
+#ifdef NETWARE
+ ThreadSwitchWithDelay();
+#else
+ Sleep(100);
+#endif
+ }
+ }
+ }
+ } while (retry);
+ }
}
ioctlsocket(sock, FIONBIO, (u_long*)&iostate);
@@ -1183,7 +1199,7 @@ static int bcwrite(BUFF *fb, const void *buf, int nbyte)
return -1;
if (write_it_all(fb, buf, nbyte) == -1)
return -1;
- if (write_it_all(fb, CRLF, 2) == -1)
+ if (write_it_all(fb, ascii_CRLF, 2) == -1)
return -1;
return nbyte;
#else
@@ -1196,7 +1212,7 @@ static int bcwrite(BUFF *fb, const void *buf, int nbyte)
#endif /*CHARSET_EBCDIC*/
vec[1].iov_base = (void *) buf; /* cast is to avoid const warning */
vec[1].iov_len = nbyte;
- vec[2].iov_base = CRLF;
+ vec[2].iov_base = ascii_CRLF;
vec[2].iov_len = 2;
return writev_it_all(fb, vec, (sizeof(vec) / sizeof(vec[0]))) ? -1 : nbyte;
@@ -1237,7 +1253,7 @@ static int large_write(BUFF *fb, const void *buf, int nbyte)
vec[nvec].iov_base = (void *) buf;
vec[nvec].iov_len = nbyte;
++nvec;
- vec[nvec].iov_base = CRLF;
+ vec[nvec].iov_base = ascii_CRLF;
vec[nvec].iov_len = 2;
++nvec;
}
diff --git a/usr.sbin/httpd/src/main/gen_test_char.dsp b/usr.sbin/httpd/src/main/gen_test_char.dsp
index c2630ce9d14..8fe2c2cb3ae 100644
--- a/usr.sbin/httpd/src/main/gen_test_char.dsp
+++ b/usr.sbin/httpd/src/main/gen_test_char.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="gen_test_char" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
@@ -17,13 +17,12 @@ CFG=gen_test_char - Win32 Debug
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "gen_test_char - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "gen_test_char - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
+!MESSAGE "gen_test_char - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "gen_test_char - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -43,7 +42,8 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\os\win32" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809 /d "NDEBUG"
# ADD RSC /l 0x809 /d "NDEBUG"
BSC32=bscmake.exe
@@ -51,7 +51,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 /nologo /subsystem:console /machine:I386
# Begin Special Build Tool
SOURCE=$(InputPath)
PostBuild_Desc=Create test_char.h
@@ -71,8 +71,9 @@ PostBuild_Cmds=.\gen_test_char > test_char.h
# PROP Intermediate_Dir "gen_test_char_D"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\os\win32" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809 /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG"
BSC32=bscmake.exe
@@ -80,7 +81,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 /nologo /subsystem:console /incremental:no /debug /machine:I386
# Begin Special Build Tool
SOURCE=$(InputPath)
PostBuild_Desc=Create test_char.h
@@ -93,13 +94,9 @@ PostBuild_Cmds=.\gen_test_char > test_char.h
# Name "gen_test_char - Win32 Release"
# Name "gen_test_char - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
# Begin Source File
SOURCE=.\gen_test_char.c
# End Source File
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/main/gen_test_char.mak b/usr.sbin/httpd/src/main/gen_test_char.mak
index 14d5558b097..7967aca088c 100644
--- a/usr.sbin/httpd/src/main/gen_test_char.mak
+++ b/usr.sbin/httpd/src/main/gen_test_char.mak
@@ -28,9 +28,6 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "gen_test_char - Win32 Release"
OUTDIR=.
@@ -57,18 +54,49 @@ CLEAN :
"$(INTDIR)" :
if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D\
- "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\gen_test_char.pch" /YX /Fo"$(INTDIR)\\"\
- /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\include" /I "..\os\win32" /D "WIN32" /D\
+ "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\gen_test_char_R/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\gen_test_char.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib /nologo /subsystem:console /incremental:no\
+LINK32_FLAGS=/nologo /subsystem:console /incremental:no\
/pdb:"$(OUTDIR)\gen_test_char.pdb" /machine:I386\
/out:"$(OUTDIR)\gen_test_char.exe"
LINK32_OBJS= \
@@ -116,49 +144,17 @@ CLEAN :
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\gen_test_char.exe"
- -@erase "$(OUTDIR)\gen_test_char.ilk"
-@erase "$(OUTDIR)\gen_test_char.pdb"
"$(INTDIR)" :
if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /I "..\include" /D "WIN32" /D\
- "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\gen_test_char.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\os\win32" /D\
+ "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"\
+ /FD /c
CPP_OBJS=.\gen_test_char_D/
CPP_SBRS=.
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\gen_test_char.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib /nologo /subsystem:console /incremental:yes\
- /pdb:"$(OUTDIR)\gen_test_char.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)\gen_test_char.exe" /pdbtype:sept
-LINK32_OBJS= \
- "$(INTDIR)\gen_test_char.obj"
-
-"$(OUTDIR)\gen_test_char.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-SOURCE=$(InputPath)
-PostBuild_Desc=Create test_char.h
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-
-ALL : $(DS_POSTBUILD_DEP)
-
-# Begin Custom Macros
-OutDir=.
-# End Custom Macros
-
-$(DS_POSTBUILD_DEP) : "$(OUTDIR)\gen_test_char.exe"
- .\gen_test_char > test_char.h
- echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -190,47 +186,65 @@ $(DS_POSTBUILD_DEP) : "$(OUTDIR)\gen_test_char.exe"
$(CPP_PROJ) $<
<<
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\gen_test_char.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=/nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)\gen_test_char.pdb" /debug /machine:I386\
+ /out:"$(OUTDIR)\gen_test_char.exe"
+LINK32_OBJS= \
+ "$(INTDIR)\gen_test_char.obj"
-!IF "$(CFG)" == "gen_test_char - Win32 Release" || "$(CFG)" ==\
- "gen_test_char - Win32 Debug"
-SOURCE=.\gen_test_char.c
+"$(OUTDIR)\gen_test_char.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
-!IF "$(CFG)" == "gen_test_char - Win32 Release"
+SOURCE=$(InputPath)
+PostBuild_Desc=Create test_char.h
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-DEP_CPP_GEN_T=\
- "..\include\alloc.h"\
- "..\include\ap.h"\
- "..\include\buff.h"\
- "..\include\conf.h"\
- "..\include\hsregex.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
- "..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
-
+ALL : $(DS_POSTBUILD_DEP)
-"$(INTDIR)\gen_test_char.obj" : $(SOURCE) $(DEP_CPP_GEN_T) "$(INTDIR)"
+# Begin Custom Macros
+OutDir=.
+# End Custom Macros
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\gen_test_char.exe"
+ .\gen_test_char > test_char.h
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-!ELSEIF "$(CFG)" == "gen_test_char - Win32 Debug"
+!ENDIF
+
+!IF "$(CFG)" == "gen_test_char - Win32 Release" || "$(CFG)" ==\
+ "gen_test_char - Win32 Debug"
+SOURCE=.\gen_test_char.c
DEP_CPP_GEN_T=\
- "..\include\alloc.h"\
"..\include\ap.h"\
+ "..\include\ap_alloc.h"\
+ "..\include\ap_config.h"\
+ "..\include\ap_ctype.h"\
+ "..\include\ap_mmn.h"\
"..\include\buff.h"\
- "..\include\conf.h"\
"..\include\hsregex.h"\
"..\include\httpd.h"\
"..\include\util_uri.h"\
"..\os\win32\os.h"\
"..\os\win32\readdir.h"\
+NODEP_CPP_GEN_T=\
+ "..\include\ap_config_auto.h"\
+ "..\include\ebcdic.h"\
+ "..\include\sfio.h"\
+
"$(INTDIR)\gen_test_char.obj" : $(SOURCE) $(DEP_CPP_GEN_T) "$(INTDIR)"
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/main/gen_uri_delims.dsp b/usr.sbin/httpd/src/main/gen_uri_delims.dsp
index 566dd83e276..530b6d8ecd1 100644
--- a/usr.sbin/httpd/src/main/gen_uri_delims.dsp
+++ b/usr.sbin/httpd/src/main/gen_uri_delims.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="gen_uri_delims" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
@@ -17,13 +17,12 @@ CFG=gen_uri_delims - Win32 Debug
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "gen_uri_delims - Win32 Release" (based on\
- "Win32 (x86) Console Application")
-!MESSAGE "gen_uri_delims - Win32 Debug" (based on\
- "Win32 (x86) Console Application")
+!MESSAGE "gen_uri_delims - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "gen_uri_delims - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -43,7 +42,8 @@ RSC=rc.exe
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809 /d "NDEBUG"
# ADD RSC /l 0x809 /d "NDEBUG"
BSC32=bscmake.exe
@@ -51,7 +51,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 /nologo /subsystem:console /machine:I386
# Begin Special Build Tool
SOURCE=$(InputPath)
PostBuild_Desc=Create uri_delims.h
@@ -71,8 +71,9 @@ PostBuild_Cmds=.\gen_uri_delims > uri_delims.h
# PROP Intermediate_Dir "gen_uri_delims_D"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809 /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG"
BSC32=bscmake.exe
@@ -80,7 +81,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 /nologo /subsystem:console /incremental:no /debug /machine:I386
# Begin Special Build Tool
SOURCE=$(InputPath)
PostBuild_Desc=Create uri_delims.h
@@ -93,13 +94,9 @@ PostBuild_Cmds=.\gen_uri_delims > uri_delims.h
# Name "gen_uri_delims - Win32 Release"
# Name "gen_uri_delims - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
# Begin Source File
SOURCE=.\gen_uri_delims.c
# End Source File
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/main/gen_uri_delims.mak b/usr.sbin/httpd/src/main/gen_uri_delims.mak
index 63ec6dca9c6..e0f378b5954 100644
--- a/usr.sbin/httpd/src/main/gen_uri_delims.mak
+++ b/usr.sbin/httpd/src/main/gen_uri_delims.mak
@@ -29,9 +29,6 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "gen_uri_delims - Win32 Release"
OUTDIR=.
@@ -58,18 +55,49 @@ CLEAN :
"$(INTDIR)" :
if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D\
- "_MBCS" /Fp"$(INTDIR)\gen_uri_delims.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"\
- /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D\
+ "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\gen_uri_delims_R/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\gen_uri_delims.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib /nologo /subsystem:console /incremental:no\
+LINK32_FLAGS=/nologo /subsystem:console /incremental:no\
/pdb:"$(OUTDIR)\gen_uri_delims.pdb" /machine:I386\
/out:"$(OUTDIR)\gen_uri_delims.exe"
LINK32_OBJS= \
@@ -117,49 +145,16 @@ CLEAN :
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\gen_uri_delims.exe"
- -@erase "$(OUTDIR)\gen_uri_delims.ilk"
-@erase "$(OUTDIR)\gen_uri_delims.pdb"
"$(INTDIR)" :
if not exist "$(INTDIR)/$(NULL)" mkdir "$(INTDIR)"
-CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
- /D "_MBCS" /Fp"$(INTDIR)\gen_uri_delims.pch" /YX /Fo"$(INTDIR)\\"\
- /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
+ /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\gen_uri_delims_D/
CPP_SBRS=.
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\gen_uri_delims.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib /nologo /subsystem:console /incremental:yes\
- /pdb:"$(OUTDIR)\gen_uri_delims.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)\gen_uri_delims.exe" /pdbtype:sept
-LINK32_OBJS= \
- "$(INTDIR)\gen_uri_delims.obj"
-
-"$(OUTDIR)\gen_uri_delims.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-SOURCE=$(InputPath)
-PostBuild_Desc=Create uri_delims.h
-DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
-
-ALL : $(DS_POSTBUILD_DEP)
-
-# Begin Custom Macros
-OutDir=.
-# End Custom Macros
-
-$(DS_POSTBUILD_DEP) : "$(OUTDIR)\gen_uri_delims.exe"
- .\gen_uri_delims > uri_delims.h
- echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -191,6 +186,39 @@ $(DS_POSTBUILD_DEP) : "$(OUTDIR)\gen_uri_delims.exe"
$(CPP_PROJ) $<
<<
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\gen_uri_delims.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=/nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)\gen_uri_delims.pdb" /debug /machine:I386\
+ /out:"$(OUTDIR)\gen_uri_delims.exe"
+LINK32_OBJS= \
+ "$(INTDIR)\gen_uri_delims.obj"
+
+"$(OUTDIR)\gen_uri_delims.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+SOURCE=$(InputPath)
+PostBuild_Desc=Create uri_delims.h
+DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
+
+ALL : $(DS_POSTBUILD_DEP)
+
+# Begin Custom Macros
+OutDir=.
+# End Custom Macros
+
+$(DS_POSTBUILD_DEP) : "$(OUTDIR)\gen_uri_delims.exe"
+ .\gen_uri_delims > uri_delims.h
+ echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
+
+!ENDIF
+
!IF "$(CFG)" == "gen_uri_delims - Win32 Release" || "$(CFG)" ==\
"gen_uri_delims - Win32 Debug"
diff --git a/usr.sbin/httpd/src/main/http_config.c b/usr.sbin/httpd/src/main/http_config.c
index 13f12217b15..8a2dc35f3a8 100644
--- a/usr.sbin/httpd/src/main/http_config.c
+++ b/usr.sbin/httpd/src/main/http_config.c
@@ -300,6 +300,14 @@ static struct {
*/
static handler_func *method_ptrs;
+
+void ap_cleanup_method_ptrs()
+{
+ if (method_ptrs) {
+ free(method_ptrs);
+ }
+}
+
/* routine to reconstruct all these shortcuts... called after every
* add_module.
* XXX: this breaks if modules dink with their methods pointers
@@ -544,7 +552,11 @@ API_EXPORT(void) ap_add_module(module *m)
fprintf(stderr, "%s: module \"%s\" is not compatible with this "
"version of Apache.\n", ap_server_argv0, m->name);
fprintf(stderr, "Please contact the vendor for the correct version.\n");
+#ifdef NETWARE
+ clean_parent_exit(1);
+#else
exit(1);
+#endif
}
if (m->next == NULL) {
@@ -560,7 +572,11 @@ API_EXPORT(void) ap_add_module(module *m)
" the dynamic\n", ap_server_argv0, m->name);
fprintf(stderr, "module limit was reached. Please increase "
"DYNAMIC_MODULE_LIMIT and recompile.\n");
+#ifdef NETWARE
+ clean_parent_exit(1);
+#else
exit(1);
+#endif
}
}
@@ -708,7 +724,7 @@ API_EXPORT(void) ap_remove_loaded_module(module *mod)
*m = NULL;
}
-void ap_setup_prelinked_modules()
+void ap_setup_prelinked_modules(void)
{
module **m;
module **m2;
@@ -727,7 +743,11 @@ void ap_setup_prelinked_modules()
sizeof(module *)*(total_modules+DYNAMIC_MODULE_LIMIT+1));
if (ap_loaded_modules == NULL) {
fprintf(stderr, "Ouch! Out of memory in ap_setup_prelinked_modules()!\n");
+#ifdef NETWARE
+ clean_parent_exit(1);
+#else
exit(1);
+#endif
}
for (m = ap_preloaded_modules, m2 = ap_loaded_modules; *m != NULL; )
*m2++ = *m++;
@@ -1207,12 +1227,28 @@ static void process_command_config(server_rec *s, array_header *arr, pool *p,
if (errmsg) {
fprintf(stderr, "Syntax error in -C/-c directive:\n%s\n", errmsg);
+#ifdef NETWARE
+ clean_parent_exit(1);
+#else
exit(1);
+#endif
}
ap_cfg_closefile(parms.config_file);
}
+typedef struct {
+ char *fname;
+} fnames;
+
+static int fname_alphasort(const void *fn1, const void *fn2)
+{
+ const fnames *f1 = fn1;
+ const fnames *f2 = fn2;
+
+ return strcmp(f1->fname,f2->fname);
+}
+
void ap_process_resource_config(server_rec *s, char *fname, pool *p, pool *ptemp)
{
const char *errmsg;
@@ -1234,6 +1270,62 @@ void ap_process_resource_config(server_rec *s, char *fname, pool *p, pool *ptemp
return;
}
+ /*
+ * here we want to check if the candidate file is really a
+ * directory, and most definitely NOT a symlink (to prevent
+ * horrible loops). If so, let's recurse and toss it back into
+ * the function.
+ */
+ if (ap_is_rdirectory(fname)) {
+ DIR *dirp;
+ struct DIR_TYPE *dir_entry;
+ int current;
+ array_header *candidates = NULL;
+ fnames *fnew;
+
+ /*
+ * first course of business is to grok all the directory
+ * entries here and store 'em away. Recall we need full pathnames
+ * for this.
+ */
+ fprintf(stderr, "Processing config directory: %s\n", fname);
+ dirp = ap_popendir(p, fname);
+ if (dirp == NULL) {
+ perror("fopen");
+ fprintf(stderr, "%s: could not open config directory %s\n",
+ ap_server_argv0, fname);
+#ifdef NETWARE
+ clean_parent_exit(1);
+#else
+ exit(1);
+#endif
+ }
+ candidates = ap_make_array(p, 1, sizeof(fnames));
+ while ((dir_entry = readdir(dirp)) != NULL) {
+ /* strip out '.' and '..' */
+ if (strcmp(dir_entry->d_name, ".") &&
+ strcmp(dir_entry->d_name, "..")) {
+ fnew = (fnames *) ap_push_array(candidates);
+ fnew->fname = ap_make_full_path(p, fname, dir_entry->d_name);
+ }
+ }
+ ap_pclosedir(p, dirp);
+ if (candidates->nelts != 0) {
+ qsort((void *) candidates->elts, candidates->nelts,
+ sizeof(fnames), fname_alphasort);
+ /*
+ * Now recurse these... we handle errors and subdirectories
+ * via the recursion, which is nice
+ */
+ for (current = 0; current < candidates->nelts; ++current) {
+ fnew = &((fnames *) candidates->elts)[current];
+ fprintf(stderr, " Processing config file: %s\n", fnew->fname);
+ ap_process_resource_config(s, fnew->fname, p, ptemp);
+ }
+ }
+ return;
+ }
+
/* GCC's initialization extensions are soooo nice here... */
parms = default_parms;
@@ -1246,7 +1338,11 @@ void ap_process_resource_config(server_rec *s, char *fname, pool *p, pool *ptemp
perror("fopen");
fprintf(stderr, "%s: could not open document config file %s\n",
ap_server_argv0, fname);
+#ifdef NETWARE
+ clean_parent_exit(1);
+#else
exit(1);
+#endif
}
errmsg = ap_srm_command_loop(&parms, s->lookup_defaults);
@@ -1255,13 +1351,16 @@ void ap_process_resource_config(server_rec *s, char *fname, pool *p, pool *ptemp
fprintf(stderr, "Syntax error on line %d of %s:\n",
parms.config_file->line_number, parms.config_file->name);
fprintf(stderr, "%s\n", errmsg);
+#ifdef NETWARE
+ clean_parent_exit(1);
+#else
exit(1);
+#endif
}
ap_cfg_closefile(parms.config_file);
}
-
int ap_parse_htaccess(void **result, request_rec *r, int override,
const char *d, const char *access_name)
{
@@ -1674,7 +1773,7 @@ static void show_overrides(const command_rec *pc, module *pm)
* the directive arguments, in what module they are handled, and in
* what parts of the configuration they are allowed. Used for httpd -h.
*/
-void ap_show_directives()
+void ap_show_directives(void)
{
const command_rec *pc;
int n;
@@ -1689,7 +1788,7 @@ void ap_show_directives()
}
/* Show the preloaded module names. Used for httpd -l. */
-void ap_show_modules()
+void ap_show_modules(void)
{
int n;
@@ -1697,8 +1796,10 @@ void ap_show_modules()
for (n = 0; ap_loaded_modules[n]; ++n) {
printf(" %s\n", ap_loaded_modules[n]->name);
}
+#if !defined(WIN32) && !defined(NETWARE)
printf("suexec: %s\n",
ap_suexec_enabled
? "enabled; valid wrapper " SUEXEC_BIN
: "disabled; invalid wrapper " SUEXEC_BIN);
+#endif
}
diff --git a/usr.sbin/httpd/src/main/http_core.c b/usr.sbin/httpd/src/main/http_core.c
index 4c4c64d275d..5876acb7f7e 100644
--- a/usr.sbin/httpd/src/main/http_core.c
+++ b/usr.sbin/httpd/src/main/http_core.c
@@ -286,10 +286,9 @@ static void *merge_core_dir_configs(pool *a, void *basev, void *newv)
if (new->add_default_charset != ADD_DEFAULT_CHARSET_UNSET) {
conf->add_default_charset = new->add_default_charset;
- }
-
- if (new->add_default_charset_name) {
- conf->add_default_charset_name = new->add_default_charset_name;
+ if (new->add_default_charset_name) {
+ conf->add_default_charset_name = new->add_default_charset_name;
+ }
}
return (void*)conf;
@@ -369,10 +368,20 @@ CORE_EXPORT(void) ap_add_file_conf(core_dir_config *conf, void *url_config)
* See directory_walk().
*/
-#ifdef HAVE_DRIVE_LETTERS
+#if defined(HAVE_DRIVE_LETTERS)
#define IS_SPECIAL(entry_core) \
((entry_core)->r != NULL \
|| ((entry_core)->d[0] != '/' && (entry_core)->d[1] != ':'))
+#elif defined(NETWARE)
+/* XXX: Fairly certain this is correct... '/' must prefix the path
+ * or else in the case xyz:/ or abc/xyz:/, '/' must follow the ':'.
+ * If there is no leading '/' or embedded ':/', then we are special.
+ */
+#define IS_SPECIAL(entry_core) \
+ ((entry_core)->r != NULL \
+ || ((entry_core)->d[0] != '/' \
+ && strchr((entry_core)->d, ':') \
+ && *(strchr((entry_core)->d, ':') + 1) != '/'))
#else
#define IS_SPECIAL(entry_core) \
((entry_core)->r != NULL || (entry_core)->d[0] != '/')
@@ -1450,6 +1459,18 @@ static const char *dirsection(cmd_parms *cmd, void *dummy, const char *arg)
cmd->path = ap_getword_conf(cmd->pool, &arg);
r = ap_pregcomp(cmd->pool, cmd->path, REG_EXTENDED|USE_ICASE);
}
+#if defined(HAVE_DRIVE_LETTERS) || defined(NETWARE)
+ else if (strcmp(cmd->path, "/") == 0) {
+ /* Treat 'default' path / as an inalienable root */
+ cmd->path = ap_pstrdup(cmd->pool, cmd->path);
+ }
+#endif
+#if defined(HAVE_UNC_PATHS)
+ else if (strcmp(cmd->path, "//") == 0) {
+ /* Treat UNC path // as an inalienable root */
+ cmd->path = ap_pstrdup(cmd->pool, cmd->path);
+ }
+#endif
else {
/* Ensure that the pathname is canonical */
cmd->path = ap_os_canonical_filename(cmd->pool, cmd->path);
@@ -2643,9 +2664,16 @@ static const char *set_serv_tokens(cmd_parms *cmd, void *dummy, char *arg)
else if (!strcasecmp(arg, "Min") || !strcasecmp(arg, "Minimal")) {
ap_server_tokens = SrvTk_MIN;
}
- else {
+ else if (!strcasecmp(arg, "Full")) {
ap_server_tokens = SrvTk_FULL;
}
+ else if (!strcasecmp(arg, "Prod") || !strcasecmp(arg, "ProductOnly")) {
+ ap_server_tokens = SrvTk_PRODUCT_ONLY;
+ }
+ else {
+ return ap_pstrcat(cmd->pool, "Unrecognised ServerTokens keyword: ",
+ arg, NULL);
+ }
return NULL;
}
@@ -2741,7 +2769,9 @@ static const char *set_interpreter_source(cmd_parms *cmd, core_dir_config *d,
} else if (!strcasecmp(arg, "script")) {
d->script_interpreter_source = INTERPRETER_SOURCE_SHEBANG;
} else {
- d->script_interpreter_source = INTERPRETER_SOURCE_SHEBANG;
+ return ap_pstrcat(cmd->temp_pool, "ScriptInterpreterSource \"", arg,
+ "\" must be \"registry\" or \"script\"",
+ NULL);
}
return NULL;
}
diff --git a/usr.sbin/httpd/src/main/http_log.c b/usr.sbin/httpd/src/main/http_log.c
index 4a1e5fe2e72..7be73b7db4d 100644
--- a/usr.sbin/httpd/src/main/http_log.c
+++ b/usr.sbin/httpd/src/main/http_log.c
@@ -162,6 +162,9 @@ static int error_log_child(void *cmd, child_info *pinfo)
* be common for other foo-loggers to want this sort of thing...
*/
int child_pid = 0;
+#if defined(WIN32)
+ char *shellcmd;
+#endif
ap_cleanup_for_exec();
#ifdef SIGHUP
@@ -172,7 +175,10 @@ static int error_log_child(void *cmd, child_info *pinfo)
child_pid = spawnlp(P_NOWAIT, SHELL_PATH, (char *)cmd);
return(child_pid);
#elif defined(WIN32)
- child_pid = spawnl(_P_NOWAIT, SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL);
+ shellcmd = getenv("COMSPEC");
+ if (!shellcmd)
+ shellcmd = SHELL_PATH;
+ child_pid = spawnl(_P_NOWAIT, shellcmd, shellcmd, "/c", (char *)cmd, NULL);
return(child_pid);
#elif defined(OS2)
/* For OS/2 we need to use a '/' and spawn the child rather than exec as
@@ -249,6 +255,14 @@ void ap_open_logs(server_rec *s_main, pool *p)
server_rec *virt, *q;
int replace_stderr;
+#ifdef OS390
+ /*
+ * Cause errno2 (reason code) information to be generated whenever
+ * strerror(errno) is invoked.
+ */
+ setenv("_EDC_ADD_ERRNO2", "1", 1);
+#endif
+
open_error_log(s_main, p);
replace_stderr = 1;
@@ -735,6 +749,9 @@ static int piped_log_child(void *cmd, child_info *pinfo)
* be common for other foo-loggers to want this sort of thing...
*/
int child_pid = 1;
+#if defined(WIN32)
+ char *shellcmd;
+#endif
ap_cleanup_for_exec();
#ifdef SIGHUP
@@ -744,7 +761,10 @@ static int piped_log_child(void *cmd, child_info *pinfo)
child_pid = spawnlp(P_NOWAIT, SHELL_PATH, (char *)cmd);
return(child_pid);
#elif defined(WIN32)
- child_pid = spawnl(_P_NOWAIT, SHELL_PATH, SHELL_PATH, "/c", (char *)cmd, NULL);
+ shellcmd = getenv("COMSPEC");
+ if (!shellcmd)
+ shellcmd = SHELL_PATH;
+ child_pid = spawnl(_P_NOWAIT, shellcmd, shellcmd, "/c", (char *)cmd, NULL);
return(child_pid);
#elif defined(OS2)
/* For OS/2 we need to use a '/' and spawn the child rather than exec as
diff --git a/usr.sbin/httpd/src/main/http_main.c b/usr.sbin/httpd/src/main/http_main.c
index 6442b24941b..6054085f8d4 100644
--- a/usr.sbin/httpd/src/main/http_main.c
+++ b/usr.sbin/httpd/src/main/http_main.c
@@ -233,29 +233,29 @@ int ap_thread_count = 0;
BOOL ap_main_finished = FALSE;
unsigned int ap_thread_stack_size = 65536;
#endif
-int ap_standalone=0;
+API_VAR_EXPORT int ap_standalone=0;
int ap_configtestonly=0;
int ap_docrootcheck=1;
-uid_t ap_user_id=0;
-char *ap_user_name=NULL;
-gid_t ap_group_id=0;
+API_VAR_EXPORT uid_t ap_user_id=0;
+API_VAR_EXPORT char *ap_user_name=NULL;
+API_VAR_EXPORT gid_t ap_group_id=0;
#ifdef MULTIPLE_GROUPS
gid_t group_id_list[NGROUPS_MAX];
#endif
-int ap_max_requests_per_child=0;
-int ap_threads_per_child=0;
-int ap_excess_requests_per_child=0;
-char *ap_pid_fname=NULL;
-char *ap_scoreboard_fname=NULL;
+API_VAR_EXPORT int ap_max_requests_per_child=0;
+API_VAR_EXPORT int ap_threads_per_child=0;
+API_VAR_EXPORT int ap_excess_requests_per_child=0;
+API_VAR_EXPORT char *ap_pid_fname=NULL;
+API_VAR_EXPORT char *ap_scoreboard_fname=NULL;
char *ap_lock_fname;
-char *ap_server_argv0=NULL;
+API_VAR_EXPORT char *ap_server_argv0=NULL;
struct in_addr ap_bind_address;
-int ap_daemons_to_start=0;
-int ap_daemons_min_free=0;
-int ap_daemons_max_free=0;
-int ap_daemons_limit=0;
+API_VAR_EXPORT int ap_daemons_to_start=0;
+API_VAR_EXPORT int ap_daemons_min_free=0;
+API_VAR_EXPORT int ap_daemons_max_free=0;
+API_VAR_EXPORT int ap_daemons_limit=0;
time_t ap_restart_time=0;
-int ap_suexec_enabled = 0;
+API_VAR_EXPORT int ap_suexec_enabled = 0;
int ap_listenbacklog;
int ap_dump_settings = 0;
API_VAR_EXPORT int ap_extended_status = 0;
@@ -291,7 +291,7 @@ listen_rec *ap_listeners;
static listen_rec *head_listener;
API_VAR_EXPORT char ap_server_root[MAX_STRING_LEN]="";
-char ap_server_confname[MAX_STRING_LEN]="";
+API_VAR_EXPORT char ap_server_confname[MAX_STRING_LEN]="";
char ap_coredump_dir[MAX_STRING_LEN];
array_header *ap_server_pre_read_config;
@@ -426,7 +426,10 @@ API_EXPORT(void) ap_add_version_component(const char *component)
*/
static void ap_set_version(void)
{
- if (ap_server_tokens == SrvTk_MIN) {
+ if (ap_server_tokens == SrvTk_PRODUCT_ONLY) {
+ ap_add_version_component(SERVER_PRODUCT);
+ }
+ else if (ap_server_tokens == SrvTk_MIN) {
ap_add_version_component(SERVER_BASEVERSION);
}
else {
@@ -1094,6 +1097,9 @@ static void usage(char *bin)
fprintf(stderr, " -l : list compiled-in modules\n");
fprintf(stderr, " -L : list available configuration directives\n");
fprintf(stderr, " -S : show parsed settings (currently only vhost settings)\n");
+#ifdef NETWARE
+ fprintf(stderr, " -s : load Apache without a screen\n");
+#endif
fprintf(stderr, " -t : run syntax check for config files (with docroot check)\n");
fprintf(stderr, " -T : run syntax check for config files (without docroot check)\n");
#ifdef WIN32
@@ -1128,7 +1134,18 @@ typedef struct _TSD {
unsigned int alarm_expiry_time;
} TSD;
-#define get_tsd TSD* tsd = (TSD*) GetThreadDataAreaPtr();
+static TSD Tsd;
+
+void init_tsd()
+{
+ int *thread_ptr;
+
+ memset(&Tsd, 0, sizeof(TSD));
+ thread_ptr = __get_thread_data_area_ptr();
+ *thread_ptr = (int) &Tsd;
+}
+
+#define get_tsd TSD* tsd = (TSD*) Thread_Data_Area;
#define current_conn tsd->current_conn
#define alarms_blocked tsd->alarms_blocked
#define alarm_pending tsd->alarm_pending
@@ -2235,15 +2252,26 @@ static ap_inline void put_scoreboard_info(int child_num,
}
/* a clean exit from the parent with proper cleanup */
+#ifdef NETWARE
+void clean_parent_exit(int code) __attribute__((noreturn));
+void clean_parent_exit(int code)
+#else
static void clean_parent_exit(int code) __attribute__((noreturn));
static void clean_parent_exit(int code)
+#endif
{
#ifdef NETWARE
AMCSocketCleanup();
+ ap_destroy_pool(pcommands);
+ free(ap_loaded_modules);
+ ap_cleanup_method_ptrs();
+ ap_destroy_pool(pglobal);
+ ap_cleanup_alloc();
ap_main_finished = TRUE;
-#endif
+#else
/* Clear the pool - including any registered cleanups */
ap_destroy_pool(pglobal);
+#endif
#ifdef EAPI
ap_kill_alloc_shared();
#endif
@@ -2556,6 +2584,7 @@ int reap_children(ap_wait_t *status)
* a while...
*/
+#ifndef NETWARE
/* number of calls to wait_or_timeout between writable probes */
#ifndef INTERVAL_OF_WRITABLE_PROBES
#define INTERVAL_OF_WRITABLE_PROBES 10
@@ -2592,31 +2621,6 @@ static int wait_or_timeout(ap_wait_t *status)
}
}
return (-1);
-#elif defined(NETWARE)
- struct timeval tv;
- int ret = 0;
-
- ++wait_or_timeout_counter;
- if (wait_or_timeout_counter == INTERVAL_OF_WRITABLE_PROBES) {
- wait_or_timeout_counter = 0;
-#ifndef NO_OTHER_CHILD
- probe_writable_fds();
-#endif
- }
-
- if (ret == -1 && errno == EINTR) {
- return -1;
- }
-
- if (ret > 0) {
- return ret;
- }
-
- tv.tv_sec = SCOREBOARD_MAINTENANCE_INTERVAL / 1000000;
- tv.tv_usec = SCOREBOARD_MAINTENANCE_INTERVAL % 1000000;
- ap_select(0, NULL, NULL, NULL, &tv);
- return -1;
-
#else /* WIN32 */
struct timeval tv;
int ret;
@@ -2646,7 +2650,7 @@ static int wait_or_timeout(ap_wait_t *status)
return -1;
#endif /* WIN32 */
}
-
+#endif
#if defined(NSIG)
#define NumSIG NSIG
@@ -2922,7 +2926,7 @@ static void signal_parent(int type)
* variables are no longer used to pass on the required action to the parent.
*/
-void ap_start_shutdown(void)
+API_EXPORT(void) ap_start_shutdown(void)
{
#ifndef WIN32
if (shutdown_pending == 1) {
@@ -2939,7 +2943,7 @@ void ap_start_shutdown(void)
}
/* do a graceful restart if graceful == 1 */
-void ap_start_restart(int graceful)
+API_EXPORT(void) ap_start_restart(int graceful)
{
#ifndef WIN32
if (restart_pending == 1) {
@@ -3150,7 +3154,7 @@ static void detach(void)
static void set_group_privs(void)
{
-#if !defined(WIN32) && !defined(NETWARE)
+#if !defined(WIN32) && !defined(NETWARE) && !defined(BEOS)
if (!geteuid()) {
char *name;
@@ -3180,12 +3184,21 @@ static void set_group_privs(void)
* Set the GID before initgroups(), since on some platforms
* setgid() is known to zap the group list.
*/
+#ifdef MPE
+ GETPRIVMODE();
+#endif
if (setgid(ap_group_id) == -1) {
+#ifdef MPE
+ GETUSERMODE();
+#endif
ap_log_error(APLOG_MARK, APLOG_ALERT, server_conf,
"setgid: unable to set group id to Group %u",
(unsigned)ap_group_id);
clean_child_exit(APEXIT_CHILDFATAL);
}
+#ifdef MPE
+ GETUSERMODE();
+#endif
/* Reset `groups' attributes. */
@@ -3204,7 +3217,7 @@ static void set_group_privs(void)
#endif /* MULTIPLE_GROUPS */
#endif /* !defined(OS2) && !defined(TPF) */
}
-#endif /* ndef WIN32 */
+#endif /* !defined(WIN32) && !defined(NETWARE) && !defined(BEOS) */
}
/* check to see if we have the 'suexec' setuid wrapper installed */
@@ -3212,7 +3225,7 @@ static int init_suexec(void)
{
int result = 0;
-#ifndef WIN32
+#if !defined(WIN32) && !defined(NETWARE)
struct stat wrapper;
if ((stat(SUEXEC_BIN, &wrapper)) != 0) {
@@ -3362,12 +3375,12 @@ static int make_sock(pool *p, const struct sockaddr_in *server)
ap_log_error(APLOG_MARK, APLOG_CRIT, server_conf,
"make_sock: for %s, setsockopt: (SO_REUSEADDR)", addr);
#ifdef BEOS
- closesocket(s);
+ closesocket(s);
#else
close(s);
#endif
ap_unblock_alarms();
- return -1;
+ exit(1);
}
#endif /*_OSD_POSIX*/
one = 1;
@@ -3376,13 +3389,13 @@ static int make_sock(pool *p, const struct sockaddr_in *server)
ap_log_error(APLOG_MARK, APLOG_CRIT, server_conf,
"make_sock: for %s, setsockopt: (SO_KEEPALIVE)", addr);
#ifdef BEOS
- closesocket(s);
+ closesocket(s);
#else
close(s);
#endif
ap_unblock_alarms();
- return -1;
+ exit(1);
}
#endif
@@ -3435,7 +3448,7 @@ static int make_sock(pool *p, const struct sockaddr_in *server)
#endif
#ifdef BEOS
- closesocket(s);
+ closesocket(s);
#else
close(s);
#endif
@@ -3451,7 +3464,7 @@ static int make_sock(pool *p, const struct sockaddr_in *server)
ap_log_error(APLOG_MARK, APLOG_ERR, server_conf,
"make_sock: unable to listen for connections on %s", addr);
#ifdef BEOS
- closesocket(s);
+ closesocket(s);
#else
close(s);
#endif
@@ -3459,6 +3472,30 @@ static int make_sock(pool *p, const struct sockaddr_in *server)
exit(1);
}
+#ifdef SO_ACCEPTFILTER
+ {
+#ifndef ACCEPT_FILTER_NAME
+#define ACCEPT_FILTER_NAME "dataready"
+#endif
+ /*
+ * See htdocs/manual/misc/perf-bsd44.html for a discussion of
+ * how to enable this feature and various issues with it.
+ */
+ struct accept_filter_arg af = {
+ ACCEPT_FILTER_NAME, ""
+ };
+ if (setsockopt(s, SOL_SOCKET, SO_ACCEPTFILTER, &af, sizeof(af)) < 0
+ && errno != ENOENT) {
+ ap_log_error(APLOG_MARK, APLOG_CRIT, server_conf,
+ "make_sock: for %s, setsockopt: (SO_ACCEPTFILTER)",
+ addr);
+ close(s);
+ ap_unblock_alarms();
+ exit(1);
+ }
+ }
+#endif
+
#ifdef WORKAROUND_SOLARIS_BUG
s = ap_slack(s, AP_SLACK_HIGH);
@@ -3475,11 +3512,11 @@ static int make_sock(pool *p, const struct sockaddr_in *server)
"found, you probably need to rebuild Apache with a "
"larger FD_SETSIZE", addr, s, FD_SETSIZE);
#ifdef BEOS
- closesocket(s);
+ closesocket(s);
#else
close(s);
#endif
- return -1;
+ exit(1);
}
#endif
@@ -3512,10 +3549,6 @@ static void copy_listeners(pool *p)
do {
listen_rec *nr = malloc(sizeof *nr);
-#ifdef NETWARE
- ThreadSwitch();
-#endif
-
if (nr == NULL) {
fprintf(stderr, "Ouch! malloc failed in copy_listeners()\n");
exit(1);
@@ -3570,7 +3603,7 @@ static void setup_listeners(pool *p)
for (;;) {
fd = find_listener(lr);
if (fd < 0) {
- fd = make_sock(p, &lr->local_addr);
+ fd = make_sock(p, &lr->local_addr);
}
else {
ap_note_cleanups_for_socket(p, fd);
@@ -3580,6 +3613,9 @@ static void setup_listeners(pool *p)
if (fd > listenmaxfd)
listenmaxfd = fd;
}
+ FD_SET(fd, &listenfds);
+ if (fd > listenmaxfd)
+ listenmaxfd = fd;
lr->fd = fd;
if (lr->next == NULL)
break;
@@ -3614,9 +3650,6 @@ static ap_inline listen_rec *find_ready_listener(fd_set * main_fds)
lr = head_listener;
do {
-#ifdef NETWARE
- ThreadSwitch();
-#endif
if (FD_ISSET(lr->fd, main_fds)) {
head_listener = lr->next;
return (lr);
@@ -3914,17 +3947,15 @@ static void child_main(int child_num_arg)
set_group_privs();
#ifdef MPE
- /* Only try to switch if we're running as MANAGER.SYS */
- if (geteuid() == 1 && ap_user_id > 1) {
- GETPRIVMODE();
- if (setuid(ap_user_id) == -1) {
- GETUSERMODE();
- ap_log_error(APLOG_MARK, APLOG_ALERT, server_conf,
- "setuid: unable to change to uid: %d", ap_user_id);
- exit(1);
- }
+ /* No such thing as root on MPE, so try to switch unconditionally */
+ GETPRIVMODE();
+ if (setuid(ap_user_id) == -1) {
GETUSERMODE();
+ ap_log_error(APLOG_MARK, APLOG_ALERT, server_conf,
+ "setuid: unable to change to uid: %d", ap_user_id);
+ exit(1);
}
+ GETUSERMODE();
#else
/* Only try to switch if we're running as root */
if (!geteuid() && (
@@ -5135,17 +5166,15 @@ int REALMAIN(int argc, char *argv[])
set_group_privs();
#ifdef MPE
- /* Only try to switch if we're running as MANAGER.SYS */
- if (geteuid() == 1 && ap_user_id > 1) {
- GETPRIVMODE();
- if (setuid(ap_user_id) == -1) {
- GETUSERMODE();
- ap_log_error(APLOG_MARK, APLOG_ALERT, server_conf,
- "setuid: unable to change to uid: %d", ap_user_id);
- exit(1);
- }
+ /* No such thing as root on MPE, so try to switch unconditionally */
+ GETPRIVMODE();
+ if (setuid(ap_user_id) == -1) {
GETUSERMODE();
+ ap_log_error(APLOG_MARK, APLOG_ALERT, server_conf,
+ "setuid: unable to change to uid: %d", ap_user_id);
+ exit(1);
}
+ GETUSERMODE();
#else
/* Only try to switch if we're running as root */
if (!geteuid() && setuid(ap_user_id) == -1) {
@@ -5432,13 +5461,11 @@ static void child_sub_main(int child_num)
TSD* tsd = NULL;
while(tsd == NULL) {
- tsd = (TSD*) GetThreadDataAreaPtr();
+ tsd = (TSD*) Thread_Data_Area;
ThreadSwitchWithDelay();
}
- SetCurrentNameSpace(4);
- SetTargetNameSpace(4);
-
+ init_name_space();
ap_thread_count++;
#endif
@@ -5459,7 +5486,7 @@ static void child_sub_main(int child_num)
#endif
#ifdef NETWARE
- tsd = (TSD*) GetThreadDataAreaPtr();
+ tsd = (TSD*) Thread_Data_Area;
#endif
while (1) {
@@ -5536,9 +5563,6 @@ static void child_sub_main(int child_num)
* until no requests are left or we decide to close.
*/
while ((r = ap_read_request(current_conn)) != NULL) {
-#ifdef NETWARE
- ThreadSwitch();
-#endif
(void) ap_update_child_status(child_num, SERVER_BUSY_WRITE, r);
if (r->status == HTTP_OK)
@@ -5609,9 +5633,10 @@ void child_main(int child_num_arg)
*/
#ifdef NETWARE
TSD Tsd;
-
+ int *thread_ptr;
memset(&Tsd, 0, sizeof(TSD));
- SaveThreadDataAreaPtr(&Tsd);
+ thread_ptr = __get_thread_data_area_ptr();
+ *thread_ptr = (int) &Tsd;
child_sub_main((int)child_num_arg);
#else
child_sub_main(child_num_arg);
@@ -5771,15 +5796,16 @@ void worker_main(void)
int clen;
int csd;
struct sockaddr_in sa_client;
- int total_jobs = 0;
thread **child_handles;
int rv;
int i;
struct timeval tv;
int my_pid;
-
int count_select_errors = 0;
pool *pchild;
+ module **m;
+ listen_rec* lr;
+
pchild = ap_make_sub_pool(pconf);
@@ -5807,11 +5833,27 @@ void worker_main(void)
ap_destroy_pool(pchild);
cleanup_scoreboard();
- exit(0);
+ exit(1);
}
set_signals();
+ /* Display listening ports */
+ printf(" Listening on port(s):");
+ lr = ap_listeners;
+ do {
+ printf(" %d", ntohs(lr->local_addr.sin_port));
+ lr = lr->next;
+ } while(lr && lr != ap_listeners);
+
+ /* Display dynamic modules loaded */
+ printf("\n");
+ for (m = ap_loaded_modules; *m != NULL; m++) {
+ if (((module*)*m)->dynamic_load_handle) {
+ printf(" Loaded dynamic module %s\n", ap_find_module_name(*m));
+ }
+ }
+
/*
* - Initialize allowed_globals
* - Create the thread table
@@ -5900,7 +5942,6 @@ void worker_main(void)
}
else {
add_job(csd);
- total_jobs++;
}
}
@@ -5908,8 +5949,7 @@ void worker_main(void)
/* Get ready to shutdown and exit */
allowed_globals.exit_now = 1;
- ap_release_mutex(start_mutex);
-
+
for (i = 0; i < nthreads; i++) {
add_job(-1);
}
@@ -5995,7 +6035,7 @@ void worker_main(void)
ap_destroy_pool(pchild);
cleanup_scoreboard();
- exit(0);
+ exit(1);
}
if (rv == WAIT_OBJECT_0 + 1) {
/* exit event signalled - exit now */
@@ -6020,7 +6060,7 @@ void worker_main(void)
ap_destroy_pool(pchild);
cleanup_scoreboard();
- exit(0);
+ exit(1);
}
set_signals();
@@ -6234,6 +6274,8 @@ static int create_process(pool *p, HANDLE *handles, HANDLE *events,
DWORD BytesWritten;
HANDLE hPipeRead = NULL;
HANDLE hPipeWrite = NULL;
+ HANDLE hPipeWriteDup;
+ HANDLE hCurrentProcess;
SECURITY_ATTRIBUTES sa = {0};
sa.nLength = sizeof(sa);
@@ -6269,7 +6311,10 @@ static int create_process(pool *p, HANDLE *handles, HANDLE *events,
pCommand = ap_psprintf(p, "\"%s\" -Z %s -f \"%s\"", buf, exit_event_name, ap_server_confname);
for (i = 1; i < argc; i++) {
- pCommand = ap_pstrcat(p, pCommand, " \"", argv[i], "\"", NULL);
+ if ((argv[i][0] == '-') && ((argv[i][1] == 'k') || (argv[i][1] == 'n')))
+ ++i;
+ else
+ pCommand = ap_pstrcat(p, pCommand, " \"", argv[i], "\"", NULL);
}
/* Create a pipe to send socket info to the child */
@@ -6279,7 +6324,15 @@ static int create_process(pool *p, HANDLE *handles, HANDLE *events,
return -1;
}
- /* Give the read in of teh pipe (hPipeRead) to the child as stdin. The
+ hCurrentProcess = GetCurrentProcess();
+ if (DuplicateHandle(hCurrentProcess, hPipeWrite, hCurrentProcess,
+ &hPipeWriteDup, 0, FALSE, DUPLICATE_SAME_ACCESS))
+ {
+ CloseHandle(hPipeWrite);
+ hPipeWrite = hPipeWriteDup;
+ }
+
+ /* Give the read in of the pipe (hPipeRead) to the child as stdin. The
* parent will write the socket data to the child on this pipe.
*/
memset(&si, 0, sizeof(si));
@@ -6706,11 +6759,6 @@ void signal_handler(int sig)
}
return;
}
-
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
#endif
#if defined(NETWARE)
@@ -6726,29 +6774,33 @@ int REALMAIN(int argc, char *argv[])
int child = 0;
char *cp;
char *s;
+ int conf_specified = 0;
+ char cwd[MAX_STRING_LEN];
+
+#ifdef WIN32
char *service_name = NULL;
int install = 0;
- int conf_specified = 0;
char *signal_to_send = NULL;
- char cwd[MAX_STRING_LEN];
-#ifdef NETWARE
- TSD Tsd;
+ /* Service application under WinNT */
+ if (isWindowsNT())
+ {
+ if (((argc == 1) && isProcessService())
+ || ((argc == 2) && !strcmp(argv[1], "--ntservice")))
+ {
+ service_main(master_main, argc, argv);
+ clean_parent_exit(0);
+ }
+ }
+
+ /* This behavior is voided by setting real_exit_code to 0 */
+ atexit(hold_console_open_on_error);
+#endif
- SetCurrentNameSpace(4);
- SetTargetNameSpace(4);
+#ifdef NETWARE
+ init_name_space();
signal(SIGTERM, signal_handler);
- memset(&Tsd, 0, sizeof(Tsd));
- SaveThreadDataAreaPtr(&Tsd);
-#else
- /* Service application
- * Configuration file in registry at:
- * HKLM\System\CurrentControlSet\Services\[Svc name]\Parameters\ConfPath
- */
- if (isProcessService()) {
- service_main(master_main, argc, argv);
- clean_parent_exit(0);
- }
+ init_tsd();
#endif
/* Console application or a child process. */
@@ -6770,7 +6822,7 @@ int REALMAIN(int argc, char *argv[])
}
#else
if(!GetCurrentDirectory(sizeof(cwd),cwd)) {
- ap_log_error(APLOG_MARK,APLOG_WIN32ERROR, NULL,
+ ap_log_error(APLOG_MARK,APLOG_EMERG|APLOG_WIN32ERROR, NULL,
"GetCurrentDirectory() failure");
return -1;
}
@@ -6796,6 +6848,8 @@ int REALMAIN(int argc, char *argv[])
break;
#ifdef WIN32
case 'Z':
+ /* Prevent holding open the (nonexistant) console */
+ real_exit_code = 0;
exit_event = open_event(optarg);
APD2("child: opened process event %s", optarg);
cp = strchr(optarg, '_');
@@ -6808,11 +6862,6 @@ int REALMAIN(int argc, char *argv[])
break;
case 'n':
service_name = ap_pstrdup(pcommands, optarg);
- if (isValidService(optarg)) {
- ap_registry_get_service_conf(pconf, ap_server_confname, sizeof(ap_server_confname),
- optarg);
- conf_specified = 1;
- }
break;
case 'i':
install = 1;
@@ -6824,9 +6873,17 @@ int REALMAIN(int argc, char *argv[])
ap_dump_settings = 1;
break;
case 'k':
- signal_to_send = optarg;
+ if (!strcasecmp(optarg, "stop"))
+ signal_to_send = "shutdown";
+ else
+ signal_to_send = optarg;
break;
#endif /* WIN32 */
+#ifdef NETWARE
+ case 's':
+ DestroyScreen(GetCurrentScreen());
+ break;
+#endif
case 'd':
optarg = ap_os_canonical_filename(pcommands, optarg);
if (!ap_os_is_path_absolute(optarg)) {
@@ -6849,20 +6906,36 @@ int REALMAIN(int argc, char *argv[])
ap_set_version();
printf("Server version: %s\n", ap_get_server_version());
printf("Server built: %s\n", ap_get_server_built());
+#ifdef NETWARE
clean_parent_exit(0);
+#else
+ clean_parent_exit(1);
+#endif
- case 'V':
+ case 'V':
ap_set_version();
show_compile_settings();
+#ifdef NETWARE
clean_parent_exit(0);
+#else
+ clean_parent_exit(1);
+#endif
case 'l':
ap_show_modules();
+#ifdef NETWARE
clean_parent_exit(0);
+#else
+ clean_parent_exit(1);
+#endif
case 'L':
ap_show_directives();
+#ifdef NETWARE
clean_parent_exit(0);
+#else
+ clean_parent_exit(1);
+#endif
case 'X':
++one_process; /* Weird debugging mode. */
@@ -6885,6 +6958,31 @@ int REALMAIN(int argc, char *argv[])
#endif
} /* while */
+#ifdef WIN32
+ if (!service_name && install) {
+ service_name = DEFAULTSERVICENAME;
+ }
+
+ if (service_name && isValidService(service_name))
+ {
+ ap_registry_get_service_conf(pconf, ap_server_confname,
+ sizeof(ap_server_confname),
+ service_name);
+ conf_specified = 1;
+ if (install > 0) {
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, NULL,
+ "Service \"%s\" is already installed!", service_name);
+ clean_parent_exit(1);
+ }
+ }
+ else if (service_name && (install <= 0))
+ {
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, NULL,
+ "Service \"%s\" is not installed!", service_name);
+ clean_parent_exit(1);
+ }
+#endif
+
/* ServerConfFile is found in this order:
* (1) -f or -n
* (2) [-d]/SERVER_CONFIG_FILE
@@ -6921,28 +7019,46 @@ int REALMAIN(int argc, char *argv[])
ap_no2slash(ap_server_confname);
#ifdef WIN32
+ /* Read the conf now unless we are uninstalling the service,
+ * or shutting down a running service
+ * (but do read the conf for the pidfile if we shutdown the console)
+ */
+ if ((install >= 0) && (!service_name || !signal_to_send
+ || strcasecmp(signal_to_send,"shutdown"))) {
+ server_conf = ap_read_config(pconf, ptrans, ap_server_confname);
+ }
+
if (install) {
if (!service_name)
service_name = ap_pstrdup(pconf, DEFAULTSERVICENAME);
if (install > 0)
- InstallService(service_name, ap_server_root_relative(pcommands, ap_server_confname));
+ InstallService(service_name, ap_server_root_relative(pcommands,
+ ap_server_confname));
else
RemoveService(service_name);
clean_parent_exit(0);
}
-
- if (service_name && signal_to_send) {
- send_signal_to_service(service_name, signal_to_send);
- clean_parent_exit(0);
- }
if (service_name && !conf_specified) {
printf("Unknown service: %s\n", service_name);
- clean_parent_exit(0);
+ clean_parent_exit(1);
}
-#endif
- server_conf = ap_read_config(pconf, ptrans, ap_server_confname);
+ /* All NT signals, and all but the 9x start signal are handled entirely.
+ * Die if we failed, are on NT, or are not "start"ing the service
+ */
+ if (service_name && signal_to_send) {
+ if (send_signal_to_service(service_name, signal_to_send))
+ clean_parent_exit(0);
+ if (isWindowsNT() || strcasecmp(signal_to_send, "start"))
+ clean_parent_exit(1);
+ /* Still here? Then we are hanging around to detach the console
+ * and use this process as the Windows 9x service.
+ */
+ }
+#else /* ndef WIN32 */
+ server_conf = ap_read_config(pconf, ptrans, ap_server_confname);
+#endif
#ifdef EAPI
ap_init_alloc_shared(FALSE);
#endif
@@ -6956,12 +7072,14 @@ int REALMAIN(int argc, char *argv[])
clean_parent_exit(0);
}
- /* Treat -k start confpath as just -f confpath */
+#ifdef WIN32
+ /* Non-service Signals. (Ignore -k start for now [with or without -n arg]) */
if (signal_to_send && strcasecmp(signal_to_send, "start")) {
send_signal(pconf, signal_to_send);
clean_parent_exit(0);
}
-
+#endif
+
#ifndef NETWARE
if (!child && !ap_dump_settings) {
ap_log_pid(pconf, ap_pid_fname);
@@ -6970,13 +7088,15 @@ int REALMAIN(int argc, char *argv[])
post_parse_init();
-#ifdef OS2
+#if defined(OS2)
printf("%s running...\n", ap_get_server_version());
-#endif
-#if defined(WIN32) || defined(NETWARE)
+#elif defined(WIN32)
if (!child) {
- printf("%s running...\n", ap_get_server_version());
+ printf("%s running...\n", ap_get_server_version());
}
+#elif defined(NETWARE)
+ clrscr();
+ printf("%s running...\n", ap_get_server_version());
#endif
#ifndef NETWARE
@@ -6992,7 +7112,7 @@ int REALMAIN(int argc, char *argv[])
while((ap_thread_count) || (!shutdown_pending))
ThreadSwitchWithDelay();
-#else
+#else
/*
* In the future, the main will spawn off a couple
* of children and monitor them. As soon as a child
@@ -7001,13 +7121,35 @@ int REALMAIN(int argc, char *argv[])
if (child || one_process) {
if (!exit_event || !start_mutex)
exit(-1);
+#ifdef WIN32
+ if (child)
+ FreeConsole();
+#endif
worker_main();
ap_destroy_mutex(start_mutex);
destroy_event(exit_event);
+ }
+#ifdef WIN32
+ else if (service_name && signal_to_send && !isWindowsNT()
+ && !strcasecmp(signal_to_send, "start")) {
+ /* service95_main will call master_main() */
+ service95_main(master_main, argc, argv, service_name);
}
else
+ {
+ /* Let's go fishing for some signals including ctrl+c, ctrl+break,
+ * logoff, close and shutdown, while the server is running
+ */
+ ap_start_console_monitor();
master_main(argc, argv);
-#endif
+ }
+#else /* ndef WIN32 */
+ else
+ {
+ master_main(argc, argv);
+ }
+#endif /* ndef WIN32 */
+#endif /* ndef NETWARE */
clean_parent_exit(0);
return 0; /* purely to avoid a warning */
@@ -7130,6 +7272,14 @@ int main(int argc, char *argv[], char *envp[])
}
}
+#ifdef MPE
+ /*
+ * MPE doesn't currently initialize the envp parameter. Instead, we must
+ * use the global variable environ.
+ */
+ envp = environ;
+#endif
+
/*
* create path to SHARED_CORE_EXECUTABLE_PROGRAM
*/
diff --git a/usr.sbin/httpd/src/main/http_protocol.c b/usr.sbin/httpd/src/main/http_protocol.c
index 76db20ad67b..3e1a0899548 100644
--- a/usr.sbin/httpd/src/main/http_protocol.c
+++ b/usr.sbin/httpd/src/main/http_protocol.c
@@ -235,13 +235,21 @@ API_EXPORT(int) ap_set_byterange(request_rec *r)
/* a multiple range */
const char *r_range = ap_pstrdup(r->pool, range + 6);
long tlength = 0;
-
- r->byterange = 2;
+ int ret;
+
r->boundary = ap_psprintf(r->pool, "%lx%lx",
r->request_time, (long) getpid());
- while (internal_byterange(0, &tlength, r, &r_range, NULL, NULL));
+ do {
+ /* Loop while we have another range spec to process */
+ ret = internal_byterange(0, &tlength, r, &r_range, NULL, NULL);
+ } while (ret == 1);
+ /* If an error occured processing one of the range specs, we
+ * must fail */
+ if (ret < 0)
+ return 0;
ap_table_setn(r->headers_out, "Content-Length",
ap_psprintf(r->pool, "%ld", tlength));
+ r->byterange = 2;
}
r->status = PARTIAL_CONTENT;
@@ -262,8 +270,8 @@ API_EXPORT(int) ap_each_byterange(request_rec *r, long *offset, long *length)
* If it is called with realreq=0, it will add to tlength the length
* it *would* have used with realreq=1.
*
- * Either case will return 1 if it should be called again, and 0
- * when done.
+ * Either case will return 1 if it should be called again, 0 when done,
+ * or -1 if an error occurs AND realreq=0.
*/
static int internal_byterange(int realreq, long *tlength, request_rec *r,
const char **r_range, long *offset, long *length)
@@ -296,9 +304,12 @@ static int internal_byterange(int realreq, long *tlength, request_rec *r,
#ifdef CHARSET_EBCDIC
POP_EBCDIC_OUTPUTCONVERSION_STATE(r->connection->client);
#endif /*CHARSET_EBCDIC*/
- /* Skip this one */
- return internal_byterange(realreq, tlength, r, r_range, offset,
- length);
+ if (!realreq)
+ /* Return error on invalid syntax */
+ return -1;
+ else
+ /* Should never get here */
+ return 0;
}
if (r->byterange > 1) {
@@ -859,7 +870,7 @@ static int read_request_line(request_rec *r)
const char *ll = l;
const char *uri;
conn_rec *conn = r->connection;
- int major = 1, minor = 0; /* Assume HTTP/1.0 if non-"HTTP" protocol */
+ unsigned int major = 1, minor = 0; /* Assume HTTP/1.0 if non-"HTTP" protocol */
int len;
/* Read past empty lines until we get a real request line,
diff --git a/usr.sbin/httpd/src/main/http_request.c b/usr.sbin/httpd/src/main/http_request.c
index 3bcab8935e1..ddbdc3c2614 100644
--- a/usr.sbin/httpd/src/main/http_request.c
+++ b/usr.sbin/httpd/src/main/http_request.c
@@ -178,7 +178,7 @@ static int get_path_info(request_rec *r)
char *end = &path[strlen(path)];
char *last_cp = NULL;
int rv;
-#ifdef HAVE_DRIVE_LETTERS
+#if defined(HAVE_DRIVE_LETTERS) || defined(HAVE_UNC_PATHS)
char bStripSlash=1;
#endif
@@ -193,8 +193,10 @@ static int get_path_info(request_rec *r)
*/
if (strlen(path) == 3 && path[1] == ':' && path[2] == '/')
bStripSlash = 0;
+#endif
+#ifdef HAVE_UNC_PATHS
/* If UNC name == //machine/share/, do not
* advance over the trailing slash. Any other
* UNC name is OK to strip the slash.
@@ -213,7 +215,9 @@ static int get_path_info(request_rec *r)
if (iCount == 4)
bStripSlash = 0;
}
+#endif
+#if defined(HAVE_DRIVE_LETTERS) || defined(HAVE_UNC_PATHS)
if (bStripSlash)
#endif
/* Advance over trailing slashes ... NOT part of filename
@@ -222,7 +226,6 @@ static int get_path_info(request_rec *r)
for (cp = end; cp > path && cp[-1] == '/'; --cp)
continue;
-
while (cp > path) {
/* See if the pathname ending here exists... */
@@ -325,8 +328,11 @@ static int directory_walk(request_rec *r)
char *test_filename;
char *test_dirname;
int res;
- unsigned i, num_dirs, iStart;
+ unsigned i, num_dirs;
int j, test_filename_len;
+#if defined(HAVE_UNC_PATHS) || defined(NETWARE)
+ unsigned iStart = 1;
+#endif
/*
* Are we dealing with a file? If not, we can (hopefuly) safely assume we
@@ -398,6 +404,8 @@ static int directory_walk(request_rec *r)
return res;
}
+ r->case_preserved_filename = r->filename;
+
r->filename = ap_os_canonical_filename(r->pool, r->filename);
test_filename = ap_pstrdup(r->pool, r->filename);
@@ -431,18 +439,46 @@ static int directory_walk(request_rec *r)
*/
test_dirname = ap_palloc(r->pool, test_filename_len + 2);
- iStart = 1;
-#ifdef WIN32
- /* If the name is a UNC name, then do not walk through the
- * machine and share name (e.g. \\machine\share\)
+#if defined(HAVE_UNC_PATHS)
+ /* If the name is a UNC name, then do not perform any true file test
+ * against the machine name (start at //machine/share/)
+ * This is optimized to use the normal walk (skips the redundant '/' root)
*/
if (num_dirs > 3 && test_filename[0] == '/' && test_filename[1] == '/')
iStart = 4;
#endif
+#if defined(NETWARE)
+ /* If the name is a fully qualified volume name, then do not perform any
+ * true file test on the machine name (start at machine/share:/)
+ * XXX: The implementation eludes me at this moment...
+ * Does this make sense? Please test!
+ */
+ if (num_dirs > 1 && strchr(test_filename, '/') < strchr(test_filename, ':'))
+ iStart = 2;
+#endif
+
+#if defined(HAVE_DRIVE_LETTERS) || defined(NETWARE)
+ /* Should match <Directory> sections starting from '/', not 'e:/'
+ * (for example). WIN32/OS2/NETWARE do not have a single root directory,
+ * they have one for each filesystem. Traditionally, Apache has treated
+ * <Directory /> permissions as the base for the whole server, and this
+ * tradition should probably be preserved.
+ *
+ * NOTE: MUST SYNC WITH ap_make_dirstr_prefix() CHANGE IN src/main/util.c
+ */
+ if (test_filename[0] == '/')
+ i = 1;
+ else
+ i = 0;
+#else
+ /* Normal File Systems are rooted at / */
+ i = 1;
+#endif /* def HAVE_DRIVE_LETTERS || NETWARE */
+
/* j keeps track of which section we're on, see core_reorder_directories */
j = 0;
- for (i = iStart; i <= num_dirs; ++i) {
+ for (; i <= num_dirs; ++i) {
int overrides_here;
core_dir_config *core_dir = (core_dir_config *)
ap_get_module_config(per_dir_defaults, &core_module);
@@ -458,6 +494,10 @@ static int directory_walk(request_rec *r)
* permissions appropriate to the *parent* directory...
*/
+#if defined(HAVE_UNC_PATHS) || defined(NETWARE)
+ /* Test only legal names against the real filesystem */
+ if (i >= iStart)
+#endif
if ((res = check_symlinks(test_dirname, core_dir->opts))) {
ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
"Symbolic link not allowed: %s", test_dirname);
@@ -481,7 +521,15 @@ static int directory_walk(request_rec *r)
if (entry_core->r
|| !ap_os_is_path_absolute(entry_dir)
+#if defined(HAVE_DRIVE_LETTERS) || defined(NETWARE)
+ /* To account for the top-level "/" directory when i == 0
+ * XXX: I think the net test is wrong... may fail ap_os_is_path_absolute
+ */
+ || (entry_core->d_components > 1
+ && entry_core->d_components > i))
+#else
|| entry_core->d_components > i)
+#endif /* def HAVE_DRIVE_LETTERS || NETWARE */
break;
this_conf = NULL;
@@ -500,11 +548,24 @@ static int directory_walk(request_rec *r)
core_dir = (core_dir_config *)
ap_get_module_config(per_dir_defaults, &core_module);
}
+#if defined(HAVE_DRIVE_LETTERS) || defined(NETWARE)
+ /* So that other top-level directory sections (e.g. "e:/") aren't
+ * skipped when i == 0
+ * XXX: I don't get you here, Tim... That's a level 1 section, but
+ * we are at level 0. Did you mean fast-forward to the next?
+ */
+ else if (!i)
+ break;
+#endif /* def HAVE_DRIVE_LETTERS || NETWARE */
}
overrides_here = core_dir->override;
/* If .htaccess files are enabled, check for one. */
+#if defined(HAVE_UNC_PATHS) || defined(NETWARE)
+ /* Test only legal names against the real filesystem */
+ if (i >= iStart)
+#endif
if (overrides_here) {
void *htaccess_conf = NULL;
@@ -1033,8 +1094,14 @@ API_EXPORT(void) ap_die(int type, request_rec *r)
if ((error_notes = ap_table_get(r->notes, "error-notes")) != NULL) {
ap_table_setn(r->subprocess_env, "ERROR_NOTES", error_notes);
}
- r->method = ap_pstrdup(r->pool, "GET");
- r->method_number = M_GET;
+ /*
+ * If it is already a GET or a HEAD, don't change it
+ * (method_number for GET and HEAD is the same)
+ */
+ if(r->method_number!=M_GET) {
+ r->method = ap_pstrdup(r->pool, "GET");
+ r->method_number = M_GET;
+ }
ap_internal_redirect(custom_response, r);
return;
}
diff --git a/usr.sbin/httpd/src/main/http_vhost.c b/usr.sbin/httpd/src/main/http_vhost.c
index 0152ddda326..255a0cfa1bc 100644
--- a/usr.sbin/httpd/src/main/http_vhost.c
+++ b/usr.sbin/httpd/src/main/http_vhost.c
@@ -409,60 +409,118 @@ static ipaddr_chain *find_default_server(unsigned port)
return NULL;
}
+static void dump_a_vhost(FILE *f, ipaddr_chain *ic)
+{
+ name_chain *nc;
+ int len;
+ char buf[MAX_STRING_LEN];
+
+ if (ic->sar->host_addr.s_addr == DEFAULT_VHOST_ADDR) {
+ len = ap_snprintf(buf, sizeof(buf), "_default_:%u",
+ ic->sar->host_port);
+ }
+ else if (ic->sar->host_addr.s_addr == INADDR_ANY) {
+ len = ap_snprintf(buf, sizeof(buf), "*:%u",
+ ic->sar->host_port);
+ }
+ else {
+ len = ap_snprintf(buf, sizeof(buf), "%pA:%u",
+ &ic->sar->host_addr, ic->sar->host_port);
+ }
+ if (ic->sar->host_port == 0) {
+ buf[len-1] = '*';
+ }
+ if (ic->names == NULL) {
+ fprintf(f, "%-22s %s (%s:%u)\n", buf, ic->server->server_hostname,
+ ic->server->defn_name, ic->server->defn_line_number);
+ return;
+ }
+ fprintf(f, "%-22s is a NameVirtualHost\n"
+ "%22s default server %s (%s:%u)\n",
+ buf, "", ic->server->server_hostname,
+ ic->server->defn_name, ic->server->defn_line_number);
+ for (nc = ic->names; nc; nc = nc->next) {
+ if (nc->sar->host_port) {
+ fprintf(f, "%22s port %u ", "", nc->sar->host_port);
+ }
+ else {
+ fprintf(f, "%22s port * ", "");
+ }
+ fprintf(f, "namevhost %s (%s:%u)\n", nc->server->server_hostname,
+ nc->server->defn_name, nc->server->defn_line_number);
+ }
+}
static void dump_vhost_config(FILE *f)
{
- int i;
ipaddr_chain *ic;
- name_chain *nc;
- char buf[MAX_STRING_LEN];
+ int i;
fprintf(f, "VirtualHost configuration:\n");
for (i = 0; i < IPHASH_TABLE_SIZE; ++i) {
for (ic = iphash_table[i]; ic; ic = ic->next) {
- if (ic->sar->host_port == 0) {
- ap_snprintf(buf, sizeof(buf), "%pA:*", &ic->sar->host_addr);
- }
- else {
- ap_snprintf(buf, sizeof(buf), "%pA:%u", &ic->sar->host_addr,
- ic->sar->host_port);
- }
- if (ic->names == NULL) {
- fprintf(f, "%-22s %s (%s:%u)\n", buf,
- ic->server->server_hostname, ic->server->defn_name,
- ic->server->defn_line_number);
- continue;
- }
- fprintf(f, "%-22s is a NameVirtualHost\n"
- "%22s default server %s (%s:%u)\n",
- buf, "", ic->server->server_hostname,
- ic->server->defn_name, ic->server->defn_line_number);
- for (nc = ic->names; nc; nc = nc->next) {
- if (nc->sar->host_port) {
- fprintf(f, "%22s port %u ", "", nc->sar->host_port);
- }
- else {
- fprintf(f, "%22s port * ", "");
- }
- fprintf(f, "namevhost %s (%s:%u)\n",
- nc->server->server_hostname,
- nc->server->defn_name,
- nc->server->defn_line_number);
- }
+ dump_a_vhost(f, ic);
}
}
if (default_list) {
- fprintf(f, "_default_ servers:\n");
+ fprintf(f, "wildcard NameVirtualHosts and _default_ servers:\n");
for (ic = default_list; ic; ic = ic->next) {
- if (ic->sar->host_port == 0) {
- fprintf(f, "port * ");
- }
- else {
- fprintf(f, "port %u ", ic->sar->host_port);
- }
- fprintf(f, "server %s (%s:%u)\n",
- ic->server->server_hostname, ic->server->defn_name,
- ic->server->defn_line_number);
+ dump_a_vhost(f, ic);
+ }
+ }
+}
+
+/*
+ * Helper functions for ap_fini_vhost_config()
+ */
+static int add_name_vhost_config(pool *p, server_rec *main_s, server_rec *s,
+ server_addr_rec *sar, ipaddr_chain *ic)
+{
+ /* the first time we encounter a NameVirtualHost address
+ * ic->server will be NULL, on subsequent encounters
+ * ic->names will be non-NULL.
+ */
+ if (ic->names || ic->server == NULL) {
+ name_chain *nc = new_name_chain(p, s, sar);
+ nc->next = ic->names;
+ ic->names = nc;
+ ic->server = s;
+ if (sar->host_port != ic->sar->host_port) {
+ /* one of the two is a * port, the other isn't */
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, main_s,
+ "VirtualHost %s:%u -- mixing * "
+ "ports and non-* ports with "
+ "a NameVirtualHost address is not supported,"
+ " proceeding with undefined results",
+ sar->virthost, sar->host_port);
+ }
+ return 1;
+ }
+ else {
+ /* IP-based vhosts are handled by the caller */
+ return 0;
+ }
+}
+
+static void remove_unused_name_vhosts(server_rec *main_s, ipaddr_chain **pic)
+{
+ while (*pic) {
+ ipaddr_chain *ic = *pic;
+
+ if (ic->server == NULL) {
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, main_s,
+ "NameVirtualHost %s:%u has no VirtualHosts",
+ ic->sar->virthost, ic->sar->host_port);
+ *pic = ic->next;
+ }
+ else if (ic->names == NULL) {
+ /* if server != NULL and names == NULL then we're done
+ * looking at NameVirtualHosts
+ */
+ break;
+ }
+ else {
+ pic = &ic->next;
}
}
}
@@ -497,13 +555,22 @@ void ap_fini_vhost_config(pool *p, server_rec *main_s)
*/
for (sar = name_vhost_list; sar; sar = sar->next) {
unsigned bucket = hash_inaddr(sar->host_addr.s_addr);
- ipaddr_chain *new = new_ipaddr_chain(p, NULL, sar);
-
- *iphash_table_tail[bucket] = new;
- iphash_table_tail[bucket] = &new->next;
+ ipaddr_chain *ic = new_ipaddr_chain(p, NULL, sar);
+ if (sar->host_addr.s_addr != INADDR_ANY) {
+ *iphash_table_tail[bucket] = ic;
+ iphash_table_tail[bucket] = &ic->next;
+ }
+ else {
+ /* A wildcard NameVirtualHost goes on the default_list so
+ * that it can catch incoming requests on any address.
+ */
+ ic->next = default_list;
+ default_list = ic;
+ }
/* Notice that what we've done is insert an ipaddr_chain with
- * both server and names NULL. Remember that.
+ * both server and names NULL. This fact is used to spot name-
+ * based vhosts in add_name_vhost_config().
*/
}
@@ -520,46 +587,31 @@ void ap_fini_vhost_config(pool *p, server_rec *main_s)
if (sar->host_addr.s_addr == DEFAULT_VHOST_ADDR
|| sar->host_addr.s_addr == INADDR_ANY) {
- /* add it to default bucket for each appropriate sar
- * since we need to do a port test
- */
- ipaddr_chain *other;
-
- other = find_default_server(sar->host_port);
- if (other && other->sar->host_port != 0) {
- ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, main_s,
- "_default_ VirtualHost overlap on port %u,"
+ ic = find_default_server(sar->host_port);
+ if (!ic || !add_name_vhost_config(p, main_s, s, sar, ic)) {
+ if (ic && ic->sar->host_port != 0) {
+ ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING,
+ main_s, "_default_ VirtualHost overlap on port %u,"
" the first has precedence", sar->host_port);
+ }
+ ic = new_ipaddr_chain(p, s, sar);
+ ic->next = default_list;
+ default_list = ic;
}
has_default_vhost_addr = 1;
- ic = new_ipaddr_chain(p, s, sar);
- ic->next = default_list;
- default_list = ic;
}
else {
/* see if it matches something we've already got */
ic = find_ipaddr(&sar->host_addr, sar->host_port);
- /* the first time we encounter a NameVirtualHost address
- * ic->server will be NULL, on subsequent encounters
- * ic->names will be non-NULL.
- */
- if (ic && (ic->names || ic->server == NULL)) {
- name_chain *nc = new_name_chain(p, s, sar);
- nc->next = ic->names;
- ic->names = nc;
- ic->server = s;
- if (sar->host_port != ic->sar->host_port) {
- /* one of the two is a * port, the other isn't */
- ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, main_s,
- "VirtualHost %s:%u -- mixing * "
- "ports and non-* ports with "
- "a NameVirtualHost address is not supported,"
- " proceeding with undefined results",
- sar->virthost, sar->host_port);
- }
+ if (!ic) {
+ unsigned bucket = hash_inaddr(sar->host_addr.s_addr);
+
+ ic = new_ipaddr_chain(p, s, sar);
+ ic->next = *iphash_table_tail[bucket];
+ *iphash_table_tail[bucket] = ic;
}
- else if (ic) {
+ else if (!add_name_vhost_config(p, main_s, s, sar, ic)) {
ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, main_s,
"VirtualHost %s:%u overlaps with "
"VirtualHost %s:%u, the first has precedence, "
@@ -569,13 +621,6 @@ void ap_fini_vhost_config(pool *p, server_rec *main_s)
ic->sar = sar;
ic->server = s;
}
- else {
- unsigned bucket = hash_inaddr(sar->host_addr.s_addr);
-
- ic = new_ipaddr_chain(p, s, sar);
- ic->next = *iphash_table_tail[bucket];
- *iphash_table_tail[bucket] = ic;
- }
}
}
@@ -621,28 +666,9 @@ void ap_fini_vhost_config(pool *p, server_rec *main_s)
* hosts associated with them. Lamers.
*/
for (i = 0; i < IPHASH_TABLE_SIZE; ++i) {
- ipaddr_chain **pic = &iphash_table[i];
-
- while (*pic) {
- ipaddr_chain *ic = *pic;
-
- if (ic->server == NULL) {
- ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, main_s,
- "NameVirtualHost %s:%u has no VirtualHosts",
- ic->sar->virthost, ic->sar->host_port);
- *pic = ic->next;
- }
- else if (ic->names == NULL) {
- /* if server != NULL and names == NULL then we're done
- * looking at NameVirtualHosts
- */
- break;
- }
- else {
- pic = &ic->next;
- }
- }
+ remove_unused_name_vhosts(main_s, &iphash_table[i]);
}
+ remove_unused_name_vhosts(main_s, &default_list);
#ifdef IPHASH_STATISTICS
dump_iphash_statistics(main_s);
@@ -670,7 +696,14 @@ static void fix_hostname(request_rec *r)
src = r->hostname;
dst = host;
while (*src) {
- if (!ap_isalnum(*src) && *src != '.' && *src != '-') {
+ if (!ap_isalnum(*src) && *src != '-') {
+ if (*src == '.') {
+ *dst++ = *src++;
+ if (*src == '.')
+ goto bad;
+ else
+ continue;
+ }
if (*src == ':')
break;
else
@@ -933,16 +966,18 @@ void ap_update_vhost_given_ip(conn_rec *conn)
return;
}
- /* There's certainly no name-vhosts with this address, they would have
- * been matched above.
+ /* maybe there's a default server or wildcard name-based vhost
+ * matching this port
*/
- conn->vhost_lookup_data = NULL;
-
- /* maybe there's a default server matching this port */
trav = find_default_server(port);
if (trav) {
+ conn->vhost_lookup_data = trav->names;
conn->server = trav->server;
+ return;
}
- /* otherwise we're stuck with just the main server */
+ /* otherwise we're stuck with just the main server
+ * and no name-based vhosts
+ */
+ conn->vhost_lookup_data = NULL;
}
diff --git a/usr.sbin/httpd/src/main/util.c b/usr.sbin/httpd/src/main/util.c
index 5b8fba06d67..659f8e16ccb 100644
--- a/usr.sbin/httpd/src/main/util.c
+++ b/usr.sbin/httpd/src/main/util.c
@@ -108,7 +108,7 @@ API_VAR_EXPORT const char ap_day_snames[7][4] =
"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
};
-API_EXPORT(char *) ap_get_time()
+API_EXPORT(char *) ap_get_time(void)
{
time_t t;
char *time_string;
@@ -335,6 +335,32 @@ API_EXPORT(char *) ap_strcasestr(const char *s1, const char *s2)
}
return((char *)s1);
}
+
+/*
+ * Returns an offsetted pointer in bigstring immediately after
+ * prefix. Returns bigstring if bigstring doesn't start with
+ * prefix or if prefix is longer than bigstring while still matching.
+ * NOTE: pointer returned is relative to bigstring, so we
+ * can use standard pointer comparisons in the calling function
+ * (eg: test if ap_stripprefix(a,b) == a)
+ */
+API_EXPORT(char *) ap_stripprefix(const char *bigstring, const char *prefix)
+{
+ char *p1;
+ if (*prefix == '\0') {
+ return( (char *)bigstring);
+ }
+ p1 = (char *)bigstring;
+ while(*p1 && *prefix) {
+ if (*p1++ != *prefix++)
+ return( (char *)bigstring);
+ }
+ if (*prefix == '\0')
+ return(p1);
+ else /* hit the end of bigstring! */
+ return( (char *)bigstring);
+}
+
/*
* Apache stub function for the regex libraries regexec() to make sure the
* whole regex(3) API is available through the Apache (exported) namespace.
@@ -505,7 +531,7 @@ API_EXPORT(void) ap_no2slash(char *name)
s = d = name;
-#ifdef WIN32
+#ifdef HAVE_UNC_PATHS
/* Check for UNC names. Leave leading two slashes. */
if (s[0] == '/' && s[1] == '/')
*d++ = *s++;
@@ -536,9 +562,21 @@ API_EXPORT(void) ap_no2slash(char *name)
* /a/b, 2 ==> /a/
* /a/b, 3 ==> /a/b/
* /a/b, 4 ==> /a/b/
+ *
+ * MODIFIED FOR HAVE_DRIVE_LETTERS and NETWARE environments,
+ * so that if n == 0, "/" is returned in d with n == 1
+ * and s == "e:/test.html", "e:/" is returned in d
+ * *** See also directory_walk in src/main/http_request.c
*/
API_EXPORT(char *) ap_make_dirstr_prefix(char *d, const char *s, int n)
{
+#if defined(HAVE_DRIVE_LETTERS) || defined(NETWARE)
+ if (!n) {
+ *d = '/';
+ *++d = '\0';
+ return (d);
+ }
+#endif /* def HAVE_DRIVE_LETTERS || NETWARE */
for (;;) {
*d = *s;
if (*d == '\0') {
@@ -1640,6 +1678,20 @@ API_EXPORT(int) ap_is_directory(const char *path)
return (S_ISDIR(finfo.st_mode));
}
+/*
+ * see ap_is_directory() except this one is symlink aware, so it
+ * checks for a "real" directory
+ */
+API_EXPORT(int) ap_is_rdirectory(const char *path)
+{
+ struct stat finfo;
+
+ if (lstat(path, &finfo) == -1)
+ return 0; /* in error condition, just return no */
+
+ return ((!(S_ISLNK(finfo.st_mode))) && (S_ISDIR(finfo.st_mode)));
+}
+
API_EXPORT(char *) ap_make_full_path(pool *a, const char *src1,
const char *src2)
{
@@ -1695,7 +1747,7 @@ API_EXPORT(int) ap_can_exec(const struct stat *finfo)
return 1;
}
#endif
- return (finfo->st_mode & S_IXOTH);
+ return ((finfo->st_mode & S_IXOTH) != 0);
#endif
}
@@ -1976,7 +2028,7 @@ char *ap_get_local_host(pool *a)
#define MAXHOSTNAMELEN 256
#endif
char str[MAXHOSTNAMELEN];
- char *server_hostname;
+ char *server_hostname = NULL;
struct hostent *p;
#ifdef BEOS /* BeOS returns zero as an error for gethostname */
@@ -1984,17 +2036,37 @@ char *ap_get_local_host(pool *a)
#else
if (gethostname(str, sizeof(str) - 1) != 0) {
#endif /* BeOS */
- perror("Unable to gethostname");
- exit(1);
- }
- str[sizeof(str) - 1] = '\0';
- if ((!(p = gethostbyname(str))) || (!(server_hostname = find_fqdn(a, p)))) {
- fprintf(stderr, "%s: cannot determine local host name.\n",
- ap_server_argv0);
- fprintf(stderr, "Use the ServerName directive to set it manually.\n");
- exit(1);
+ ap_log_error(APLOG_MARK, APLOG_WARNING, NULL,
+ "%s: gethostname() failed to detemine ServerName\n",
+ ap_server_argv0);
+ server_hostname = ap_pstrdup(a, "127.0.0.1");
+ }
+ else
+ {
+ str[sizeof(str) - 1] = '\0';
+ if ((!(p = gethostbyname(str)))
+ || (!(server_hostname = find_fqdn(a, p)))) {
+ /* Recovery - return the default servername by IP: */
+ if (!str && p->h_addr_list[0]) {
+ ap_snprintf(str, sizeof(str), "%pA", p->h_addr_list[0]);
+ server_hostname = ap_pstrdup(a, str);
+ /* We will drop through to report the IP-named server */
+ }
+ }
+ else
+ /* Since we found a fdqn, return it with no logged message. */
+ return server_hostname;
}
+ /* If we don't have an fdqn or IP, fall back to the loopback addr */
+ if (!server_hostname)
+ server_hostname = ap_pstrdup(a, "127.0.0.1");
+
+ ap_log_error(APLOG_MARK, APLOG_ALERT|APLOG_NOERRNO, NULL,
+ "%s: Could not determine the server's fully qualified "
+ "domain name, using %s for ServerName",
+ ap_server_argv0, server_hostname);
+
return server_hostname;
}
@@ -2184,3 +2256,16 @@ API_EXPORT(char *) ap_escape_quotes (pool *p, const char *instring)
*outchr = '\0';
return outstring;
}
+
+/* dest = src with whitespace removed
+ * length of dest assumed >= length of src
+ */
+API_EXPORT(void) ap_remove_spaces(char *dest, char *src)
+{
+ while (*src) {
+ if (!ap_isspace(*src))
+ *dest++ = *src;
+ src++;
+ }
+ *dest = 0;
+}
diff --git a/usr.sbin/httpd/src/main/util_md5.c b/usr.sbin/httpd/src/main/util_md5.c
index 368ddf63b23..8114613e33e 100644
--- a/usr.sbin/httpd/src/main/util_md5.c
+++ b/usr.sbin/httpd/src/main/util_md5.c
@@ -193,12 +193,10 @@ API_EXPORT(char *) ap_md5digest(pool *p, FILE *infile, int convert)
{
AP_MD5_CTX context;
unsigned char buf[1000];
- long length = 0;
int nbytes;
ap_MD5Init(&context);
while ((nbytes = fread(buf, 1, sizeof(buf), infile))) {
- length += nbytes;
if (!convert) {
ascii2ebcdic(buf, buf, nbytes);
}
@@ -214,12 +212,10 @@ API_EXPORT(char *) ap_md5digest(pool *p, FILE *infile)
{
AP_MD5_CTX context;
unsigned char buf[1000];
- long length = 0;
unsigned int nbytes;
ap_MD5Init(&context);
while ((nbytes = fread(buf, 1, sizeof(buf), infile))) {
- length += nbytes;
ap_MD5Update(&context, buf, nbytes);
}
rewind(infile);
diff --git a/usr.sbin/httpd/src/main/util_script.c b/usr.sbin/httpd/src/main/util_script.c
index 3c41fe175ec..eea946483dc 100644
--- a/usr.sbin/httpd/src/main/util_script.c
+++ b/usr.sbin/httpd/src/main/util_script.c
@@ -267,16 +267,16 @@ API_EXPORT(void) ap_add_common_vars(request_rec *r)
#endif
#ifdef OS2
- if (env_temp = getenv("COMSPEC")) {
+ if ((env_temp = getenv("COMSPEC")) != NULL) {
ap_table_addn(e, "COMSPEC", env_temp);
}
- if (env_temp = getenv("ETC")) {
+ if ((env_temp = getenv("ETC")) != NULL) {
ap_table_addn(e, "ETC", env_temp);
}
- if (env_temp = getenv("DPATH")) {
+ if ((env_temp = getenv("DPATH")) != NULL) {
ap_table_addn(e, "DPATH", env_temp);
}
- if (env_temp = getenv("PERLLIB_PREFIX")) {
+ if ((env_temp = getenv("PERLLIB_PREFIX")) != NULL) {
ap_table_addn(e, "PERLLIB_PREFIX", env_temp);
}
#endif
@@ -649,6 +649,63 @@ API_EXPORT(int) ap_scan_script_header_err_buff(request_rec *r, BUFF *fb,
return ap_scan_script_header_err_core(r, buffer, getsfunc_BUFF, fb);
}
+struct vastrs {
+ va_list args;
+ int arg;
+ const char *curpos;
+};
+
+static int getsfunc_STRING(char *w, int len, void *pvastrs)
+{
+ struct vastrs *strs = (struct vastrs*) pvastrs;
+ char *p;
+ int t;
+
+ if (!strs->curpos || !*strs->curpos)
+ return 0;
+ p = strchr(strs->curpos, '\n');
+ if (p)
+ ++p;
+ else
+ p = strchr(strs->curpos, '\0');
+ t = p - strs->curpos;
+ if (t > len)
+ t = len;
+ strncpy (w, strs->curpos, t);
+ w[t] = '\0';
+ if (!strs->curpos[t]) {
+ ++strs->arg;
+ strs->curpos = va_arg(strs->args, const char *);
+ }
+ else
+ strs->curpos += t;
+ return t;
+}
+
+/* ap_scan_script_header_err_strs() accepts additional const char* args...
+ * each is treated as one or more header lines, and the first non-header
+ * character is returned to **arg, **data. (The first optional arg is
+ * counted as 0.)
+ */
+API_EXPORT_NONSTD(int) ap_scan_script_header_err_strs(request_rec *r,
+ char *buffer,
+ const char **termch,
+ int *termarg, ...)
+{
+ struct vastrs strs;
+ int res;
+
+ va_start(strs.args, termarg);
+ strs.arg = 0;
+ strs.curpos = va_arg(strs.args, char*);
+ res = ap_scan_script_header_err_core(r, buffer, getsfunc_STRING, (void *) &strs);
+ if (termch)
+ *termch = strs.curpos;
+ if (termarg)
+ *termarg = strs.arg;
+ va_end(strs.args);
+ return res;
+}
API_EXPORT(void) ap_send_size(size_t size, request_rec *r)
{
@@ -673,7 +730,7 @@ API_EXPORT(void) ap_send_size(size_t size, request_rec *r)
}
}
-#if defined(OS2) || defined(WIN32)
+#if defined(WIN32)
static char **create_argv_cmd(pool *p, char *av0, const char *args, char *path)
{
register int x, n;
@@ -988,21 +1045,11 @@ API_EXPORT(int) ap_call_exec(request_rec *r, child_info *pinfo, char *argv0,
pCommand = ap_pstrcat(r->pool, quoted_filename, " ", arguments, NULL);
}
- } else {
-
- char *shell_cmd = "CMD.EXE /C ";
- OSVERSIONINFO osver;
- osver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
-
- /*
- * Use CMD.EXE for NT, COMMAND.COM for WIN95
- */
- if (GetVersionEx(&osver)) {
- if (osver.dwPlatformId != VER_PLATFORM_WIN32_NT) {
- shell_cmd = "COMMAND.COM /C ";
- }
- }
- pCommand = ap_pstrcat(r->pool, shell_cmd, argv0, NULL);
+ } else {
+ char *shellcmd = getenv("COMSPEC");
+ if (!shellcmd)
+ shellcmd = SHELL_PATH;
+ pCommand = ap_pstrcat(r->pool, shellcmd, " /C ", argv0, NULL);
}
/*
diff --git a/usr.sbin/httpd/src/modules/example/Makefile.tmpl b/usr.sbin/httpd/src/modules/example/Makefile.tmpl
index ac0bca36dcc..c99bdf46613 100644
--- a/usr.sbin/httpd/src/modules/example/Makefile.tmpl
+++ b/usr.sbin/httpd/src/modules/example/Makefile.tmpl
@@ -8,7 +8,7 @@ mod_example.o: mod_example.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_main.h $(INCDIR)/http_protocol.h \
diff --git a/usr.sbin/httpd/src/modules/example/mod_example.c b/usr.sbin/httpd/src/modules/example/mod_example.c
index 68a6b06fe3a..3272ecc82ca 100644
--- a/usr.sbin/httpd/src/modules/example/mod_example.c
+++ b/usr.sbin/httpd/src/modules/example/mod_example.c
@@ -424,9 +424,11 @@ static void trace_add(server_rec *s, request_rec *r, excfg *mconfig,
* on the size (and readability) of the error_log is considerable.
*/
#define EXAMPLE_LOG_EACH 0
- if (EXAMPLE_LOG_EACH && (s != NULL)) {
+#if EXAMPLE_LOG_EACH
+ if (s != NULL) {
ap_log_error(APLOG_MARK, APLOG_DEBUG, s, "mod_example: %s", note);
}
+#endif
}
/*--------------------------------------------------------------------------*/
@@ -707,7 +709,7 @@ static void example_child_exit(server_rec *s, pool *p)
}
/*
- * This function gets called to create up a per-directory configuration
+ * This function gets called to create a per-directory configuration
* record. This will be called for the "default" server environment, and for
* each directory for which the parser finds any of our directives applicable.
* If a directory doesn't have any of our directives involved (i.e., they
@@ -1126,7 +1128,7 @@ module example_module =
example_create_server_config, /* server config creator */
example_merge_server_config, /* server config merger */
example_cmds, /* command table */
- example_handlers, /* [7] list of handlers */
+ example_handlers, /* [9] list of handlers */
example_translate_handler, /* [2] filename-to-URI translation */
example_check_user_id, /* [5] check/validate user_id */
example_auth_checker, /* [6] check user_id is valid *here* */
diff --git a/usr.sbin/httpd/src/modules/experimental/Makefile.tmpl b/usr.sbin/httpd/src/modules/experimental/Makefile.tmpl
index 30cabaf5b77..6760311f157 100644
--- a/usr.sbin/httpd/src/modules/experimental/Makefile.tmpl
+++ b/usr.sbin/httpd/src/modules/experimental/Makefile.tmpl
@@ -8,7 +8,7 @@ mod_mmap_static.o: mod_mmap_static.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_log.h $(INCDIR)/http_protocol.h \
$(INCDIR)/http_request.h $(INCDIR)/http_core.h
@@ -16,7 +16,7 @@ mod_auth_digest.o: mod_auth_digest.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_protocol.h $(INCDIR)/util_md5.h \
diff --git a/usr.sbin/httpd/src/modules/experimental/mod_auth_digest.c b/usr.sbin/httpd/src/modules/experimental/mod_auth_digest.c
index d22cde9d8f4..03d4b67eb2a 100644
--- a/usr.sbin/httpd/src/modules/experimental/mod_auth_digest.c
+++ b/usr.sbin/httpd/src/modules/experimental/mod_auth_digest.c
@@ -78,8 +78,20 @@
* currently ignored by mod_proxy (needs patch to mod_proxy)
* - generating the secret takes a while (~ 8 seconds) if using the
* truerand library
+ * - The source of the secret should be run-time directive (with server
+ * scope: RSRC_CONF). However, that could be tricky when trying to
+ * choose truerand vs. file...
* - shared-mem not completely tested yet. Seems to work ok for me,
* but... (definitely won't work on Windoze)
+ * - Sharing a realm among multiple servers has following problems:
+ * o Server name and port can't be included in nonce-hash
+ * (we need two nonce formats, which must be configured explicitly)
+ * o Nonce-count check can't be for equal, or then nonce-count checking
+ * must be disabled. What we could do is the following:
+ * (expected < received) ? set expected = received : issue error
+ * The only problem is that it allows replay attacks when somebody
+ * captures a packet sent to one server and sends it to another
+ * one. Should we add "AuthDigestNcCheck Strict"?
*/
/* The section for the Configure script:
@@ -306,7 +318,8 @@ static void initialize_secret(server_rec *s)
{
#ifdef DEV_RANDOM
int rnd;
- size_t got, tot;
+ ssize_t got;
+ size_t tot;
#else
extern int randbyte(void); /* from the truerand library */
unsigned int idx;
@@ -523,7 +536,7 @@ static const char *set_group_file(cmd_parms *cmd, void *config,
static const char *set_qop(cmd_parms *cmd, void *config, const char *op)
{
digest_config_rec *conf = (digest_config_rec *) config;
- const char **tmp;
+ char **tmp;
int cnt;
if (!strcasecmp(op, "none")) {
@@ -548,7 +561,7 @@ static const char *set_qop(cmd_parms *cmd, void *config, const char *op)
memcpy(tmp, conf->qop_list, cnt*sizeof(char*));
tmp[cnt] = ap_pstrdup(cmd->pool, op);
tmp[cnt+1] = NULL;
- conf->qop_list = tmp;
+ conf->qop_list = (const char **)tmp;
return NULL;
}
@@ -629,7 +642,7 @@ static const command_rec digest_cmds[] =
"The algorithm used for the hash calculation"},
{"AuthDigestDomain", set_uri_list, NULL, OR_AUTHCFG, ITERATE,
"A list of URI's which belong to the same protection space as the current URI"},
- {NULL}
+ {NULL, NULL, NULL, 0, 0, NULL}
};
@@ -764,9 +777,9 @@ static long gc(void)
/*
* Add a new client to the list. Returns the entry if successful, NULL
- * otherwise. This triggers the garbage collection is memory is low.
+ * otherwise. This triggers the garbage collection if memory is low.
*/
-static client_entry *add_client(unsigned long key, client_entry *new,
+static client_entry *add_client(unsigned long key, client_entry *info,
server_rec *s)
{
int bucket;
@@ -797,7 +810,7 @@ static client_entry *add_client(unsigned long key, client_entry *new,
/* now add the entry */
- memcpy(entry, new, sizeof(client_entry));
+ memcpy(entry, info, sizeof(client_entry));
entry->key = key;
entry->next = client_list->table[bucket];
client_list->table[bucket] = entry;
@@ -964,8 +977,8 @@ static int update_nonce_count(request_rec *r)
* Nonce generation code
*/
-/* The hash part of the nonce is a SHA-1 hash of the time, realm, opaque,
- * and our secret.
+/* The hash part of the nonce is a SHA-1 hash of the time, realm, server host
+ * and port, opaque, and our secret.
*/
static void gen_nonce_hash(char *hash, const char *timestr, const char *opaque,
const server_rec *server,
@@ -977,10 +990,12 @@ static void gen_nonce_hash(char *hash, const char *timestr, const char *opaque,
int idx;
memcpy(&ctx, &conf->nonce_ctx, sizeof(ctx));
+ /*
ap_SHA1Update_binary(&ctx, (const unsigned char *) server->server_hostname,
strlen(server->server_hostname));
ap_SHA1Update_binary(&ctx, (const unsigned char *) &server->port,
sizeof(server->port));
+ */
ap_SHA1Update_binary(&ctx, (const unsigned char *) timestr, strlen(timestr));
if (opaque)
ap_SHA1Update_binary(&ctx, (const unsigned char *) opaque,
@@ -1035,7 +1050,7 @@ static const char *gen_nonce(pool *p, time_t now, const char *opaque,
static client_entry *gen_client(const request_rec *r)
{
unsigned long op;
- client_entry new = { 0, NULL, 0, "", "" }, *entry;
+ client_entry new_entry = { 0, NULL, 0, "", "" }, *entry;
if (!opaque_mm) return 0;
@@ -1043,7 +1058,7 @@ static client_entry *gen_client(const request_rec *r)
op = (*opaque_cntr)++;
mm_unlock(opaque_mm);
- if (!(entry = add_client(op, &new, r->server))) {
+ if (!(entry = add_client(op, &new_entry, r->server))) {
ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
"Digest: failed to allocate client entry - ignoring "
"client");
@@ -1062,53 +1077,70 @@ static client_entry *gen_client(const request_rec *r) { return NULL; }
* MD5-sess code.
*
* If you want to use algorithm=MD5-sess you must write get_userpw_hash()
- * yourself (see below). The dummy provided here just returns the hash
- * from the auth-file, i.e. it is only useful for testing client
- * implementations of MD5-sess .
+ * yourself (see below). The dummy provided here just uses the hash from
+ * the auth-file, i.e. it is only useful for testing client implementations
+ * of MD5-sess .
*/
/*
* get_userpw_hash() will be called each time a new session needs to be
* generated and is expected to return the equivalent of
*
+ * h_urp = ap_md5(r->pool,
+ * ap_pstrcat(r->pool, username, ":", ap_auth_name(r), ":", passwd))
* ap_md5(r->pool,
- * ap_pstrcat(r->pool, username, ":", ap_auth_name(r), ":", passwd))
+ * (unsigned char *) ap_pstrcat(r->pool, h_urp, ":", resp->nonce, ":",
+ * resp->cnonce, NULL));
+ *
+ * or put differently, it must return
+ *
+ * MD5(MD5(username ":" realm ":" password) ":" nonce ":" cnonce)
+ *
+ * If something goes wrong, the failure must be logged and NULL returned.
*
- * You must implement this yourself, and will probably consist of code
- * contacting the password server and retrieving the hash from it.
+ * You must implement this yourself, which will probably consist of code
+ * contacting the password server with the necessary information (typically
+ * the username, realm, nonce, and cnonce) and receiving the hash from it.
*
* TBD: This function should probably be in a seperate source file so that
- * people need not modify mod_auth_digest.c each time they install a new version
- * of apache.
+ * people need not modify mod_auth_digest.c each time they install a new
+ * version of apache.
*/
static const char *get_userpw_hash(const request_rec *r,
const digest_header_rec *resp,
const digest_config_rec *conf)
{
- /* for now, just get it from pwfile */
- return conf->ha1;
+ return ap_md5(r->pool,
+ (unsigned char *) ap_pstrcat(r->pool, conf->ha1, ":", resp->nonce,
+ ":", resp->cnonce, NULL));
}
-static const char *get_session(const request_rec *r,
- digest_header_rec *resp,
- const digest_config_rec *conf)
+/* Retrieve current session H(A1). If there is none and "generate" is
+ * true then a new session for MD5-sess is generated and stored in the
+ * client struct; if generate is false, or a new session could not be
+ * generated then NULL is returned (in case of failure to generate the
+ * failure reason will have been logged already).
+ */
+static const char *get_session_HA1(const request_rec *r,
+ digest_header_rec *resp,
+ const digest_config_rec *conf,
+ int generate)
{
- const char *ha1 = NULL, *urp;
-
- /* get ha1 from client list */
- if (resp->opaque && resp->client)
- ha1 = resp->client->ha1;
-
- /* generate new session if necessary */
- if (ha1 == NULL || ha1[0] == '\0') {
- urp = get_userpw_hash(r, resp, conf);
- ha1 = ap_md5(r->pool,
- (unsigned char *) ap_pstrcat(r->pool, urp, ":", resp->nonce,
- ":", resp->cnonce, NULL));
- if (!resp->client)
- resp->client = gen_client(r);
- if (resp->client)
+ const char *ha1 = NULL;
+
+ /* return the current sessions if there is one */
+ if (resp->opaque && resp->client && resp->client->ha1[0])
+ return resp->client->ha1;
+ else if (!generate)
+ return NULL;
+
+ /* generate a new session */
+ if (!resp->client)
+ resp->client = gen_client(r);
+ if (resp->client) {
+ ha1 = get_userpw_hash(r, resp, conf);
+ if (ha1)
memcpy(resp->client->ha1, ha1, sizeof(resp->client->ha1));
}
@@ -1221,11 +1253,6 @@ static void note_digest_auth_failure(request_rec *r,
qop = ap_pstrcat(r->pool, qop, "\"", NULL);
}
- /* MD5-sess stuff */
-
- if (!stale && !strcasecmp(conf->algorithm, "MD5-sess"))
- clear_session(resp);
-
/* Setup opaque */
if (resp->opaque == NULL) {
@@ -1265,6 +1292,14 @@ static void note_digest_auth_failure(request_rec *r,
if (resp->client && conf->nonce_lifetime == 0)
memcpy(resp->client->last_nonce, nonce, NONCE_LEN+1);
+ /* Setup MD5-sess stuff. Note that we just clear out the session
+ * info here, since we can't generate a new session until the request
+ * from the client comes in with the cnonce.
+ */
+
+ if (!strcasecmp(conf->algorithm, "MD5-sess"))
+ clear_session(resp);
+
/* setup domain attribute. We want to send this attribute wherever
* possible so that the client won't send the Authorization header
* unneccessarily (it's usually > 200 bytes!).
@@ -1332,28 +1367,29 @@ static const char *get_hash(request_rec *r, const char *user,
static int check_nc(const request_rec *r, const digest_header_rec *resp,
const digest_config_rec *conf)
{
- if (conf->check_nc && client_mm) {
- unsigned long nc;
+ unsigned long nc;
+ const char *snc = resp->nonce_count;
+ char *endptr;
- const char *snc = resp->nonce_count;
- char *endptr;
+ if (!conf->check_nc || !client_mm)
+ return OK;
- nc = strtol(snc, &endptr, 16);
- if (endptr < (snc+strlen(snc)) && !ap_isspace(*endptr)) {
- ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
- "Digest: invalid nc %s received - not a number", snc);
- return !OK;
- }
+ nc = strtol(snc, &endptr, 16);
+ if (endptr < (snc+strlen(snc)) && !ap_isspace(*endptr)) {
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
+ "Digest: invalid nc %s received - not a number", snc);
+ return !OK;
+ }
- if (!resp->client)
- return !OK;
+ if (!resp->client)
+ return !OK;
- if (nc != resp->client->nonce_count) {
- ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_DEBUG, r,
- "nonce-count check failed: %lu != %lu", nc,
- resp->client->nonce_count);
- return !OK;
- }
+ if (nc != resp->client->nonce_count) {
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
+ "Digest: Warning, possible replay attack: nonce-count "
+ "check failed: %lu != %lu", nc,
+ resp->client->nonce_count);
+ return !OK;
}
return OK;
@@ -1423,12 +1459,12 @@ static int check_nonce(request_rec *r, digest_header_rec *resp,
/* The actual MD5 code... whee */
+/* RFC-2069 */
static const char *old_digest(const request_rec *r,
const digest_header_rec *resp, const char *ha1)
{
const char *ha2;
- /* rfc-2069 */
ha2 = ap_md5(r->pool, (unsigned char *)ap_pstrcat(r->pool, r->method, ":",
resp->uri, NULL));
return ap_md5(r->pool,
@@ -1436,15 +1472,18 @@ static const char *old_digest(const request_rec *r,
":", ha2, NULL));
}
+/* RFC-2617 */
static const char *new_digest(const request_rec *r,
digest_header_rec *resp,
const digest_config_rec *conf)
{
const char *ha1, *ha2, *a2;
- /* draft-ietf-http-authentication-03 */
- if (resp->algorithm && !strcasecmp(resp->algorithm, "MD5-sess"))
- ha1 = get_session(r, resp, conf);
+ if (resp->algorithm && !strcasecmp(resp->algorithm, "MD5-sess")) {
+ ha1 = get_session_HA1(r, resp, conf, 1);
+ if (!ha1)
+ return NULL;
+ }
else
ha1 = conf->ha1;
@@ -1465,7 +1504,8 @@ static const char *new_digest(const request_rec *r,
static void copy_uri_components(uri_components *dst, uri_components *src,
- request_rec *r) {
+ request_rec *r)
+{
if (src->scheme && src->scheme[0] != '\0')
dst->scheme = src->scheme;
else
@@ -1487,11 +1527,40 @@ static void copy_uri_components(uri_components *dst, uri_components *src,
dst->path = ap_pstrdup(r->pool, src->path);
ap_unescape_url(dst->path);
}
+ else
+ dst->path = src->path;
if (src->query && src->query[0] != '\0') {
dst->query = ap_pstrdup(r->pool, src->query);
ap_unescape_url(dst->query);
}
+ else
+ dst->query = src->query;
+}
+
+/* This handles non-FQDN's. If h1 is empty, the comparison succeeds. Else
+ * if h1 is a FQDN (i.e. contains a '.') then normal strcasecmp() is done.
+ * Else only the first part of h2 (up to the first '.') is compared.
+ */
+static int compare_hostnames(const char *h1, const char *h2)
+{
+ const char *dot;
+
+ /* if no hostname given, then ok */
+ if (!h1 || h1[0] == '\0')
+ return 1;
+
+ /* handle FQDN's in h1 */
+ dot = strchr(h1, '.');
+ if (dot != NULL)
+ return !strcasecmp(h1, h2);
+
+ /* handle non-FQDN's in h1 */
+ dot = strchr(h2, '.');
+ if (dot == NULL)
+ return !strcasecmp(h1, h2);
+ else
+ return (strlen(h1) == (size_t) (dot - h2)) && !strncasecmp(h1, h2, dot-h2);
}
/* These functions return 0 if client is OK, and proper error status
@@ -1600,8 +1669,7 @@ static int authenticate_digest_user(request_rec *r)
}
else if (
/* check hostname matches, if present */
- (d_uri.hostname && d_uri.hostname[0] != '\0'
- && strcasecmp(d_uri.hostname, r_uri.hostname))
+ !compare_hostnames(d_uri.hostname, r_uri.hostname)
/* check port matches, if present */
|| (d_uri.port_str && d_uri.port != r_uri.port)
/* check that server-port is default port if no port present */
@@ -1675,6 +1743,7 @@ static int authenticate_digest_user(request_rec *r)
}
}
else {
+ const char *exp_digest;
int match = 0, idx;
for (idx=0; conf->qop_list[idx] != NULL; idx++) {
if (!strcasecmp(conf->qop_list[idx], resp->message_qop)) {
@@ -1693,7 +1762,17 @@ static int authenticate_digest_user(request_rec *r)
return AUTH_REQUIRED;
}
- if (strcmp(resp->digest, new_digest(r, resp, conf))) {
+ if (check_nc(r, resp, conf) != OK) {
+ note_digest_auth_failure(r, conf, resp, 0);
+ return AUTH_REQUIRED;
+ }
+
+ exp_digest = new_digest(r, resp, conf);
+ if (!exp_digest) {
+ /* we failed to allocate a client struct */
+ return SERVER_ERROR;
+ }
+ if (strcmp(resp->digest, exp_digest)) {
ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
"Digest: user %s: password mismatch: %s", conn->user,
r->uri);
@@ -1702,11 +1781,6 @@ static int authenticate_digest_user(request_rec *r)
}
}
- if (check_nc(r, resp, conf) != OK) {
- note_digest_auth_failure(r, conf, resp, 0);
- return AUTH_REQUIRED;
- }
-
/* Note: this check is done last so that a "stale=true" can be
generated if the nonce is old */
if ((res = check_nonce(r, resp, conf)))
@@ -1945,8 +2019,15 @@ static int add_auth_info(request_rec *r)
/* calculate rspauth attribute
*/
- if (resp->algorithm && !strcasecmp(resp->algorithm, "MD5-sess"))
- ha1 = get_session(r, resp, conf);
+ if (resp->algorithm && !strcasecmp(resp->algorithm, "MD5-sess")) {
+ ha1 = get_session_HA1(r, resp, conf, 0);
+ if (!ha1) {
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
+ "Digest: internal error: couldn't find session "
+ "info for user %s", resp->username);
+ return !OK;
+ }
+ }
else
ha1 = conf->ha1;
diff --git a/usr.sbin/httpd/src/modules/experimental/mod_mmap_static.c b/usr.sbin/httpd/src/modules/experimental/mod_mmap_static.c
index 127fee81254..8091205e526 100644
--- a/usr.sbin/httpd/src/modules/experimental/mod_mmap_static.c
+++ b/usr.sbin/httpd/src/modules/experimental/mod_mmap_static.c
@@ -347,6 +347,10 @@ static int mmap_static_handler(request_rec *r)
return errstatus;
}
+#ifdef CHARSET_EBCDIC
+ /* check Content Type to see if ebcdic conversion is appropriate */
+ ap_checkconv(r);
+#endif
rangestatus = ap_set_byterange(r);
ap_send_http_header(r);
diff --git a/usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.dsp b/usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.dsp
index 6ee5cf30ddd..cf0ab0cdbb1 100644
--- a/usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.dsp
+++ b/usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleProxy" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleProxy - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleProxy.mak"\
- CFG="ApacheModuleProxy - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleProxy.mak" CFG="ApacheModuleProxy - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleProxy - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleProxy - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleProxy - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleProxy - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,13 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\Release"
-# PROP Intermediate_Dir ".\Release"
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /FD /c
+# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -55,7 +54,8 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib ws2_32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"../../os/win32/BaseAddr.ref",mod_proxy
+# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "ApacheModuleProxy - Win32 Debug"
@@ -66,12 +66,13 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\Debug"
-# PROP Intermediate_Dir ".\Debug"
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /FD /c
+# SUBTRACT CPP /YX
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -81,7 +82,8 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD LINK32 kernel32.lib ws2_32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"../../os/win32/BaseAddr.ref",mod_proxy
+# SUBTRACT LINK32 /pdb:none
!ENDIF
@@ -125,9 +127,5 @@ SOURCE=.\proxy_util.c
SOURCE=.\mod_proxy.h
# End Source File
# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.mak b/usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.mak
index b7074715e8d..d41a8bf5c09 100644
--- a/usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.mak
+++ b/usr.sbin/httpd/src/modules/proxy/ApacheModuleProxy.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release"
OUTDIR=.\Release
INTDIR=.\Release
# Begin Custom Macros
-OutDir=.\.\Release
+OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,11 +44,15 @@ ALL : "$(OUTDIR)\ApacheModuleProxy.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleProxy.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleProxy.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_proxy.obj"
-@erase "$(INTDIR)\proxy_cache.obj"
-@erase "$(INTDIR)\proxy_connect.obj"
@@ -63,34 +63,70 @@ CLEAN :
-@erase "$(OUTDIR)\ApacheModuleProxy.dll"
-@erase "$(OUTDIR)\ApacheModuleProxy.exp"
-@erase "$(OUTDIR)\ApacheModuleProxy.lib"
+ -@erase "$(OUTDIR)\ApacheModuleProxy.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN"\
- /Fp"$(INTDIR)\ApacheModuleProxy.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD\
- /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Release/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleProxy.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo\
- /subsystem:windows /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleProxy.pdb"\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleProxy.dll"\
- /implib:"$(OUTDIR)\ApacheModuleProxy.lib"
+LINK32_FLAGS=kernel32.lib ws2_32.lib /nologo /subsystem:windows /dll\
+ /incremental:no /pdb:"$(OUTDIR)\ApacheModuleProxy.pdb"\
+ /map:"$(INTDIR)\ApacheModuleProxy.map" /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleProxy.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleProxy.lib"\
+ /base:@"../../os/win32/BaseAddr.ref",mod_proxy
LINK32_OBJS= \
"$(INTDIR)\mod_proxy.obj" \
"$(INTDIR)\proxy_cache.obj" \
"$(INTDIR)\proxy_connect.obj" \
"$(INTDIR)\proxy_ftp.obj" \
"$(INTDIR)\proxy_http.obj" \
- "$(INTDIR)\proxy_util.obj"
+ "$(INTDIR)\proxy_util.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleProxy.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -102,7 +138,7 @@ LINK32_OBJS= \
OUTDIR=.\Debug
INTDIR=.\Debug
# Begin Custom Macros
-OutDir=.\.\Debug
+OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -111,11 +147,15 @@ ALL : "$(OUTDIR)\ApacheModuleProxy.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleProxy.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleProxy.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_proxy.obj"
-@erase "$(INTDIR)\proxy_cache.obj"
-@erase "$(INTDIR)\proxy_connect.obj"
@@ -126,44 +166,19 @@ CLEAN :
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleProxy.dll"
-@erase "$(OUTDIR)\ApacheModuleProxy.exp"
- -@erase "$(OUTDIR)\ApacheModuleProxy.ilk"
-@erase "$(OUTDIR)\ApacheModuleProxy.lib"
+ -@erase "$(OUTDIR)\ApacheModuleProxy.map"
-@erase "$(OUTDIR)\ApacheModuleProxy.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN"\
- /Fp"$(INTDIR)\ApacheModuleProxy.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD\
- /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /D\
+ "WIN32_LEAN_AND_MEAN" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Debug/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleProxy.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo\
- /subsystem:windows /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleProxy.pdb"\
- /debug /machine:I386 /out:"$(OUTDIR)\ApacheModuleProxy.dll"\
- /implib:"$(OUTDIR)\ApacheModuleProxy.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_proxy.obj" \
- "$(INTDIR)\proxy_cache.obj" \
- "$(INTDIR)\proxy_connect.obj" \
- "$(INTDIR)\proxy_ftp.obj" \
- "$(INTDIR)\proxy_http.obj" \
- "$(INTDIR)\proxy_util.obj"
-
-"$(OUTDIR)\ApacheModuleProxy.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -195,42 +210,43 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
-
-!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release" || "$(CFG)" ==\
- "ApacheModuleProxy - Win32 Debug"
-SOURCE=.\mod_proxy.c
-
-!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release"
-
-DEP_CPP_MOD_P=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_config.h"\
- "..\..\include\ap_ctype.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\explain.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\http_request.h"\
- "..\..\include\http_vhost.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- "..\..\os\win32\os.h"\
- "..\..\os\win32\readdir.h"\
- ".\mod_proxy.h"\
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleProxy.bsc"
+BSC32_SBRS= \
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib ws2_32.lib /nologo /subsystem:windows /dll\
+ /incremental:no /pdb:"$(OUTDIR)\ApacheModuleProxy.pdb"\
+ /map:"$(INTDIR)\ApacheModuleProxy.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleProxy.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleProxy.lib"\
+ /base:@"../../os/win32/BaseAddr.ref",mod_proxy
+LINK32_OBJS= \
+ "$(INTDIR)\mod_proxy.obj" \
+ "$(INTDIR)\proxy_cache.obj" \
+ "$(INTDIR)\proxy_connect.obj" \
+ "$(INTDIR)\proxy_ftp.obj" \
+ "$(INTDIR)\proxy_http.obj" \
+ "$(INTDIR)\proxy_util.obj" \
+ "..\..\CoreD\ApacheCore.lib"
-"$(INTDIR)\mod_proxy.obj" : $(SOURCE) $(DEP_CPP_MOD_P) "$(INTDIR)"
+"$(OUTDIR)\ApacheModuleProxy.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+!ENDIF
-!ELSEIF "$(CFG)" == "ApacheModuleProxy - Win32 Debug"
+!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release" || "$(CFG)" ==\
+ "ApacheModuleProxy - Win32 Debug"
+SOURCE=.\mod_proxy.c
DEP_CPP_MOD_P=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
@@ -248,19 +264,19 @@ DEP_CPP_MOD_P=\
"..\..\os\win32\readdir.h"\
".\mod_proxy.h"\
+NODEP_CPP_MOD_P=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_proxy.obj" : $(SOURCE) $(DEP_CPP_MOD_P) "$(INTDIR)"
-!ENDIF
-
SOURCE=.\proxy_cache.c
-
-!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release"
-
DEP_CPP_PROXY=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
"..\..\include\ap_md5.h"\
@@ -281,48 +297,19 @@ DEP_CPP_PROXY=\
"..\..\os\win32\readdir.h"\
".\mod_proxy.h"\
-
-"$(INTDIR)\proxy_cache.obj" : $(SOURCE) $(DEP_CPP_PROXY) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "ApacheModuleProxy - Win32 Debug"
-
-DEP_CPP_PROXY=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_config.h"\
- "..\..\include\ap_ctype.h"\
- "..\..\include\ap_md5.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\explain.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_conf_globals.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_main.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\httpd.h"\
- "..\..\include\multithread.h"\
- "..\..\include\util_date.h"\
- "..\..\include\util_uri.h"\
- "..\..\os\win32\os.h"\
- "..\..\os\win32\readdir.h"\
- ".\mod_proxy.h"\
+NODEP_CPP_PROXY=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
"$(INTDIR)\proxy_cache.obj" : $(SOURCE) $(DEP_CPP_PROXY) "$(INTDIR)"
-!ENDIF
-
SOURCE=.\proxy_connect.c
-
-!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release"
-
DEP_CPP_PROXY_=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
@@ -339,44 +326,19 @@ DEP_CPP_PROXY_=\
"..\..\os\win32\readdir.h"\
".\mod_proxy.h"\
-
-"$(INTDIR)\proxy_connect.obj" : $(SOURCE) $(DEP_CPP_PROXY_) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "ApacheModuleProxy - Win32 Debug"
-
-DEP_CPP_PROXY_=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_config.h"\
- "..\..\include\ap_ctype.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\explain.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_main.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- "..\..\os\win32\os.h"\
- "..\..\os\win32\readdir.h"\
- ".\mod_proxy.h"\
+NODEP_CPP_PROXY_=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
"$(INTDIR)\proxy_connect.obj" : $(SOURCE) $(DEP_CPP_PROXY_) "$(INTDIR)"
-!ENDIF
-
SOURCE=.\proxy_ftp.c
-
-!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release"
-
DEP_CPP_PROXY_F=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
@@ -394,45 +356,19 @@ DEP_CPP_PROXY_F=\
"..\..\os\win32\readdir.h"\
".\mod_proxy.h"\
-
-"$(INTDIR)\proxy_ftp.obj" : $(SOURCE) $(DEP_CPP_PROXY_F) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "ApacheModuleProxy - Win32 Debug"
-
-DEP_CPP_PROXY_F=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_config.h"\
- "..\..\include\ap_ctype.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\explain.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_core.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_main.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- "..\..\os\win32\os.h"\
- "..\..\os\win32\readdir.h"\
- ".\mod_proxy.h"\
+NODEP_CPP_PROXY_F=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
"$(INTDIR)\proxy_ftp.obj" : $(SOURCE) $(DEP_CPP_PROXY_F) "$(INTDIR)"
-!ENDIF
-
SOURCE=.\proxy_http.c
-
-!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release"
-
DEP_CPP_PROXY_H=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
@@ -451,46 +387,19 @@ DEP_CPP_PROXY_H=\
"..\..\os\win32\readdir.h"\
".\mod_proxy.h"\
-
-"$(INTDIR)\proxy_http.obj" : $(SOURCE) $(DEP_CPP_PROXY_H) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "ApacheModuleProxy - Win32 Debug"
-
-DEP_CPP_PROXY_H=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_config.h"\
- "..\..\include\ap_ctype.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\explain.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_core.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_main.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_date.h"\
- "..\..\include\util_uri.h"\
- "..\..\os\win32\os.h"\
- "..\..\os\win32\readdir.h"\
- ".\mod_proxy.h"\
+NODEP_CPP_PROXY_H=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
"$(INTDIR)\proxy_http.obj" : $(SOURCE) $(DEP_CPP_PROXY_H) "$(INTDIR)"
-!ENDIF
-
SOURCE=.\proxy_util.c
-
-!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release"
-
DEP_CPP_PROXY_U=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
"..\..\include\ap_md5.h"\
@@ -510,37 +419,41 @@ DEP_CPP_PROXY_U=\
"..\..\os\win32\readdir.h"\
".\mod_proxy.h"\
+NODEP_CPP_PROXY_U=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\proxy_util.obj" : $(SOURCE) $(DEP_CPP_PROXY_U) "$(INTDIR)"
-!ELSEIF "$(CFG)" == "ApacheModuleProxy - Win32 Debug"
+!IF "$(CFG)" == "ApacheModuleProxy - Win32 Release"
-DEP_CPP_PROXY_U=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_config.h"\
- "..\..\include\ap_ctype.h"\
- "..\..\include\ap_md5.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\explain.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_main.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\httpd.h"\
- "..\..\include\multithread.h"\
- "..\..\include\util_date.h"\
- "..\..\include\util_uri.h"\
- "..\..\os\win32\os.h"\
- "..\..\os\win32\readdir.h"\
- ".\mod_proxy.h"\
-
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\modules\proxy"
-"$(INTDIR)\proxy_util.obj" : $(SOURCE) $(DEP_CPP_PROXY_U) "$(INTDIR)"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\modules\proxy"
+
+!ELSEIF "$(CFG)" == "ApacheModuleProxy - Win32 Debug"
+
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\modules\proxy"
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\modules\proxy"
!ENDIF
diff --git a/usr.sbin/httpd/src/modules/proxy/Makefile.tmpl b/usr.sbin/httpd/src/modules/proxy/Makefile.tmpl
index 906de39cf8a..07dfb7eedf6 100644
--- a/usr.sbin/httpd/src/modules/proxy/Makefile.tmpl
+++ b/usr.sbin/httpd/src/modules/proxy/Makefile.tmpl
@@ -61,7 +61,7 @@ mod_proxy.o: mod_proxy.c mod_proxy.h $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_protocol.h $(INCDIR)/explain.h \
$(INCDIR)/http_log.h $(INCDIR)/http_vhost.h \
@@ -70,7 +70,7 @@ proxy_cache.o: proxy_cache.c mod_proxy.h $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_protocol.h $(INCDIR)/explain.h \
$(INCDIR)/http_log.h $(INCDIR)/http_main.h \
@@ -80,7 +80,7 @@ proxy_connect.o: proxy_connect.c mod_proxy.h $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_protocol.h $(INCDIR)/explain.h \
$(INCDIR)/http_log.h $(INCDIR)/http_main.h
@@ -88,7 +88,7 @@ proxy_ftp.o: proxy_ftp.c mod_proxy.h $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_protocol.h $(INCDIR)/explain.h \
$(INCDIR)/http_main.h $(INCDIR)/http_log.h
@@ -96,7 +96,7 @@ proxy_http.o: proxy_http.c mod_proxy.h $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_protocol.h $(INCDIR)/explain.h \
$(INCDIR)/http_log.h $(INCDIR)/http_main.h \
@@ -105,7 +105,7 @@ proxy_util.o: proxy_util.c mod_proxy.h $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_protocol.h $(INCDIR)/explain.h \
$(INCDIR)/http_main.h $(INCDIR)/ap_md5.h \
diff --git a/usr.sbin/httpd/src/modules/proxy/mod_proxy.c b/usr.sbin/httpd/src/modules/proxy/mod_proxy.c
index ea2b0da71bd..84dfc6f8aab 100644
--- a/usr.sbin/httpd/src/modules/proxy/mod_proxy.c
+++ b/usr.sbin/httpd/src/modules/proxy/mod_proxy.c
@@ -347,7 +347,7 @@ static int proxy_handler(request_rec *r)
if (r->method_number == M_TRACE &&
(maxfwd_str = ap_table_get(r->headers_in, "Max-Forwards")) != NULL) {
- int maxfwd = strtol(maxfwd_str, NULL, 10);
+ long maxfwd = strtol(maxfwd_str, NULL, 10);
if (maxfwd < 1) {
int access_status;
r->proxyreq = NOT_PROXY;
@@ -358,7 +358,7 @@ static int proxy_handler(request_rec *r)
return OK;
}
ap_table_setn(r->headers_in, "Max-Forwards",
- ap_psprintf(r->pool, "%d", (maxfwd > 0) ? maxfwd-1 : 0));
+ ap_psprintf(r->pool, "%ld", (maxfwd > 0) ? maxfwd-1 : 0));
}
if ((rc = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR)))
@@ -1028,9 +1028,3 @@ module MODULE_VAR_EXPORT proxy_module =
};
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/proxy/mod_proxy.h b/usr.sbin/httpd/src/modules/proxy/mod_proxy.h
index 9edd6e6eaac..ebd17f0ae0e 100644
--- a/usr.sbin/httpd/src/modules/proxy/mod_proxy.h
+++ b/usr.sbin/httpd/src/modules/proxy/mod_proxy.h
@@ -260,6 +260,11 @@ struct tbl_do_args {
cache_req *cache;
};
+struct per_thread_data {
+ struct hostent hpbuf;
+ u_long ipaddr;
+ char *charpbuf[2];
+};
/* Function prototypes */
/* proxy_cache.c */
diff --git a/usr.sbin/httpd/src/modules/proxy/proxy_cache.c b/usr.sbin/httpd/src/modules/proxy/proxy_cache.c
index 00854cb8f21..817f1a611d6 100644
--- a/usr.sbin/httpd/src/modules/proxy/proxy_cache.c
+++ b/usr.sbin/httpd/src/modules/proxy/proxy_cache.c
@@ -195,8 +195,8 @@ cmp_long61 (long61_t *left, long61_t *right)
/* Compare two gc_ent's, sort them by expiration date */
static int gcdiff(const void *ap, const void *bp)
{
- const struct gc_ent *a = (const struct gc_ent * const) ap;
- const struct gc_ent *b = (const struct gc_ent * const) bp;
+ const struct gc_ent *a = (const struct gc_ent *) ap;
+ const struct gc_ent *b = (const struct gc_ent *) bp;
if (a->expire > b->expire)
return 1;
@@ -385,7 +385,7 @@ static void help_proxy_garbage_coll(request_rec *r)
for (i = 0; i < files->nelts; i++) {
fent = &((struct gc_ent *) files->elts)[i];
sprintf(filename, "%s%s", cachedir, fent->file);
- Explain3("GC Unlinking %s (expiry %ld, garbage_now %ld)", filename, fent->expire, garbage_now);
+ Explain3("GC Unlinking %s (expiry %ld, garbage_now %ld)", filename, (long)fent->expire, (long)garbage_now);
#if TESTING
fprintf(stderr, "Would unlink %s\n", filename);
#else
@@ -499,7 +499,19 @@ static int sub_garbage_coll(request_rec *r, array_header *files,
#endif
/* read the file */
- fd = open(filename, O_RDONLY | O_BINARY);
+#if defined(WIN32)
+ /* On WIN32 open does not work for directories,
+ * so we us stat instead of fstat to determine
+ * if the file is a directory
+ */
+ if (stat(filename, &buf) == -1) {
+ ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
+ "proxy gc: stat(%s)", filename);
+ continue;
+ }
+ fd = -1;
+#else
+ fd = open(filename, O_RDONLY | O_BINARY);
if (fd == -1) {
if (errno != ENOENT)
ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
@@ -512,12 +524,16 @@ static int sub_garbage_coll(request_rec *r, array_header *files,
close(fd);
continue;
}
+#endif
/* In OS/2 and TPF this has already been done above */
#if !defined(OS2) && !defined(TPF)
if (S_ISDIR(buf.st_mode)) {
char newcachedir[HUGE_STRING_LEN];
- close(fd);
+#if !defined(WIN32)
+ /* Win32 used stat, no file to close */
+ close(fd);
+#endif
ap_snprintf(newcachedir, sizeof(newcachedir),
"%s%s/", cachesubdir, ent->d_name);
if (!sub_garbage_coll(r, files, cachebasedir, newcachedir)) {
@@ -537,6 +553,19 @@ static int sub_garbage_coll(request_rec *r, array_header *files,
}
#endif
+#if defined(WIN32)
+ /* Since we have determined above that the file is not a directory,
+ * it should be safe to open it now
+ */
+ fd = open(filename, O_RDONLY | O_BINARY);
+ if (fd == -1) {
+ if (errno != ENOENT)
+ ap_log_error(APLOG_MARK, APLOG_ERR, r->server,
+ "proxy gc: open(%s) = %d", filename, errno);
+ continue;
+ }
+#endif
+
i = read(fd, line, 26);
close(fd);
if (i == -1) {
@@ -710,7 +739,7 @@ int ap_proxy_cache_check(request_rec *r, char *url, struct cache_conf *conf,
pragma = ap_table_get(r->headers_in, "Pragma");
auth = ap_table_get(r->headers_in, "Authorization");
Explain5("Request for %s, pragma=%s, auth=%s, ims=%ld, imstr=%s", url,
- pragma, auth, c->ims, imstr);
+ pragma, auth, (long)c->ims, imstr);
if (c->filename != NULL && r->method_number == M_GET &&
strlen(url) < 1024 && !ap_proxy_liststr(pragma, "no-cache") &&
auth == NULL) {
@@ -947,7 +976,7 @@ int ap_proxy_cache_update(cache_req *c, table *resp_hdrs,
* else
* expire date = now + defaultexpire
*/
- Explain1("Expiry date is %ld", expc);
+ Explain1("Expiry date is %ld", (long)expc);
if (expc == BAD_DATE) {
if (lmod != BAD_DATE) {
double x = (double) (date - lmod) * conf->cache.lmfactor;
@@ -958,7 +987,7 @@ int ap_proxy_cache_update(cache_req *c, table *resp_hdrs,
}
else
expc = now + conf->cache.defaultexpire;
- Explain1("Expiry date calculated %ld", expc);
+ Explain1("Expiry date calculated %ld", (long)expc);
}
/* get the content-length header */
@@ -1042,7 +1071,7 @@ int ap_proxy_cache_update(cache_req *c, table *resp_hdrs,
buff[35] = ' ';
/* open temporary file */
-#ifndef TPF
+#if !defined(TPF) && !defined(NETWARE)
#define TMPFILESTR "/tmpXXXXXX"
if (conf->cache.root == NULL)
return DECLINED;
@@ -1177,7 +1206,7 @@ void ap_proxy_cache_tidy(cache_req *c)
*p = '/';
++p;
}
-#if defined(OS2) || defined(WIN32) || defined(NETWARE)
+#if defined(OS2) || defined(WIN32) || defined(NETWARE) || defined(MPE)
/* Under OS/2 use rename. */
if (rename(c->tempfile, c->filename) == -1)
ap_log_error(APLOG_MARK, APLOG_ERR, s,
diff --git a/usr.sbin/httpd/src/modules/proxy/proxy_connect.c b/usr.sbin/httpd/src/modules/proxy/proxy_connect.c
index 5fe8000c855..ccc5a014978 100644
--- a/usr.sbin/httpd/src/modules/proxy/proxy_connect.c
+++ b/usr.sbin/httpd/src/modules/proxy/proxy_connect.c
@@ -226,10 +226,10 @@ int ap_proxy_connect_handler(request_rec *r, cache_req *c, char *url,
Explain0("Sending the CONNECT request to the remote proxy");
ap_snprintf(buffer, sizeof(buffer), "CONNECT %s HTTP/1.0" CRLF,
r->uri);
- write(sock, buffer, strlen(buffer));
+ send(sock, buffer, strlen(buffer),0);
ap_snprintf(buffer, sizeof(buffer),
"Proxy-agent: %s" CRLF CRLF, ap_get_server_version());
- write(sock, buffer, strlen(buffer));
+ send(sock, buffer, strlen(buffer),0);
}
else {
Explain0("Returning 200 OK Status");
@@ -252,10 +252,10 @@ int ap_proxy_connect_handler(request_rec *r, cache_req *c, char *url,
if (i) {
if (FD_ISSET(sock, &fds)) {
Explain0("sock was set");
- if ((nbytes = read(sock, buffer, HUGE_STRING_LEN)) != 0) {
+ if ((nbytes = recv(sock, buffer, HUGE_STRING_LEN,0)) != 0) {
if (nbytes == -1)
break;
- if (write(ap_bfileno(r->connection->client, B_WR), buffer, nbytes) == EOF)
+ if (send(ap_bfileno(r->connection->client, B_WR), buffer, nbytes,0) == EOF)
break;
Explain1("Wrote %d bytes to client", nbytes);
}
@@ -264,11 +264,11 @@ int ap_proxy_connect_handler(request_rec *r, cache_req *c, char *url,
}
else if (FD_ISSET(ap_bfileno(r->connection->client, B_WR), &fds)) {
Explain0("client->fd was set");
- if ((nbytes = read(ap_bfileno(r->connection->client, B_WR), buffer,
- HUGE_STRING_LEN)) != 0) {
+ if ((nbytes = recv(ap_bfileno(r->connection->client, B_WR), buffer,
+ HUGE_STRING_LEN, 0)) != 0) {
if (nbytes == -1)
break;
- if (write(sock, buffer, nbytes) == EOF)
+ if (send(sock, buffer, nbytes, 0) == EOF)
break;
Explain1("Wrote %d bytes to server", nbytes);
}
diff --git a/usr.sbin/httpd/src/modules/proxy/proxy_ftp.c b/usr.sbin/httpd/src/modules/proxy/proxy_ftp.c
index 9c57a704e8c..142b57c69b1 100644
--- a/usr.sbin/httpd/src/modules/proxy/proxy_ftp.c
+++ b/usr.sbin/httpd/src/modules/proxy/proxy_ftp.c
@@ -561,7 +561,7 @@ int ap_proxy_ftp_handler(request_rec *r, cache_req *c, char *url)
return HTTP_INTERNAL_SERVER_ERROR;
}
-#ifndef TPF
+#if !defined(TPF) && !defined(BEOS)
if (conf->recv_buffer_size > 0
&& setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
(const char *) &conf->recv_buffer_size, sizeof(int))
@@ -815,7 +815,7 @@ int ap_proxy_ftp_handler(request_rec *r, cache_req *c, char *url)
return HTTP_INTERNAL_SERVER_ERROR;
}
-#ifndef TPF
+#if !defined (TPF) && !defined(BEOS)
if (conf->recv_buffer_size) {
if (setsockopt(dsock, SOL_SOCKET, SO_RCVBUF,
(const char *) &conf->recv_buffer_size, sizeof(int)) == -1) {
diff --git a/usr.sbin/httpd/src/modules/proxy/proxy_http.c b/usr.sbin/httpd/src/modules/proxy/proxy_http.c
index b08dca9b518..e50ff24f0c4 100644
--- a/usr.sbin/httpd/src/modules/proxy/proxy_http.c
+++ b/usr.sbin/httpd/src/modules/proxy/proxy_http.c
@@ -273,7 +273,7 @@ int ap_proxy_http_handler(request_rec *r, cache_req *c, char *url,
return HTTP_INTERNAL_SERVER_ERROR;
}
-#ifndef TPF
+#if !defined(TPF) && !defined(BEOS)
if (conf->recv_buffer_size) {
if (setsockopt(sock, SOL_SOCKET, SO_RCVBUF,
(const char *) &conf->recv_buffer_size, sizeof(int))
diff --git a/usr.sbin/httpd/src/modules/proxy/proxy_util.c b/usr.sbin/httpd/src/modules/proxy/proxy_util.c
index d1d47208070..8047d9fb8fe 100644
--- a/usr.sbin/httpd/src/modules/proxy/proxy_util.c
+++ b/usr.sbin/httpd/src/modules/proxy/proxy_util.c
@@ -68,7 +68,7 @@ static int proxy_match_ipaddr(struct dirconn_entry *This, request_rec *r);
static int proxy_match_domainname(struct dirconn_entry *This, request_rec *r);
static int proxy_match_hostname(struct dirconn_entry *This, request_rec *r);
static int proxy_match_word(struct dirconn_entry *This, request_rec *r);
-
+static struct per_thread_data *get_per_thread_data(void);
/* already called in the knowledge that the characters are hex digits */
int ap_proxy_hex2c(const char *x)
{
@@ -239,12 +239,12 @@ char *
strp = strchr(user, ':');
if (strp != NULL) {
*strp = '\0';
- password = ap_proxy_canonenc(p, strp + 1, strlen(strp + 1), enc_user, 1);
+ password = ap_proxy_canonenc(p, strp + 1, strlen(strp + 1), enc_user, STD_PROXY);
if (password == NULL)
return "Bad %-escape in URL (password)";
}
- user = ap_proxy_canonenc(p, user, strlen(user), enc_user, 1);
+ user = ap_proxy_canonenc(p, user, strlen(user), enc_user, STD_PROXY);
if (user == NULL)
return "Bad %-escape in URL (username)";
}
@@ -280,7 +280,7 @@ char *
if (!ap_isdigit(host[i]) && host[i] != '.')
break;
/* must be an IP address */
-#if defined(WIN32) || defined(NETWARE) || defined(TPF)
+#if defined(WIN32) || defined(NETWARE) || defined(TPF) || defined(BEOS)
if (host[i] == '\0' && (inet_addr(host) == -1))
#else
if (host[i] == '\0' && (ap_inet_addr(host) == -1 || inet_network(host) == -1))
@@ -517,7 +517,7 @@ long int ap_proxy_send_fb(BUFF *f, request_rec *r, cache_req *c)
ap_kill_timeout(r);
-#if defined(WIN32) || defined(TPF)
+#if defined(WIN32) || defined(TPF) || defined(NETWARE)
/* works fine under win32, so leave it */
ap_hard_timeout("proxy send body", r);
alternate_timeouts = 0;
@@ -740,7 +740,7 @@ void ap_proxy_hash(const char *it, char *val, int ndepth, int nlength)
char tmp[22];
int i, k, d;
unsigned int x;
-#if defined(AIX) && defined(__ps2__)
+#if defined(MPE) || (defined(AIX) && defined(__ps2__))
/* Believe it or not, AIX 1.x does not allow you to name a file '@',
* so hack around it in the encoding. */
static const char enc_table[64] =
@@ -867,9 +867,7 @@ const char *
{
int i;
struct hostent *hp;
- static APACHE_TLS struct hostent hpbuf;
- static APACHE_TLS u_long ipaddr;
- static APACHE_TLS char *charpbuf[2];
+ struct per_thread_data *ptd = get_per_thread_data();
for (i = 0; host[i] != '\0'; i++)
if (!ap_isdigit(host[i]) && host[i] != '.')
@@ -881,17 +879,17 @@ const char *
return "Host not found";
}
else {
- ipaddr = ap_inet_addr(host);
- hp = gethostbyaddr((char *) &ipaddr, sizeof(u_long), AF_INET);
+ ptd->ipaddr = ap_inet_addr(host);
+ hp = gethostbyaddr((char *) &ptd->ipaddr, sizeof(ptd->ipaddr), AF_INET);
if (hp == NULL) {
- memset(&hpbuf, 0, sizeof(hpbuf));
- hpbuf.h_name = 0;
- hpbuf.h_addrtype = AF_INET;
- hpbuf.h_length = sizeof(u_long);
- hpbuf.h_addr_list = charpbuf;
- hpbuf.h_addr_list[0] = (char *) &ipaddr;
- hpbuf.h_addr_list[1] = 0;
- hp = &hpbuf;
+ memset(&ptd->hpbuf, 0, sizeof(ptd->hpbuf));
+ ptd->hpbuf.h_name = 0;
+ ptd->hpbuf.h_addrtype = AF_INET;
+ ptd->hpbuf.h_length = sizeof(ptd->ipaddr);
+ ptd->hpbuf.h_addr_list = ptd->charpbuf;
+ ptd->hpbuf.h_addr_list[0] = (char *) &ptd->ipaddr;
+ ptd->hpbuf.h_addr_list[1] = 0;
+ hp = &ptd->hpbuf;
}
}
*reqhp = *hp;
@@ -1290,3 +1288,44 @@ unsigned ap_proxy_bputs2(const char *data, BUFF *client, cache_req *cache)
return len;
}
+#if defined WIN32
+
+static DWORD tls_index;
+
+BOOL WINAPI DllMain (HINSTANCE dllhandle, DWORD reason, LPVOID reserved)
+{
+ LPVOID memptr;
+
+ switch (reason) {
+ case DLL_PROCESS_ATTACH:
+ tls_index = TlsAlloc();
+ case DLL_THREAD_ATTACH: /* intentional no break */
+ TlsSetValue (tls_index, malloc (sizeof (struct per_thread_data)));
+ break;
+ case DLL_THREAD_DETACH:
+ memptr = TlsGetValue (tls_index);
+ if (memptr) {
+ free (memptr);
+ TlsSetValue (tls_index, 0);
+ }
+ break;
+ }
+
+ return TRUE;
+}
+
+#endif
+
+static struct per_thread_data *get_per_thread_data(void)
+{
+#if defined(WIN32)
+
+ return (struct per_thread_data *) TlsGetValue (tls_index);
+
+#else
+
+ static APACHE_TLS struct per_thread_data sptd;
+ return &sptd;
+
+#endif
+}
diff --git a/usr.sbin/httpd/src/modules/ssl/Makefile.tmpl b/usr.sbin/httpd/src/modules/ssl/Makefile.tmpl
index a960a3e1c1a..03a1f0ff46b 100644
--- a/usr.sbin/httpd/src/modules/ssl/Makefile.tmpl
+++ b/usr.sbin/httpd/src/modules/ssl/Makefile.tmpl
@@ -79,9 +79,12 @@ OBJS=\
ssl_engine_log.o\
ssl_engine_mutex.o\
ssl_engine_pphrase.o\
- ssl_engine_scache.o\
ssl_engine_vars.o\
ssl_engine_ext.o\
+ ssl_scache.o\
+ ssl_scache_dbm.o\
+ ssl_scache_shmht.o\
+ ssl_scache_shmcb.o\
ssl_expr.o\
ssl_expr_scan.o\
ssl_expr_parse.o\
@@ -105,9 +108,12 @@ OBJS_PIC=\
ssl_engine_log.lo\
ssl_engine_mutex.lo\
ssl_engine_pphrase.lo\
- ssl_engine_scache.lo\
ssl_engine_vars.lo\
ssl_engine_ext.lo\
+ ssl_scache.lo\
+ ssl_scache_dbm.lo\
+ ssl_scache_shmht.lo\
+ ssl_scache_shmcb.lo\
ssl_expr.lo\
ssl_expr_scan.lo\
ssl_expr_parse.lo\
@@ -212,274 +218,312 @@ $(OBJS) $(OBJS_PIC): Makefile
mod_ssl.o mod_ssl.lo: mod_ssl.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_compat.o ssl_engine_compat.lo: ssl_engine_compat.c mod_ssl.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_config.o ssl_engine_config.lo: ssl_engine_config.c mod_ssl.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_dh.o ssl_engine_dh.lo: ssl_engine_dh.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_ds.o ssl_engine_ds.lo: ssl_engine_ds.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_ext.o ssl_engine_ext.lo: ssl_engine_ext.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_init.o ssl_engine_init.lo: ssl_engine_init.c mod_ssl.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_io.o ssl_engine_io.lo: ssl_engine_io.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_kernel.o ssl_engine_kernel.lo: ssl_engine_kernel.c mod_ssl.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_log.o ssl_engine_log.lo: ssl_engine_log.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_mutex.o ssl_engine_mutex.lo: ssl_engine_mutex.c mod_ssl.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_pphrase.o ssl_engine_pphrase.lo: ssl_engine_pphrase.c mod_ssl.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_engine_rand.o ssl_engine_rand.lo: ssl_engine_rand.c mod_ssl.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
-ssl_engine_scache.o ssl_engine_scache.lo: ssl_engine_scache.c mod_ssl.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
+ssl_engine_vars.o ssl_engine_vars.lo: ssl_engine_vars.c mod_ssl.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
-ssl_engine_vars.o ssl_engine_vars.lo: ssl_engine_vars.c mod_ssl.h \
- $(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
- $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
- $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
+ssl_expr.o ssl_expr.lo: ssl_expr.c mod_ssl.h $(INCDIR)/ap_config.h \
+ $(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
+ $(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
-ssl_expr.o ssl_expr.lo: ssl_expr.c mod_ssl.h $(INCDIR)/ap_config.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
+ssl_expr_eval.o ssl_expr_eval.lo: ssl_expr_eval.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
-ssl_expr_eval.o ssl_expr_eval.lo: ssl_expr_eval.c mod_ssl.h $(INCDIR)/ap_config.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
+ssl_expr_parse.o ssl_expr_parse.lo: ssl_expr_parse.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
-ssl_expr_parse.o ssl_expr_parse.lo: ssl_expr_parse.c mod_ssl.h $(INCDIR)/ap_config.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
+ssl_expr_scan.o ssl_expr_scan.lo: ssl_expr_scan.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
$(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
-ssl_expr_scan.o ssl_expr_scan.lo: ssl_expr_scan.c mod_ssl.h $(INCDIR)/ap_config.h \
+ ssl_expr_parse.h
+ssl_scache.o ssl_scache.lo: ssl_scache.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h ssl_expr_parse.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
+ssl_scache_dbm.o ssl_scache_dbm.lo: ssl_scache_dbm.c mod_ssl.h $(INCDIR)/ap_config.h \
+ $(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
+ $(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
+ $(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
+ $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
+ $(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
+ $(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
+ $(INCDIR)/http_main.h $(INCDIR)/http_core.h \
+ $(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
+ssl_scache_shmcb.o ssl_scache_shmcb.lo: ssl_scache_shmcb.c mod_ssl.h \
+ $(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
+ $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
+ $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
+ $(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
+ $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
+ $(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
+ $(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
+ $(INCDIR)/http_main.h $(INCDIR)/http_core.h \
+ $(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
+ssl_scache_shmht.o ssl_scache_shmht.lo: ssl_scache_shmht.c mod_ssl.h \
+ $(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
+ $(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
+ $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
+ $(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
+ $(INCDIR)/ap.h $(INCDIR)/util_uri.h \
+ $(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
+ $(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
+ $(INCDIR)/http_main.h $(INCDIR)/http_core.h \
+ $(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_util.o ssl_util.lo: ssl_util.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_util_sdbm.o ssl_util_sdbm.lo: ssl_util_sdbm.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_util_ssl.o ssl_util_ssl.lo: ssl_util_ssl.c mod_ssl.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(OSDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/alloc.h \
+ $(INCDIR)/httpd.h $(INCDIR)/ap_mm.h $(INCDIR)/ap_alloc.h \
$(INCDIR)/ap_hook.h $(INCDIR)/ap_ctx.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h \
$(INCDIR)/http_config.h $(INCDIR)/http_conf_globals.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h \
$(INCDIR)/http_main.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/scoreboard.h \
- $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h \
- ssl_util_sdbm.h
+ $(INCDIR)/util_md5.h $(INCDIR)/ap_md5.h \
+ $(INCDIR)/fnmatch.h ssl_expr.h ssl_util_ssl.h ssl_util_table.h
ssl_util_table.o ssl_util_table.lo: ssl_util_table.c ssl_util_table.h
diff --git a/usr.sbin/httpd/src/modules/ssl/README b/usr.sbin/httpd/src/modules/ssl/README
index 1488a0a641f..9b9051f4629 100644
--- a/usr.sbin/httpd/src/modules/ssl/README
+++ b/usr.sbin/httpd/src/modules/ssl/README
@@ -7,7 +7,7 @@
mod_ssl ``Ralf Engelschall has released an
Apache Interface to OpenSSL excellent module that integrates
http://www.modssl.org/ Apache and SSLeay.''
- Version 2.6 -- Tim J. Hudson
+ Version 2.7 -- Tim J. Hudson
SYNOPSIS
@@ -42,7 +42,6 @@
ssl_engine_mutex.c ...... mutual exclusion support
ssl_engine_pphrase.c .... pass-phrase handling
ssl_engine_rand.c ....... PRNG support
- ssl_engine_scache.c ..... session cache support
ssl_engine_vars.c ....... Variable Expansion support
ssl_expr.c .............. expression handling main source
ssl_expr.h .............. expression handling common header
@@ -52,6 +51,10 @@
ssl_expr_parse.h ........ expression parser header (pre-generated)
ssl_expr_parse.y ........ expression parser source
ssl_expr_eval.c ......... expression machine evaluation
+ ssl_scache.c ............ session cache abstraction layer
+ ssl_scache_dbm.c ........ session cache via DBM file
+ ssl_scache_shmcb.c ...... session cache via shared memory cyclic buffer
+ ssl_scache_shmht.c ...... session cache via shared memory hash table
ssl_util.c .............. utility functions
ssl_util_ssl.c .......... the OpenSSL companion source
ssl_util_ssl.h .......... the OpenSSL companion header
@@ -133,6 +136,13 @@
oder to control extended client functionality in the HTTPS proxy
code.
+ o SSL_EXPERIMENTAL_ENGINE
+ The ability to support the new forthcoming OpenSSL ENGINE stuff.
+ Until this development branch of OpenSSL is merged into the main
+ stream, you have to use openssl-engine-0.9.x.tar.gz for this.
+ mod_ssl automatically recognizes this OpenSSL variant and then can
+ activate external crypto devices through SSLCryptoDevice directive.
+
VENDOR EXTENSIONS
Inside the mod_ssl sources you can enable various EAPI vendor hooks
diff --git a/usr.sbin/httpd/src/modules/ssl/libssl.module b/usr.sbin/httpd/src/modules/ssl/libssl.module
index d7d4bc7bc28..dbd659df57a 100644
--- a/usr.sbin/httpd/src/modules/ssl/libssl.module
+++ b/usr.sbin/httpd/src/modules/ssl/libssl.module
@@ -364,6 +364,15 @@ ConfigStart
esac
#
+ # SSL engine support
+ #
+ case $SSL_VERSION_ID in
+ *0.9.6*engine* )
+ SSL_CFLAGS="$SSL_CFLAGS -DSSL_ENGINE"
+ ;;
+ esac
+
+ #
# determine location of OpenSSL headers
#
if [ ".$SSL_BASE" = .SYSTEM ]; then
@@ -435,89 +444,6 @@ ConfigStart
echo "$my_prefix SSL library type: $my_type $my_note"
#
- # support for RSAref library
- #
- if [ ".$RSA_BASE" = . ]; then
- RSA_BASE=`egrep '^RSA_BASE=' $file | tail -1 | awk -F= '{print $2}'`
- fi
- if [ ".$RSA_BASE" != . ]; then
- if [ ! -f "$my_real_ssl_libdir/libRSAglue.a" ]; then
- echo "Error: Cannot find OpenSSL's RSAglue library under $my_real_ssl_libdir" 1>&2
- exit 1
- else
- SSL_LIBS="$SSL_LIBS -lRSAglue"
- fi
- case $RSA_BASE in
- SYSTEM ) ;;
- /* ) ;;
- * ) RSA_BASE="`cd ../$RSA_BASE; pwd`" ;;
- esac
- echo "$my_prefix SSL library plugin mode: RSAref (explicitly configured)"
- else
- if [ -f "$my_real_ssl_libdir/libRSAglue.a" ]; then
- if [ ".`$SSL_PROGRAM version -f | grep -- -DRSAref`" != . ]; then
- SSL_LIBS="$SSL_LIBS -lRSAglue"
- if [ -f "$SSL_BASE/Makefile.ssl" ]; then
- if [ ".`egrep -- '-L[^ ]*/rsaref' $SSL_BASE/Makefile.ssl`" != . ]; then
- RSA_BASE=`egrep -- '-L[^ ]*/rsaref' $SSL_BASE/Makefile.ssl |\
- head -1 | sed -e 's;.*-L\([^ ]*/rsaref[^ ]*\).*;\1;'`
- fi
- fi
- if [ ".$RSA_BASE" = . ]; then
- RSA_BASE='SYSTEM'
- fi
- fi
- fi
- if [ ".$RSA_BASE" != . ]; then
- echo "$my_prefix SSL library plugin mode: RSAref (implicitly configured)"
- else
- echo "$my_prefix SSL library plugin mode: none"
- fi
- fi
- if [ ".$RSA_BASE" != . ]; then
- if [ ".$RSA_BASE" = .SYSTEM ]; then
- my_found=no
- for p in . /lib /usr/lib /usr/local/lib; do
- if [ -f "$p/librsaref.a" -o -f "$p/librsaref.so" ]; then
- SSL_LDFLAGS="$SSL_LDFLAGS -L$p"
- SSL_LIBS="$SSL_LIBS -lrsaref"
- echo "$my_prefix SSL library plugin path: $p/librsaref.a"
- my_found=yes
- break
- fi
- done
- if [ .$my_found = .no ]; then
- echo "Error: Cannot find RSAref library in any of the following dirs:" 1>&2
- echo "Error: . /lib /usr/lib /usr/local/lib" 1>&2
- exit 1
- fi
- else
- my_found=no
- if [ -f "$RSA_BASE/librsaref.a" ]; then
- SSL_LDFLAGS="$SSL_LDFLAGS -L$RSA_BASE"
- SSL_LIBS="$SSL_LIBS -lrsaref"
- echo "$my_prefix SSL library plugin path: $RSA_BASE/librsaref.a"
- my_found=yes
- elif [ -f "$RSA_BASE/rsaref.a" ]; then
- SSL_LIBS="$SSL_LIBS $RSA_BASE/rsaref.a"
- echo "$my_prefix SSL library plugin path: $RSA_BASE/rsaref.a"
- my_found=yes
- else
- wild="`echo $RSA_BASE/*/rsaref.a`"
- if [ -f "$wild" ]; then
- SSL_LIBS="$SSL_LIBS $wild"
- echo "$my_prefix SSL library plugin path: $wild"
- my_found=yes
- fi
- fi
- if [ .$my_found = .no ]; then
- echo "Error: Cannot find RSAref library under $RSA_BASE" 1>&2
- exit 1
- fi
- fi
- fi
-
- #
# Special GCC/DSO support
#
# Under some platforms where GCC is used we have to link the DSO
diff --git a/usr.sbin/httpd/src/modules/ssl/libssl.version b/usr.sbin/httpd/src/modules/ssl/libssl.version
index 54a1790fc32..38c9a7c6c68 100644
--- a/usr.sbin/httpd/src/modules/ssl/libssl.version
+++ b/usr.sbin/httpd/src/modules/ssl/libssl.version
@@ -1 +1 @@
-mod_ssl/2.6.6-1.3.12
+mod_ssl/2.7.1-1.3.14
diff --git a/usr.sbin/httpd/src/modules/ssl/mod_ssl.c b/usr.sbin/httpd/src/modules/ssl/mod_ssl.c
index 978bc389032..71cfe96cad3 100644
--- a/usr.sbin/httpd/src/modules/ssl/mod_ssl.c
+++ b/usr.sbin/httpd/src/modules/ssl/mod_ssl.c
@@ -74,7 +74,7 @@
* identify the module to SCCS `what' and RCS `ident' commands
*/
static char const sccsid[] = "@(#) mod_ssl/" MOD_SSL_VERSION " >";
-static char const rcsid[] = "$Id: mod_ssl.c,v 1.5 2000/06/30 05:35:10 beck Exp $";
+static char const rcsid[] = "$Id: mod_ssl.c,v 1.6 2000/12/15 22:18:17 beck Exp $";
/*
* the table of configuration directives we provide
@@ -92,6 +92,11 @@ static command_rec ssl_config_cmds[] = {
AP_SRV_CMD(SessionCache, TAKE1,
"SSL Session Cache storage "
"(`none', `dbm:/path/to/file')")
+#ifdef SSL_EXPERIMENTAL_ENGINE
+ AP_SRV_CMD(CryptoDevice, TAKE1,
+ "SSL external Crypto Device usage "
+ "(`builtin', `...')")
+#endif
AP_SRV_CMD(RandomSeed, TAKE23,
"SSL Pseudo Random Number Generator (PRNG) seeding source "
"(`startup|connect builtin|file:/path|exec:/path [bytes]')")
diff --git a/usr.sbin/httpd/src/modules/ssl/mod_ssl.h b/usr.sbin/httpd/src/modules/ssl/mod_ssl.h
index d8244dc0579..8bf4a614a04 100644
--- a/usr.sbin/httpd/src/modules/ssl/mod_ssl.h
+++ b/usr.sbin/httpd/src/modules/ssl/mod_ssl.h
@@ -85,6 +85,14 @@
#ifndef SSL_EXPERIMENTAL_PROXY_IGNORE
#define SSL_EXPERIMENTAL_PROXY
#endif
+#ifdef SSL_ENGINE
+#ifndef SSL_EXPERIMENTAL_ENGINE_IGNORE
+#define SSL_EXPERIMENTAL_ENGINE
+#endif
+#endif
+#ifndef SSL_EXPERIMENTAL_SHMCB_IGNORE
+#define SSL_EXPERIMENTAL_SHMCB
+#endif
#endif /* SSL_EXPERIMENTAL */
/*
@@ -116,6 +124,9 @@
#include <openssl/crypto.h>
#include <openssl/evp.h>
#include <openssl/rand.h>
+#ifdef SSL_EXPERIMENTAL_ENGINE
+#include <openssl/engine.h>
+#endif
/* Apache headers */
#define CORE_PRIVATE
@@ -476,17 +487,12 @@ typedef enum {
SSL_SCMODE_UNSET = UNSET,
SSL_SCMODE_NONE = 0,
SSL_SCMODE_DBM = 1,
- SSL_SCMODE_SHM = 2
+ SSL_SCMODE_SHMHT = 2
+#ifdef SSL_EXPERIMENTAL_SHMCB
+ ,SSL_SCMODE_SHMCB = 3
+#endif
} ssl_scmode_t;
-typedef struct {
- UCHAR *ucaKey;
- int nKey;
- UCHAR *ucaData;
- int nData;
- time_t tExpiresAt;
-} ssl_scinfo_t;
-
/*
* Define the SSL mutex modes
*/
@@ -558,6 +564,9 @@ typedef struct {
void *pTmpKeys[SSL_TKPIDX_MAX];
ssl_ds_table *tPublicCert;
ssl_ds_table *tPrivateKey;
+#ifdef SSL_EXPERIMENTAL_ENGINE
+ char *szCryptoDevice;
+#endif
struct {
void *pV1, *pV2, *pV3, *pV4, *pV5, *pV6, *pV7, *pV8, *pV9, *pV10;
} rCtx;
@@ -652,6 +661,7 @@ void *ssl_config_perdir_create(pool *, char *);
void *ssl_config_perdir_merge(pool *, void *, void *);
const char *ssl_cmd_SSLMutex(cmd_parms *, char *, char *);
const char *ssl_cmd_SSLPassPhraseDialog(cmd_parms *, char *, char *);
+const char *ssl_cmd_SSLCryptoDevice(cmd_parms *, char *, char *);
const char *ssl_cmd_SSLRandomSeed(cmd_parms *, char *, char *, char *, char *);
const char *ssl_cmd_SSLEngine(cmd_parms *, char *, int);
const char *ssl_cmd_SSLCipherSuite(cmd_parms *, SSLDirConfigRec *, char *);
@@ -686,6 +696,7 @@ const char *ssl_cmd_SSLProxyMachineCertificateFile(cmd_parms *, char *, char *)
/* module initialization */
void ssl_init_Module(server_rec *, pool *);
void ssl_init_SSLLibrary(void);
+void ssl_init_Engine(server_rec *, pool *);
void ssl_init_TmpKeysHandle(int, server_rec *, pool *);
void ssl_init_ConfigureServer(server_rec *, pool *, SSLSrvConfigRec *);
void ssl_init_CheckServers(server_rec *, pool *);
@@ -723,26 +734,35 @@ void ssl_callback_LogTracingState(SSL *, int, int);
/* Session Cache Support */
void ssl_scache_init(server_rec *, pool *);
void ssl_scache_kill(server_rec *);
-BOOL ssl_scache_store(server_rec *, SSL_SESSION *, int);
+BOOL ssl_scache_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *);
SSL_SESSION *ssl_scache_retrieve(server_rec *, UCHAR *, int);
-void ssl_scache_remove(server_rec *, SSL_SESSION *);
-void ssl_scache_expire(server_rec *, time_t);
+void ssl_scache_remove(server_rec *, UCHAR *, int);
+void ssl_scache_expire(server_rec *);
void ssl_scache_status(server_rec *, pool *, void (*)(char *, void *), void *);
char *ssl_scache_id2sz(UCHAR *, int);
void ssl_scache_dbm_init(server_rec *, pool *);
void ssl_scache_dbm_kill(server_rec *);
-BOOL ssl_scache_dbm_store(server_rec *, ssl_scinfo_t *);
-void ssl_scache_dbm_retrieve(server_rec *, ssl_scinfo_t *);
-void ssl_scache_dbm_remove(server_rec *, ssl_scinfo_t *);
-void ssl_scache_dbm_expire(server_rec *, time_t);
+BOOL ssl_scache_dbm_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *);
+SSL_SESSION *ssl_scache_dbm_retrieve(server_rec *, UCHAR *, int);
+void ssl_scache_dbm_remove(server_rec *, UCHAR *, int);
+void ssl_scache_dbm_expire(server_rec *);
void ssl_scache_dbm_status(server_rec *, pool *, void (*)(char *, void *), void *);
-void ssl_scache_shm_init(server_rec *, pool *);
-void ssl_scache_shm_kill(server_rec *);
-BOOL ssl_scache_shm_store(server_rec *, ssl_scinfo_t *);
-void ssl_scache_shm_retrieve(server_rec *, ssl_scinfo_t *);
-void ssl_scache_shm_remove(server_rec *, ssl_scinfo_t *);
-void ssl_scache_shm_expire(server_rec *, time_t);
-void ssl_scache_shm_status(server_rec *, pool *, void (*)(char *, void *), void *);
+void ssl_scache_shmht_init(server_rec *, pool *);
+void ssl_scache_shmht_kill(server_rec *);
+BOOL ssl_scache_shmht_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *);
+SSL_SESSION *ssl_scache_shmht_retrieve(server_rec *, UCHAR *, int);
+void ssl_scache_shmht_remove(server_rec *, UCHAR *, int);
+void ssl_scache_shmht_expire(server_rec *);
+void ssl_scache_shmht_status(server_rec *, pool *, void (*)(char *, void *), void *);
+#ifdef SSL_EXPERIMENTAL_SHMCB
+void ssl_scache_shmcb_init(server_rec *, pool *);
+void ssl_scache_shmcb_kill(server_rec *);
+BOOL ssl_scache_shmcb_store(server_rec *, UCHAR *, int, time_t, SSL_SESSION *);
+SSL_SESSION *ssl_scache_shmcb_retrieve(server_rec *, UCHAR *, int);
+void ssl_scache_shmcb_remove(server_rec *, UCHAR *, int);
+void ssl_scache_shmcb_expire(server_rec *);
+void ssl_scache_shmcb_status(server_rec *, pool *, void (*)(char *, void *), void *);
+#endif
/* Pass Phrase Support */
void ssl_pphrase_Handle(server_rec *, pool *);
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c
index 6dbeec9ac54..a4576b48492 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_config.c
@@ -140,6 +140,9 @@ void ssl_config_global_create(void)
mc->tPrivateKey = ssl_ds_table_make(pPool, sizeof(ssl_asn1_t));
mc->tPublicCert = ssl_ds_table_make(pPool, sizeof(ssl_asn1_t));
mc->tTmpKeys = ssl_ds_table_make(pPool, sizeof(ssl_asn1_t));
+#ifdef SSL_EXPERIMENTAL_ENGINE
+ mc->szCryptoDevice = NULL;
+#endif
(void)memset(mc->pTmpKeys, 0, SSL_TKPIDX_MAX*sizeof(void *));
@@ -440,6 +443,29 @@ const char *ssl_cmd_SSLPassPhraseDialog(
return NULL;
}
+#ifdef SSL_EXPERIMENTAL_ENGINE
+const char *ssl_cmd_SSLCryptoDevice(
+ cmd_parms *cmd, char *struct_ptr, char *arg)
+{
+ SSLModConfigRec *mc = myModConfig();
+ const char *err;
+ ENGINE *e;
+
+ if ((err = ap_check_cmd_context(cmd, GLOBAL_ONLY)) != NULL)
+ return err;
+ if (strcEQ(arg, "builtin")) {
+ mc->szCryptoDevice = NULL;
+ }
+ else if ((e = ENGINE_by_id(arg)) != NULL) {
+ mc->szCryptoDevice = arg;
+ ENGINE_free(e);
+ }
+ else
+ return "SSLCryptoDevice: Invalid argument";
+ return NULL;
+}
+#endif
+
const char *ssl_cmd_SSLRandomSeed(
cmd_parms *cmd, char *struct_ptr, char *arg1, char *arg2, char *arg3)
{
@@ -705,12 +731,14 @@ const char *ssl_cmd_SSLSessionCache(
mc->szSessionCacheDataFile = ap_pstrdup(mc->pPool,
ssl_util_server_root_relative(cmd->pool, "scache", arg+4));
}
- else if (strlen(arg) > 4 && strcEQn(arg, "shm:", 4)) {
+ else if ( (strlen(arg) > 4 && strcEQn(arg, "shm:", 4))
+ || (strlen(arg) > 6 && strcEQn(arg, "shmht:", 6))) {
if (!ap_mm_useable())
return "SSLSessionCache: shared memory cache not useable on this platform";
- mc->nSessionCacheMode = SSL_SCMODE_SHM;
+ mc->nSessionCacheMode = SSL_SCMODE_SHMHT;
+ cp = strchr(arg, ':');
mc->szSessionCacheDataFile = ap_pstrdup(mc->pPool,
- ssl_util_server_root_relative(cmd->pool, "scache", arg+4));
+ ssl_util_server_root_relative(cmd->pool, "scache", cp+1));
mc->tSessionCacheDataTable = NULL;
mc->nSessionCacheDataSize = 1024*512; /* 512KB */
if ((cp = strchr(mc->szSessionCacheDataFile, '(')) != NULL) {
@@ -727,6 +755,30 @@ const char *ssl_cmd_SSLSessionCache(
"size has to be < %d bytes on this platform", maxsize);
}
}
+#ifdef SSL_EXPERIMENTAL_SHMCB
+ else if (strlen(arg) > 6 && strcEQn(arg, "shmcb:", 6)) {
+ if (!ap_mm_useable())
+ return "SSLSessionCache: shared memory cache not useable on this platform";
+ mc->nSessionCacheMode = SSL_SCMODE_SHMCB;
+ mc->szSessionCacheDataFile = ap_pstrdup(mc->pPool,
+ ap_server_root_relative(cmd->pool, arg+6));
+ mc->tSessionCacheDataTable = NULL;
+ mc->nSessionCacheDataSize = 1024*512; /* 512KB */
+ if ((cp = strchr(mc->szSessionCacheDataFile, '(')) != NULL) {
+ *cp++ = NUL;
+ if ((cp2 = strchr(cp, ')')) == NULL)
+ return "SSLSessionCache: Invalid argument: no closing parenthesis";
+ *cp2 = NUL;
+ mc->nSessionCacheDataSize = atoi(cp);
+ if (mc->nSessionCacheDataSize <= 8192)
+ return "SSLSessionCache: Invalid argument: size has to be >= 8192 bytes";
+ maxsize = ap_mm_core_maxsegsize();
+ if (mc->nSessionCacheDataSize >= maxsize)
+ return ap_psprintf(cmd->pool, "SSLSessionCache: Invalid argument: "
+ "size has to be < %d bytes on this platform", maxsize);
+ }
+ }
+#endif
else
#ifdef SSL_VENDOR
if (!ap_hook_use("ap::mod_ssl::vendor::cmd_sslsessioncache",
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_ext.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_ext.c
index c995320d544..79fd26b10d8 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_ext.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_ext.c
@@ -279,6 +279,7 @@ static void ssl_ext_mp_init(server_rec *s, pool *p)
/*
* Initialize each virtual server
*/
+ ERR_clear_error();
for (; s != NULL; s = s->next) {
sc = mySrvConfig(s);
cpVHostID = ssl_util_vhostid(p, s);
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c
index d2c8d55ad73..c17414c1ca2 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_init.c
@@ -266,6 +266,13 @@ void ssl_init_Module(server_rec *s, pool *p)
#endif
/*
+ * SSL external crypto device ("engine") support
+ */
+#ifdef SSL_EXPERIMENTAL_ENGINE
+ ssl_init_Engine(s, p);
+#endif
+
+ /*
* Warn the user that he should use the session cache.
* But we can operate without it, of course.
*/
@@ -351,6 +358,35 @@ void ssl_init_SSLLibrary(void)
}
/*
+ * Support for external a Crypto Device ("engine"), usually
+ * a hardware accellerator card for crypto operations.
+ */
+#ifdef SSL_EXPERIMENTAL_ENGINE
+void ssl_init_Engine(server_rec *s, pool *p)
+{
+ SSLModConfigRec *mc = myModConfig();
+ ENGINE *e;
+
+ if (mc->szCryptoDevice != NULL) {
+ if ((e = ENGINE_by_id(mc->szCryptoDevice)) == NULL) {
+ ssl_log(s, SSL_LOG_ERROR, "Init: Failed to load Crypto Device API `%s'",
+ mc->szCryptoDevice);
+ ssl_die();
+ }
+ if (strEQ(mc->szCryptoDevice, "chil"))
+ ENGINE_ctrl(e, ENGINE_CTRL_CHIL_SET_FORKCHECK, 1, 0, 0);
+ if (!ENGINE_set_default(e, ENGINE_METHOD_ALL)) {
+ ssl_log(s, SSL_LOG_ERROR, "Init: Failed to enable Crypto Device API `%s'",
+ mc->szCryptoDevice);
+ ssl_die();
+ }
+ ENGINE_free(e);
+ }
+ return;
+}
+#endif
+
+/*
* Handle the Temporary RSA Keys and DH Params
*/
void ssl_init_TmpKeysHandle(int action, server_rec *s, pool *p)
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c
index e7eaebe12ab..63659252e28 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_kernel.c
@@ -1708,7 +1708,7 @@ int ssl_callback_NewSessionCacheEntry(SSL *ssl, SSL_SESSION *pNew)
* same expire time, so it expires automatically there, too.
*/
t = (SSL_get_time(pNew) + sc->nSessionCacheTimeout);
- rc = ssl_scache_store(s, pNew, t);
+ rc = ssl_scache_store(s, pNew->session_id, pNew->session_id_length, t, pNew);
/*
* Log this cache operation
@@ -1716,7 +1716,7 @@ int ssl_callback_NewSessionCacheEntry(SSL *ssl, SSL_SESSION *pNew)
ssl_log(s, SSL_LOG_TRACE, "Inter-Process Session Cache: "
"request=SET status=%s id=%s timeout=%ds (session caching)",
rc == TRUE ? "OK" : "BAD",
- ssl_scache_id2sz(pNew->session_id, pNew->session_id_length),
+ SSL_SESSION_id2sz(pNew->session_id, pNew->session_id_length),
t-time(NULL));
/*
@@ -1757,11 +1757,11 @@ SSL_SESSION *ssl_callback_GetSessionCacheEntry(
if (pSession != NULL)
ssl_log(s, SSL_LOG_TRACE, "Inter-Process Session Cache: "
"request=GET status=FOUND id=%s (session reuse)",
- ssl_scache_id2sz(id, idlen));
+ SSL_SESSION_id2sz(id, idlen));
else
ssl_log(s, SSL_LOG_TRACE, "Inter-Process Session Cache: "
"request=GET status=MISSED id=%s (session renewal)",
- ssl_scache_id2sz(id, idlen));
+ SSL_SESSION_id2sz(id, idlen));
/*
* Return NULL or the retrieved SSL_SESSION. But indicate (by
@@ -1794,14 +1794,14 @@ void ssl_callback_DelSessionCacheEntry(
/*
* Remove the SSL_SESSION from the inter-process cache
*/
- ssl_scache_remove(s, pSession);
+ ssl_scache_remove(s, pSession->session_id, pSession->session_id_length);
/*
* Log this cache operation
*/
ssl_log(s, SSL_LOG_TRACE, "Inter-Process Session Cache: "
"request=REM status=OK id=%s (session dead)",
- ssl_scache_id2sz(pSession->session_id,
+ SSL_SESSION_id2sz(pSession->session_id,
pSession->session_id_length));
return;
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c
index 34ab0da2486..e69de29bb2d 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_scache.c
@@ -1,915 +0,0 @@
-/* _ _
-** _ __ ___ ___ __| | ___ ___| | mod_ssl
-** | '_ ` _ \ / _ \ / _` | / __/ __| | Apache Interface to OpenSSL
-** | | | | | | (_) | (_| | \__ \__ \ | www.modssl.org
-** |_| |_| |_|\___/ \__,_|___|___/___/_| ftp.modssl.org
-** |_____|
-** ssl_engine_scache.c
-** Session Cache
-*/
-
-/* ====================================================================
- * Copyright (c) 1998-2000 Ralf S. Engelschall. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following
- * disclaimer in the documentation and/or other materials
- * provided with the distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgment:
- * "This product includes software developed by
- * Ralf S. Engelschall <rse@engelschall.com> for use in the
- * mod_ssl project (http://www.modssl.org/)."
- *
- * 4. The names "mod_ssl" must not be used to endorse or promote
- * products derived from this software without prior written
- * permission. For written permission, please contact
- * rse@engelschall.com.
- *
- * 5. Products derived from this software may not be called "mod_ssl"
- * nor may "mod_ssl" appear in their names without prior
- * written permission of Ralf S. Engelschall.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by
- * Ralf S. Engelschall <rse@engelschall.com> for use in the
- * mod_ssl project (http://www.modssl.org/)."
- *
- * THIS SOFTWARE IS PROVIDED BY RALF S. ENGELSCHALL ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RALF S. ENGELSCHALL OR
- * HIS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- */
- /* ``Open-Source Software: generous
- programmers from around the world all
- join forces to help you shoot
- yourself in the foot for free.''
- -- Unknown */
-#include "mod_ssl.h"
-
-
-/* _________________________________________________________________
-**
-** Session Cache Support (Common)
-** _________________________________________________________________
-*/
-
-/*
- * FIXME: There is no define in OpenSSL, but OpenSSL uses 1024*10,
- * so 1024*20 should be ok.
- */
-#define MAX_SESSION_DER 1024*20
-
-void ssl_scache_init(server_rec *s, pool *p)
-{
- SSLModConfigRec *mc = myModConfig();
-
- if (mc->nSessionCacheMode == SSL_SCMODE_DBM)
- ssl_scache_dbm_init(s, p);
- else if (mc->nSessionCacheMode == SSL_SCMODE_SHM)
- ssl_scache_shm_init(s, p);
-
-#ifdef SSL_VENDOR
- ap_hook_use("ap::mod_ssl::vendor::scache_init",
- AP_HOOK_SIG3(void,ptr,ptr), AP_HOOK_ALL, s, p);
-#endif
-
- return;
-}
-
-void ssl_scache_kill(server_rec *s)
-{
- SSLModConfigRec *mc = myModConfig();
-
- if (mc->nSessionCacheMode == SSL_SCMODE_DBM)
- ssl_scache_dbm_kill(s);
- else if (mc->nSessionCacheMode == SSL_SCMODE_SHM)
- ssl_scache_shm_kill(s);
-
-#ifdef SSL_VENDOR
- ap_hook_use("ap::mod_ssl::vendor::scache_kill",
- AP_HOOK_SIG1(void), AP_HOOK_ALL);
-#endif
-
- return;
-}
-
-BOOL ssl_scache_store(server_rec *s, SSL_SESSION *pSession, int timeout)
-{
- SSLModConfigRec *mc = myModConfig();
- ssl_scinfo_t SCI;
- UCHAR buf[MAX_SESSION_DER];
- UCHAR *b;
- BOOL rc = FALSE;
-
- /* add the key */
- SCI.ucaKey = pSession->session_id;
- SCI.nKey = pSession->session_id_length;
-
- /* transform the session into a data stream */
- SCI.ucaData = b = buf;
- SCI.nData = i2d_SSL_SESSION(pSession, &b);
- SCI.tExpiresAt = timeout;
-
- /* and store it... */
- if (mc->nSessionCacheMode == SSL_SCMODE_DBM)
- rc = ssl_scache_dbm_store(s, &SCI);
- else if (mc->nSessionCacheMode == SSL_SCMODE_SHM)
- rc = ssl_scache_shm_store(s, &SCI);
-
-#ifdef SSL_VENDOR
- ap_hook_use("ap::mod_ssl::vendor::scache_store",
- AP_HOOK_SIG3(void,ptr,ptr), AP_HOOK_ALL, s, &SCI);
-#endif
-
- /* allow the regular expiring to occur */
- ssl_scache_expire(s, time(NULL));
-
- return rc;
-}
-
-SSL_SESSION *ssl_scache_retrieve(server_rec *s, UCHAR *id, int idlen)
-{
- SSLModConfigRec *mc = myModConfig();
- SSL_SESSION *pSession = NULL;
- ssl_scinfo_t SCI;
- time_t tNow;
-
- /* determine current time */
- tNow = time(NULL);
-
- /* allow the regular expiring to occur */
- ssl_scache_expire(s, tNow);
-
- /* create cache query */
- SCI.ucaKey = id;
- SCI.nKey = idlen;
- SCI.ucaData = NULL;
- SCI.nData = 0;
- SCI.tExpiresAt = 0;
-
- /* perform cache query */
- if (mc->nSessionCacheMode == SSL_SCMODE_DBM)
- ssl_scache_dbm_retrieve(s, &SCI);
- else if (mc->nSessionCacheMode == SSL_SCMODE_SHM)
- ssl_scache_shm_retrieve(s, &SCI);
-
-#ifdef SSL_VENDOR
- ap_hook_use("ap::mod_ssl::vendor::scache_retrieve",
- AP_HOOK_SIG3(void,ptr,ptr), AP_HOOK_ALL, s, &SCI);
-#endif
-
- /* return immediately if not found */
- if (SCI.ucaData == NULL)
- return NULL;
-
- /* check for expire time */
- if (SCI.tExpiresAt <= tNow) {
- if (mc->nSessionCacheMode == SSL_SCMODE_DBM)
- ssl_scache_dbm_remove(s, &SCI);
- else if (mc->nSessionCacheMode == SSL_SCMODE_SHM)
- ssl_scache_shm_remove(s, &SCI);
-#ifdef SSL_VENDOR
- ap_hook_use("ap::mod_ssl::vendor::scache_remove",
- AP_HOOK_SIG3(void,ptr,ptr), AP_HOOK_ALL, s, &SCI);
-#endif
- return NULL;
- }
-
- /* extract result and return it */
- pSession = d2i_SSL_SESSION(NULL, &SCI.ucaData, SCI.nData);
- return pSession;
-}
-
-void ssl_scache_remove(server_rec *s, SSL_SESSION *pSession)
-{
- SSLModConfigRec *mc = myModConfig();
- ssl_scinfo_t SCI;
-
- /* create cache query */
- SCI.ucaKey = pSession->session_id;
- SCI.nKey = pSession->session_id_length;
- SCI.ucaData = NULL;
- SCI.nData = 0;
- SCI.tExpiresAt = 0;
-
- /* perform remove */
- if (mc->nSessionCacheMode == SSL_SCMODE_DBM)
- ssl_scache_dbm_remove(s, &SCI);
- else if (mc->nSessionCacheMode == SSL_SCMODE_SHM)
- ssl_scache_shm_remove(s, &SCI);
-
-#ifdef SSL_VENDOR
- ap_hook_use("ap::mod_ssl::vendor::scache_remove",
- AP_HOOK_SIG3(void,ptr,ptr), AP_HOOK_ALL, s, &SCI);
-#endif
-
- return;
-}
-
-void ssl_scache_expire(server_rec *s, time_t now)
-{
- SSLModConfigRec *mc = myModConfig();
-
- /*
- * Pass through to the particular expiration functions
- */
- if (mc->nSessionCacheMode == SSL_SCMODE_DBM)
- ssl_scache_dbm_expire(s, now);
- else if (mc->nSessionCacheMode == SSL_SCMODE_SHM)
- ssl_scache_shm_expire(s, now);
-
-#ifdef SSL_VENDOR
- ap_hook_use("ap::mod_ssl::vendor::scache_expire",
- AP_HOOK_SIG3(void,ptr,int), AP_HOOK_ALL, s, now);
-#endif
-
- return;
-}
-
-void ssl_scache_status(server_rec *s, pool *p, void (*func)(char *, void *), void *arg)
-{
- SSLModConfigRec *mc = myModConfig();
-
- /* allow the regular expiring to occur */
- ssl_scache_expire(s, time(NULL));
-
- if (mc->nSessionCacheMode == SSL_SCMODE_DBM)
- ssl_scache_dbm_status(s, p, func, arg);
- else if (mc->nSessionCacheMode == SSL_SCMODE_SHM)
- ssl_scache_shm_status(s, p, func, arg);
- else
- func("N.A.", arg);
- return;
-}
-
-char *ssl_scache_id2sz(UCHAR *id, int idlen)
-{
- static char str[(SSL_MAX_SSL_SESSION_ID_LENGTH+1)*2];
- char *cp;
- int n;
-
- cp = str;
- for (n = 0; n < idlen && n < SSL_MAX_SSL_SESSION_ID_LENGTH; n++) {
- ap_snprintf(cp, sizeof(str)-(cp-str), "%02X", id[n]);
- cp += 2;
- }
- *cp = NUL;
- return str;
-}
-
-
-/* _________________________________________________________________
-**
-** Session Cache Support (DBM)
-** _________________________________________________________________
-*/
-
-void ssl_scache_dbm_init(server_rec *s, pool *p)
-{
- SSLModConfigRec *mc = myModConfig();
- DBM *dbm;
-
- /*
- * for the DBM we need the data file
- */
- if (mc->szSessionCacheDataFile == NULL) {
- ssl_log(s, SSL_LOG_ERROR, "SSLSessionCache required");
- ssl_die();
- }
-
- /*
- * Open it once to create it and to make sure it
- * _can_ be created.
- */
- ssl_mutex_on(s);
- if ((dbm = ssl_dbm_open(mc->szSessionCacheDataFile,
- O_RDWR|O_CREAT, SSL_DBM_FILE_MODE)) == NULL) {
- ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
- "Cannot create SSLSessionCache DBM file `%s'",
- mc->szSessionCacheDataFile);
- ssl_mutex_off(s);
- return;
- }
- ssl_dbm_close(dbm);
-
-#if !defined(OS2) && !defined(WIN32)
- /*
- * We have to make sure the Apache child processes
- * have access to the DBM file. But because there
- * are brain-dead platforms where we cannot exactly
- * determine the suffixes we try all possibilities.
- */
- if (geteuid() == 0 /* is superuser */) {
- chown(mc->szSessionCacheDataFile, ap_user_id, -1 /* no gid change */);
- if (chown(ap_pstrcat(p, mc->szSessionCacheDataFile, SSL_DBM_FILE_SUFFIX_DIR, NULL),
- ap_user_id, -1) == -1) {
- if (chown(ap_pstrcat(p, mc->szSessionCacheDataFile, ".db", NULL),
- ap_user_id, -1) == -1)
- chown(ap_pstrcat(p, mc->szSessionCacheDataFile, ".dir", NULL),
- ap_user_id, -1);
- }
- if (chown(ap_pstrcat(p, mc->szSessionCacheDataFile, SSL_DBM_FILE_SUFFIX_PAG, NULL),
- ap_user_id, -1) == -1) {
- if (chown(ap_pstrcat(p, mc->szSessionCacheDataFile, ".db", NULL),
- ap_user_id, -1) == -1)
- chown(ap_pstrcat(p, mc->szSessionCacheDataFile, ".pag", NULL),
- ap_user_id, -1);
- }
- }
-#endif
- ssl_mutex_off(s);
-
- ssl_scache_dbm_expire(s, time(NULL));
-
- return;
-}
-
-void ssl_scache_dbm_kill(server_rec *s)
-{
- SSLModConfigRec *mc = myModConfig();
- pool *p;
-
- if ((p = ap_make_sub_pool(NULL)) != NULL) {
- /* the correct way */
- unlink(ap_pstrcat(p, mc->szSessionCacheDataFile, SSL_DBM_FILE_SUFFIX_DIR, NULL));
- unlink(ap_pstrcat(p, mc->szSessionCacheDataFile, SSL_DBM_FILE_SUFFIX_PAG, NULL));
- /* the additional ways to be sure */
- unlink(ap_pstrcat(p, mc->szSessionCacheDataFile, ".dir", NULL));
- unlink(ap_pstrcat(p, mc->szSessionCacheDataFile, ".pag", NULL));
- unlink(ap_pstrcat(p, mc->szSessionCacheDataFile, ".db", NULL));
- unlink(mc->szSessionCacheDataFile);
- ap_destroy_pool(p);
- }
- return;
-}
-
-BOOL ssl_scache_dbm_store(server_rec *s, ssl_scinfo_t *SCI)
-{
- SSLModConfigRec *mc = myModConfig();
- DBM *dbm;
- datum dbmkey;
- datum dbmval;
-
- /* be careful: do not try to store too much bytes in a DBM file! */
-#ifdef SSL_USE_SDBM
- if ((SCI->nKey + SCI->nData) >= PAIRMAX)
- return FALSE;
-#else
- if ((SCI->nKey + SCI->nData) >= 950 /* at least less than approx. 1KB */)
- return FALSE;
-#endif
-
- /* create DBM key */
- dbmkey.dptr = (char *)(SCI->ucaKey);
- dbmkey.dsize = SCI->nKey;
-
- /* create DBM value */
- dbmval.dsize = sizeof(time_t) + SCI->nData;
- dbmval.dptr = (char *)malloc(dbmval.dsize);
- if (dbmval.dptr == NULL)
- return FALSE;
- memcpy((char *)dbmval.dptr, &SCI->tExpiresAt, sizeof(time_t));
- memcpy((char *)dbmval.dptr+sizeof(time_t), SCI->ucaData, SCI->nData);
-
- /* and store it to the DBM file */
- ssl_mutex_on(s);
- if ((dbm = ssl_dbm_open(mc->szSessionCacheDataFile,
- O_RDWR, SSL_DBM_FILE_MODE)) == NULL) {
- ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
- "Cannot open SSLSessionCache DBM file `%s' for writing (store)",
- mc->szSessionCacheDataFile);
- ssl_mutex_off(s);
- free(dbmval.dptr);
- return FALSE;
- }
- if (ssl_dbm_store(dbm, dbmkey, dbmval, DBM_INSERT) < 0) {
- ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
- "Cannot store SSL session to DBM file `%s'",
- mc->szSessionCacheDataFile);
- ssl_dbm_close(dbm);
- ssl_mutex_off(s);
- free(dbmval.dptr);
- return FALSE;
- }
- ssl_dbm_close(dbm);
- ssl_mutex_off(s);
-
- /* free temporary buffers */
- free(dbmval.dptr);
-
- return TRUE;
-}
-
-void ssl_scache_dbm_retrieve(server_rec *s, ssl_scinfo_t *SCI)
-{
- SSLModConfigRec *mc = myModConfig();
- DBM *dbm;
- datum dbmkey;
- datum dbmval;
-
- /* initialize result */
- SCI->ucaData = NULL;
- SCI->nData = 0;
- SCI->tExpiresAt = 0;
-
- /* create DBM key and values */
- dbmkey.dptr = (char *)(SCI->ucaKey);
- dbmkey.dsize = SCI->nKey;
-
- /* and fetch it from the DBM file */
- ssl_mutex_on(s);
- if ((dbm = ssl_dbm_open(mc->szSessionCacheDataFile,
- O_RDONLY, SSL_DBM_FILE_MODE)) == NULL) {
- ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
- "Cannot open SSLSessionCache DBM file `%s' for reading (fetch)",
- mc->szSessionCacheDataFile);
- ssl_mutex_off(s);
- return;
- }
- dbmval = ssl_dbm_fetch(dbm, dbmkey);
- ssl_dbm_close(dbm);
- ssl_mutex_off(s);
-
- /* immediately return if not found */
- if (dbmval.dptr == NULL || dbmval.dsize <= sizeof(time_t))
- return;
-
- /* copy over the information to the SCI */
- SCI->nData = dbmval.dsize-sizeof(time_t);
- SCI->ucaData = (UCHAR *)malloc(SCI->nData);
- if (SCI->ucaData == NULL) {
- SCI->nData = 0;
- return;
- }
- memcpy(SCI->ucaData, (char *)dbmval.dptr+sizeof(time_t), SCI->nData);
- memcpy(&SCI->tExpiresAt, dbmval.dptr, sizeof(time_t));
-
- return;
-}
-
-void ssl_scache_dbm_remove(server_rec *s, ssl_scinfo_t *SCI)
-{
- SSLModConfigRec *mc = myModConfig();
- DBM *dbm;
- datum dbmkey;
-
- /* create DBM key and values */
- dbmkey.dptr = (char *)(SCI->ucaKey);
- dbmkey.dsize = SCI->nKey;
-
- /* and delete it from the DBM file */
- ssl_mutex_on(s);
- if ((dbm = ssl_dbm_open(mc->szSessionCacheDataFile,
- O_RDWR, SSL_DBM_FILE_MODE)) == NULL) {
- ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
- "Cannot open SSLSessionCache DBM file `%s' for writing (delete)",
- mc->szSessionCacheDataFile);
- ssl_mutex_off(s);
- return;
- }
- ssl_dbm_delete(dbm, dbmkey);
- ssl_dbm_close(dbm);
- ssl_mutex_off(s);
-
- return;
-}
-
-void ssl_scache_dbm_expire(server_rec *s, time_t tNow)
-{
- SSLModConfigRec *mc = myModConfig();
- SSLSrvConfigRec *sc = mySrvConfig(s);
- static time_t tLast = 0;
- DBM *dbm;
- datum dbmkey;
- datum dbmval;
- pool *p;
- time_t tExpiresAt;
- int nElements = 0;
- int nDeleted = 0;
- int bDelete;
- datum *keylist;
- int keyidx;
- int i;
-
- /*
- * make sure the expiration for still not-accessed session
- * cache entries is done only from time to time
- */
- if (tNow < tLast+sc->nSessionCacheTimeout)
- return;
- tLast = tNow;
-
- /*
- * Here we have to be very carefully: Not all DBM libraries are
- * smart enough to allow one to iterate over the elements and at the
- * same time delete expired ones. Some of them get totally crazy
- * while others have no problems. So we have to do it the slower but
- * more safe way: we first iterate over all elements and remember
- * those which have to be expired. Then in a second pass we delete
- * all those expired elements. Additionally we reopen the DBM file
- * to be really safe in state.
- */
-
-#define KEYMAX 1024
-
- ssl_mutex_on(s);
- for (;;) {
- /* allocate the key array in a memory sub pool */
- if ((p = ap_make_sub_pool(NULL)) == NULL)
- break;
- if ((keylist = ap_palloc(p, sizeof(dbmkey)*KEYMAX)) == NULL) {
- ap_destroy_pool(p);
- break;
- }
-
- /* pass 1: scan DBM database */
- keyidx = 0;
- if ((dbm = ssl_dbm_open(mc->szSessionCacheDataFile,
- O_RDWR, SSL_DBM_FILE_MODE)) == NULL) {
- ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
- "Cannot open SSLSessionCache DBM file `%s' for scanning",
- mc->szSessionCacheDataFile);
- ap_destroy_pool(p);
- break;
- }
- dbmkey = ssl_dbm_firstkey(dbm);
- while (dbmkey.dptr != NULL) {
- nElements++;
- bDelete = FALSE;
- dbmval = ssl_dbm_fetch(dbm, dbmkey);
- if (dbmval.dsize <= sizeof(time_t) || dbmval.dptr == NULL)
- bDelete = TRUE;
- else {
- memcpy(&tExpiresAt, dbmval.dptr, sizeof(time_t));
- if (tExpiresAt <= tNow)
- bDelete = TRUE;
- }
- if (bDelete) {
- if ((keylist[keyidx].dptr = ap_palloc(p, dbmkey.dsize)) != NULL) {
- memcpy(keylist[keyidx].dptr, dbmkey.dptr, dbmkey.dsize);
- keylist[keyidx].dsize = dbmkey.dsize;
- keyidx++;
- if (keyidx == KEYMAX)
- break;
- }
- }
- dbmkey = ssl_dbm_nextkey(dbm);
- }
- ssl_dbm_close(dbm);
-
- /* pass 2: delete expired elements */
- if ((dbm = ssl_dbm_open(mc->szSessionCacheDataFile,
- O_RDWR, SSL_DBM_FILE_MODE)) == NULL) {
- ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
- "Cannot re-open SSLSessionCache DBM file `%s' for expiring",
- mc->szSessionCacheDataFile);
- ap_destroy_pool(p);
- break;
- }
- for (i = 0; i < keyidx; i++) {
- ssl_dbm_delete(dbm, keylist[i]);
- nDeleted++;
- }
- ssl_dbm_close(dbm);
-
- /* destroy temporary pool */
- ap_destroy_pool(p);
-
- if (keyidx < KEYMAX)
- break;
- }
- ssl_mutex_off(s);
-
- ssl_log(s, SSL_LOG_TRACE, "Inter-Process Session Cache (DBM) Expiry: "
- "old: %d, new: %d, removed: %d", nElements, nElements-nDeleted, nDeleted);
- return;
-}
-
-void ssl_scache_dbm_status(server_rec *s, pool *p, void (*func)(char *, void *), void *arg)
-{
- SSLModConfigRec *mc = myModConfig();
- DBM *dbm;
- datum dbmkey;
- datum dbmval;
- int nElem;
- int nSize;
- int nAverage;
-
- nElem = 0;
- nSize = 0;
- ssl_mutex_on(s);
- if ((dbm = ssl_dbm_open(mc->szSessionCacheDataFile,
- O_RDONLY, SSL_DBM_FILE_MODE)) == NULL) {
- ssl_log(s, SSL_LOG_ERROR|SSL_ADD_ERRNO,
- "Cannot open SSLSessionCache DBM file `%s' for status retrival",
- mc->szSessionCacheDataFile);
- ssl_mutex_off(s);
- return;
- }
- dbmkey = ssl_dbm_firstkey(dbm);
- for ( ; dbmkey.dptr != NULL; dbmkey = ssl_dbm_nextkey(dbm)) {
- dbmval = ssl_dbm_fetch(dbm, dbmkey);
- if (dbmval.dptr == NULL)
- continue;
- nElem += 1;
- nSize += dbmval.dsize;
- }
- ssl_dbm_close(dbm);
- ssl_mutex_off(s);
- if (nSize > 0 && nElem > 0)
- nAverage = nSize / nElem;
- else
- nAverage = 0;
- func(ap_psprintf(p, "cache type: <b>DBM</b>, maximum size: <b>unlimited</b><br>"), arg);
- func(ap_psprintf(p, "current sessions: <b>%d</b>, current size: <b>%d</b> bytes<br>", nElem, nSize), arg);
- func(ap_psprintf(p, "average session size: <b>%d</b> bytes<br>", nAverage), arg);
- return;
-}
-
-/* _________________________________________________________________
-**
-** Session Cache Support (SHM)
-** _________________________________________________________________
-*/
-
-/*
- * Wrapper functions for table library which resemble malloc(3) & Co
- * but use the variants from the MM shared memory library.
- */
-
-static void *ssl_scache_shm_malloc(size_t size)
-{
- SSLModConfigRec *mc = myModConfig();
- return ap_mm_malloc(mc->pSessionCacheDataMM, size);
-}
-
-static void *ssl_scache_shm_calloc(size_t number, size_t size)
-{
- SSLModConfigRec *mc = myModConfig();
- return ap_mm_calloc(mc->pSessionCacheDataMM, number, size);
-}
-
-static void *ssl_scache_shm_realloc(void *ptr, size_t size)
-{
- SSLModConfigRec *mc = myModConfig();
- return ap_mm_realloc(mc->pSessionCacheDataMM, ptr, size);
-}
-
-static void ssl_scache_shm_free(void *ptr)
-{
- SSLModConfigRec *mc = myModConfig();
- ap_mm_free(mc->pSessionCacheDataMM, ptr);
- return;
-}
-
-/*
- * Now the actual session cache implementation
- * based on a hash table inside a shared memory segment.
- */
-
-void ssl_scache_shm_init(server_rec *s, pool *p)
-{
- SSLModConfigRec *mc = myModConfig();
- AP_MM *mm;
- table_t *ta;
- int ta_errno;
- int avail;
- int n;
-
- /*
- * Create shared memory segment
- */
- if (mc->szSessionCacheDataFile == NULL) {
- ssl_log(s, SSL_LOG_ERROR, "SSLSessionCache required");
- ssl_die();
- }
- if ((mm = ap_mm_create(mc->nSessionCacheDataSize,
- mc->szSessionCacheDataFile)) == NULL) {
- ssl_log(s, SSL_LOG_ERROR,
- "Cannot allocate shared memory: %s", ap_mm_error());
- ssl_die();
- }
- mc->pSessionCacheDataMM = mm;
-
- /*
- * Make sure the childs have access to the underlaying files
- */
- ap_mm_permission(mm, SSL_MM_FILE_MODE, ap_user_id, -1);
-
- /*
- * Create hash table in shared memory segment
- */
- avail = ap_mm_available(mm);
- n = (avail/2) / 1024;
- n = n < 10 ? 10 : n;
- if ((ta = table_alloc(n, &ta_errno,
- ssl_scache_shm_malloc,
- ssl_scache_shm_calloc,
- ssl_scache_shm_realloc,
- ssl_scache_shm_free )) == NULL) {
- ssl_log(s, SSL_LOG_ERROR,
- "Cannot allocate hash table in shared memory: %s",
- table_strerror(ta_errno));
- ssl_die();
- }
- table_attr(ta, TABLE_FLAG_AUTO_ADJUST|TABLE_FLAG_ADJUST_DOWN);
- table_set_data_alignment(ta, sizeof(char *));
- table_clear(ta);
- mc->tSessionCacheDataTable = ta;
-
- /*
- * Log the done work
- */
- ssl_log(s, SSL_LOG_INFO,
- "Init: Created hash-table (%d buckets) "
- "in shared memory (%d bytes) for SSL session cache", n, avail);
- return;
-}
-
-void ssl_scache_shm_kill(server_rec *s)
-{
- SSLModConfigRec *mc = myModConfig();
-
- if (mc->pSessionCacheDataMM != NULL) {
- ap_mm_destroy(mc->pSessionCacheDataMM);
- mc->pSessionCacheDataMM = NULL;
- }
- return;
-}
-
-BOOL ssl_scache_shm_store(server_rec *s, ssl_scinfo_t *SCI)
-{
- SSLModConfigRec *mc = myModConfig();
- void *vp;
-
- ssl_mutex_on(s);
- if (table_insert_kd(mc->tSessionCacheDataTable,
- SCI->ucaKey, SCI->nKey,
- NULL, sizeof(time_t)+SCI->nData,
- NULL, &vp, 1) != TABLE_ERROR_NONE) {
- ssl_mutex_off(s);
- return FALSE;
- }
- memcpy(vp, &SCI->tExpiresAt, sizeof(time_t));
- memcpy((char *)vp+sizeof(time_t), SCI->ucaData, SCI->nData);
- ssl_mutex_off(s);
- return TRUE;
-}
-
-void ssl_scache_shm_retrieve(server_rec *s, ssl_scinfo_t *SCI)
-{
- SSLModConfigRec *mc = myModConfig();
- void *vp;
- int n;
-
- /* initialize result */
- SCI->ucaData = NULL;
- SCI->nData = 0;
- SCI->tExpiresAt = 0;
-
- /* lookup key in table */
- ssl_mutex_on(s);
- if (table_retrieve(mc->tSessionCacheDataTable,
- SCI->ucaKey, SCI->nKey,
- &vp, &n) != TABLE_ERROR_NONE) {
- ssl_mutex_off(s);
- return;
- }
-
- /* copy over the information to the SCI */
- SCI->nData = n-sizeof(time_t);
- SCI->ucaData = (UCHAR *)malloc(SCI->nData);
- if (SCI->ucaData == NULL) {
- SCI->nData = 0;
- ssl_mutex_off(s);
- return;
- }
- memcpy(&SCI->tExpiresAt, vp, sizeof(time_t));
- memcpy(SCI->ucaData, (char *)vp+sizeof(time_t), SCI->nData);
- ssl_mutex_off(s);
-
- return;
-}
-
-void ssl_scache_shm_remove(server_rec *s, ssl_scinfo_t *SCI)
-{
- SSLModConfigRec *mc = myModConfig();
-
- /* remove value under key in table */
- ssl_mutex_on(s);
- table_delete(mc->tSessionCacheDataTable,
- SCI->ucaKey, SCI->nKey, NULL, NULL);
- ssl_mutex_off(s);
- return;
-}
-
-void ssl_scache_shm_expire(server_rec *s, time_t tNow)
-{
- SSLModConfigRec *mc = myModConfig();
- SSLSrvConfigRec *sc = mySrvConfig(s);
- static time_t tLast = 0;
- table_linear_t iterator;
- time_t tExpiresAt;
- void *vpKey;
- void *vpKeyThis;
- void *vpData;
- int nKey;
- int nKeyThis;
- int nData;
- int nElements = 0;
- int nDeleted = 0;
- int bDelete;
- int rc;
-
- /*
- * make sure the expiration for still not-accessed session
- * cache entries is done only from time to time
- */
- if (tNow < tLast+sc->nSessionCacheTimeout)
- return;
- tLast = tNow;
-
- ssl_mutex_on(s);
- if (table_first_r(mc->tSessionCacheDataTable, &iterator,
- &vpKey, &nKey, &vpData, &nData) == TABLE_ERROR_NONE) {
- do {
- bDelete = FALSE;
- nElements++;
- if (nData < sizeof(time_t) || vpData == NULL)
- bDelete = TRUE;
- else {
- memcpy(&tExpiresAt, vpData, sizeof(time_t));
- if (tExpiresAt <= tNow)
- bDelete = TRUE;
- }
- vpKeyThis = vpKey;
- nKeyThis = nKey;
- rc = table_next_r(mc->tSessionCacheDataTable, &iterator,
- &vpKey, &nKey, &vpData, &nData);
- if (bDelete) {
- table_delete(mc->tSessionCacheDataTable,
- vpKeyThis, nKeyThis, NULL, NULL);
- nDeleted++;
- }
- } while (rc == TABLE_ERROR_NONE);
- }
- ssl_mutex_off(s);
- ssl_log(s, SSL_LOG_TRACE, "Inter-Process Session Cache (SHM) Expiry: "
- "old: %d, new: %d, removed: %d", nElements, nElements-nDeleted, nDeleted);
- return;
-}
-
-void ssl_scache_shm_status(server_rec *s, pool *p, void (*func)(char *, void *), void *arg)
-{
- SSLModConfigRec *mc = myModConfig();
- void *vpKey;
- void *vpData;
- int nKey;
- int nData;
- int nElem;
- int nSize;
- int nAverage;
-
- nElem = 0;
- nSize = 0;
- ssl_mutex_on(s);
- if (table_first(mc->tSessionCacheDataTable,
- &vpKey, &nKey, &vpData, &nData) == TABLE_ERROR_NONE) {
- do {
- if (vpKey == NULL || vpData == NULL)
- continue;
- nElem += 1;
- nSize += nData;
- } while (table_next(mc->tSessionCacheDataTable,
- &vpKey, &nKey, &vpData, &nData) == TABLE_ERROR_NONE);
- }
- ssl_mutex_off(s);
- if (nSize > 0 && nElem > 0)
- nAverage = nSize / nElem;
- else
- nAverage = 0;
- func(ap_psprintf(p, "cache type: <b>SHM</b>, maximum size: <b>%d</b> bytes<br>", mc->nSessionCacheDataSize), arg);
- func(ap_psprintf(p, "current sessions: <b>%d</b>, current size: <b>%d</b> bytes<br>", nElem, nSize), arg);
- func(ap_psprintf(p, "average session size: <b>%d</b> bytes<br>", nAverage), arg);
- return;
-}
-
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c b/usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c
index 392edec5952..8ef8759d149 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_engine_vars.c
@@ -300,8 +300,8 @@ static char *ssl_var_lookup_ssl(pool *p, conn_rec *c, char *var)
}
else if (ssl != NULL && strcEQ(var, "SESSION_ID")) {
SSL_SESSION *pSession = SSL_get_session(ssl);
- result = ap_pstrdup(p, ssl_scache_id2sz(pSession->session_id,
- pSession->session_id_length));
+ result = ap_pstrdup(p, SSL_SESSION_id2sz(pSession->session_id,
+ pSession->session_id_length));
}
else if (ssl != NULL && strlen(var) >= 6 && strcEQn(var, "CIPHER", 6)) {
result = ssl_var_lookup_ssl_cipher(p, c, var+6);
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c b/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c
index d57a8855b6c..5a8a17af12c 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.c
@@ -518,3 +518,24 @@ int SSL_CTX_use_certificate_chain(
return n;
}
+/* _________________________________________________________________
+**
+** Session Stuff
+** _________________________________________________________________
+*/
+
+char *SSL_SESSION_id2sz(unsigned char *id, int idlen)
+{
+ static char str[(SSL_MAX_SSL_SESSION_ID_LENGTH+1)*2];
+ char *cp;
+ int n;
+
+ cp = str;
+ for (n = 0; n < idlen && n < SSL_MAX_SSL_SESSION_ID_LENGTH; n++) {
+ ap_snprintf(cp, sizeof(str)-(cp-str), "%02X", id[n]);
+ cp += 2;
+ }
+ *cp = NUL;
+ return str;
+}
+
diff --git a/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.h b/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.h
index b9356fe298c..0ec9a237de4 100644
--- a/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.h
+++ b/usr.sbin/httpd/src/modules/ssl/ssl_util_ssl.h
@@ -83,6 +83,13 @@
#endif
#define SSL_set_state(ssl,val) (ssl)->state = val
+/*
+ * Maximum length of a DER encoded session.
+ * FIXME: There is no define in OpenSSL, but OpenSSL uses 1024*10,
+ * so this value should be ok. Although we have no warm feeling.
+ */
+#define SSL_SESSION_MAX_DER 1024*10
+
/*
* Additional Functions
*/
@@ -103,5 +110,6 @@ BOOL SSL_load_CrtAndKeyInfo_file(pool *, STACK_OF(X509_INFO) *, char *);
BOOL SSL_load_CrtAndKeyInfo_path(pool *, STACK_OF(X509_INFO) *, char *);
#endif /* SSL_EXPERIMENTAL_PROXY */
int SSL_CTX_use_certificate_chain(SSL_CTX *, char *, int, int (*)());
+char *SSL_SESSION_id2sz(unsigned char *, int);
#endif /* SSL_UTIL_SSL_H */
diff --git a/usr.sbin/httpd/src/modules/standard/Makefile.tmpl b/usr.sbin/httpd/src/modules/standard/Makefile.tmpl
index 7351a15bc2e..d261719a7e5 100644
--- a/usr.sbin/httpd/src/modules/standard/Makefile.tmpl
+++ b/usr.sbin/httpd/src/modules/standard/Makefile.tmpl
@@ -8,7 +8,7 @@ mod_access.o: mod_access.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_core.h \
$(INCDIR)/http_config.h $(INCDIR)/http_log.h \
$(INCDIR)/http_request.h
@@ -16,7 +16,7 @@ mod_actions.o: mod_actions.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_request.h $(INCDIR)/http_core.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_main.h \
@@ -25,12 +25,12 @@ mod_alias.o: mod_alias.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h
mod_asis.o: mod_asis.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_log.h \
$(INCDIR)/util_script.h $(INCDIR)/http_main.h \
@@ -38,7 +38,7 @@ mod_asis.o: mod_asis.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
mod_auth.o: mod_auth.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_protocol.h
@@ -46,7 +46,7 @@ mod_auth_anon.o: mod_auth_anon.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_request.h
@@ -54,7 +54,7 @@ mod_auth_db.o: mod_auth_db.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_protocol.h
@@ -62,7 +62,7 @@ mod_auth_dbm.o: mod_auth_dbm.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_protocol.h
@@ -70,7 +70,7 @@ mod_autoindex.o: mod_autoindex.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_request.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_log.h \
@@ -79,14 +79,14 @@ mod_cern_meta.o: mod_cern_meta.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/util_script.h $(INCDIR)/http_log.h \
$(INCDIR)/http_request.h
mod_cgi.o: mod_cgi.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_request.h $(INCDIR)/http_core.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_main.h \
@@ -96,7 +96,7 @@ mod_digest.o: mod_digest.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_protocol.h $(INCDIR)/util_md5.h \
@@ -104,7 +104,7 @@ mod_digest.o: mod_digest.c $(INCDIR)/httpd.h \
mod_dir.o: mod_dir.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_request.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_log.h \
@@ -112,25 +112,25 @@ mod_dir.o: mod_dir.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
mod_env.o: mod_env.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h
mod_expires.o: mod_expires.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_log.h
mod_headers.o: mod_headers.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h
mod_imap.o: mod_imap.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_request.h $(INCDIR)/http_core.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_main.h \
@@ -139,7 +139,7 @@ mod_include.o: mod_include.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_request.h $(INCDIR)/http_core.h \
$(INCDIR)/http_protocol.h $(INCDIR)/http_log.h \
@@ -147,7 +147,7 @@ mod_include.o: mod_include.c $(INCDIR)/httpd.h \
mod_info.o: mod_info.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
$(INCDIR)/http_main.h $(INCDIR)/http_protocol.h \
@@ -156,34 +156,34 @@ mod_log_agent.o: mod_log_agent.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_log.h
mod_log_config.o: mod_log_config.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h
mod_log_referer.o: mod_log_referer.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_log.h
mod_mime.o: mod_mime.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_log.h
mod_mime_magic.o: mod_mime_magic.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_request.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/http_protocol.h
@@ -191,7 +191,7 @@ mod_negotiation.o: mod_negotiation.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_request.h $(INCDIR)/http_core.h \
$(INCDIR)/http_log.h $(INCDIR)/util_script.h
@@ -199,7 +199,7 @@ mod_rewrite.o: mod_rewrite.c mod_rewrite.h $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_conf_globals.h $(INCDIR)/http_request.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h \
@@ -208,27 +208,27 @@ mod_setenvif.o: mod_setenvif.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_log.h
mod_so.o: mod_so.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_log.h
mod_speling.o: mod_speling.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_core.h \
$(INCDIR)/http_config.h $(INCDIR)/http_log.h
mod_status.o: mod_status.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h $(INCDIR)/http_protocol.h \
$(INCDIR)/http_conf_globals.h $(INCDIR)/http_main.h \
@@ -238,19 +238,19 @@ mod_unique_id.o: mod_unique_id.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_log.h $(INCDIR)/multithread.h
mod_userdir.o: mod_userdir.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h
mod_usertrack.o: mod_usertrack.c $(INCDIR)/httpd.h \
$(INCDIR)/ap_config.h $(INCDIR)/ap_mmn.h \
$(INCDIR)/ap_config_auto.h $(OSDIR)/os.h \
$(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h \
- $(INCDIR)/alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
+ $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h $(INCDIR)/ap.h \
$(INCDIR)/util_uri.h $(INCDIR)/http_config.h \
$(INCDIR)/http_core.h
diff --git a/usr.sbin/httpd/src/modules/standard/mod_auth_anon.c b/usr.sbin/httpd/src/modules/standard/mod_auth_anon.c
index a6b8b80c779..d4983f707e3 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_auth_anon.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_auth_anon.c
@@ -74,7 +74,7 @@
*
* Anonymous magic-user-id [magic-user-id]...
*
- * Anonymous_MustGiveEmail [ on | off ] default = off
+ * Anonymous_MustGiveEmail [ on | off ] default = on
* Anonymous_LogEmail [ on | off ] default = on
* Anonymous_VerifyEmail [ on | off ] default = off
* Anonymous_NoUserId [ on | off ] default = off
@@ -83,7 +83,7 @@
* The magic user id is something like 'anonymous', it is NOT case sensitive.
*
* The MustGiveEmail flag can be used to force users to enter something
- * in the password field (like an email address). Default is off.
+ * in the password field (like an email address). Default is on.
*
* Furthermore the 'NoUserID' flag can be set to allow completely empty
* usernames in as well; this can be is convenient as a single return
@@ -313,10 +313,3 @@ module MODULE_VAR_EXPORT anon_auth_module =
NULL, /* child_exit */
NULL /* post read-request */
};
-
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/standard/mod_auth_dbm.c b/usr.sbin/httpd/src/modules/standard/mod_auth_dbm.c
index bb32361a6d9..243edccdf82 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_auth_dbm.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_auth_dbm.c
@@ -74,7 +74,12 @@
#include "http_core.h"
#include "http_log.h"
#include "http_protocol.h"
-#if defined(__GLIBC__) && defined(__GLIBC_MINOR__) \
+#if defined(WIN32)
+#include <sdbm.h>
+#define dbm_open sdbm_open
+#define dbm_fetch sdbm_fetch
+#define dbm_close sdbm_close
+#elif defined(__GLIBC__) && defined(__GLIBC_MINOR__) \
&& __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1
#include <db1/ndbm.h>
#else
@@ -142,7 +147,7 @@ static const command_rec dbm_auth_cmds[] =
{NULL}
};
-module dbm_auth_module;
+module MODULE_VAR_EXPORT dbm_auth_module;
static char *get_dbm_pw(request_rec *r, char *user, char *auth_dbmpwfile)
{
@@ -311,7 +316,7 @@ static int dbm_check_auth(request_rec *r)
}
-module dbm_auth_module =
+module MODULE_VAR_EXPORT dbm_auth_module =
{
STANDARD_MODULE_STUFF,
NULL, /* initializer */
diff --git a/usr.sbin/httpd/src/modules/standard/mod_cern_meta.c b/usr.sbin/httpd/src/modules/standard/mod_cern_meta.c
index d8101948c72..b642f9ddbc4 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_cern_meta.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_cern_meta.c
@@ -396,10 +396,3 @@ module MODULE_VAR_EXPORT cern_meta_module =
NULL /* post read-request */
};
-
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/standard/mod_digest.c b/usr.sbin/httpd/src/modules/standard/mod_digest.c
index 02b8215fd9d..e82cc98d2e6 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_digest.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_digest.c
@@ -390,10 +390,3 @@ module MODULE_VAR_EXPORT digest_module =
NULL /* post read-request */
};
-
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/standard/mod_expires.c b/usr.sbin/httpd/src/modules/standard/mod_expires.c
index 5d1bf13aebf..e3b3ac28b5d 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_expires.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_expires.c
@@ -478,12 +478,14 @@ static int add_expires(request_rec *r)
};
expires = base + additional;
- ap_snprintf(age, sizeof(age), "max-age=%d", (int) expires - (int) r->request_time);
- ap_table_setn(r->headers_out, "Cache-Control", ap_pstrdup(r->pool, age));
- tzset(); /* redundant? called implicitly by localtime, at least
- * under FreeBSD
+ ap_snprintf(age, sizeof(age), "max-age=%d",
+ (int) expires - (int) r->request_time);
+ ap_table_mergen(r->headers_out, "Cache-Control", ap_pstrdup(r->pool, age));
+ tzset(); /* redundant? called implicitly by localtime,
+ * at least under FreeBSD
*/
- ap_table_setn(r->headers_out, "Expires", ap_gm_timestr_822(r->pool, expires));
+ ap_table_setn(r->headers_out, "Expires",
+ ap_gm_timestr_822(r->pool, expires));
return OK;
}
@@ -510,10 +512,3 @@ module MODULE_VAR_EXPORT expires_module =
NULL /* post read-request */
};
-
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/standard/mod_headers.c b/usr.sbin/httpd/src/modules/standard/mod_headers.c
index d3e66a55d97..3f6627c1e72 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_headers.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_headers.c
@@ -264,10 +264,4 @@ module MODULE_VAR_EXPORT headers_module =
NULL /* post read-request */
};
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/standard/mod_include.c b/usr.sbin/httpd/src/modules/standard/mod_include.c
index 65dc18823c4..f546305ac8d 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_include.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_include.c
@@ -113,7 +113,7 @@ module MODULE_VAR_EXPORT includes_module;
/* XXX: could use ap_table_overlap here */
static void add_include_vars(request_rec *r, char *timefmt)
{
-#ifndef WIN32
+#if !defined(WIN32) && !defined(NETWARE)
struct passwd *pw;
#endif /* ndef WIN32 */
table *e = r->subprocess_env;
@@ -611,7 +611,7 @@ static int include_cgi(char *s, request_rec *r)
}
ap_destroy_sub_req(rr);
-#ifndef WIN32
+#if !defined(WIN32) && !defined(NETWARE)
ap_chdir_file(r->filename);
#endif
@@ -622,6 +622,7 @@ static int include_cgi(char *s, request_rec *r)
* ensentially ensure that it does not match the regex:
* (^/|(^|/)\.\.(/|$))
* XXX: this needs os abstraction... consider c:..\foo in win32
+ * ???: No, c:../foo is not relative to ., it's potentially on another volume
*/
static int is_only_below(const char *path)
{
@@ -629,6 +630,10 @@ static int is_only_below(const char *path)
if (path[1] == ':')
return 0;
#endif
+#ifdef NETWARE
+ if (strchr(path, ':'))
+ return 0;
+#endif
if (path[0] == '/') {
return 0;
}
@@ -733,7 +738,7 @@ static int handle_include(FILE *in, request_rec *r, const char *error, int noexe
if (!error_fmt && ap_run_sub_req(rr)) {
error_fmt = "unable to include \"%s\" in parsed file %s";
}
-#ifndef WIN32
+#if !defined(WIN32) && !defined(NETWARE)
ap_chdir_file(r->filename);
#endif
if (error_fmt) {
@@ -889,7 +894,7 @@ static int handle_exec(FILE *in, request_rec *r, const char *error)
ap_rputs(error, r);
}
/* just in case some stooge changed directories */
-#ifndef WIN32
+#if !defined(WIN32) && !defined(NETWARE)
ap_chdir_file(r->filename);
#endif
}
@@ -901,7 +906,7 @@ static int handle_exec(FILE *in, request_rec *r, const char *error)
ap_rputs(error, r);
}
/* grumble groan */
-#ifndef WIN32
+#if !defined(WIN32) && !defined(NETWARE)
ap_chdir_file(r->filename);
#endif
}
@@ -2178,7 +2183,7 @@ static void send_parsed_content(FILE *f, request_rec *r)
printing = conditional_status = 1;
if_nesting = 0;
-#ifndef WIN32
+#if !defined(WIN32) && !defined(NETWARE)
ap_chdir_file(r->filename);
#endif
if (r->args) { /* add QUERY stuff to env cause it ain't yet */
@@ -2375,7 +2380,7 @@ static int send_parsed_file(request_rec *r)
}
if ((*state == xbithack_full)
-#if !defined(OS2) && !defined(WIN32)
+#if !defined(OS2) && !defined(WIN32) && !defined(NETWARE)
/* OS/2 dosen't support Groups. */
&& (r->finfo.st_mode & S_IXGRP)
#endif
@@ -2500,7 +2505,7 @@ static int send_shtml_file(request_rec *r)
static int xbithack_handler(request_rec *r)
{
-#if defined(OS2) || defined(WIN32)
+#if defined(OS2) || defined(WIN32) || defined(NETWARE)
/* OS/2 dosen't currently support the xbithack. This is being worked on. */
return DECLINED;
#else
diff --git a/usr.sbin/httpd/src/modules/standard/mod_info.c b/usr.sbin/httpd/src/modules/standard/mod_info.c
index 3dd696cd437..1175ff9026d 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_info.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_info.c
@@ -102,8 +102,26 @@ typedef struct info_cfg_lines {
struct info_cfg_lines *next;
} info_cfg_lines;
+typedef struct { /* shamelessly lifted from http_config.c */
+ char *fname;
+} info_fnames;
+
+typedef struct {
+ info_cfg_lines *clines;
+ char *fname;
+} info_clines;
+
module MODULE_VAR_EXPORT info_module;
-extern module *top_module;
+extern module API_VAR_EXPORT *top_module;
+
+/* shamelessly lifted from http_config.c */
+static int fname_alphasort(const void *fn1, const void *fn2)
+{
+ const info_fnames *f1 = fn1;
+ const info_fnames *f2 = fn2;
+
+ return strcmp(f1->fname,f2->fname);
+}
static void *create_info_config(pool *p, server_rec *s)
{
@@ -153,10 +171,10 @@ static char *mod_info_html_cmd_string(const char *string, char *buf, size_t buf_
}
/* oops, overflowed... don't overwrite */
if (t > end_buf) {
- *end_buf = '\0';
+ *end_buf = '\0';
}
else {
- *t = '\0';
+ *t = '\0';
}
return (buf);
}
@@ -172,8 +190,8 @@ static info_cfg_lines *mod_info_load_config(pool *p, const char *filename,
fp = ap_pcfg_openfile(p, filename);
if (!fp) {
ap_log_rerror(APLOG_MARK, APLOG_WARNING, r,
- "mod_info: couldn't open config file %s",
- filename);
+ "mod_info: couldn't open config file %s",
+ filename);
return NULL;
}
ret = NULL;
@@ -190,14 +208,14 @@ static info_cfg_lines *mod_info_load_config(pool *p, const char *filename,
if (prev) {
prev->next = new;
}
- t = s;
- new->cmd = ap_getword_conf(p, &t);
- if (*t) {
- new->line = ap_pstrdup(p, t);
- }
- else {
- new->line = NULL;
- }
+ t = s;
+ new->cmd = ap_getword_conf(p, &t);
+ if (*t) {
+ new->line = ap_pstrdup(p, t);
+ }
+ else {
+ new->line = NULL;
+ }
prev = new;
}
ap_cfg_closefile(fp);
@@ -324,7 +342,7 @@ static void mod_info_module_cmds(request_rec *r, info_cfg_lines *cfg,
ap_rputs(mod_info_html_cmd_string(li->line, buf, sizeof(buf)), r);
ap_rputs("</i>", r);
}
- ap_rputs("</tt>", r);
+ ap_rputs("</tt>", r);
}
}
else
@@ -354,6 +372,53 @@ static char *find_more_info(server_rec *s, const char *module_name)
return 0;
}
+static void mod_info_dirwalk(pool *p, const char *fname,
+ request_rec *r, array_header *carray)
+{
+ info_clines *cnew = NULL;
+ info_cfg_lines *mod_info_cfg_tmp = NULL;
+
+ if (!ap_is_rdirectory(fname)) {
+ mod_info_cfg_tmp = mod_info_load_config(p, fname, r);
+ cnew = (info_clines *) ap_push_array(carray);
+ cnew->fname = ap_pstrdup(p, fname);
+ cnew->clines = mod_info_cfg_tmp;
+ } else {
+ DIR *dirp;
+ struct DIR_TYPE *dir_entry;
+ int current;
+ array_header *candidates = NULL;
+ info_fnames *fnew;
+
+ dirp = ap_popendir(p, fname);
+ if (dirp == NULL) {
+ ap_log_rerror(APLOG_MARK, APLOG_WARNING, r,
+ "mod_info: couldn't open config directory %s",
+ fname);
+ return;
+ }
+ candidates = ap_make_array(p, 1, sizeof(info_fnames));
+ while ((dir_entry = readdir(dirp)) != NULL) {
+ /* strip out '.' and '..' */
+ if (strcmp(dir_entry->d_name, ".") &&
+ strcmp(dir_entry->d_name, "..")) {
+ fnew = (info_fnames *) ap_push_array(candidates);
+ fnew->fname = ap_make_full_path(p, fname, dir_entry->d_name);
+ }
+ }
+ ap_pclosedir(p, dirp);
+ if (candidates->nelts != 0) {
+ qsort((void *) candidates->elts, candidates->nelts,
+ sizeof(info_fnames), fname_alphasort);
+ for (current = 0; current < candidates->nelts; ++current) {
+ fnew = &((info_fnames *) candidates->elts)[current];
+ mod_info_dirwalk(p, fnew->fname, r, carray);
+ }
+ }
+ }
+ return;
+}
+
static int display_info(request_rec *r)
{
module *modp = NULL;
@@ -363,13 +428,14 @@ static int display_info(request_rec *r)
const handler_rec *hand = NULL;
server_rec *serv = r->server;
int comma = 0;
- info_cfg_lines *mod_info_cfg_httpd = NULL;
- info_cfg_lines *mod_info_cfg_srm = NULL;
- info_cfg_lines *mod_info_cfg_access = NULL;
+ array_header *allconfigs = NULL;
+ info_clines *cnew = NULL;
+ int current;
+ char *relpath;
r->allowed |= (1 << M_GET);
if (r->method_number != M_GET)
- return DECLINED;
+ return DECLINED;
r->content_type = "text/html";
ap_send_http_header(r);
@@ -379,15 +445,16 @@ static int display_info(request_rec *r)
ap_hard_timeout("send server info", r);
ap_rputs(DOCTYPE_HTML_3_2
- "<html><head><title>Server Information</title></head>\n", r);
+ "<html><head><title>Server Information</title></head>\n", r);
ap_rputs("<body><h1 align=center>Apache Server Information</h1>\n", r);
if (!r->args || strcasecmp(r->args, "list")) {
+ allconfigs = ap_make_array(r->pool, 1, sizeof(info_clines));
cfname = ap_server_root_relative(r->pool, ap_server_confname);
- mod_info_cfg_httpd = mod_info_load_config(r->pool, cfname, r);
+ mod_info_dirwalk(r->pool, cfname, r, allconfigs);
cfname = ap_server_root_relative(r->pool, serv->srm_confname);
- mod_info_cfg_srm = mod_info_load_config(r->pool, cfname, r);
+ mod_info_dirwalk(r->pool, cfname, r, allconfigs);
cfname = ap_server_root_relative(r->pool, serv->access_confname);
- mod_info_cfg_access = mod_info_load_config(r->pool, cfname, r);
+ mod_info_dirwalk(r->pool, cfname, r, allconfigs);
if (!r->args) {
ap_rputs("<tt><a href=\"#server\">Server Settings</a>, ", r);
for (modp = top_module; modp; modp = modp->next) {
@@ -590,8 +657,8 @@ static int display_info(request_rec *r)
while (cmd) {
if (cmd->name) {
ap_rprintf(r, "<dd><tt>%s - <i>",
- mod_info_html_cmd_string(cmd->name,
- buf, sizeof(buf)));
+ mod_info_html_cmd_string(cmd->name,
+ buf, sizeof(buf)));
if (cmd->errmsg) {
ap_rputs(cmd->errmsg, r);
}
@@ -603,12 +670,16 @@ static int display_info(request_rec *r)
cmd++;
}
ap_rputs("<dt><strong>Current Configuration:</strong>\n", r);
- mod_info_module_cmds(r, mod_info_cfg_httpd, modp->cmds,
- "httpd.conf");
- mod_info_module_cmds(r, mod_info_cfg_srm, modp->cmds,
- "srm.conf");
- mod_info_module_cmds(r, mod_info_cfg_access, modp->cmds,
- "access.conf");
+ for (current = 0; current < allconfigs->nelts; ++current) {
+ cnew = &((info_clines *) allconfigs->elts)[current];
+ /* get relative pathname with some safeguards */
+ relpath = ap_stripprefix(cnew->fname,ap_server_root);
+ if (*relpath != '\0' && relpath != cnew->fname &&
+ *relpath == '/')
+ relpath++;
+ mod_info_module_cmds(r, cnew->clines, modp->cmds,
+ relpath);
+ }
}
else {
ap_rputs("<tt> none</tt>\n", r);
@@ -694,10 +765,3 @@ module MODULE_VAR_EXPORT info_module =
NULL /* post read-request */
};
-
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/standard/mod_log_config.c b/usr.sbin/httpd/src/modules/standard/mod_log_config.c
index e92d78b9bb0..0866441369c 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_log_config.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_log_config.c
@@ -183,7 +183,7 @@
module MODULE_VAR_EXPORT config_log_module;
static int xfer_flags = (O_WRONLY | O_APPEND | O_CREAT);
-#if defined(OS2) || defined(WIN32)
+#if defined(OS2) || defined(WIN32) || defined(NETWARE)
/* OS/2 dosen't support users and groups */
static mode_t xfer_mode = (S_IREAD | S_IWRITE);
#else
diff --git a/usr.sbin/httpd/src/modules/standard/mod_mime.c b/usr.sbin/httpd/src/modules/standard/mod_mime.c
index 8b27d141e90..e5c8df65027 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_mime.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_mime.c
@@ -75,9 +75,9 @@
*/
#define ap_isascii(c) ((OS_ASC(c) & 0x80) == 0)
-typedef struct handlers_info {
+typedef struct attrib_info {
char *name;
-} handlers_info;
+} attrib_info;
typedef struct {
table *forced_types; /* Additional AddTyped stuff */
@@ -85,7 +85,9 @@ typedef struct {
table *charset_types; /* Added with AddCharset... */
table *language_types; /* Added with AddLanguage... */
table *handlers; /* Added with AddHandler... */
- array_header *handlers_remove; /* List of handlers to remove */
+ array_header *handlers_remove; /* List of handlers to remove */
+ array_header *types_remove; /* List of MIME types to remove */
+ array_header *encodings_remove; /* List of encodings to remove */
char *type; /* Type forced with ForceType */
char *handler; /* Handler forced with SetHandler */
@@ -122,7 +124,9 @@ static void *create_mime_dir_config(pool *p, char *dummy)
new->charset_types = ap_make_table(p, 4);
new->language_types = ap_make_table(p, 4);
new->handlers = ap_make_table(p, 4);
- new->handlers_remove = ap_make_array(p, 4, sizeof(handlers_info));
+ new->handlers_remove = ap_make_array(p, 4, sizeof(attrib_info));
+ new->types_remove = ap_make_array(p, 4, sizeof(attrib_info));
+ new->encodings_remove = ap_make_array(p, 4, sizeof(attrib_info));
new->type = NULL;
new->handler = NULL;
@@ -138,23 +142,31 @@ static void *merge_mime_dir_configs(pool *p, void *basev, void *addv)
mime_dir_config *new =
(mime_dir_config *) ap_palloc(p, sizeof(mime_dir_config));
int i;
- handlers_info *hand;
-
- hand = (handlers_info *) add->handlers_remove->elts;
- for (i = 0; i < add->handlers_remove->nelts; i++) {
- ap_table_unset(base->handlers, hand[i].name);
- }
+ attrib_info *suffix;
new->forced_types = ap_overlay_tables(p, add->forced_types,
- base->forced_types);
+ base->forced_types);
new->encoding_types = ap_overlay_tables(p, add->encoding_types,
- base->encoding_types);
+ base->encoding_types);
new->charset_types = ap_overlay_tables(p, add->charset_types,
base->charset_types);
new->language_types = ap_overlay_tables(p, add->language_types,
- base->language_types);
+ base->language_types);
new->handlers = ap_overlay_tables(p, add->handlers,
- base->handlers);
+ base->handlers);
+
+ suffix = (attrib_info *) add->handlers_remove->elts;
+ for (i = 0; i < add->handlers_remove->nelts; i++) {
+ ap_table_unset(new->handlers, suffix[i].name);
+ }
+ suffix = (attrib_info *) add->types_remove->elts;
+ for (i = 0; i < add->types_remove->nelts; i++) {
+ ap_table_unset(new->forced_types, suffix[i].name);
+ }
+ suffix = (attrib_info *) add->encodings_remove->elts;
+ for (i = 0; i < add->encodings_remove->nelts; i++) {
+ ap_table_unset(new->encoding_types, suffix[i].name);
+ }
new->type = add->type ? add->type : base->type;
new->handler = add->handler ? add->handler : base->handler;
@@ -225,13 +237,47 @@ static const char *add_handler(cmd_parms *cmd, mime_dir_config *m, char *hdlr,
static const char *remove_handler(cmd_parms *cmd, void *m, char *ext)
{
mime_dir_config *mcfg = (mime_dir_config *) m;
- handlers_info *hand;
+ attrib_info *suffix;
+
+ if (*ext == '.') {
+ ++ext;
+ }
+ suffix = (attrib_info *) ap_push_array(mcfg->handlers_remove);
+ suffix->name = ap_pstrdup(cmd->pool, ext);
+ return NULL;
+}
+
+/*
+ * Just like the previous function, except that it records encoding
+ * associations to be undone.
+ */
+static const char *remove_encoding(cmd_parms *cmd, void *m, char *ext)
+{
+ mime_dir_config *mcfg = (mime_dir_config *) m;
+ attrib_info *suffix;
+
+ if (*ext == '.') {
+ ++ext;
+ }
+ suffix = (attrib_info *) ap_push_array(mcfg->encodings_remove);
+ suffix->name = ap_pstrdup(cmd->pool, ext);
+ return NULL;
+}
+
+/*
+ * Similar to the previous functions, except that it deals with filename
+ * suffix/MIME-type associations.
+ */
+static const char *remove_type(cmd_parms *cmd, void *m, char *ext)
+{
+ mime_dir_config *mcfg = (mime_dir_config *) m;
+ attrib_info *suffix;
if (*ext == '.') {
++ext;
}
- hand = (handlers_info *) ap_push_array(mcfg->handlers_remove);
- hand->name = ap_pstrdup(cmd->pool, ext);
+ suffix = (attrib_info *) ap_push_array(mcfg->types_remove);
+ suffix->name = ap_pstrdup(cmd->pool, ext);
return NULL;
}
@@ -262,6 +308,10 @@ static const command_rec mime_cmds[] =
"a media type"},
{"RemoveHandler", remove_handler, NULL, OR_FILEINFO, ITERATE,
"one or more file extensions"},
+ {"RemoveEncoding", remove_encoding, NULL, OR_FILEINFO, ITERATE,
+ "one or more file extensions"},
+ {"RemoveType", remove_type, NULL, OR_FILEINFO, ITERATE,
+ "one or more file extensions"},
{"SetHandler", ap_set_string_slot_lower,
(void *)XtOffsetOf(mime_dir_config, handler), OR_FILEINFO, TAKE1,
"a handler name"},
diff --git a/usr.sbin/httpd/src/modules/standard/mod_negotiation.c b/usr.sbin/httpd/src/modules/standard/mod_negotiation.c
index 5f7411260c2..d69cf640ae2 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_negotiation.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_negotiation.c
@@ -2172,7 +2172,7 @@ static void set_neg_headers(request_rec *r, negotiation_state *neg,
* content-length, which currently leads to the correct result).
*/
if (!(variant->sub_req && variant->sub_req->handler)
- && (len = find_content_length(neg, variant)) != 0) {
+ && (len = (long)find_content_length(neg, variant)) != 0) {
lenstr = (char *) ap_palloc(r->pool, 22);
ap_snprintf(lenstr, 22, "%ld", len);
diff --git a/usr.sbin/httpd/src/modules/standard/mod_rewrite.c b/usr.sbin/httpd/src/modules/standard/mod_rewrite.c
index ec5d64ba1aa..6e4e6bf78f0 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_rewrite.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_rewrite.c
@@ -2258,50 +2258,30 @@ static void do_expand(request_rec *r, char *input, char *buffer, int nbuf,
/* now we have a '$' or a '%' */
if (inp[1] == '{') {
char *endp;
- endp = find_closing_bracket(inp+2, '{', '}');
+ endp = strchr(inp, '}');
if (endp == NULL) {
goto skip;
}
*endp = '\0';
if (inp[0] == '$') {
/* ${...} map lookup expansion */
- /*
- * To make rewrite maps useful the lookup key and
- * default values must be expanded, so we make
- * recursive calls to do the work. For security
- * reasons we must never expand a string that includes
- * verbatim data from the network. The recursion here
- * isn't a problem because the result of expansion is
- * only passed to lookup_map() so it cannot be
- * re-expanded, only re-looked-up. Another way of
- * looking at it is that the recursion is entirely
- * driven by the syntax of the nested curly brackets.
- */
char *key, *dflt, *result;
- char xkey[MAX_STRING_LEN];
- char xdflt[MAX_STRING_LEN];
- char *empty = "";
key = strchr(inp, ':');
if (key == NULL) {
goto skip;
}
*key++ = '\0';
dflt = strchr(key, '|');
- if (dflt == NULL) {
- dflt = empty;
- }
- else {
+ if (dflt) {
*dflt++ = '\0';
}
- do_expand(r, key, xkey, sizeof(xkey), briRR, briRC);
- do_expand(r, dflt, xdflt, sizeof(xdflt), briRR, briRC);
- result = lookup_map(r, inp+2, xkey);
+ result = lookup_map(r, inp+2, key);
if (result == NULL) {
- result = xdflt;
+ result = dflt ? dflt : "";
}
span = ap_cpystrn(outp, result, space) - outp;
key[-1] = ':';
- if (dflt != empty) {
+ if (dflt) {
dflt[-1] = '|';
}
}
@@ -4172,26 +4152,4 @@ static int compare_lexicography(char *cpNum1, char *cpNum2)
return 0;
}
-/*
-**
-** Find end of bracketed expression
-** s points after the opening bracket
-**
-*/
-
-static char *find_closing_bracket(char *s, int left, int right)
-{
- int depth;
-
- for (depth = 1; *s; ++s) {
- if (*s == right && --depth == 0) {
- return s;
- }
- else if (*s == left) {
- ++depth;
- }
- }
- return NULL;
-}
-
/*EOF*/
diff --git a/usr.sbin/httpd/src/modules/standard/mod_setenvif.c b/usr.sbin/httpd/src/modules/standard/mod_setenvif.c
index 27eef0aec94..1f9fb1fbbca 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_setenvif.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_setenvif.c
@@ -145,7 +145,16 @@ typedef struct {
module MODULE_VAR_EXPORT setenvif_module;
-static void *create_setenvif_config(pool *p, server_rec *dummy)
+/*
+ * These routines, the create- and merge-config functions, are called
+ * for both the server-wide and the per-directory contexts. This is
+ * because the different definitions are used at different times; the
+ * server-wide ones are used in the post-read-request phase, and the
+ * per-directory ones are used during the header-parse phase (after
+ * the URI has been mapped to a file and we have anything from the
+ * .htaccess file and <Directory> and <Files> containers).
+ */
+static void *create_setenvif_config(pool *p)
{
sei_cfg_rec *new = (sei_cfg_rec *) ap_palloc(p, sizeof(sei_cfg_rec));
@@ -153,6 +162,16 @@ static void *create_setenvif_config(pool *p, server_rec *dummy)
return (void *) new;
}
+static void *create_setenvif_config_svr(pool *p, server_rec *dummy)
+{
+ return create_setenvif_config(p);
+}
+
+static void *create_setenvif_config_dir(pool *p, char *dummy)
+{
+ return create_setenvif_config(p);
+}
+
static void *merge_setenvif_config(pool *p, void *basev, void *overridesv)
{
sei_cfg_rec *a = ap_pcalloc(p, sizeof(sei_cfg_rec));
@@ -163,24 +182,38 @@ static void *merge_setenvif_config(pool *p, void *basev, void *overridesv)
return a;
}
-/* any non-NULL magic constant will do... used to indicate if REG_ICASE should
+/*
+ * any non-NULL magic constant will do... used to indicate if REG_ICASE should
* be used
*/
#define ICASE_MAGIC ((void *)(&setenvif_module))
+#define SEI_MAGIC_HEIRLOOM "setenvif-phase-flag"
static const char *add_setenvif_core(cmd_parms *cmd, void *mconfig,
char *fname, const char *args)
{
char *regex;
const char *feature;
- sei_cfg_rec *sconf = ap_get_module_config(cmd->server->module_config,
- &setenvif_module);
- sei_entry *new, *entries = (sei_entry *) sconf->conditionals->elts;
+ sei_cfg_rec *sconf;
+ sei_entry *new;
+ sei_entry *entries;
char *var;
int i;
int beenhere = 0;
unsigned icase;
+ int perdir;
+ /*
+ * Determine from our context into which record to put the entry.
+ * cmd->path == NULL means we're in server-wide context; otherwise,
+ * we're dealing with a per-directory setting.
+ */
+ perdir = (cmd->path != NULL);
+ sconf = perdir
+ ? (sei_cfg_rec *) mconfig
+ : (sei_cfg_rec *) ap_get_module_config(cmd->server->module_config,
+ &setenvif_module);
+ entries = (sei_entry *) sconf->conditionals->elts;
/* get regex */
regex = ap_getword_conf(cmd->pool, &args);
if (!*regex) {
@@ -202,7 +235,7 @@ static const char *add_setenvif_core(cmd_parms *cmd, void *mconfig,
}
}
- /* if the last entry has an idential headername and regex then
+ /* if the last entry has an identical headername and regex then
* merge with it
*/
i = sconf->conditionals->nelts - 1;
@@ -307,28 +340,45 @@ static const char *add_browser(cmd_parms *cmd, void *mconfig, const char *args)
static const command_rec setenvif_module_cmds[] =
{
{ "SetEnvIf", add_setenvif, NULL,
- RSRC_CONF, RAW_ARGS, "A header-name, regex and a list of variables." },
+ OR_FILEINFO, RAW_ARGS, "A header-name, regex and a list of variables." },
{ "SetEnvIfNoCase", add_setenvif, ICASE_MAGIC,
- RSRC_CONF, RAW_ARGS, "a header-name, regex and a list of variables." },
+ OR_FILEINFO, RAW_ARGS, "a header-name, regex and a list of variables." },
{ "BrowserMatch", add_browser, NULL,
- RSRC_CONF, RAW_ARGS, "A browser regex and a list of variables." },
+ OR_FILEINFO, RAW_ARGS, "A browser regex and a list of variables." },
{ "BrowserMatchNoCase", add_browser, ICASE_MAGIC,
- RSRC_CONF, RAW_ARGS, "A browser regex and a list of variables." },
+ OR_FILEINFO, RAW_ARGS, "A browser regex and a list of variables." },
{ NULL },
};
+/*
+ * This routine gets called at two different points in request processing:
+ * once before the URI has been translated (during the post-read-request
+ * phase) and once after (during the header-parse phase). We use different
+ * config records for the two different calls to reduce overhead (by not
+ * re-doing the server-wide settings during directory processing), and
+ * signal which call it is by having the earlier one pass a flag to the
+ * later one.
+ */
static int match_headers(request_rec *r)
{
- server_rec *s = r->server;
sei_cfg_rec *sconf;
sei_entry *entries;
table_entry *elts;
const char *val;
int i, j;
+ int perdir;
char *last_name;
- sconf = (sei_cfg_rec *) ap_get_module_config(s->module_config,
- &setenvif_module);
+ perdir = (ap_table_get(r->notes, SEI_MAGIC_HEIRLOOM) != NULL);
+ if (! perdir) {
+ ap_table_set(r->notes, SEI_MAGIC_HEIRLOOM, "post-read done");
+ sconf = (sei_cfg_rec *) ap_get_module_config(r->server->module_config,
+ &setenvif_module);
+ }
+ else {
+ sconf = (sei_cfg_rec *) ap_get_module_config(r->per_dir_config,
+ &setenvif_module);
+ }
entries = (sei_entry *) sconf->conditionals->elts;
last_name = NULL;
val = NULL;
@@ -403,9 +453,9 @@ module MODULE_VAR_EXPORT setenvif_module =
{
STANDARD_MODULE_STUFF,
NULL, /* initializer */
- NULL, /* dir config creater */
- NULL, /* dir merger --- default is to override */
- create_setenvif_config, /* server config */
+ create_setenvif_config_dir, /* dir config creater */
+ merge_setenvif_config, /* dir merger --- default is to override */
+ create_setenvif_config_svr, /* server config */
merge_setenvif_config, /* merge server configs */
setenvif_module_cmds, /* command table */
NULL, /* handlers */
@@ -416,7 +466,7 @@ module MODULE_VAR_EXPORT setenvif_module =
NULL, /* type_checker */
NULL, /* fixups */
NULL, /* logger */
- NULL, /* input header parse */
+ match_headers, /* input header parse */
NULL, /* child (process) initialization */
NULL, /* child (process) rundown */
match_headers /* post_read_request */
diff --git a/usr.sbin/httpd/src/modules/standard/mod_speling.c b/usr.sbin/httpd/src/modules/standard/mod_speling.c
index 1e3a1b34ff2..639ea516d12 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_speling.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_speling.c
@@ -558,9 +558,3 @@ module MODULE_VAR_EXPORT speling_module =
NULL /* post read-request */
};
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/standard/mod_status.c b/usr.sbin/httpd/src/modules/standard/mod_status.c
index c6786a212ab..19c4a8e4ea0 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_status.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_status.c
@@ -812,9 +812,3 @@ module MODULE_VAR_EXPORT status_module =
NULL /* post read-request */
};
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/modules/standard/mod_unique_id.c b/usr.sbin/httpd/src/modules/standard/mod_unique_id.c
index 63474ed1feb..53b5a581d24 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_unique_id.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_unique_id.c
@@ -129,16 +129,18 @@ typedef struct {
/*
* Sun Jun 7 05:43:49 CEST 1998 -- Alvaro
* More comments:
- * 1) The UUencoding prodecure is now done in a general way, avoiding the problems
- * with sizes and paddings that can arise depending on the architecture. Now the
- * offsets and sizes of the elements of the unique_id_rec structure are calculated
- * in unique_id_global_init; and then used to duplicate the structure without the
- * paddings that might exist. The multithreaded server fix should be now very easy:
- * just add a new "tid" field to the unique_id_rec structure, and increase by one
- * UNIQUE_ID_REC_MAX.
- * 2) unique_id_rec.stamp has been changed from "time_t" to "unsigned int", because
- * its size is 64bits on some platforms (linux/alpha), and this caused problems with
- * htonl/ntohl. Well, this shouldn't be a problem till year 2106.
+ * 1) The UUencoding prodecure is now done in a general way, avoiding
+ * the problems with sizes and paddings that can arise depending on
+ * the architecture. Now the offsets and sizes of the elements of the
+ * unique_id_rec structure are calculated in unique_id_global_init;
+ * and then used to duplicate the structure without the paddings that
+ * might exist. The multithreaded server fix should be now very easy:
+ * just add a new "tid" field to the unique_id_rec structure, and
+ * increase by one UNIQUE_ID_REC_MAX.
+ * 2) unique_id_rec.stamp has been changed from "time_t" to
+ * "unsigned int", because its size is 64bits on some platforms
+ * (linux/alpha), and this caused problems with htonl/ntohl. Well,
+ * this shouldn't be a problem till year 2106.
*/
static unsigned global_in_addr;
@@ -192,22 +194,23 @@ static void unique_id_global_init(server_rec *s, pool *p)
*/
if (gethostname(str, sizeof(str) - 1) != 0) {
ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ALERT, s,
- "gethostname: mod_unique_id requires the hostname of the server");
+ "gethostname: mod_unique_id requires the "
+ "hostname of the server");
exit(1);
}
str[sizeof(str) - 1] = '\0';
if ((hent = gethostbyname(str)) == NULL) {
ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_ALERT, s,
- "mod_unique_id: unable to gethostbyname(\"%s\")", str);
+ "mod_unique_id: unable to gethostbyname(\"%s\")", str);
exit(1);
}
global_in_addr = ((struct in_addr *) hent->h_addr_list[0])->s_addr;
ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_INFO, s,
- "mod_unique_id: using ip addr %s",
- inet_ntoa(*(struct in_addr *) hent->h_addr_list[0]));
+ "mod_unique_id: using ip addr %s",
+ inet_ntoa(*(struct in_addr *) hent->h_addr_list[0]));
/*
* If the server is pummelled with restart requests we could possibly end
@@ -263,7 +266,7 @@ static void unique_id_child_init(server_rec *s, pool *p)
*/
if (cur_unique_id.pid != pid) {
ap_log_error(APLOG_MARK, APLOG_NOERRNO|APLOG_CRIT, s,
- "oh no! pids are greater than 32-bits! I'm broken!");
+ "oh no! pids are greater than 32-bits! I'm broken!");
}
cur_unique_id.in_addr = global_in_addr;
@@ -328,7 +331,8 @@ static int gen_unique_id(request_rec *r)
/* copy the unique_id if this is an internal redirect (we're never
* actually called for sub requests, so we don't need to test for
* them) */
- if (r->prev && (e = ap_table_get(r->subprocess_env, "REDIRECT_UNIQUE_ID"))) {
+ if (r->prev
+ && (e = ap_table_get(r->subprocess_env, "REDIRECT_UNIQUE_ID"))) {
ap_table_setn(r->subprocess_env, "UNIQUE_ID", e);
return DECLINED;
}
@@ -336,7 +340,8 @@ static int gen_unique_id(request_rec *r)
cur_unique_id.stamp = htonl((unsigned int)r->request_time);
/* we'll use a temporal buffer to avoid uuencoding the possible internal
- * paddings of the original structure */
+ * paddings of the original structure
+ */
x = (unsigned char *) &paddedbuf;
y = (unsigned char *) &cur_unique_id;
k = 0;
@@ -347,7 +352,8 @@ static int gen_unique_id(request_rec *r)
}
}
/*
- * We reset two more bytes just in case padding is needed for the uuencoding.
+ * We reset two more bytes just in case padding is needed for
+ * the uuencoding.
*/
x[k++] = '\0';
x[k++] = '\0';
@@ -359,9 +365,13 @@ static int gen_unique_id(request_rec *r)
y = x + i;
str[k++] = uuencoder[y[0] >> 2];
str[k++] = uuencoder[((y[0] & 0x03) << 4) | ((y[1] & 0xf0) >> 4)];
- if (k == unique_id_rec_size_uu) break;
+ if (k == unique_id_rec_size_uu) {
+ break;
+ }
str[k++] = uuencoder[((y[1] & 0x0f) << 2) | ((y[2] & 0xc0) >> 6)];
- if (k == unique_id_rec_size_uu) break;
+ if (k == unique_id_rec_size_uu) {
+ break;
+ }
str[k++] = uuencoder[y[2] & 0x3f];
}
str[k++] = '\0';
@@ -376,7 +386,6 @@ static int gen_unique_id(request_rec *r)
return DECLINED;
}
-
module MODULE_VAR_EXPORT unique_id_module = {
STANDARD_MODULE_STUFF,
unique_id_global_init, /* initializer */
diff --git a/usr.sbin/httpd/src/modules/standard/mod_userdir.c b/usr.sbin/httpd/src/modules/standard/mod_userdir.c
index 829f8e22335..4ea680489ae 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_userdir.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_userdir.c
@@ -268,11 +268,13 @@ static int translate_userdir(request_rec *r)
* redirected to a URL or to a file on some drive. Since I
* know of no protocols that are a single letter, if the : is
* the second character, I will assume a file was specified
+ *
+ * Still no good for NETWARE, since : is embedded (sys:/home)
*/
if (strchr(x + 2, ':'))
#else
if (strchr(x, ':'))
-#endif /* WIN32 */
+#endif /* def HAVE_DRIVE_LETTERS */
{
redirect = ap_pstrcat(r->pool, x, w, userdir, dname, NULL);
ap_table_setn(r->headers_out, "Location", redirect);
diff --git a/usr.sbin/httpd/src/modules/standard/mod_usertrack.c b/usr.sbin/httpd/src/modules/standard/mod_usertrack.c
index 95983028564..1595e0e0a84 100644
--- a/usr.sbin/httpd/src/modules/standard/mod_usertrack.c
+++ b/usr.sbin/httpd/src/modules/standard/mod_usertrack.c
@@ -384,10 +384,4 @@ module MODULE_VAR_EXPORT usertrack_module = {
};
-#ifdef NETWARE
-int main(int argc, char *argv[])
-{
- ExitThread(TSR_THREAD, 0);
-}
-#endif
diff --git a/usr.sbin/httpd/src/os/bs2000/Makefile.tmpl b/usr.sbin/httpd/src/os/bs2000/Makefile.tmpl
index e56c1b618ca..92f627f689f 100644
--- a/usr.sbin/httpd/src/os/bs2000/Makefile.tmpl
+++ b/usr.sbin/httpd/src/os/bs2000/Makefile.tmpl
@@ -46,7 +46,7 @@ bs2login.o: $(INCDIR)/ap_config_auto.h
bs2login.o: os.h
bs2login.o: $(INCDIR)/ap_ctype.h
bs2login.o: $(INCDIR)/hsregex.h
-bs2login.o: $(INCDIR)/alloc.h
+bs2login.o: $(INCDIR)/ap_alloc.h
bs2login.o: $(INCDIR)/buff.h
bs2login.o: $(INCDIR)/ap.h
bs2login.o: ebcdic.h
@@ -76,7 +76,7 @@ os.o: $(INCDIR)/ap_config_auto.h
os.o: os.h
os.o: $(INCDIR)/ap_ctype.h
os.o: $(INCDIR)/hsregex.h
-os.o: $(INCDIR)/alloc.h
+os.o: $(INCDIR)/ap_alloc.h
os.o: $(INCDIR)/buff.h
os.o: $(INCDIR)/ap.h
os.o: ebcdic.h
diff --git a/usr.sbin/httpd/src/os/bs2000/ebcdic.h b/usr.sbin/httpd/src/os/bs2000/ebcdic.h
index 3549b26901b..5bd6117fa58 100644
--- a/usr.sbin/httpd/src/os/bs2000/ebcdic.h
+++ b/usr.sbin/httpd/src/os/bs2000/ebcdic.h
@@ -1,11 +1,11 @@
#ifndef AP_EBCDIC_H
-#define AP_EBCDIC_H "$Id: ebcdic.h,v 1.3 2000/03/19 11:17:32 beck Exp $"
+#define AP_EBCDIC_H "$Id: ebcdic.h,v 1.4 2000/12/15 22:18:27 beck Exp $"
#include <sys/types.h>
extern const unsigned char os_toascii[256];
extern const unsigned char os_toebcdic[256];
-void *ebcdic2ascii(void *dest, const void *srce, size_t count);
-void *ascii2ebcdic(void *dest, const void *srce, size_t count);
+API_EXPORT(void *) ebcdic2ascii(void *dest, const void *srce, size_t count);
+API_EXPORT(void *) ascii2ebcdic(void *dest, const void *srce, size_t count);
#endif /*AP_EBCDIC_H*/
diff --git a/usr.sbin/httpd/src/os/bs2000/os.c b/usr.sbin/httpd/src/os/bs2000/os.c
index a23e245f77e..6a261631f92 100644
--- a/usr.sbin/httpd/src/os/bs2000/os.c
+++ b/usr.sbin/httpd/src/os/bs2000/os.c
@@ -102,3 +102,6 @@ int ap_checkconv(struct request_rec *r)
return convert_to_ascii;
}
+#ifdef HAVE_DLFCN_H
+#include "../unix/os.c"
+#endif
diff --git a/usr.sbin/httpd/src/os/bs2000/os.h b/usr.sbin/httpd/src/os/bs2000/os.h
index 1ede0813f2e..7bda3479b98 100644
--- a/usr.sbin/httpd/src/os/bs2000/os.h
+++ b/usr.sbin/httpd/src/os/bs2000/os.h
@@ -32,7 +32,7 @@ extern int ap_os_is_path_absolute(const char *file);
#define ap_os_is_filename_valid(f) (1)
#define ap_os_kill(pid, sig) kill(pid, sig)
-#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE)
+#if !defined(_POSIX_SOURCE) && !defined(_XOPEN_SOURCE) && !defined(HAVE_RINI_STRUCT)
typedef struct {
char *username;
char *account;
diff --git a/usr.sbin/httpd/src/os/mpeix/Makefile.tmpl b/usr.sbin/httpd/src/os/mpeix/Makefile.tmpl
index 6cf10dedf61..827f3dc9b60 100644
--- a/usr.sbin/httpd/src/os/mpeix/Makefile.tmpl
+++ b/usr.sbin/httpd/src/os/mpeix/Makefile.tmpl
@@ -4,11 +4,11 @@ INCLUDES=$(INCLUDES1) $(INCLUDES0) $(EXTRA_INCLUDES)
LDFLAGS=$(LDFLAGS1) $(EXTRA_LDFLAGS)
LIBOBJS= os.o os-inline.o dlopen.o gettimeofday.o
-OBJS= $(LIBOBJS) mpe_dl_stub.o
+OBJS= $(LIBOBJS)
LIB= libos.a
-all: $(LIB) mpe_dl_stub.o
+all: $(LIB)
$(LIB): $(LIBOBJS)
rm -f $@
@@ -41,7 +41,6 @@ $(OBJS): Makefile
# DO NOT REMOVE
dlopen.o: dlopen.c
gettimeofday.o: gettimeofday.c
-mpe_dl_stub.o: mpe_dl_stub.c
os-inline.o: os-inline.c $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(OSDIR)/os.h $(INCDIR)/ap_ctype.h $(INCDIR)/hsregex.h
diff --git a/usr.sbin/httpd/src/os/mpeix/README b/usr.sbin/httpd/src/os/mpeix/README
index 33b6a3ff64e..81c23bc950c 100644
--- a/usr.sbin/httpd/src/os/mpeix/README
+++ b/usr.sbin/httpd/src/os/mpeix/README
@@ -1,5 +1,274 @@
-For the latest info about Apache for MPE/iX, please see:
+ Using Apache With HP MPE/iX
- http://jazz.external.hp.com/src/apache/index.html
- or
- http://www.bixby.org/mark/apacheix.html
+This document explains how to compile, install, configure and run Apache
+1.3 under HP MPE/iX.
+
+The bug reporting page and new-httpd mailing list are NOT provided to
+answer questions about configuration or running Apache. Before you submit a
+bug report or request, first consult this document, the Frequently Asked
+Questions page and the other relevant documentation topics. If you still
+have a question or problem, post it to the comp.sys.hp.mpe newsgroup or the
+associated HP3000-L mailing list, where many Apache users and several
+contributors are more than willing to answer new and obscure questions
+about using Apache on MPE/iX.
+
+deja.com's newsgroup archives offer easy browsing of previous questions.
+Searching the newsgroup archives, you will usually find your question was
+already asked and answered by other users!
+
+---------------------------------------------------------------------------
+
+ * Requirements
+ * Implementation Considerations
+ * Binary Distributions
+ * Create the Accounting Structure
+ * Downloading Apache
+ * Compiling Apache
+ * Installing Apache
+ * Configuring Apache
+ * Running Apache
+ * Controlling Apache
+
+---------------------------------------------------------------------------
+
+Requirements
+
+Apache 1.3 requires MPE/iX 6.0 or greater. It will NOT run on earlier
+releases of MPE/iX. The following MPE/iX patches (or their superseding
+descendants) are relevant to Apache:
+
+ * MPE/iX 6.0:
+ o MPEKXT3B - fixes an MPE bug that results in transient "permission
+ denied" errors being returned by the server to the browser.
+ o MPELX36A - enhances the kill() function so that MPE users with SM
+ capability can send signals to Apache for shutdown, restart, etc.
+ o MPELX44C - fixes an MPE bug that prevents DSO modules from being
+ dynamically loaded.
+ o MPELX51C - enhances the kill() function so that Apache can use it
+ when the Apache parent UID is different from the Apache children
+ UID (strongly recommended).
+ o NSTxxxxx - the latest network transport patch should always be
+ installed when using TCP/IP applications such as Apache.
+ * MPE/iX 6.5:
+ o MPELX44D - fixes an MPE bug that prevents DSO modules from being
+ dynamically loaded.
+ o MPELX51D - enhances the kill() function so that Apache can use it
+ when the Apache parent UID is different from the Apache children
+ UID (strongly recommended).
+ o NSTxxxxx - the latest network transport patch should always be
+ installed when using TCP/IP applications such as Apache.
+
+---------------------------------------------------------------------------
+
+Implementation Considerations
+
+While MPE has a very good POSIX implementation that enables fairly simple
+porting of Unix applications such as Apache, there are some Unix concepts
+which just don't exist or aren't fully implemented in MPE, and so this may
+force some functionality changes in the package being ported.
+
+Significant MPE vs. Unix OS differences
+
+ * MPE lacks the concept of a Unix UID=0 root user with special
+ privileges. Where Unix functions require a user to be executing as
+ root, MPE requires the user to be executing in priv mode, so the
+ program file must be linked with PM (Priv Mode) capability, and the
+ Unix function calls must be bracketed by GETPRIVMODE() and
+ GETUSERMODE() calls. The following Unix functions used by Apache are
+ affected:
+ o bind() for ports less than 1024
+ o setgid()
+ o setuid()
+ * MPE's support for UIDs and GIDs is more limited than Unix. Every MPE
+ account maps to a unique GID. Each MPE account can contain multiple
+ MPE users, and every MPE user maps to a unique UID (UID 0 is not
+ supported). The current UID for a process must correspond to an MPE
+ user within the MPE account that corresponds to the current GID of the
+ process.
+ * MPE child processes cannot survive the death of their parent. When
+ the parent terminates, any remaining children will be killed.
+ * MPE doesn't initialize the envp parameter when invoking the main() of
+ a new process. Use the global variable environ instead of envp.
+ * MPE link() exists, but always returns EIMPL. Use rename() or symlinks
+ instead of hard links.
+ * MPE doesn't allow the @ character in filenames.
+ * MPE lacks support for TCP_NODELAY, but that's the default anyway.
+ * MPE lacks support for SO_KEEPALIVE.
+ * MPE lacks support for process groups.
+ * MPE inetd only passes stdin (and NOT stdout) to the invoked service.
+ But you can write to stdin just fine.
+
+Major Apache functionality issues
+
+ * Beginning with HP-supported Apache 1.3.9 and HP WebWise MPE/iX Secure
+ Web Server A.01.00 (based on Apache 1.3.9), the User and Group
+ directives in httpd.conf are now unconditionally executed as
+ corresponding setuid()/setgid() calls. Previously this was only done
+ if HTTPD was being run as MANAGER.SYS. This functionality change was
+ submitted back to the 1.3.13-dev source tree at www.apache.org. The
+ Apache for Unix behavior is to only honor User and Group if running as
+ root.
+ * Beginning with HP-supported Apache 1.3.9 and HP WebWise MPE/iX Secure
+ Web Server A.01.00 (based on Apache 1.3.9), the SVIPC shared memory
+ macros SHM_R and SHM_W have been modified from their traditional
+ owner-only-read and owner-only-write values to be owner-and-group-read
+ and owner-and-group-write on MPE/iX in order to allow increased
+ parent/child flexibility in spite of MPE's limited POSIX UID/GID
+ support. This functionality change was submitted back to the
+ 1.3.13-dev source tree at www.apache.org. The Apache for Unix
+ behavior uses the traditional owner-only values of SHM_R and SHM_W.
+
+Minor Apache functionality issues
+
+ * Apache for Unix must be run as root to bind to TCP ports 1-1023.
+ Apache for MPE must call GETPRIVMODE() to bind to TCP ports 1-1023; PM
+ is not used for ports greater than 1023. The standard web server HTTP
+ port is 80.
+ * Apache for Unix in standalone mode will detach itself and run in the
+ background as a system-type process. Apache for MPE in standalone mode
+ cannot detach itself and run in the background because MPE POSIX
+ doesn't allow this (the detached child would be killed when the parent
+ terminated). Therefore you must use an MPE batch job to run Apache in
+ standalone mode.
+ * Apache for Unix uses process groups to manage child processes. Apache
+ for MPE cannot use process groups because MPE POSIX doesn't support
+ this. The implications of this are unknown.
+ * Apache for Unix uses the setsockopt() option TCP_NODELAY. Apache for
+ MPE does not, because MPE doesn't support it. But TCP_NODELAY is the
+ default MPE behavior anyway.
+ * Apache for Unix uses the setsockopt() option SO_KEEPALIVE. Apache for
+ MPE does not, because MPE doesn't support it.
+ * Apache for Unix under inetd reads from the socket via stdin and writes
+ via stdout. Apache for MPE under inetd reads *AND* writes the socket
+ via stdin. I consider MPE 5.5 inetd to be broken and poorly
+ documented, so I submitted SR 5003355016 to address this. If HP ever
+ alters the MPE inetd to pass the socket the way HPUX inetd does (not
+ likely in the grand scheme of things), the existing Apache for MPE
+ code will break.
+ * Apache for Unix will use the @ character in proxy cache filenames, but
+ since @ is illegal in MPE filenames, Apache for MPE uses the %
+ character instead.
+
+---------------------------------------------------------------------------
+
+Binary Distributions
+
+HP ships a fully supported Apache binary distribution with the Fundamental
+Operating System (FOS) in MPE/iX 6.5 and later. This distribution can be
+found in the APACHE account.
+
+HP supplies fully supported Apache binary distributions for MPE/iX 6.0 or
+later available for downloading from
+http://jazz.external.hp.com/src/apache/.
+
+Mark Bixby supplies Apache binary distributions for MPE/iX available for
+downloading from http://www.bixby.org/mark/apacheix.html. Binaries from
+bixby.org are NOT supported by HP. HP only supports binaries distributed
+by HP.
+
+All of the binary distributions mentioned above may possibly include
+functionality that hasn't yet been submitted back to the Apache Software
+Foundation (though submitting back is the intended goal). Please read the
+documentation that comes with these binaries in order to determine
+functionality differences (if any) compared to the latest sources available
+from the ASF.
+
+If you will be using one of these binary distributions, please stop reading
+this document and start reading the specific distribution documentation for
+installation details.
+
+---------------------------------------------------------------------------
+
+Create the Accounting Structure
+
+Apache can be installed under the account of your choice. For the purposes
+of this document, the APACHE account will be used:
+
+ 1. :HELLO MANAGER.SYS
+ 2. :NEWACCT APACHE,MGR
+ 3. :ALTACCT APACHE;PASS=xxxxxxxx;CAP=AM,AL,ND,SF,BA,IA,PM,PH
+ 4. :ALTGROUP PUB.APACHE;CAP=BA,IA,PM,PH;ACCESS=(R,L,X:AC;W,A,S:AL)
+ 5. :ALTUSER MGR.APACHE;CAP=AM,AL,ND,SF,BA,IA,PM,PH;HOME=PUB
+ 6. :NEWUSER SERVER.APACHE
+ 7. :ALTUSER SERVER.APACHE;CAP=ND,SF,BA,IA,PH;HOME=PUB
+
+Downloading Apache
+
+Use your web browser to download the Apache source tarball from
+http://www.apache.org/dist/. Then ftp upload the tarball to your e3000 as
+show below:
+
+C:\Temp>ftp 3000.host.name
+Connected to 3000.host.name.
+220 HP ARPA FTP Server [A0009H09] (C) Hewlett-Packard Co. 1990
+User (3000.host.name:(none)): MGR.APACHE
+331 Password required for MGR.APACHE. Syntax: acctpass
+Password:xxxxxxxx
+230 User logged on
+ftp> quote type L 8
+200 Type set to L (byte size 8).
+ftp> put apache_v.u.ff.tar.Z /tmp/apache.tar.Z
+200 PORT command ok.
+150 File: /tmp/apache.tar.Z opened; data connection will be opened
+226 Transfer complete.
+ftp: 2685572 bytes sent in 2.75Seconds 976.57Kbytes/sec.
+ftp> quit
+221 Server is closing command connection
+
+Unpack the tarball:
+
+ 1. :HELLO MGR.APACHE
+ 2. :XEQ SH.HPBIN.SYS -L
+ 3. $ mkdir src
+ 4. $ chmod 700 src
+ 5. $ cd src
+ 6. $ tar xvfopz /tmp/apache.tar.Z
+
+Compiling Apache
+
+It is STRONGLY recommended to use gcc instead of the HP C/iX compiler. You
+can obtain gcc from http://jazz.external.hp.com/src/gnu/gnuframe.html.
+
+ 1. $ cd apache_v.uu.ff
+ 2. $ ./configure --prefix=/APACHE/PUB --enable-module=xxx
+ --enable-module=yyy ...etc...
+ 3. $ make
+
+Installing Apache
+
+ 1. $ make install
+ 2. $ cd /APACHE/PUB
+ 3. $ mv bin/httpd HTTPD
+ 4. $ ln -s HTTPD bin/httpd
+ 5. $ callci "xeq linkedit.pub.sys 'altprog HTTPD;cap=ia,ba,ph,pm'"
+
+Configuring Apache
+
+Edit /APACHE/PUB/conf/httpd.conf and customize as needed for your
+environment. Be sure to make the following mandatory changes:
+
+ * User SERVER.APACHE
+ * Group APACHE
+
+Running Apache
+
+Simply create and :STREAM the following standalone server job in order to
+start Apache:
+
+!JOB JHTTPD,MGR.APACHE;OUTCLASS=,2
+!XEQ SH.HPBIN.SYS "-c 'umask 007; ./HTTPD -f /APACHE/PUB/conf/httpd.conf'"
+!eoj
+
+Controlling Apache
+
+Log on as MGR.APACHE (or MANAGER.SYS or any other SM user if you've
+installed MPELX36A on 6.0) in order to shutdown or restart Apache via the
+use of signals.
+
+To shut down Apache from the POSIX shell:
+
+$ kill `cat /APACHE/PUB/logs/httpd.pid`
+
+To shut down Apache from the CI:
+
+:XEQ SH.HPBIN.SYS '-c "kill `cat /APACHE/PUB/logs/httpd.pid`"'
diff --git a/usr.sbin/httpd/src/os/mpeix/dlopen.c b/usr.sbin/httpd/src/os/mpeix/dlopen.c
index f991867c536..dbe5fc8ceb2 100644
--- a/usr.sbin/httpd/src/os/mpeix/dlopen.c
+++ b/usr.sbin/httpd/src/os/mpeix/dlopen.c
@@ -79,6 +79,8 @@ if (libname[0] != '/') {
} else
ap_snprintf(library, sizeof(library), " %s ", libname);
+#define MPE_WITHOUT_MPELX44
+#ifdef MPE_WITHOUT_MPELX44
/*
Unfortunately if we simply tried to load the module structure data item
directly in dlsym(), it would complain about unresolved function pointer
@@ -86,6 +88,9 @@ references.
However, if we first load an actual dummy procedure, we can then subsequently
load the data item without trouble. Go figure.
+
+This bug is fixed by patch MPELX44A on MPE/iX 6.0 and patch MPELX44B on
+MPE/iX 6.5.
*/
/* Load the dummy procedure mpe_dl_stub */
@@ -100,7 +105,10 @@ HPGETPROCPLABEL(
mpe_dl_symtype, &datalen, 1, 0, 0);
/* We consider it to be a failure if the dummy procedure doesn't exist */
-if (mpe_dl_status != 0) return NULL;
+/* if (mpe_dl_status != 0) return NULL; */
+/* Or not. If we failed to load mpe_dl_stub, press on and try to load the
+ real data item later in dlsym(). */
+#endif /* MPE_WITHOUT_MPELX44 */
mpe_dl_symtype = 2;
diff --git a/usr.sbin/httpd/src/os/mpeix/os-inline.c b/usr.sbin/httpd/src/os/mpeix/os-inline.c
index fe3e5fc9a50..54ff49a6391 100644
--- a/usr.sbin/httpd/src/os/mpeix/os-inline.c
+++ b/usr.sbin/httpd/src/os/mpeix/os-inline.c
@@ -1 +1,31 @@
-#include "../unix/os-inline.c"
+/*
+ * This file contains functions which can be inlined if the compiler
+ * has an "inline" modifier. Because of this, this file is both a
+ * header file and a compilable module.
+ *
+ * Only inlineable functions should be defined in here. They must all
+ * include the INLINE modifier.
+ *
+ * If the compiler supports inline, this file will be #included as a
+ * header file from os.h to create all the inline function
+ * definitions. INLINE will be defined to whatever is required on
+ * function definitions to make them inline declarations.
+ *
+ * If the compiler does not support inline, this file will be compiled
+ * as a normal C file into libos.a (along with os.c). In this case
+ * INLINE will _not_ be set so we can use this to test if we are
+ * compiling this source file.
+ */
+
+#ifndef INLINE
+#define INLINE
+
+/* Anything required only when compiling */
+#include "ap_config.h"
+
+#endif
+
+INLINE int ap_os_is_path_absolute(const char *file)
+{
+ return file[0] == '/';
+}
diff --git a/usr.sbin/httpd/src/os/netware/ApacheCore.imp b/usr.sbin/httpd/src/os/netware/ApacheCore.imp
index 072ccaed59e..ad5dc564269 100644
--- a/usr.sbin/httpd/src/os/netware/ApacheCore.imp
+++ b/usr.sbin/httpd/src/os/netware/ApacheCore.imp
@@ -344,4 +344,18 @@ apache_main
ap_get_virthost_addr
ap_listeners
ap_listenbacklog
-
+clean_parent_exit
+init_tsd
+ap_set_config_vectors
+ap_strcasestr
+ap_to64
+ap_vrprintf
+regerror
+ap_add_file_conf
+ap_configtestonly
+ap_is_rdirectory
+ap_remove_spaces
+ap_scan_script_header_err_strs
+ap_start_shutdown
+ap_start_restart
+ap_stripprefix
diff --git a/usr.sbin/httpd/src/os/netware/ApacheCoreNW.def b/usr.sbin/httpd/src/os/netware/ApacheCoreNW.def
index f171a764a66..6762ac5dfe7 100644
--- a/usr.sbin/httpd/src/os/netware/ApacheCoreNW.def
+++ b/usr.sbin/httpd/src/os/netware/ApacheCoreNW.def
@@ -1,4 +1,8 @@
MODULE CLIB.NLM
MODULE WS2_32.NLM
IMPORT KillMe
-EXPORT @apachecore.imp
+IMPORT kMutexAlloc
+IMPORT kMutexFree
+IMPORT kMutexLock
+IMPORT kMutexUnlock
+EXPORT @apachecore.imp
diff --git a/usr.sbin/httpd/src/os/netware/multithread.c b/usr.sbin/httpd/src/os/netware/multithread.c
index 2b306d8fe9d..458ffb3f054 100644
--- a/usr.sbin/httpd/src/os/netware/multithread.c
+++ b/usr.sbin/httpd/src/os/netware/multithread.c
@@ -6,7 +6,6 @@
#include <nwsemaph.h>
-
thread *create_thread(void (thread_fn)(void *), void *thread_arg)
{
int rv;
@@ -34,27 +33,30 @@ void free_thread(thread *thread_id)
mutex * ap_create_mutex(char *name)
{
- return(malloc(1));
+ return (mutex*)kMutexAlloc(name);
}
mutex * ap_open_mutex(char *name)
{
- return((mutex*)EnterCritSec());
+ return(NULL);
}
int ap_acquire_mutex(mutex *mutex_id)
{
- return(EnterCritSec());
+ return(kMutexLock(mutex_id));
}
int ap_release_mutex(mutex *mutex_id)
{
- return(ExitCritSec());
+ if (kMutexUnlock(mutex_id))
+ return 0;
+ else
+ return 1;
}
void ap_destroy_mutex(mutex *mutex_id)
{
- free(mutex_id);
+ kMutexFree(mutex_id);
}
diff --git a/usr.sbin/httpd/src/os/netware/os.c b/usr.sbin/httpd/src/os/netware/os.c
index 1518ba5e8b5..a0440e90f9f 100644
--- a/usr.sbin/httpd/src/os/netware/os.c
+++ b/usr.sbin/httpd/src/os/netware/os.c
@@ -56,6 +56,7 @@
*/
#include "ap_config.h"
+#include <dirent.h>
void ap_os_dso_init(void)
{
@@ -68,14 +69,15 @@ void *ap_os_dso_load(const char *path)
moduleName = strrchr(path, '/');
- if (moduleName)
+ if (moduleName) {
moduleName++;
+ }
- nlmHandle = FindNLMHandle((char*)moduleName);
+ nlmHandle = FindNLMHandleInAddressSpace((char*)moduleName, NULL);
if (nlmHandle == NULL) {
spawnlp(P_NOWAIT | P_SPAWN_IN_CURRENT_DOMAIN, path, NULL);
- nlmHandle = FindNLMHandle((char *)moduleName);
+ nlmHandle = FindNLMHandleInAddressSpace((char*)moduleName, NULL);
}
return (void *)nlmHandle;
@@ -122,3 +124,9 @@ char *bslash2slash(char* str)
return str;
}
+void init_name_space()
+{
+ UnAugmentAsterisk(TRUE);
+ SetCurrentNameSpace(NW_NS_LONG);
+ SetTargetNameSpace(NW_NS_LONG);
+}
diff --git a/usr.sbin/httpd/src/os/netware/os.h b/usr.sbin/httpd/src/os/netware/os.h
index 6463ab13553..dcefb90a0fe 100644
--- a/usr.sbin/httpd/src/os/netware/os.h
+++ b/usr.sbin/httpd/src/os/netware/os.h
@@ -76,6 +76,7 @@ typedef int gid_t;
#include <nwthread.h>
#include <nwmalloc.h>
#include <nwnamspc.h>
+#include <nwlib.h>
#include <nwadv.h>
#include <ws2nlm.h>
#include <winsock2.h>
@@ -106,11 +107,11 @@ typedef int gid_t;
#define FD_SETSIZE 128
#define NO_DBM_REWRITEMAP
-
-
#define crypt(buf,salt) (buf)
#define sleep(t) delay(t*1000)
#define getpid GetThreadID
+/* Netware doesn't have symlinks so S_ISLNK is always false */
+#define S_ISLNK(m) 0
#define lstat(x, y) stat(x, y)
#define ap_os_is_filename_valid(f) (1)
#define strcasecmp(s1, s2) stricmp(s1, s2)
@@ -121,11 +122,12 @@ typedef int gid_t;
/* Prototypes */
void AMCSocketCleanup(void);
-static void clean_parent_exit(int code);
+void clean_parent_exit(int code);
inline int ap_os_is_path_absolute(const char *file)
{
- if (strstr(file, ":/"))
+ /* XXX: Should this test *(strchr(file, ':') + 1) == '/' ? */
+ if ((file[0] == '/') || strchr(file, ':'))
return 1;
else
return 0;
@@ -139,5 +141,6 @@ void *ap_os_dso_sym(void *, const char *);
const char *ap_os_dso_error(void);
char *remove_filename(char*);
char *bslash2slash(char*);
+void init_name_space(void);
#endif /*! APACHE_OS_H*/
diff --git a/usr.sbin/httpd/src/os/os2/Makefile.tmpl b/usr.sbin/httpd/src/os/os2/Makefile.tmpl
index 98e96aaf844..9e21b9c69e9 100644
--- a/usr.sbin/httpd/src/os/os2/Makefile.tmpl
+++ b/usr.sbin/httpd/src/os/os2/Makefile.tmpl
@@ -53,5 +53,5 @@ os.o: os.c os.h os-inline.c
util_os2.o: util_os2.c $(INCDIR)/httpd.h $(INCDIR)/ap_config.h \
$(INCDIR)/ap_mmn.h $(INCDIR)/ap_config_auto.h \
$(INCDIR)/os.h $(INCDIR)/os-inline.c $(INCDIR)/ap_ctype.h \
- $(INCDIR)/hsregex.h $(INCDIR)/alloc.h $(INCDIR)/buff.h \
+ $(INCDIR)/hsregex.h $(INCDIR)/ap_alloc.h $(INCDIR)/buff.h \
$(INCDIR)/ap.h $(INCDIR)/util_uri.h $(INCDIR)/http_log.h
diff --git a/usr.sbin/httpd/src/os/os2/os-inline.c b/usr.sbin/httpd/src/os/os2/os-inline.c
index e3ff9f2fb89..1f9e933213a 100644
--- a/usr.sbin/httpd/src/os/os2/os-inline.c
+++ b/usr.sbin/httpd/src/os/os2/os-inline.c
@@ -30,5 +30,5 @@ INLINE int ap_os_is_path_absolute(const char *file)
/* For now, just do the same check that http_request.c and mod_alias.c
* do.
*/
- return file && (file[0] == '/' || file[1] == ':');
+ return file && (file[0] == '/' || (file[1] == ':' && file[2] == '/'));
}
diff --git a/usr.sbin/httpd/src/os/os2/os.h b/usr.sbin/httpd/src/os/os2/os.h
index d717f1f8ca4..157eaa61ab3 100644
--- a/usr.sbin/httpd/src/os/os2/os.h
+++ b/usr.sbin/httpd/src/os/os2/os.h
@@ -4,6 +4,7 @@
#define PLATFORM "OS/2"
#define HAVE_CANONICAL_FILENAME
#define HAVE_DRIVE_LETTERS
+#define HAVE_UNC_PATHS
/*
* This file in included in all Apache source code. It contains definitions
@@ -40,6 +41,7 @@ char *ap_os_error_message(int err);
/* OS/2 doesn't have symlinks so S_ISLNK is always false */
#define S_ISLNK(m) 0
+#define lstat(x, y) stat(x, y)
/* Dynamic loading functions */
#define ap_os_dso_handle_t unsigned long
diff --git a/usr.sbin/httpd/src/os/os2/util_os2.c b/usr.sbin/httpd/src/os/os2/util_os2.c
index 820ea618008..5cf9fa50baf 100644
--- a/usr.sbin/httpd/src/os/os2/util_os2.c
+++ b/usr.sbin/httpd/src/os/os2/util_os2.c
@@ -5,7 +5,7 @@
#include "http_log.h"
-API_EXPORT(char *)ap_os_canonical_filename(pool *pPool, const char *szFile)
+API_EXPORT(char *)ap_os_case_canonical_filename(pool *pPool, const char *szFile)
{
char buf[HUGE_STRING_LEN];
char buf2[HUGE_STRING_LEN];
@@ -18,7 +18,14 @@ API_EXPORT(char *)ap_os_canonical_filename(pool *pPool, const char *szFile)
if (len > 3 && buf[len-1] == '/')
buf[--len] = 0;
-
+
+ if (buf[0] == '/' && buf[1] == '/') {
+ /* A UNC path */
+ if (strchr(buf+2, '/') == NULL) { /* Allow // or //server */
+ return ap_pstrdup(pPool, buf);
+ }
+ }
+
rc = DosQueryPathInfo(buf, FIL_QUERYFULLNAME, buf2, HUGE_STRING_LEN);
if (rc) {
@@ -30,8 +37,6 @@ API_EXPORT(char *)ap_os_canonical_filename(pool *pPool, const char *szFile)
}
}
- strlwr(buf2);
-
/* Switch backslashes to forward */
for (pos=buf2; *pos; pos++)
if (*pos == '\\')
@@ -42,6 +47,60 @@ API_EXPORT(char *)ap_os_canonical_filename(pool *pPool, const char *szFile)
+static void fix_component(char *path, char *lastcomp)
+{
+ FILEFINDBUF3 fb3;
+ HDIR hDir = HDIR_CREATE;
+ ULONG numNames = 1;
+ ULONG rc = DosFindFirst( (UCHAR *)path, &hDir, FILE_NORMAL|FILE_DIRECTORY, &fb3, sizeof(fb3), &numNames, FIL_STANDARD );
+
+ if (rc == 0)
+ strcpy(lastcomp, fb3.achName);
+
+ DosFindClose(hDir);
+}
+
+
+
+char *ap_os_systemcase_canonical_filename(pool *pPool, const char *szFile)
+{
+ char *szCanonicalFile = ap_os_case_canonical_filename(pPool, szFile);
+ int startslash = 2, slashnum=0;
+ char *pos, *prevslash = NULL;
+
+ if (szCanonicalFile[0] == '/' && szCanonicalFile[1] == '/') /* a UNC name */
+ startslash = 5;
+
+ for (pos = szCanonicalFile; *pos; pos++) {
+ if (*pos == '/') {
+ slashnum++;
+ if (slashnum >= startslash) {
+ *pos = 0;
+ fix_component(szCanonicalFile, prevslash+1);
+ *pos = '/';
+ }
+ prevslash = pos;
+ }
+ }
+
+ if (slashnum >= startslash) {
+ fix_component(szCanonicalFile, prevslash+1);
+ }
+
+ return szCanonicalFile;
+}
+
+
+
+API_EXPORT(char *)ap_os_canonical_filename(pool *pPool, const char *szFile)
+{
+ char *szCanonicalFile = ap_os_systemcase_canonical_filename(pPool, szFile);
+ strlwr(szCanonicalFile);
+ return szCanonicalFile;
+}
+
+
+
int ap_os_kill(pid_t pid, int sig)
{
/* SIGTERM's don't work too well in OS/2 (only affects other EMX programs).
@@ -82,9 +141,9 @@ char *ap_os_error_message(int err)
len = sizeof(result-1);
for (c=0; c<len; c++) {
- while (isspace(message[c]) && isspace(message[c+1])) /* skip multiple whitespace */
+ while (ap_isspace(message[c]) && ap_isspace(message[c+1])) /* skip multiple whitespace */
c++;
- *(pos++) = isspace(message[c]) ? ' ' : message[c];
+ *(pos++) = ap_isspace(message[c]) ? ' ' : message[c];
}
*pos = 0;
diff --git a/usr.sbin/httpd/src/os/os390/Makefile.tmpl b/usr.sbin/httpd/src/os/os390/Makefile.tmpl
index 5592c9300fa..55488a83b23 100644
--- a/usr.sbin/httpd/src/os/os390/Makefile.tmpl
+++ b/usr.sbin/httpd/src/os/os390/Makefile.tmpl
@@ -62,7 +62,7 @@ os.o: $(INCDIR)/ap_config_auto.h
os.o: os.h
os.o: $(INCDIR)/ap_ctype.h
os.o: $(INCDIR)/hsregex.h
-os.o: $(INCDIR)/alloc.h
+os.o: $(INCDIR)/ap_alloc.h
os.o: $(INCDIR)/buff.h
os.o: $(INCDIR)/ap.h
os.o: ebcdic.h
diff --git a/usr.sbin/httpd/src/os/tpf/os.c b/usr.sbin/httpd/src/os/tpf/os.c
index d0f1bf9f479..41542618225 100644
--- a/usr.sbin/httpd/src/os/tpf/os.c
+++ b/usr.sbin/httpd/src/os/tpf/os.c
@@ -626,7 +626,7 @@ struct pool {
#endif
};
-#include "alloc.h"
+#include "ap_alloc.h"
#define POOL_HDR_CLICKS (1 + ((sizeof(struct pool) - 1) / CLICK_SZ))
#define POOL_HDR_BYTES (POOL_HDR_CLICKS * CLICK_SZ)
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.dsp
index afe8cc7e2fa..eb72bd726f4 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleAuthAnon" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleAuthAnon - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleAuthAnon.mak"\
- CFG="ApacheModuleAuthAnon - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleAuthAnon.mak" CFG="ApacheModuleAuthAnon - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleAuthAnon - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleAuthAnon - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleAuthAnon - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleAuthAnon - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleAuthAnonR"
-# PROP Intermediate_Dir ".\ApacheModuleAuthAnonR"
+# PROP Output_Dir "ApacheModuleAuthAnonR"
+# PROP Intermediate_Dir "ApacheModuleAuthAnonR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_auth_anon
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_auth_anon
!ELSEIF "$(CFG)" == "ApacheModuleAuthAnon - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleAuthAnonD"
-# PROP Intermediate_Dir ".\ApacheModuleAuthAnonD"
+# PROP Output_Dir "ApacheModuleAuthAnonD"
+# PROP Intermediate_Dir "ApacheModuleAuthAnonD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_auth_anon
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_auth_anon
!ENDIF
@@ -89,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleAuthAnon - Win32 Release"
# Name "ApacheModuleAuthAnon - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_auth_anon.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.mak
index c098031c8ae..e547f0cc3a1 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthAnon.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleAuthAnon - Win32 Release"
OUTDIR=.\ApacheModuleAuthAnonR
INTDIR=.\ApacheModuleAuthAnonR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleAuthAnonR
+OutDir=.\ApacheModuleAuthAnonR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,38 +44,79 @@ ALL : "$(OUTDIR)\ApacheModuleAuthAnon.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleAuthAnon.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleAuthAnon.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_auth_anon.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleAuthAnon.dll"
-@erase "$(OUTDIR)\ApacheModuleAuthAnon.exp"
-@erase "$(OUTDIR)\ApacheModuleAuthAnon.lib"
+ -@erase "$(OUTDIR)\ApacheModuleAuthAnon.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleAuthAnon.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleAuthAnonR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleAuthAnon.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleAuthAnon.pdb" /machine:I386\
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleAuthAnon.pdb"\
+ /map:"$(INTDIR)\ApacheModuleAuthAnon.map" /machine:I386\
/out:"$(OUTDIR)\ApacheModuleAuthAnon.dll"\
- /implib:"$(OUTDIR)\ApacheModuleAuthAnon.lib"
+ /implib:"$(OUTDIR)\ApacheModuleAuthAnon.lib"\
+ /base:@"BaseAddr.ref",mod_auth_anon
LINK32_OBJS= \
- "$(INTDIR)\mod_auth_anon.obj"
+ "$(INTDIR)\mod_auth_anon.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleAuthAnon.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -91,7 +128,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleAuthAnonD
INTDIR=.\ApacheModuleAuthAnonD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleAuthAnonD
+OutDir=.\ApacheModuleAuthAnonD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -100,49 +137,33 @@ ALL : "$(OUTDIR)\ApacheModuleAuthAnon.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleAuthAnon.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleAuthAnon.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_auth_anon.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleAuthAnon.dll"
-@erase "$(OUTDIR)\ApacheModuleAuthAnon.exp"
- -@erase "$(OUTDIR)\ApacheModuleAuthAnon.ilk"
-@erase "$(OUTDIR)\ApacheModuleAuthAnon.lib"
+ -@erase "$(OUTDIR)\ApacheModuleAuthAnon.map"
-@erase "$(OUTDIR)\ApacheModuleAuthAnon.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
- /Fp"$(INTDIR)\ApacheModuleAuthAnon.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"\
- /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleAuthAnonD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleAuthAnon.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleAuthAnon.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleAuthAnon.dll"\
- /implib:"$(OUTDIR)\ApacheModuleAuthAnon.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_auth_anon.obj"
-
-"$(OUTDIR)\ApacheModuleAuthAnon.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -174,50 +195,72 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleAuthAnon.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleAuthAnon.pdb"\
+ /map:"$(INTDIR)\ApacheModuleAuthAnon.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleAuthAnon.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleAuthAnon.lib"\
+ /base:@"BaseAddr.ref",mod_auth_anon
+LINK32_OBJS= \
+ "$(INTDIR)\mod_auth_anon.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleAuthAnon.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleAuthAnon - Win32 Release" || "$(CFG)" ==\
"ApacheModuleAuthAnon - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_auth_anon.c
!IF "$(CFG)" == "ApacheModuleAuthAnon - Win32 Release"
-DEP_CPP_MOD_A=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\conf.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_core.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\http_request.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- ".\os.h"\
- ".\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_MOD_A=\
- "..\..\include\ebcdic.h"\
- "..\..\include\os.h"\
- "..\..\include\sfio.h"\
-
-
-"$(INTDIR)\mod_auth_anon.obj" : $(SOURCE) $(DEP_CPP_MOD_A) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleAuthAnon - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_auth_anon.c
DEP_CPP_MOD_A=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
- "..\..\include\conf.h"\
"..\..\include\hsregex.h"\
"..\..\include\http_config.h"\
"..\..\include\http_core.h"\
@@ -229,13 +272,16 @@ DEP_CPP_MOD_A=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_A=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_auth_anon.obj" : $(SOURCE) $(DEP_CPP_MOD_A) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDBM.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDBM.dsp
new file mode 100644
index 00000000000..9e7cd9ebc8e
--- /dev/null
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDBM.dsp
@@ -0,0 +1,95 @@
+# Microsoft Developer Studio Project File - Name="ApacheModuleAuthDBM" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
+
+CFG=ApacheModuleAuthDBM - Win32 Release
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "ApacheModuleAuthDBM.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ApacheModuleAuthDBM.mak" CFG="ApacheModuleAuthDBM - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ApacheModuleAuthDBM - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleAuthDBM - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+
+# Begin Project
+# PROP AllowPerConfigDependencies 0
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+MTL=midl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir ".\Release"
+# PROP BASE Intermediate_Dir ".\Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "ApacheModuleAuthDBMR"
+# PROP Intermediate_Dir "ApacheModuleAuthDBMR"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /I "..\..\lib\sdbm" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
+# ADD BASE MTL /nologo /D "NDEBUG" /win32
+# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "NDEBUG"
+# ADD RSC /l 0x809 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_auth_dbm
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_auth_dbm
+
+!ELSEIF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir ".\Debug"
+# PROP BASE Intermediate_Dir ".\Debug"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "ApacheModuleAuthDBMD"
+# PROP Intermediate_Dir "ApacheModuleAuthDBMD"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /I "..\..\lib\sdbm" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
+# ADD BASE MTL /nologo /D "_DEBUG" /win32
+# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
+# ADD BASE RSC /l 0x809 /d "_DEBUG"
+# ADD RSC /l 0x809 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_auth_dbm
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_auth_dbm
+
+!ENDIF
+
+# Begin Target
+
+# Name "ApacheModuleAuthDBM - Win32 Release"
+# Name "ApacheModuleAuthDBM - Win32 Debug"
+# Begin Source File
+
+SOURCE=..\..\modules\standard\mod_auth_dbm.c
+# End Source File
+# End Target
+# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDBM.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDBM.mak
new file mode 100644
index 00000000000..2b9c4b5a094
--- /dev/null
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDBM.mak
@@ -0,0 +1,317 @@
+# Microsoft Developer Studio Generated NMAKE File, Based on ApacheModuleAuthDBM.dsp
+!IF "$(CFG)" == ""
+CFG=ApacheModuleAuthDBM - Win32 Release
+!MESSAGE No configuration specified. Defaulting to ApacheModuleAuthDBM - Win32\
+ Release.
+!ENDIF
+
+!IF "$(CFG)" != "ApacheModuleAuthDBM - Win32 Release" && "$(CFG)" !=\
+ "ApacheModuleAuthDBM - Win32 Debug"
+!MESSAGE Invalid configuration "$(CFG)" specified.
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "ApacheModuleAuthDBM.mak"\
+ CFG="ApacheModuleAuthDBM - Win32 Release"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "ApacheModuleAuthDBM - Win32 Release" (based on\
+ "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleAuthDBM - Win32 Debug" (based on\
+ "Win32 (x86) Dynamic-Link Library")
+!MESSAGE
+!ERROR An invalid configuration is specified.
+!ENDIF
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Release"
+
+OUTDIR=.\ApacheModuleAuthDBMR
+INTDIR=.\ApacheModuleAuthDBMR
+# Begin Custom Macros
+OutDir=.\ApacheModuleAuthDBMR
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\ApacheModuleAuthDBM.dll"
+
+!ELSE
+
+ALL : "sdbm - Win32 Release" "ApacheCore - Win32 Release"\
+ "$(OUTDIR)\ApacheModuleAuthDBM.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN" "sdbm - Win32 ReleaseCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\mod_auth_dbm.obj"
+ -@erase "$(INTDIR)\vc50.idb"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.dll"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.exp"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.lib"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.map"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /I\
+ "..\..\lib\sdbm" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_OBJS=.\ApacheModuleAuthDBMR/
+CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleAuthDBM.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleAuthDBM.pdb"\
+ /map:"$(INTDIR)\ApacheModuleAuthDBM.map" /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleAuthDBM.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleAuthDBM.lib" /base:@"BaseAddr.ref",mod_auth_dbm
+LINK32_OBJS= \
+ "$(INTDIR)\mod_auth_dbm.obj" \
+ "..\..\CoreR\ApacheCore.lib" \
+ "..\..\lib\sdbm\Release\sdbm.lib"
+
+"$(OUTDIR)\ApacheModuleAuthDBM.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ELSEIF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Debug"
+
+OUTDIR=.\ApacheModuleAuthDBMD
+INTDIR=.\ApacheModuleAuthDBMD
+# Begin Custom Macros
+OutDir=.\ApacheModuleAuthDBMD
+# End Custom Macros
+
+!IF "$(RECURSE)" == "0"
+
+ALL : "$(OUTDIR)\ApacheModuleAuthDBM.dll"
+
+!ELSE
+
+ALL : "sdbm - Win32 Debug" "ApacheCore - Win32 Debug"\
+ "$(OUTDIR)\ApacheModuleAuthDBM.dll"
+
+!ENDIF
+
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN" "sdbm - Win32 DebugCLEAN"
+!ELSE
+CLEAN :
+!ENDIF
+ -@erase "$(INTDIR)\mod_auth_dbm.obj"
+ -@erase "$(INTDIR)\vc50.idb"
+ -@erase "$(INTDIR)\vc50.pdb"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.dll"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.exp"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.lib"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.map"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDBM.pdb"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /I "..\..\lib\sdbm" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D\
+ "SHARED_MODULE" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_OBJS=.\ApacheModuleAuthDBMD/
+CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleAuthDBM.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleAuthDBM.pdb"\
+ /map:"$(INTDIR)\ApacheModuleAuthDBM.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleAuthDBM.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleAuthDBM.lib" /base:@"BaseAddr.ref",mod_auth_dbm
+LINK32_OBJS= \
+ "$(INTDIR)\mod_auth_dbm.obj" \
+ "..\..\CoreD\ApacheCore.lib" \
+ "..\..\lib\sdbm\Debug\sdbm.lib"
+
+"$(OUTDIR)\ApacheModuleAuthDBM.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
+
+!IF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Release" || "$(CFG)" ==\
+ "ApacheModuleAuthDBM - Win32 Debug"
+
+!IF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Release"
+
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
+
+!ELSEIF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Debug"
+
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+!IF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Release"
+
+"sdbm - Win32 Release" :
+ cd "\apache\apache-1.3\src\lib\sdbm"
+ $(MAKE) /$(MAKEFLAGS) /F ".\sdbm.mak" CFG="sdbm - Win32 Release"
+ cd "..\..\os\win32"
+
+"sdbm - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src\lib\sdbm"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\sdbm.mak" CFG="sdbm - Win32 Release"\
+ RECURSE=1
+ cd "..\..\os\win32"
+
+!ELSEIF "$(CFG)" == "ApacheModuleAuthDBM - Win32 Debug"
+
+"sdbm - Win32 Debug" :
+ cd "\apache\apache-1.3\src\lib\sdbm"
+ $(MAKE) /$(MAKEFLAGS) /F ".\sdbm.mak" CFG="sdbm - Win32 Debug"
+ cd "..\..\os\win32"
+
+"sdbm - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src\lib\sdbm"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\sdbm.mak" CFG="sdbm - Win32 Debug"\
+ RECURSE=1
+ cd "..\..\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_auth_dbm.c
+DEP_CPP_MOD_A=\
+ "..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
+ "..\..\include\ap_mmn.h"\
+ "..\..\include\buff.h"\
+ "..\..\include\hsregex.h"\
+ "..\..\include\http_config.h"\
+ "..\..\include\http_core.h"\
+ "..\..\include\http_log.h"\
+ "..\..\include\http_protocol.h"\
+ "..\..\include\httpd.h"\
+ "..\..\include\util_uri.h"\
+ "..\..\lib\sdbm\sdbm.h"\
+ ".\os.h"\
+ ".\readdir.h"\
+
+NODEP_CPP_MOD_A=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
+
+"$(INTDIR)\mod_auth_dbm.obj" : $(SOURCE) $(DEP_CPP_MOD_A) "$(INTDIR)"
+ $(CPP) $(CPP_PROJ) $(SOURCE)
+
+
+
+!ENDIF
+
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.dsp
index ea2f015121b..5f93720a70d 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleAuthDigest" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -8,23 +8,21 @@ CFG=ApacheModuleAuthDigest - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
-!MESSAGE NMAKE /f "apachemoduleauthdigest.mak".
+!MESSAGE NMAKE /f "ApacheModuleAuthDigest.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "apachemoduleauthdigest.mak"\
- CFG="ApacheModuleAuthDigest - Win32 Debug"
+!MESSAGE NMAKE /f "ApacheModuleAuthDigest.mak" CFG="ApacheModuleAuthDigest - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleAuthDigest - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleAuthDigest - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleAuthDigest - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleAuthDigest - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleAuthDigestD"
-# PROP Intermediate_Dir ".\ApacheModuleAuthDigestD"
+# PROP Output_Dir "ApacheModuleAuthDigestR"
+# PROP Intermediate_Dir "ApacheModuleAuthDigestR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x409 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_auth_digest
+# ADD LINK32 kernel32.lib advapi32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_auth_digest
!ELSEIF "$(CFG)" == "ApacheModuleAuthDigest - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleAuthDigestD"
-# PROP Intermediate_Dir ".\ApacheModuleAuthDigestD"
+# PROP Output_Dir "ApacheModuleAuthDigestD"
+# PROP Intermediate_Dir "ApacheModuleAuthDigestD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x409 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept /base:@"BaseAddr.ref",mod_auth_digest
+# ADD LINK32 kernel32.lib advapi32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /pdbtype:sept /base:@"BaseAddr.ref",mod_auth_digest
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.mak
index 67b6434ca21..d6060e7e80b 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleAuthDigest.mak
@@ -32,10 +32,10 @@ NULL=nul
!IF "$(CFG)" == "ApacheModuleAuthDigest - Win32 Release"
-OUTDIR=.\ApacheModuleAuthDigestD
-INTDIR=.\ApacheModuleAuthDigestD
+OUTDIR=.\ApacheModuleAuthDigestR
+INTDIR=.\ApacheModuleAuthDigestR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleAuthDigestD
+OutDir=.\ApacheModuleAuthDigestR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -44,25 +44,30 @@ ALL : "$(OUTDIR)\ApacheModuleAuthDigest.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleAuthDigest.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleAuthDigest.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_auth_digest.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleAuthDigest.dll"
-@erase "$(OUTDIR)\ApacheModuleAuthDigest.exp"
-@erase "$(OUTDIR)\ApacheModuleAuthDigest.lib"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDigest.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleAuthDigest.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
-CPP_OBJS=.\ApacheModuleAuthDigestD/
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
+CPP_OBJS=.\ApacheModuleAuthDigestR/
CPP_SBRS=.
.c{$(CPP_OBJS)}.obj::
@@ -103,14 +108,15 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleAuthDigest.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\
- uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll\
- /incremental:no /pdb:"$(OUTDIR)\ApacheModuleAuthDigest.pdb" /machine:I386\
+LINK32_FLAGS=kernel32.lib advapi32.lib /nologo /subsystem:windows /dll\
+ /incremental:no /pdb:"$(OUTDIR)\ApacheModuleAuthDigest.pdb"\
+ /map:"$(INTDIR)\ApacheModuleAuthDigest.map" /machine:I386\
/out:"$(OUTDIR)\ApacheModuleAuthDigest.dll"\
- /implib:"$(OUTDIR)\ApacheModuleAuthDigest.lib"
+ /implib:"$(OUTDIR)\ApacheModuleAuthDigest.lib"\
+ /base:@"BaseAddr.ref",mod_auth_digest
LINK32_OBJS= \
- "$(INTDIR)\mod_auth_digest.obj"
+ "$(INTDIR)\mod_auth_digest.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleAuthDigest.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -122,7 +128,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleAuthDigestD
INTDIR=.\ApacheModuleAuthDigestD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleAuthDigestD
+OutDir=.\ApacheModuleAuthDigestD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -131,28 +137,31 @@ ALL : "$(OUTDIR)\ApacheModuleAuthDigest.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleAuthDigest.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleAuthDigest.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_auth_digest.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleAuthDigest.dll"
-@erase "$(OUTDIR)\ApacheModuleAuthDigest.exp"
- -@erase "$(OUTDIR)\ApacheModuleAuthDigest.ilk"
-@erase "$(OUTDIR)\ApacheModuleAuthDigest.lib"
+ -@erase "$(OUTDIR)\ApacheModuleAuthDigest.map"
-@erase "$(OUTDIR)\ApacheModuleAuthDigest.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
- /Fp"$(INTDIR)\ApacheModuleAuthDigest.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"\
- /FD /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleAuthDigestD/
CPP_SBRS=.
@@ -194,14 +203,15 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleAuthDigest.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib\
- uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll\
- /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleAuthDigest.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleAuthDigest.dll"\
- /implib:"$(OUTDIR)\ApacheModuleAuthDigest.lib" /pdbtype:sept
+LINK32_FLAGS=kernel32.lib advapi32.lib /nologo /subsystem:windows /dll\
+ /incremental:no /pdb:"$(OUTDIR)\ApacheModuleAuthDigest.pdb"\
+ /map:"$(INTDIR)\ApacheModuleAuthDigest.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleAuthDigest.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleAuthDigest.lib" /pdbtype:sept\
+ /base:@"BaseAddr.ref",mod_auth_digest
LINK32_OBJS= \
- "$(INTDIR)\mod_auth_digest.obj"
+ "$(INTDIR)\mod_auth_digest.obj" \
+ "..\..\CoreD\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleAuthDigest.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -213,10 +223,40 @@ LINK32_OBJS= \
!IF "$(CFG)" == "ApacheModuleAuthDigest - Win32 Release" || "$(CFG)" ==\
"ApacheModuleAuthDigest - Win32 Debug"
+
+!IF "$(CFG)" == "ApacheModuleAuthDigest - Win32 Release"
+
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
+
+!ELSEIF "$(CFG)" == "ApacheModuleAuthDigest - Win32 Debug"
+
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
SOURCE=..\..\modules\experimental\mod_auth_digest.c
DEP_CPP_MOD_A=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
"..\..\include\ap_md5.h"\
@@ -236,6 +276,12 @@ DEP_CPP_MOD_A=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_A=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+ "..\..\modules\experimental\mm.h"\
+
"$(INTDIR)\mod_auth_digest.obj" : $(SOURCE) $(DEP_CPP_MOD_A) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.dsp
index 3564c0e2ef6..305104b575f 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleCERNMeta" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleCERNMeta - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleCERNMeta.mak"\
- CFG="ApacheModuleCERNMeta - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleCERNMeta.mak" CFG="ApacheModuleCERNMeta - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleCERNMeta - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleCERNMeta - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleCERNMeta - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleCERNMeta - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleCERNMetaR"
-# PROP Intermediate_Dir ".\ApacheModuleCERNMetaR"
+# PROP Output_Dir "ApacheModuleCERNMetaR"
+# PROP Intermediate_Dir "ApacheModuleCERNMetaR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_cern_meta
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_cern_meta
!ELSEIF "$(CFG)" == "ApacheModuleCERNMeta - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleCERNMetaD"
-# PROP Intermediate_Dir ".\ApacheModuleCERNMetaD"
+# PROP Output_Dir "ApacheModuleCERNMetaD"
+# PROP Intermediate_Dir "ApacheModuleCERNMetaD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_cern_meta
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_cern_meta
!ENDIF
@@ -89,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleCERNMeta - Win32 Release"
# Name "ApacheModuleCERNMeta - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_cern_meta.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.mak
index 0a19cb45aa5..ac301da141f 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleCERNMeta.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleCERNMeta - Win32 Release"
OUTDIR=.\ApacheModuleCERNMetaR
INTDIR=.\ApacheModuleCERNMetaR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleCERNMetaR
+OutDir=.\ApacheModuleCERNMetaR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,38 +44,79 @@ ALL : "$(OUTDIR)\ApacheModuleCERNMeta.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleCERNMeta.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleCERNMeta.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_cern_meta.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleCERNMeta.dll"
-@erase "$(OUTDIR)\ApacheModuleCERNMeta.exp"
-@erase "$(OUTDIR)\ApacheModuleCERNMeta.lib"
+ -@erase "$(OUTDIR)\ApacheModuleCERNMeta.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleCERNMeta.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleCERNMetaR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleCERNMeta.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleCERNMeta.pdb" /machine:I386\
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleCERNMeta.pdb"\
+ /map:"$(INTDIR)\ApacheModuleCERNMeta.map" /machine:I386\
/out:"$(OUTDIR)\ApacheModuleCERNMeta.dll"\
- /implib:"$(OUTDIR)\ApacheModuleCERNMeta.lib"
+ /implib:"$(OUTDIR)\ApacheModuleCERNMeta.lib"\
+ /base:@"BaseAddr.ref",mod_cern_meta
LINK32_OBJS= \
- "$(INTDIR)\mod_cern_meta.obj"
+ "$(INTDIR)\mod_cern_meta.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleCERNMeta.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -91,7 +128,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleCERNMetaD
INTDIR=.\ApacheModuleCERNMetaD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleCERNMetaD
+OutDir=.\ApacheModuleCERNMetaD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -100,49 +137,33 @@ ALL : "$(OUTDIR)\ApacheModuleCERNMeta.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleCERNMeta.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleCERNMeta.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_cern_meta.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleCERNMeta.dll"
-@erase "$(OUTDIR)\ApacheModuleCERNMeta.exp"
- -@erase "$(OUTDIR)\ApacheModuleCERNMeta.ilk"
-@erase "$(OUTDIR)\ApacheModuleCERNMeta.lib"
+ -@erase "$(OUTDIR)\ApacheModuleCERNMeta.map"
-@erase "$(OUTDIR)\ApacheModuleCERNMeta.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
- /Fp"$(INTDIR)\ApacheModuleCERNMeta.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"\
- /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleCERNMetaD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleCERNMeta.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleCERNMeta.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleCERNMeta.dll"\
- /implib:"$(OUTDIR)\ApacheModuleCERNMeta.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_cern_meta.obj"
-
-"$(OUTDIR)\ApacheModuleCERNMeta.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -174,49 +195,72 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleCERNMeta.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleCERNMeta.pdb"\
+ /map:"$(INTDIR)\ApacheModuleCERNMeta.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleCERNMeta.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleCERNMeta.lib"\
+ /base:@"BaseAddr.ref",mod_cern_meta
+LINK32_OBJS= \
+ "$(INTDIR)\mod_cern_meta.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleCERNMeta.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleCERNMeta - Win32 Release" || "$(CFG)" ==\
"ApacheModuleCERNMeta - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_cern_meta.c
!IF "$(CFG)" == "ApacheModuleCERNMeta - Win32 Release"
-DEP_CPP_MOD_C=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\conf.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_request.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_script.h"\
- "..\..\include\util_uri.h"\
- ".\os.h"\
- ".\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_MOD_C=\
- "..\..\include\ebcdic.h"\
- "..\..\include\os.h"\
- "..\..\include\sfio.h"\
-
-
-"$(INTDIR)\mod_cern_meta.obj" : $(SOURCE) $(DEP_CPP_MOD_C) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleCERNMeta - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_cern_meta.c
DEP_CPP_MOD_C=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
- "..\..\include\conf.h"\
"..\..\include\hsregex.h"\
"..\..\include\http_config.h"\
"..\..\include\http_log.h"\
@@ -227,13 +271,16 @@ DEP_CPP_MOD_C=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_C=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_cern_meta.obj" : $(SOURCE) $(DEP_CPP_MOD_C) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleDigest.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleDigest.dsp
index fd180225828..103830e657e 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleDigest.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleDigest.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleDigest" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleDigest - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleDigest.mak"\
- CFG="ApacheModuleDigest - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleDigest.mak" CFG="ApacheModuleDigest - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleDigest - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleDigest - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleDigest - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleDigest - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleDigestR"
-# PROP Intermediate_Dir ".\ApacheModuleDigestR"
+# PROP Output_Dir "ApacheModuleDigestR"
+# PROP Intermediate_Dir "ApacheModuleDigestR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_digest
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_digest
!ELSEIF "$(CFG)" == "ApacheModuleDigest - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleDigestD"
-# PROP Intermediate_Dir ".\ApacheModuleDigestD"
+# PROP Output_Dir "ApacheModuleDigestD"
+# PROP Intermediate_Dir "ApacheModuleDigestD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_digest
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_digest
!ENDIF
@@ -89,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleDigest - Win32 Release"
# Name "ApacheModuleDigest - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_digest.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleDigest.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleDigest.mak
index 8bc9f510717..45f988595c4 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleDigest.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleDigest.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleDigest - Win32 Release"
OUTDIR=.\ApacheModuleDigestR
INTDIR=.\ApacheModuleDigestR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleDigestR
+OutDir=.\ApacheModuleDigestR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,38 +44,77 @@ ALL : "$(OUTDIR)\ApacheModuleDigest.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleDigest.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleDigest.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_digest.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleDigest.dll"
-@erase "$(OUTDIR)\ApacheModuleDigest.exp"
-@erase "$(OUTDIR)\ApacheModuleDigest.lib"
+ -@erase "$(OUTDIR)\ApacheModuleDigest.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleDigest.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleDigestR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleDigest.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleDigest.pdb" /machine:I386\
- /out:"$(OUTDIR)\ApacheModuleDigest.dll"\
- /implib:"$(OUTDIR)\ApacheModuleDigest.lib"
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleDigest.pdb" /map:"$(INTDIR)\ApacheModuleDigest.map"\
+ /machine:I386 /out:"$(OUTDIR)\ApacheModuleDigest.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleDigest.lib" /base:@"BaseAddr.ref",mod_digest
LINK32_OBJS= \
- "$(INTDIR)\mod_digest.obj"
+ "$(INTDIR)\mod_digest.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleDigest.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -91,7 +126,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleDigestD
INTDIR=.\ApacheModuleDigestD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleDigestD
+OutDir=.\ApacheModuleDigestD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -100,48 +135,33 @@ ALL : "$(OUTDIR)\ApacheModuleDigest.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleDigest.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleDigest.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_digest.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleDigest.dll"
-@erase "$(OUTDIR)\ApacheModuleDigest.exp"
- -@erase "$(OUTDIR)\ApacheModuleDigest.ilk"
-@erase "$(OUTDIR)\ApacheModuleDigest.lib"
+ -@erase "$(OUTDIR)\ApacheModuleDigest.map"
-@erase "$(OUTDIR)\ApacheModuleDigest.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleDigest.pch"\
- /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleDigestD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleDigest.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleDigest.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleDigest.dll"\
- /implib:"$(OUTDIR)\ApacheModuleDigest.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_digest.obj"
-
-"$(OUTDIR)\ApacheModuleDigest.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -173,70 +193,92 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleDigest.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleDigest.pdb" /map:"$(INTDIR)\ApacheModuleDigest.map"\
+ /debug /machine:I386 /out:"$(OUTDIR)\ApacheModuleDigest.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleDigest.lib" /base:@"BaseAddr.ref",mod_digest
+LINK32_OBJS= \
+ "$(INTDIR)\mod_digest.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleDigest.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleDigest - Win32 Release" || "$(CFG)" ==\
"ApacheModuleDigest - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_digest.c
!IF "$(CFG)" == "ApacheModuleDigest - Win32 Release"
-DEP_CPP_MOD_D=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\conf.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_core.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\httpd.h"\
- "..\..\include\ap_md5.h"\
- "..\..\include\util_md5.h"\
- "..\..\include\util_uri.h"\
- ".\os.h"\
- ".\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_MOD_D=\
- "..\..\include\ebcdic.h"\
- "..\..\include\os.h"\
- "..\..\include\sfio.h"\
-
-
-"$(INTDIR)\mod_digest.obj" : $(SOURCE) $(DEP_CPP_MOD_D) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleDigest - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_digest.c
DEP_CPP_MOD_D=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
+ "..\..\include\ap_md5.h"\
"..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
- "..\..\include\conf.h"\
"..\..\include\hsregex.h"\
"..\..\include\http_config.h"\
"..\..\include\http_core.h"\
"..\..\include\http_log.h"\
"..\..\include\http_protocol.h"\
"..\..\include\httpd.h"\
- "..\..\include\ap_md5.h"\
"..\..\include\util_md5.h"\
"..\..\include\util_uri.h"\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_D=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_digest.obj" : $(SOURCE) $(DEP_CPP_MOD_D) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleExpires.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleExpires.dsp
index 0b2fe902bb2..0a484973691 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleExpires.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleExpires.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleExpires" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleExpires - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleExpires.mak"\
- CFG="ApacheModuleExpires - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleExpires.mak" CFG="ApacheModuleExpires - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleExpires - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleExpires - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleExpires - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleExpires - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleExpiresR"
-# PROP Intermediate_Dir ".\ApacheModuleExpiresR"
+# PROP Output_Dir "ApacheModuleExpiresR"
+# PROP Intermediate_Dir "ApacheModuleExpiresR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_expires
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_expires
!ELSEIF "$(CFG)" == "ApacheModuleExpires - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleExpiresD"
-# PROP Intermediate_Dir ".\ApacheModuleExpiresD"
+# PROP Output_Dir "ApacheModuleExpiresD"
+# PROP Intermediate_Dir "ApacheModuleExpiresD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_expires
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_expires
!ENDIF
@@ -89,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleExpires - Win32 Release"
# Name "ApacheModuleExpires - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_expires.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleExpires.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleExpires.mak
index e8ee779d716..751f01c69b9 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleExpires.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleExpires.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleExpires - Win32 Release"
OUTDIR=.\ApacheModuleExpiresR
INTDIR=.\ApacheModuleExpiresR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleExpiresR
+OutDir=.\ApacheModuleExpiresR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,38 +44,78 @@ ALL : "$(OUTDIR)\ApacheModuleExpires.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleExpires.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleExpires.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_expires.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleExpires.dll"
-@erase "$(OUTDIR)\ApacheModuleExpires.exp"
-@erase "$(OUTDIR)\ApacheModuleExpires.lib"
+ -@erase "$(OUTDIR)\ApacheModuleExpires.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleExpires.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleExpiresR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleExpires.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleExpires.pdb" /machine:I386\
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleExpires.pdb"\
+ /map:"$(INTDIR)\ApacheModuleExpires.map" /machine:I386\
/out:"$(OUTDIR)\ApacheModuleExpires.dll"\
- /implib:"$(OUTDIR)\ApacheModuleExpires.lib"
+ /implib:"$(OUTDIR)\ApacheModuleExpires.lib" /base:@"BaseAddr.ref",mod_expires
LINK32_OBJS= \
- "$(INTDIR)\mod_expires.obj"
+ "$(INTDIR)\mod_expires.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleExpires.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -91,7 +127,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleExpiresD
INTDIR=.\ApacheModuleExpiresD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleExpiresD
+OutDir=.\ApacheModuleExpiresD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -100,48 +136,33 @@ ALL : "$(OUTDIR)\ApacheModuleExpires.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleExpires.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleExpires.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_expires.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleExpires.dll"
-@erase "$(OUTDIR)\ApacheModuleExpires.exp"
- -@erase "$(OUTDIR)\ApacheModuleExpires.ilk"
-@erase "$(OUTDIR)\ApacheModuleExpires.lib"
+ -@erase "$(OUTDIR)\ApacheModuleExpires.map"
-@erase "$(OUTDIR)\ApacheModuleExpires.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleExpires.pch"\
- /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleExpiresD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleExpires.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleExpires.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleExpires.dll"\
- /implib:"$(OUTDIR)\ApacheModuleExpires.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_expires.obj"
-
-"$(OUTDIR)\ApacheModuleExpires.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -173,47 +194,71 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleExpires.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleExpires.pdb"\
+ /map:"$(INTDIR)\ApacheModuleExpires.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleExpires.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleExpires.lib" /base:@"BaseAddr.ref",mod_expires
+LINK32_OBJS= \
+ "$(INTDIR)\mod_expires.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleExpires.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleExpires - Win32 Release" || "$(CFG)" ==\
"ApacheModuleExpires - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_expires.c
!IF "$(CFG)" == "ApacheModuleExpires - Win32 Release"
-DEP_CPP_MOD_E=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\conf.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_log.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- ".\os.h"\
- ".\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_MOD_E=\
- "..\..\include\ebcdic.h"\
- "..\..\include\os.h"\
- "..\..\include\sfio.h"\
-
-
-"$(INTDIR)\mod_expires.obj" : $(SOURCE) $(DEP_CPP_MOD_E) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleExpires - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_expires.c
DEP_CPP_MOD_E=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
- "..\..\include\conf.h"\
"..\..\include\hsregex.h"\
"..\..\include\http_config.h"\
"..\..\include\http_log.h"\
@@ -222,13 +267,16 @@ DEP_CPP_MOD_E=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_E=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_expires.obj" : $(SOURCE) $(DEP_CPP_MOD_E) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.dsp
index 1dc76027b31..b638d2021c8 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleHeaders" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleHeaders - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleHeaders.mak"\
- CFG="ApacheModuleHeaders - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleHeaders.mak" CFG="ApacheModuleHeaders - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleHeaders - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleHeaders - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleHeaders - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleHeaders - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleHeadersR"
-# PROP Intermediate_Dir ".\ApacheModuleHeadersR"
+# PROP Output_Dir "ApacheModuleHeadersR"
+# PROP Intermediate_Dir "ApacheModuleHeadersR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_headers
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_headers
!ELSEIF "$(CFG)" == "ApacheModuleHeaders - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleHeadersD"
-# PROP Intermediate_Dir ".\ApacheModuleHeadersD"
+# PROP Output_Dir "ApacheModuleHeadersD"
+# PROP Intermediate_Dir "ApacheModuleHeadersD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_headers
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_headers
!ENDIF
@@ -89,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleHeaders - Win32 Release"
# Name "ApacheModuleHeaders - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_headers.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.mak
index 72bfd9fe267..51df954bf8a 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleHeaders.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleHeaders - Win32 Release"
OUTDIR=.\ApacheModuleHeadersR
INTDIR=.\ApacheModuleHeadersR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleHeadersR
+OutDir=.\ApacheModuleHeadersR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,38 +44,78 @@ ALL : "$(OUTDIR)\ApacheModuleHeaders.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleHeaders.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleHeaders.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_headers.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleHeaders.dll"
-@erase "$(OUTDIR)\ApacheModuleHeaders.exp"
-@erase "$(OUTDIR)\ApacheModuleHeaders.lib"
+ -@erase "$(OUTDIR)\ApacheModuleHeaders.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleHeaders.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleHeadersR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleHeaders.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleHeaders.pdb" /machine:I386\
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleHeaders.pdb"\
+ /map:"$(INTDIR)\ApacheModuleHeaders.map" /machine:I386\
/out:"$(OUTDIR)\ApacheModuleHeaders.dll"\
- /implib:"$(OUTDIR)\ApacheModuleHeaders.lib"
+ /implib:"$(OUTDIR)\ApacheModuleHeaders.lib" /base:@"BaseAddr.ref",mod_headers
LINK32_OBJS= \
- "$(INTDIR)\mod_headers.obj"
+ "$(INTDIR)\mod_headers.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleHeaders.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -91,7 +127,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleHeadersD
INTDIR=.\ApacheModuleHeadersD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleHeadersD
+OutDir=.\ApacheModuleHeadersD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -100,48 +136,33 @@ ALL : "$(OUTDIR)\ApacheModuleHeaders.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleHeaders.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleHeaders.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_headers.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleHeaders.dll"
-@erase "$(OUTDIR)\ApacheModuleHeaders.exp"
- -@erase "$(OUTDIR)\ApacheModuleHeaders.ilk"
-@erase "$(OUTDIR)\ApacheModuleHeaders.lib"
+ -@erase "$(OUTDIR)\ApacheModuleHeaders.map"
-@erase "$(OUTDIR)\ApacheModuleHeaders.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleHeaders.pch"\
- /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleHeadersD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleHeaders.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleHeaders.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleHeaders.dll"\
- /implib:"$(OUTDIR)\ApacheModuleHeaders.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_headers.obj"
-
-"$(OUTDIR)\ApacheModuleHeaders.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -173,46 +194,71 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleHeaders.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleHeaders.pdb"\
+ /map:"$(INTDIR)\ApacheModuleHeaders.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleHeaders.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleHeaders.lib" /base:@"BaseAddr.ref",mod_headers
+LINK32_OBJS= \
+ "$(INTDIR)\mod_headers.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleHeaders.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleHeaders - Win32 Release" || "$(CFG)" ==\
"ApacheModuleHeaders - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_headers.c
!IF "$(CFG)" == "ApacheModuleHeaders - Win32 Release"
-DEP_CPP_MOD_H=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\conf.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- ".\os.h"\
- ".\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_MOD_H=\
- "..\..\include\ebcdic.h"\
- "..\..\include\os.h"\
- "..\..\include\sfio.h"\
-
-
-"$(INTDIR)\mod_headers.obj" : $(SOURCE) $(DEP_CPP_MOD_H) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleHeaders - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_headers.c
DEP_CPP_MOD_H=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
- "..\..\include\conf.h"\
"..\..\include\hsregex.h"\
"..\..\include\http_config.h"\
"..\..\include\httpd.h"\
@@ -220,13 +266,16 @@ DEP_CPP_MOD_H=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_H=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_headers.obj" : $(SOURCE) $(DEP_CPP_MOD_H) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleInfo.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleInfo.dsp
index cf856463352..8d37fef03e0 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleInfo.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleInfo.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleInfo" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -17,13 +17,12 @@ CFG=ApacheModuleInfo - Win32 Release
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleInfo - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleInfo - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleInfo - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleInfo - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -39,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleInfoR"
-# PROP Intermediate_Dir ".\ApacheModuleInfoR"
+# PROP Output_Dir "ApacheModuleInfoR"
+# PROP Intermediate_Dir "ApacheModuleInfoR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -53,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_info
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_info
!ELSEIF "$(CFG)" == "ApacheModuleInfo - Win32 Debug"
@@ -65,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleInfoD"
-# PROP Intermediate_Dir ".\ApacheModuleInfoD"
+# PROP Output_Dir "ApacheModuleInfoD"
+# PROP Intermediate_Dir "ApacheModuleInfoD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -79,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_info
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_info
!ENDIF
@@ -88,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleInfo - Win32 Release"
# Name "ApacheModuleInfo - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_info.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleInfo.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleInfo.mak
index 5f1e3bda21b..2dc83479305 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleInfo.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleInfo.mak
@@ -29,16 +29,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleInfo - Win32 Release"
OUTDIR=.\ApacheModuleInfoR
INTDIR=.\ApacheModuleInfoR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleInfoR
+OutDir=.\ApacheModuleInfoR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -47,37 +43,77 @@ ALL : "$(OUTDIR)\ApacheModuleInfo.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleInfo.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleInfo.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_info.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleInfo.dll"
-@erase "$(OUTDIR)\ApacheModuleInfo.exp"
-@erase "$(OUTDIR)\ApacheModuleInfo.lib"
+ -@erase "$(OUTDIR)\ApacheModuleInfo.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleInfo.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleInfoR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleInfo.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleInfo.pdb" /machine:I386\
- /out:"$(OUTDIR)\ApacheModuleInfo.dll" /implib:"$(OUTDIR)\ApacheModuleInfo.lib"
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleInfo.pdb" /map:"$(INTDIR)\ApacheModuleInfo.map"\
+ /machine:I386 /out:"$(OUTDIR)\ApacheModuleInfo.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleInfo.lib" /base:@"BaseAddr.ref",mod_info
LINK32_OBJS= \
- "$(INTDIR)\mod_info.obj"
+ "$(INTDIR)\mod_info.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleInfo.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -89,7 +125,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleInfoD
INTDIR=.\ApacheModuleInfoD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleInfoD
+OutDir=.\ApacheModuleInfoD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -98,48 +134,33 @@ ALL : "$(OUTDIR)\ApacheModuleInfo.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleInfo.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleInfo.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_info.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleInfo.dll"
-@erase "$(OUTDIR)\ApacheModuleInfo.exp"
- -@erase "$(OUTDIR)\ApacheModuleInfo.ilk"
-@erase "$(OUTDIR)\ApacheModuleInfo.lib"
+ -@erase "$(OUTDIR)\ApacheModuleInfo.map"
-@erase "$(OUTDIR)\ApacheModuleInfo.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleInfo.pch"\
- /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleInfoD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleInfo.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleInfo.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleInfo.dll"\
- /implib:"$(OUTDIR)\ApacheModuleInfo.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_info.obj"
-
-"$(OUTDIR)\ApacheModuleInfo.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -171,16 +192,70 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleInfo.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleInfo.pdb" /map:"$(INTDIR)\ApacheModuleInfo.map"\
+ /debug /machine:I386 /out:"$(OUTDIR)\ApacheModuleInfo.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleInfo.lib" /base:@"BaseAddr.ref",mod_info
+LINK32_OBJS= \
+ "$(INTDIR)\mod_info.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleInfo.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleInfo - Win32 Release" || "$(CFG)" ==\
"ApacheModuleInfo - Win32 Debug"
+
+!IF "$(CFG)" == "ApacheModuleInfo - Win32 Release"
+
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
+
+!ELSEIF "$(CFG)" == "ApacheModuleInfo - Win32 Debug"
+
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
SOURCE=..\..\modules\standard\mod_info.c
DEP_CPP_MOD_I=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
- "..\..\include\conf.h"\
"..\..\include\hsregex.h"\
"..\..\include\http_conf_globals.h"\
"..\..\include\http_config.h"\
@@ -193,12 +268,10 @@ DEP_CPP_MOD_I=\
"..\..\include\util_uri.h"\
".\os.h"\
".\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
NODEP_CPP_MOD_I=\
+ "..\..\include\ap_config_auto.h"\
"..\..\include\ebcdic.h"\
- "..\..\include\os.h"\
"..\..\include\sfio.h"\
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.dsp
index 4a0ffd1bf68..dae3c6434a9 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleRewrite" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleRewrite - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleRewrite.mak"\
- CFG="ApacheModuleRewrite - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleRewrite.mak" CFG="ApacheModuleRewrite - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleRewrite - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleRewrite - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleRewrite - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleRewrite - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleRewriteR"
-# PROP Intermediate_Dir ".\ApacheModuleRewriteR"
+# PROP Output_Dir "ApacheModuleRewriteR"
+# PROP Intermediate_Dir "ApacheModuleRewriteR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "NO_DBM_REWRITEMAP" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "NO_DBM_REWRITEMAP" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_rewrite
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_rewrite
!ELSEIF "$(CFG)" == "ApacheModuleRewrite - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleRewriteD"
-# PROP Intermediate_Dir ".\ApacheModuleRewriteD"
+# PROP Output_Dir "ApacheModuleRewriteD"
+# PROP Intermediate_Dir "ApacheModuleRewriteD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "NO_DBM_REWRITEMAP" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "NO_DBM_REWRITEMAP" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_rewrite
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_rewrite
!ENDIF
@@ -89,9 +87,6 @@ LINK32=link.exe
# Name "ApacheModuleRewrite - Win32 Release"
# Name "ApacheModuleRewrite - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_rewrite.c
@@ -100,18 +95,5 @@ SOURCE=..\..\modules\standard\mod_rewrite.c
SOURCE=.\passwd.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.mak
index 6d2e5659088..1484f6a88f7 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleRewrite.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleRewrite - Win32 Release"
OUTDIR=.\ApacheModuleRewriteR
INTDIR=.\ApacheModuleRewriteR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleRewriteR
+OutDir=.\ApacheModuleRewriteR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,42 +44,80 @@ ALL : "$(OUTDIR)\ApacheModuleRewrite.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleRewrite.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleRewrite.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_rewrite.obj"
-@erase "$(INTDIR)\passwd.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleRewrite.dll"
-@erase "$(OUTDIR)\ApacheModuleRewrite.exp"
-@erase "$(OUTDIR)\ApacheModuleRewrite.lib"
+ -@erase "$(OUTDIR)\ApacheModuleRewrite.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "NO_DBM_REWRITEMAP" /D "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN"\
- /Fp"$(INTDIR)\ApacheModuleRewrite.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"\
- /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "NO_DBM_REWRITEMAP" /D "SHARED_MODULE" /D\
+ "WIN32_LEAN_AND_MEAN" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleRewriteR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleRewrite.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo\
- /subsystem:windows /dll /incremental:no\
- /pdb:"$(OUTDIR)\ApacheModuleRewrite.pdb" /machine:I386\
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleRewrite.pdb"\
+ /map:"$(INTDIR)\ApacheModuleRewrite.map" /machine:I386\
/out:"$(OUTDIR)\ApacheModuleRewrite.dll"\
- /implib:"$(OUTDIR)\ApacheModuleRewrite.lib"
+ /implib:"$(OUTDIR)\ApacheModuleRewrite.lib" /base:@"BaseAddr.ref",mod_rewrite
LINK32_OBJS= \
"$(INTDIR)\mod_rewrite.obj" \
- "$(INTDIR)\passwd.obj"
+ "$(INTDIR)\passwd.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleRewrite.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -95,7 +129,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleRewriteD
INTDIR=.\ApacheModuleRewriteD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleRewriteD
+OutDir=.\ApacheModuleRewriteD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -104,52 +138,35 @@ ALL : "$(OUTDIR)\ApacheModuleRewrite.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleRewrite.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleRewrite.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_rewrite.obj"
-@erase "$(INTDIR)\passwd.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleRewrite.dll"
-@erase "$(OUTDIR)\ApacheModuleRewrite.exp"
- -@erase "$(OUTDIR)\ApacheModuleRewrite.ilk"
-@erase "$(OUTDIR)\ApacheModuleRewrite.lib"
+ -@erase "$(OUTDIR)\ApacheModuleRewrite.map"
-@erase "$(OUTDIR)\ApacheModuleRewrite.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "NO_DBM_REWRITEMAP" /D "SHARED_MODULE" /D\
- "WIN32_LEAN_AND_MEAN" /Fp"$(INTDIR)\ApacheModuleRewrite.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "NO_DBM_REWRITEMAP" /D\
+ "SHARED_MODULE" /D "WIN32_LEAN_AND_MEAN" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD\
+ /c
CPP_OBJS=.\ApacheModuleRewriteD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleRewrite.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo\
- /subsystem:windows /dll /incremental:yes\
- /pdb:"$(OUTDIR)\ApacheModuleRewrite.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)\ApacheModuleRewrite.dll"\
- /implib:"$(OUTDIR)\ApacheModuleRewrite.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_rewrite.obj" \
- "$(INTDIR)\passwd.obj"
-
-"$(OUTDIR)\ApacheModuleRewrite.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -181,43 +198,68 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleRewrite.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleRewrite.pdb"\
+ /map:"$(INTDIR)\ApacheModuleRewrite.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleRewrite.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleRewrite.lib" /base:@"BaseAddr.ref",mod_rewrite
+LINK32_OBJS= \
+ "$(INTDIR)\mod_rewrite.obj" \
+ "$(INTDIR)\passwd.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleRewrite.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleRewrite - Win32 Release" || "$(CFG)" ==\
"ApacheModuleRewrite - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_rewrite.c
!IF "$(CFG)" == "ApacheModuleRewrite - Win32 Release"
-DEP_CPP_MOD_R=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_config.h"\
- "..\..\include\ap_ctype.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_conf_globals.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_core.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_request.h"\
- "..\..\include\http_vhost.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- "..\..\modules\standard\mod_rewrite.h"\
- ".\os.h"\
- ".\readdir.h"\
-
-
-"$(INTDIR)\mod_rewrite.obj" : $(SOURCE) $(DEP_CPP_MOD_R) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleRewrite - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_rewrite.c
DEP_CPP_MOD_R=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
@@ -235,13 +277,16 @@ DEP_CPP_MOD_R=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_R=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_rewrite.obj" : $(SOURCE) $(DEP_CPP_MOD_R) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=.\passwd.c
DEP_CPP_PASSW=\
".\passwd.h"\
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.dsp
index 499a72f3f72..7ac3b269340 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleSpeling" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleSpeling - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleSpeling.mak"\
- CFG="ApacheModuleSpeling - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleSpeling.mak" CFG="ApacheModuleSpeling - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleSpeling - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleSpeling - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleSpeling - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleSpeling - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleSpelingR"
-# PROP Intermediate_Dir ".\ApacheModuleSpelingR"
+# PROP Output_Dir "ApacheModuleSpelingR"
+# PROP Intermediate_Dir "ApacheModuleSpelingR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_speling
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_speling
!ELSEIF "$(CFG)" == "ApacheModuleSpeling - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleSpelingD"
-# PROP Intermediate_Dir ".\ApacheModuleSpelingD"
+# PROP Output_Dir "ApacheModuleSpelingD"
+# PROP Intermediate_Dir "ApacheModuleSpelingD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_speling
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_speling
!ENDIF
@@ -89,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleSpeling - Win32 Release"
# Name "ApacheModuleSpeling - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_speling.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.mak
index 300ad98ceaa..9c391bc9265 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleSpeling.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleSpeling - Win32 Release"
OUTDIR=.\ApacheModuleSpelingR
INTDIR=.\ApacheModuleSpelingR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleSpelingR
+OutDir=.\ApacheModuleSpelingR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,38 +44,78 @@ ALL : "$(OUTDIR)\ApacheModuleSpeling.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleSpeling.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleSpeling.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_speling.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleSpeling.dll"
-@erase "$(OUTDIR)\ApacheModuleSpeling.exp"
-@erase "$(OUTDIR)\ApacheModuleSpeling.lib"
+ -@erase "$(OUTDIR)\ApacheModuleSpeling.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleSpeling.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleSpelingR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleSpeling.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleSpeling.pdb" /machine:I386\
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleSpeling.pdb"\
+ /map:"$(INTDIR)\ApacheModuleSpeling.map" /machine:I386\
/out:"$(OUTDIR)\ApacheModuleSpeling.dll"\
- /implib:"$(OUTDIR)\ApacheModuleSpeling.lib"
+ /implib:"$(OUTDIR)\ApacheModuleSpeling.lib" /base:@"BaseAddr.ref",mod_speling
LINK32_OBJS= \
- "$(INTDIR)\mod_speling.obj"
+ "$(INTDIR)\mod_speling.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleSpeling.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -91,7 +127,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleSpelingD
INTDIR=.\ApacheModuleSpelingD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleSpelingD
+OutDir=.\ApacheModuleSpelingD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -100,48 +136,33 @@ ALL : "$(OUTDIR)\ApacheModuleSpeling.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleSpeling.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleSpeling.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_speling.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleSpeling.dll"
-@erase "$(OUTDIR)\ApacheModuleSpeling.exp"
- -@erase "$(OUTDIR)\ApacheModuleSpeling.ilk"
-@erase "$(OUTDIR)\ApacheModuleSpeling.lib"
+ -@erase "$(OUTDIR)\ApacheModuleSpeling.map"
-@erase "$(OUTDIR)\ApacheModuleSpeling.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleSpeling.pch"\
- /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleSpelingD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleSpeling.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleSpeling.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleSpeling.dll"\
- /implib:"$(OUTDIR)\ApacheModuleSpeling.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_speling.obj"
-
-"$(OUTDIR)\ApacheModuleSpeling.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -173,48 +194,71 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleSpeling.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleSpeling.pdb"\
+ /map:"$(INTDIR)\ApacheModuleSpeling.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleSpeling.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleSpeling.lib" /base:@"BaseAddr.ref",mod_speling
+LINK32_OBJS= \
+ "$(INTDIR)\mod_speling.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleSpeling.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleSpeling - Win32 Release" || "$(CFG)" ==\
"ApacheModuleSpeling - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_speling.c
!IF "$(CFG)" == "ApacheModuleSpeling - Win32 Release"
-DEP_CPP_MOD_S=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\conf.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_core.h"\
- "..\..\include\http_log.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- ".\os.h"\
- ".\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_MOD_S=\
- "..\..\include\ebcdic.h"\
- "..\..\include\os.h"\
- "..\..\include\sfio.h"\
-
-
-"$(INTDIR)\mod_speling.obj" : $(SOURCE) $(DEP_CPP_MOD_S) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleSpeling - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_speling.c
DEP_CPP_MOD_S=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
- "..\..\include\conf.h"\
"..\..\include\hsregex.h"\
"..\..\include\http_config.h"\
"..\..\include\http_core.h"\
@@ -224,13 +268,16 @@ DEP_CPP_MOD_S=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_S=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_speling.obj" : $(SOURCE) $(DEP_CPP_MOD_S) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleStatus.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleStatus.dsp
index 8bc9271959b..77db64de09b 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleStatus.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleStatus.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleStatus" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleStatus - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleStatus.mak"\
- CFG="ApacheModuleStatus - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleStatus.mak" CFG="ApacheModuleStatus - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleStatus - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleStatus - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleStatus - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleStatus - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleStatusR"
-# PROP Intermediate_Dir ".\ApacheModuleStatusR"
+# PROP Output_Dir "ApacheModuleStatusR"
+# PROP Intermediate_Dir "ApacheModuleStatusR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_status
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_status
!ELSEIF "$(CFG)" == "ApacheModuleStatus - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleStatusD"
-# PROP Intermediate_Dir ".\ApacheModuleStatusD"
+# PROP Output_Dir "ApacheModuleStatusD"
+# PROP Intermediate_Dir "ApacheModuleStatusD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_status
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_status
!ENDIF
@@ -89,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleStatus - Win32 Release"
# Name "ApacheModuleStatus - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_status.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleStatus.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleStatus.mak
index e8d23623b53..0236dd6240d 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleStatus.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleStatus.mak
@@ -35,7 +35,7 @@ NULL=nul
OUTDIR=.\ApacheModuleStatusR
INTDIR=.\ApacheModuleStatusR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleStatusR
+OutDir=.\ApacheModuleStatusR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -44,24 +44,29 @@ ALL : "$(OUTDIR)\ApacheModuleStatus.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleStatus.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleStatus.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_status.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleStatus.dll"
-@erase "$(OUTDIR)\ApacheModuleStatus.exp"
-@erase "$(OUTDIR)\ApacheModuleStatus.lib"
+ -@erase "$(OUTDIR)\ApacheModuleStatus.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleStatus.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleStatusR/
CPP_SBRS=.
@@ -103,13 +108,13 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleStatus.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleStatus.pdb" /machine:I386\
- /out:"$(OUTDIR)\ApacheModuleStatus.dll"\
- /implib:"$(OUTDIR)\ApacheModuleStatus.lib"
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleStatus.pdb" /map:"$(INTDIR)\ApacheModuleStatus.map"\
+ /machine:I386 /out:"$(OUTDIR)\ApacheModuleStatus.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleStatus.lib" /base:@"BaseAddr.ref",mod_status
LINK32_OBJS= \
- "$(INTDIR)\mod_status.obj"
+ "$(INTDIR)\mod_status.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleStatus.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -121,7 +126,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleStatusD
INTDIR=.\ApacheModuleStatusD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleStatusD
+OutDir=.\ApacheModuleStatusD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -130,27 +135,31 @@ ALL : "$(OUTDIR)\ApacheModuleStatus.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleStatus.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleStatus.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_status.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleStatus.dll"
-@erase "$(OUTDIR)\ApacheModuleStatus.exp"
- -@erase "$(OUTDIR)\ApacheModuleStatus.ilk"
-@erase "$(OUTDIR)\ApacheModuleStatus.lib"
+ -@erase "$(OUTDIR)\ApacheModuleStatus.map"
-@erase "$(OUTDIR)\ApacheModuleStatus.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleStatus.pch"\
- /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleStatusD/
CPP_SBRS=.
@@ -192,13 +201,13 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleStatus.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleStatus.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleStatus.dll"\
- /implib:"$(OUTDIR)\ApacheModuleStatus.lib"
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleStatus.pdb" /map:"$(INTDIR)\ApacheModuleStatus.map"\
+ /debug /machine:I386 /out:"$(OUTDIR)\ApacheModuleStatus.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleStatus.lib" /base:@"BaseAddr.ref",mod_status
LINK32_OBJS= \
- "$(INTDIR)\mod_status.obj"
+ "$(INTDIR)\mod_status.obj" \
+ "..\..\CoreD\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleStatus.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -210,46 +219,46 @@ LINK32_OBJS= \
!IF "$(CFG)" == "ApacheModuleStatus - Win32 Release" || "$(CFG)" ==\
"ApacheModuleStatus - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_status.c
!IF "$(CFG)" == "ApacheModuleStatus - Win32 Release"
-DEP_CPP_MOD_S=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\ap_config.h"\
- "..\..\include\ap_ctype.h"\
- "..\..\include\buff.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_conf_globals.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_core.h"\
- "..\..\include\http_log.h"\
- "..\..\include\http_main.h"\
- "..\..\include\http_protocol.h"\
- "..\..\include\httpd.h"\
- "..\..\include\scoreboard.h"\
- "..\..\include\util_script.h"\
- "..\..\include\util_uri.h"\
- ".\os.h"\
- ".\readdir.h"\
-
-
-"$(INTDIR)\mod_status.obj" : $(SOURCE) $(DEP_CPP_MOD_S) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleStatus - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_status.c
DEP_CPP_MOD_S=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
+ "..\..\include\ap_alloc.h"\
"..\..\include\ap_config.h"\
"..\..\include\ap_ctype.h"\
+ "..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
"..\..\include\hsregex.h"\
+ "..\..\include\http_conf_globals.h"\
"..\..\include\http_config.h"\
"..\..\include\http_core.h"\
"..\..\include\http_log.h"\
@@ -262,13 +271,16 @@ DEP_CPP_MOD_S=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_S=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_status.obj" : $(SOURCE) $(DEP_CPP_MOD_S) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.dsp b/usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.dsp
index e3aee558ce5..ac1e0fbee12 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheModuleUserTrack" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -13,18 +13,16 @@ CFG=ApacheModuleUserTrack - Win32 Release
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
-!MESSAGE NMAKE /f "ApacheModuleUserTrack.mak"\
- CFG="ApacheModuleUserTrack - Win32 Release"
+!MESSAGE NMAKE /f "ApacheModuleUserTrack.mak" CFG="ApacheModuleUserTrack - Win32 Release"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "ApacheModuleUserTrack - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
-!MESSAGE "ApacheModuleUserTrack - Win32 Debug" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleUserTrack - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "ApacheModuleUserTrack - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -40,12 +38,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ".\ApacheModuleUserTrackR"
-# PROP Intermediate_Dir ".\ApacheModuleUserTrackR"
+# PROP Output_Dir "ApacheModuleUserTrackR"
+# PROP Intermediate_Dir "ApacheModuleUserTrackR"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -54,8 +52,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 ..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386 /base:@"BaseAddr.ref",mod_usertrack
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /map /machine:I386 /base:@"BaseAddr.ref",mod_usertrack
!ELSEIF "$(CFG)" == "ApacheModuleUserTrack - Win32 Debug"
@@ -66,12 +64,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ".\ApacheModuleUserTrackD"
-# PROP Intermediate_Dir ".\ApacheModuleUserTrackD"
+# PROP Output_Dir "ApacheModuleUserTrackD"
+# PROP Intermediate_Dir "ApacheModuleUserTrackD"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /c
-# ADD CPP /nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\..\include" /I "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -80,8 +78,8 @@ BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
-# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386
-# ADD LINK32 ..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows /dll /debug /machine:I386
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /base:@"BaseAddr.ref",mod_usertrack
+# ADD LINK32 kernel32.lib /nologo /subsystem:windows /dll /incremental:no /map /debug /machine:I386 /base:@"BaseAddr.ref",mod_usertrack
!ENDIF
@@ -89,25 +87,9 @@ LINK32=link.exe
# Name "ApacheModuleUserTrack - Win32 Release"
# Name "ApacheModuleUserTrack - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;hpj;bat;for;f90"
# Begin Source File
SOURCE=..\..\modules\standard\mod_usertrack.c
# End Source File
-# End Group
-# Begin Group "Header Files"
-
-# PROP Default_Filter "h;hpp;hxx;hm;inl;fi;fd"
-# Begin Source File
-
-SOURCE=.\readdir.h
-# End Source File
-# End Group
-# Begin Group "Resource Files"
-
-# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe"
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.mak b/usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.mak
index 20e415410bc..59a357f65d1 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheModuleUserTrack.mak
@@ -30,16 +30,12 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-MTL=midl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "ApacheModuleUserTrack - Win32 Release"
OUTDIR=.\ApacheModuleUserTrackR
INTDIR=.\ApacheModuleUserTrackR
# Begin Custom Macros
-OutDir=.\.\ApacheModuleUserTrackR
+OutDir=.\ApacheModuleUserTrackR
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -48,38 +44,79 @@ ALL : "$(OUTDIR)\ApacheModuleUserTrack.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleUserTrack.dll"
+ALL : "ApacheCore - Win32 Release" "$(OUTDIR)\ApacheModuleUserTrack.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 ReleaseCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_usertrack.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\ApacheModuleUserTrack.dll"
-@erase "$(OUTDIR)\ApacheModuleUserTrack.exp"
-@erase "$(OUTDIR)\ApacheModuleUserTrack.lib"
+ -@erase "$(OUTDIR)\ApacheModuleUserTrack.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /D "NDEBUG" /D "WIN32" /D\
- "_WINDOWS" /D "SHARED_MODULE" /Fp"$(INTDIR)\ApacheModuleUserTrack.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\..\include" /I "..\..\os\win32" /D\
+ "NDEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleUserTrackR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+MTL=midl.exe
MTL_PROJ=/nologo /D "NDEBUG" /mktyplib203 /win32
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleUserTrack.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=..\..\CoreR\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:no /pdb:"$(OUTDIR)\ApacheModuleUserTrack.pdb" /machine:I386\
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleUserTrack.pdb"\
+ /map:"$(INTDIR)\ApacheModuleUserTrack.map" /machine:I386\
/out:"$(OUTDIR)\ApacheModuleUserTrack.dll"\
- /implib:"$(OUTDIR)\ApacheModuleUserTrack.lib"
+ /implib:"$(OUTDIR)\ApacheModuleUserTrack.lib"\
+ /base:@"BaseAddr.ref",mod_usertrack
LINK32_OBJS= \
- "$(INTDIR)\mod_usertrack.obj"
+ "$(INTDIR)\mod_usertrack.obj" \
+ "..\..\CoreR\ApacheCore.lib"
"$(OUTDIR)\ApacheModuleUserTrack.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
@@ -91,7 +128,7 @@ LINK32_OBJS= \
OUTDIR=.\ApacheModuleUserTrackD
INTDIR=.\ApacheModuleUserTrackD
# Begin Custom Macros
-OutDir=.\.\ApacheModuleUserTrackD
+OutDir=.\ApacheModuleUserTrackD
# End Custom Macros
!IF "$(RECURSE)" == "0"
@@ -100,49 +137,33 @@ ALL : "$(OUTDIR)\ApacheModuleUserTrack.dll"
!ELSE
-ALL : "$(OUTDIR)\ApacheModuleUserTrack.dll"
+ALL : "ApacheCore - Win32 Debug" "$(OUTDIR)\ApacheModuleUserTrack.dll"
!ENDIF
+!IF "$(RECURSE)" == "1"
+CLEAN :"ApacheCore - Win32 DebugCLEAN"
+!ELSE
CLEAN :
+!ENDIF
-@erase "$(INTDIR)\mod_usertrack.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\ApacheModuleUserTrack.dll"
-@erase "$(OUTDIR)\ApacheModuleUserTrack.exp"
- -@erase "$(OUTDIR)\ApacheModuleUserTrack.ilk"
-@erase "$(OUTDIR)\ApacheModuleUserTrack.lib"
+ -@erase "$(OUTDIR)\ApacheModuleUserTrack.map"
-@erase "$(OUTDIR)\ApacheModuleUserTrack.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /D "_DEBUG" /D\
- "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
- /Fp"$(INTDIR)\ApacheModuleUserTrack.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"\
- /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\..\include" /I\
+ "..\..\os\win32" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "SHARED_MODULE"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheModuleUserTrackD/
CPP_SBRS=.
-MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleUserTrack.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=..\..\CoreD\ApacheCore.lib kernel32.lib user32.lib gdi32.lib\
- winspool.lib comdlg32.lib advapi32.lib shell32.lib /nologo /subsystem:windows\
- /dll /incremental:yes /pdb:"$(OUTDIR)\ApacheModuleUserTrack.pdb" /debug\
- /machine:I386 /out:"$(OUTDIR)\ApacheModuleUserTrack.dll"\
- /implib:"$(OUTDIR)\ApacheModuleUserTrack.lib"
-LINK32_OBJS= \
- "$(INTDIR)\mod_usertrack.obj"
-
-"$(OUTDIR)\ApacheModuleUserTrack.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -174,47 +195,72 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+MTL=midl.exe
+MTL_PROJ=/nologo /D "_DEBUG" /mktyplib203 /win32
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheModuleUserTrack.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=kernel32.lib /nologo /subsystem:windows /dll /incremental:no\
+ /pdb:"$(OUTDIR)\ApacheModuleUserTrack.pdb"\
+ /map:"$(INTDIR)\ApacheModuleUserTrack.map" /debug /machine:I386\
+ /out:"$(OUTDIR)\ApacheModuleUserTrack.dll"\
+ /implib:"$(OUTDIR)\ApacheModuleUserTrack.lib"\
+ /base:@"BaseAddr.ref",mod_usertrack
+LINK32_OBJS= \
+ "$(INTDIR)\mod_usertrack.obj" \
+ "..\..\CoreD\ApacheCore.lib"
+
+"$(OUTDIR)\ApacheModuleUserTrack.dll" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheModuleUserTrack - Win32 Release" || "$(CFG)" ==\
"ApacheModuleUserTrack - Win32 Debug"
-SOURCE=..\..\modules\standard\mod_usertrack.c
!IF "$(CFG)" == "ApacheModuleUserTrack - Win32 Release"
-DEP_CPP_MOD_U=\
- "..\..\include\alloc.h"\
- "..\..\include\ap.h"\
- "..\..\include\ap_mmn.h"\
- "..\..\include\buff.h"\
- "..\..\include\conf.h"\
- "..\..\include\hsregex.h"\
- "..\..\include\http_config.h"\
- "..\..\include\http_core.h"\
- "..\..\include\httpd.h"\
- "..\..\include\util_uri.h"\
- ".\os.h"\
- ".\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_MOD_U=\
- "..\..\include\ebcdic.h"\
- "..\..\include\os.h"\
- "..\..\include\sfio.h"\
-
-
-"$(INTDIR)\mod_usertrack.obj" : $(SOURCE) $(DEP_CPP_MOD_U) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
+"ApacheCore - Win32 Release" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Release"\
+
+ cd ".\os\win32"
+"ApacheCore - Win32 ReleaseCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Release" RECURSE=1
+ cd ".\os\win32"
!ELSEIF "$(CFG)" == "ApacheModuleUserTrack - Win32 Debug"
+"ApacheCore - Win32 Debug" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) /F ".\ApacheCore.mak" CFG="ApacheCore - Win32 Debug"
+ cd ".\os\win32"
+
+"ApacheCore - Win32 DebugCLEAN" :
+ cd "\apache\apache-1.3\src"
+ $(MAKE) /$(MAKEFLAGS) CLEAN /F ".\ApacheCore.mak"\
+ CFG="ApacheCore - Win32 Debug" RECURSE=1
+ cd ".\os\win32"
+
+!ENDIF
+
+SOURCE=..\..\modules\standard\mod_usertrack.c
DEP_CPP_MOD_U=\
- "..\..\include\alloc.h"\
"..\..\include\ap.h"\
+ "..\..\include\ap_alloc.h"\
+ "..\..\include\ap_config.h"\
+ "..\..\include\ap_ctype.h"\
"..\..\include\ap_mmn.h"\
"..\..\include\buff.h"\
- "..\..\include\conf.h"\
"..\..\include\hsregex.h"\
"..\..\include\http_config.h"\
"..\..\include\http_core.h"\
@@ -223,13 +269,16 @@ DEP_CPP_MOD_U=\
".\os.h"\
".\readdir.h"\
+NODEP_CPP_MOD_U=\
+ "..\..\include\ap_config_auto.h"\
+ "..\..\include\ebcdic.h"\
+ "..\..\include\sfio.h"\
+
"$(INTDIR)\mod_usertrack.obj" : $(SOURCE) $(DEP_CPP_MOD_U) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/os/win32/ApacheOS.dsp b/usr.sbin/httpd/src/os/win32/ApacheOS.dsp
index 55b814873e1..01c094c7220 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheOS.dsp
+++ b/usr.sbin/httpd/src/os/win32/ApacheOS.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="ApacheOS" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
@@ -22,6 +22,7 @@ CFG=ApacheOS - Win32 Debug
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -38,8 +39,8 @@ CPP=cl.exe
# PROP Output_Dir "ApacheOSR"
# PROP Intermediate_Dir "ApacheOSR"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
@@ -59,8 +60,8 @@ LIB32=link.exe -lib
# PROP Output_Dir "ApacheOSD"
# PROP Intermediate_Dir "ApacheOSD"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
diff --git a/usr.sbin/httpd/src/os/win32/ApacheOS.mak b/usr.sbin/httpd/src/os/win32/ApacheOS.mak
index 4630d8c54bc..29ec1bb4821 100644
--- a/usr.sbin/httpd/src/os/win32/ApacheOS.mak
+++ b/usr.sbin/httpd/src/os/win32/ApacheOS.mak
@@ -26,8 +26,6 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-
!IF "$(CFG)" == "ApacheOS - Win32 Release"
OUTDIR=.\ApacheOSR
@@ -54,10 +52,43 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+RSC=rc.exe
+CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
- /Fp"$(INTDIR)\ApacheOS.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheOSR/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheOS.bsc"
BSC32_SBRS= \
@@ -98,25 +129,12 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+RSC=rc.exe
+CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
- /Fp"$(INTDIR)\ApacheOS.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\ApacheOSD/
CPP_SBRS=.
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheOS.bsc"
-BSC32_SBRS= \
-
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\ApacheOS.lib"
-LIB32_OBJS= \
- "$(INTDIR)\os.obj"
-
-"$(OUTDIR)\ApacheOS.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
- $(LIB32) @<<
- $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -148,6 +166,22 @@ LIB32_OBJS= \
$(CPP_PROJ) $<
<<
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\ApacheOS.bsc"
+BSC32_SBRS= \
+
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\ApacheOS.lib"
+LIB32_OBJS= \
+ "$(INTDIR)\os.obj"
+
+"$(OUTDIR)\ApacheOS.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+ $(LIB32) @<<
+ $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+
+!ENDIF
+
!IF "$(CFG)" == "ApacheOS - Win32 Release" || "$(CFG)" ==\
"ApacheOS - Win32 Debug"
diff --git a/usr.sbin/httpd/src/os/win32/MakeModuleMak.mak b/usr.sbin/httpd/src/os/win32/MakeModuleMak.mak
index 6b51ed08349..455434f30f2 100644
--- a/usr.sbin/httpd/src/os/win32/MakeModuleMak.mak
+++ b/usr.sbin/httpd/src/os/win32/MakeModuleMak.mak
@@ -35,7 +35,7 @@ NULL=nul
################################################################################
# Begin Project
RSC=rc.exe
-CPP=cl.exe
+CPP=bcc32.exe
!IF "$(CFG)" == "MakeModuleMak - Win32 Release"
@@ -63,8 +63,8 @@ CLEAN :
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /YX /c
-CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE"\
- /Fp"$(INTDIR)/MakeModuleMak.pch" /YX /Fo"$(INTDIR)/" /c
+CPP_PROJ=-s /ML -w-8057 -w-8008 -w-8066 /O2 -D"WIN32" -D"NDEBUG" -D"_CONSOLE"\
+ /Fp"$(INTDIR)/MakeModuleMak.pch" /YX -o"$(INTDIR)/$&.obj" /c
CPP_OBJS=.\Release/
CPP_SBRS=.\.
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -121,8 +121,8 @@ CLEAN :
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /YX /c
-CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE"\
- /Fp"$(INTDIR)/MakeModuleMak.pch" /YX /Fo"$(INTDIR)/" /Fd"$(INTDIR)/" /c
+CPP_PROJ=-s /MLd -w-8057 -w-8008 -w-8066 /Gm -v /Od -D"WIN32" -D"_DEBUG" -D"_CONSOLE"\
+ /Fp"$(INTDIR)/MakeModuleMak.pch" /YX -o"$(INTDIR)/$&.obj" /c
CPP_OBJS=.\Debug/
CPP_SBRS=.\.
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -151,13 +151,13 @@ LINK32_OBJS= \
!ENDIF
-.c{$(CPP_OBJS)}.obj:
+.c.obj:
$(CPP) $(CPP_PROJ) $<
-.cpp{$(CPP_OBJS)}.obj:
+.cpp.obj:
$(CPP) $(CPP_PROJ) $<
-.cxx{$(CPP_OBJS)}.obj:
+.cxx.obj:
$(CPP) $(CPP_PROJ) $<
.c{$(CPP_SBRS)}.sbr:
@@ -184,9 +184,9 @@ LINK32_OBJS= \
################################################################################
# Begin Source File
-SOURCE=.\MakeModuleMak.cpp
+SOURCE_1=.\MakeModuleMak.cpp
-"$(INTDIR)\MakeModuleMak.obj" : $(SOURCE) "$(INTDIR)"
+"$(INTDIR)\MakeModuleMak.obj" : $(SOURCE_0) "$(INTDIR)"
# End Source File
diff --git a/usr.sbin/httpd/src/os/win32/Module.mak.tmpl b/usr.sbin/httpd/src/os/win32/Module.mak.tmpl
index 162456f0644..4f6f2e1be9c 100644
--- a/usr.sbin/httpd/src/os/win32/Module.mak.tmpl
+++ b/usr.sbin/httpd/src/os/win32/Module.mak.tmpl
@@ -202,7 +202,7 @@ LINK32_OBJS= \
SOURCE=\work\apache\src\%Source%.c
DEP_CPP_MOD_A=\
- "..\alloc.h"\
+ "..\ap_alloc.h"\
"..\buff.h"\
"..\conf.h"\
"..\http_config.h"\
diff --git a/usr.sbin/httpd/src/os/win32/installer/installdll/install.dsp b/usr.sbin/httpd/src/os/win32/installer/installdll/install.dsp
index 9c33d71a788..b5cefde54d8 100644
--- a/usr.sbin/httpd/src/os/win32/installer/installdll/install.dsp
+++ b/usr.sbin/httpd/src/os/win32/installer/installdll/install.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="install" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Dynamic-Link Library" 0x0102
@@ -17,12 +17,12 @@ CFG=install - Win32 Debug
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "install - Win32 Release" (based on\
- "Win32 (x86) Dynamic-Link Library")
+!MESSAGE "install - Win32 Release" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE "install - Win32 Debug" (based on "Win32 (x86) Dynamic-Link Library")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -42,8 +42,8 @@ RSC=rc.exe
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MT /W3 /GX /O2 /I "../../../../include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /MT /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MT /W3 /GX /O2 /I "..\..\..\..\include" /I "..\..\..\..\os\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x809 /d "NDEBUG"
@@ -53,7 +53,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll /machine:I386
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll /map /machine:I386
!ELSEIF "$(CFG)" == "install - Win32 Debug"
@@ -68,8 +68,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MTd /W3 /Gm /GX /ZI /Od /I "../../../../include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
@@ -79,7 +79,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll /map /debug /machine:I386 /pdbtype:sept
!ENDIF
@@ -87,9 +87,6 @@ LINK32=link.exe
# Name "install - Win32 Release"
# Name "install - Win32 Debug"
-# Begin Group "Source Files"
-
-# PROP Default_Filter ""
# Begin Source File
SOURCE=..\..\..\..\ap\ap_snprintf.c
@@ -102,6 +99,5 @@ SOURCE=.\install.c
SOURCE=.\install.def
# End Source File
-# End Group
# End Target
# End Project
diff --git a/usr.sbin/httpd/src/os/win32/installer/installdll/install.mak b/usr.sbin/httpd/src/os/win32/installer/installdll/install.mak
index 65d7608ba54..b3859557b9c 100644
--- a/usr.sbin/httpd/src/os/win32/installer/installdll/install.mak
+++ b/usr.sbin/httpd/src/os/win32/installer/installdll/install.mak
@@ -52,13 +52,14 @@ CLEAN :
-@erase "$(OUTDIR)\install.dll"
-@erase "$(OUTDIR)\install.exp"
-@erase "$(OUTDIR)\install.lib"
+ -@erase "$(OUTDIR)\install.map"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "../../../../include" /D "WIN32" /D\
- "NDEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\install.pch" /YX /Fo"$(INTDIR)\\"\
+CPP_PROJ=/nologo /MT /W3 /GX /O2 /I "..\..\..\..\include" /I\
+ "..\..\..\..\os\win32" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /Fo"$(INTDIR)\\"\
/Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Release/
CPP_SBRS=.
@@ -103,8 +104,9 @@ BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll\
- /incremental:no /pdb:"$(OUTDIR)\install.pdb" /machine:I386 /def:".\install.def"\
- /out:"$(OUTDIR)\install.dll" /implib:"$(OUTDIR)\install.lib"
+ /incremental:no /pdb:"$(OUTDIR)\install.pdb" /map:"$(INTDIR)\install.map"\
+ /machine:I386 /def:".\install.def" /out:"$(OUTDIR)\install.dll"\
+ /implib:"$(OUTDIR)\install.lib"
DEF_FILE= \
".\install.def"
LINK32_OBJS= \
@@ -143,6 +145,7 @@ CLEAN :
-@erase "$(OUTDIR)\install.exp"
-@erase "$(OUTDIR)\install.ilk"
-@erase "$(OUTDIR)\install.lib"
+ -@erase "$(OUTDIR)\install.map"
-@erase "$(OUTDIR)\install.pdb"
"$(OUTDIR)" :
@@ -150,8 +153,7 @@ CLEAN :
CPP=cl.exe
CPP_PROJ=/nologo /MTd /W3 /Gm /GX /Zi /Od /I "../../../../include" /D "WIN32"\
- /D "_DEBUG" /D "_WINDOWS" /Fp"$(INTDIR)\install.pch" /YX /Fo"$(INTDIR)\\"\
- /Fd"$(INTDIR)\\" /FD /c
+ /D "_DEBUG" /D "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Debug/
CPP_SBRS=.
@@ -195,8 +197,8 @@ BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
advapi32.lib shell32.lib wsock32.lib /nologo /subsystem:windows /dll\
- /incremental:yes /pdb:"$(OUTDIR)\install.pdb" /debug /machine:I386\
- /def:".\install.def" /out:"$(OUTDIR)\install.dll"\
+ /incremental:yes /pdb:"$(OUTDIR)\install.pdb" /map:"$(INTDIR)\install.map"\
+ /debug /machine:I386 /def:".\install.def" /out:"$(OUTDIR)\install.dll"\
/implib:"$(OUTDIR)\install.lib" /pdbtype:sept
DEF_FILE= \
".\install.def"
@@ -219,8 +221,8 @@ SOURCE=..\..\..\..\ap\ap_snprintf.c
!IF "$(CFG)" == "install - Win32 Release"
DEP_CPP_AP_SN=\
- "..\..\..\..\include\alloc.h"\
"..\..\..\..\include\ap.h"\
+ "..\..\..\..\include\ap_alloc.h"\
"..\..\..\..\include\ap_config.h"\
"..\..\..\..\include\ap_ctype.h"\
"..\..\..\..\include\ap_mmn.h"\
@@ -231,6 +233,11 @@ DEP_CPP_AP_SN=\
"..\..\os.h"\
"..\..\readdir.h"\
+NODEP_CPP_AP_SN=\
+ "..\..\..\..\include\ap_config_auto.h"\
+ "..\..\..\..\include\ebcdic.h"\
+ "..\..\..\..\include\sfio.h"\
+
"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
@@ -239,8 +246,8 @@ DEP_CPP_AP_SN=\
!ELSEIF "$(CFG)" == "install - Win32 Debug"
DEP_CPP_AP_SN=\
- "..\..\..\..\include\alloc.h"\
"..\..\..\..\include\ap.h"\
+ "..\..\..\..\include\ap_alloc.h"\
"..\..\..\..\include\ap_config.h"\
"..\..\..\..\include\ap_ctype.h"\
"..\..\..\..\include\ap_mmn.h"\
@@ -251,6 +258,12 @@ DEP_CPP_AP_SN=\
"..\..\os.h"\
"..\..\readdir.h"\
+NODEP_CPP_AP_SN=\
+ "..\..\..\..\include\ap_config_auto.h"\
+ "..\..\..\..\include\ebcdic.h"\
+ "..\..\..\..\include\os.h"\
+ "..\..\..\..\include\sfio.h"\
+
"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
@@ -271,6 +284,9 @@ DEP_CPP_INSTA=\
"..\..\..\..\include\hsregex.h"\
"..\..\os.h"\
+NODEP_CPP_INSTA=\
+ "..\..\..\..\include\ap_config_auto.h"\
+
"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTA) "$(INTDIR)"
@@ -286,6 +302,10 @@ DEP_CPP_INSTA=\
"..\..\..\..\include\hsregex.h"\
"..\..\os.h"\
+NODEP_CPP_INSTA=\
+ "..\..\..\..\include\ap_config_auto.h"\
+ "..\..\..\..\include\os.h"\
+
"$(INTDIR)\install.obj" : $(SOURCE) $(DEP_CPP_INSTA) "$(INTDIR)"
diff --git a/usr.sbin/httpd/src/os/win32/installer/installdll/test/test.dsp b/usr.sbin/httpd/src/os/win32/installer/installdll/test/test.dsp
index 9ce6921ae3f..8d0cfb2edc4 100644
--- a/usr.sbin/httpd/src/os/win32/installer/installdll/test/test.dsp
+++ b/usr.sbin/httpd/src/os/win32/installer/installdll/test/test.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="test" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Application" 0x0101
@@ -22,6 +22,7 @@ CFG=test - Win32 Debug
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -67,8 +68,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /o NUL /win32
# ADD BASE RSC /l 0x809 /d "_DEBUG"
diff --git a/usr.sbin/httpd/src/os/win32/installer/installdll/test/test.mak b/usr.sbin/httpd/src/os/win32/installer/installdll/test/test.mak
index 6dcad364beb..43e5668e960 100644
--- a/usr.sbin/httpd/src/os/win32/installer/installdll/test/test.mak
+++ b/usr.sbin/httpd/src/os/win32/installer/installdll/test/test.mak
@@ -52,38 +52,38 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP=cl.exe
-CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS"\
- /Fp"$(INTDIR)\test.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=bcc32.exe
+CPP_PROJ=-s /ML -w-8057 -w-8008 -w-8066 /O2 -D"WIN32" -D"NDEBUG" -D"_WINDOWS"\
+ /Fp"$(INTDIR)\test.pch" /YX -o"$(INTDIR)\\$&.obj" /c
CPP_OBJS=.\Release/
CPP_SBRS=.
-.c{$(CPP_OBJS)}.obj::
+.c.obj:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.cpp{$(CPP_OBJS)}.obj::
+.cpp.obj:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.cxx{$(CPP_OBJS)}.obj::
+.cxx.obj:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.c{$(CPP_SBRS)}.sbr::
+.c{$(CPP_SBRS)}.sbr:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.cpp{$(CPP_SBRS)}.sbr::
+.cpp{$(CPP_SBRS)}.sbr:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.cxx{$(CPP_SBRS)}.sbr::
+.cxx{$(CPP_SBRS)}.sbr:
$(CPP) @<<
$(CPP_PROJ) $<
<<
@@ -142,38 +142,38 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP=cl.exe
-CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS"\
- /Fp"$(INTDIR)\test.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=bcc32.exe
+CPP_PROJ=-s /MLd -w-8057 -w-8008 -w-8066 /Gm -v /Od -D"WIN32" -D"_DEBUG" -D"_WINDOWS"\
+ /Fp"$(INTDIR)\test.pch" /YX -o"$(INTDIR)\\$&.obj" /c
CPP_OBJS=.\Debug/
CPP_SBRS=.
-.c{$(CPP_OBJS)}.obj::
+.c.obj:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.cpp{$(CPP_OBJS)}.obj::
+.cpp.obj:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.cxx{$(CPP_OBJS)}.obj::
+.cxx.obj:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.c{$(CPP_SBRS)}.sbr::
+.c{$(CPP_SBRS)}.sbr:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.cpp{$(CPP_SBRS)}.sbr::
+.cpp{$(CPP_SBRS)}.sbr:
$(CPP) @<<
$(CPP_PROJ) $<
<<
-.cxx{$(CPP_SBRS)}.sbr::
+.cxx{$(CPP_SBRS)}.sbr:
$(CPP) @<<
$(CPP_PROJ) $<
<<
@@ -206,22 +206,22 @@ LINK32_OBJS= \
!IF "$(CFG)" == "test - Win32 Release" || "$(CFG)" == "test - Win32 Debug"
-SOURCE=.\test.c
+SOURCE_1=.\test.c
DEP_CPP_TEST_=\
".\test.h"\
-"$(INTDIR)\test.obj" : $(SOURCE) $(DEP_CPP_TEST_) "$(INTDIR)"
+"$(INTDIR)\test.obj" : $(SOURCE_0) $(DEP_CPP_TEST_) "$(INTDIR)"
-SOURCE=.\test.rc
+SOURCE_1=.\test.rc
DEP_RSC_TEST_R=\
".\test.h"\
".\test.ico"\
-"$(INTDIR)\test.res" : $(SOURCE) $(DEP_RSC_TEST_R) "$(INTDIR)"
- $(RSC) $(RSC_PROJ) $(SOURCE)
+"$(INTDIR)\test.res" : $(SOURCE_0) $(DEP_RSC_TEST_R) "$(INTDIR)"
+ $(RSC) $(RSC_PROJ) $(SOURCE_0)
diff --git a/usr.sbin/httpd/src/os/win32/mod_isapi.c b/usr.sbin/httpd/src/os/win32/mod_isapi.c
index f5e48a6a7d0..ef736538be2 100644
--- a/usr.sbin/httpd/src/os/win32/mod_isapi.c
+++ b/usr.sbin/httpd/src/os/win32/mod_isapi.c
@@ -74,6 +74,9 @@
* the ISA is in.
*/
+/* A lousy hack to include ap_check_cmd_context(): */
+#define CORE_PRIVATE
+
#include "httpd.h"
#include "http_config.h"
#include "http_core.h"
@@ -81,7 +84,7 @@
#include "http_request.h"
#include "http_log.h"
#include "util_script.h"
-
+#include <stdlib.h>
/* We use the exact same header file as the original */
#include <HttpExt.h>
@@ -91,6 +94,11 @@
module isapi_module;
+static DWORD ReadAheadBuffer = 49152;
+static int LogNotSupported = -1;
+static int AppendLogToErrors = 0;
+static int AppendLogToQuery = 0;
+
/* Our "Connection ID" structure */
typedef struct {
@@ -102,13 +110,13 @@ typedef struct {
/* Declare the ISAPI functions */
BOOL WINAPI GetServerVariable (HCONN hConn, LPSTR lpszVariableName,
- LPVOID lpvBuffer, LPDWORD lpdwSizeofBuffer);
+ LPVOID lpvBuffer, LPDWORD lpdwSizeofBuffer);
BOOL WINAPI WriteClient (HCONN ConnID, LPVOID Buffer, LPDWORD lpwdwBytes,
- DWORD dwReserved);
+ DWORD dwReserved);
BOOL WINAPI ReadClient (HCONN ConnID, LPVOID lpvBuffer, LPDWORD lpdwSize);
BOOL WINAPI ServerSupportFunction (HCONN hConn, DWORD dwHSERequest,
- LPVOID lpvBuffer, LPDWORD lpdwSize,
- LPDWORD lpdwDataType);
+ LPVOID lpvBuffer, LPDWORD lpdwSize,
+ LPDWORD lpdwDataType);
/*
The optimiser blows it totally here. What happens is that autos are addressed relative to the
@@ -120,7 +128,7 @@ BOOL WINAPI ServerSupportFunction (HCONN hConn, DWORD dwHSERequest,
int isapi_handler (request_rec *r) {
LPEXTENSION_CONTROL_BLOCK ecb =
- ap_pcalloc(r->pool, sizeof(struct _EXTENSION_CONTROL_BLOCK));
+ ap_pcalloc(r->pool, sizeof(struct _EXTENSION_CONTROL_BLOCK));
HSE_VERSION_INFO *pVer = ap_pcalloc(r->pool, sizeof(HSE_VERSION_INFO));
HINSTANCE isapi_handle;
@@ -130,58 +138,66 @@ int isapi_handler (request_rec *r) {
isapi_cid *cid = ap_pcalloc(r->pool, sizeof(isapi_cid));
table *e = r->subprocess_env;
+ DWORD read;
+ char *p;
int retval;
+ int res;
/* Use similar restrictions as CGIs */
if (!(ap_allow_options(r) & OPT_EXECCGI))
- return FORBIDDEN;
+ return FORBIDDEN;
if (r->finfo.st_mode == 0)
- return NOT_FOUND;
+ return NOT_FOUND;
if (S_ISDIR(r->finfo.st_mode))
- return FORBIDDEN;
+ return FORBIDDEN;
- /* Load the module */
-
- if (!(isapi_handle = LoadLibraryEx(r->filename, NULL,
- LOAD_WITH_ALTERED_SEARCH_PATH))) {
- ap_log_rerror(APLOG_MARK, APLOG_ALERT, r,
- "Could not load DLL: %s", r->filename);
- return SERVER_ERROR;
+ if (!(isapi_handle = ap_os_dso_load(r->filename))) {
+ ap_log_rerror(APLOG_MARK, APLOG_ALERT, r,
+ "ISAPI Could not load DLL: %s", r->filename);
+ return SERVER_ERROR;
}
if (!(isapi_version =
- (void *)(GetProcAddress(isapi_handle, "GetExtensionVersion")))) {
- ap_log_rerror(APLOG_MARK, APLOG_ALERT, r,
- "DLL could not load GetExtensionVersion(): %s", r->filename);
- FreeLibrary(isapi_handle);
- return SERVER_ERROR;
+ (void *)(ap_os_dso_sym(isapi_handle, "GetExtensionVersion")))) {
+ ap_log_rerror(APLOG_MARK, APLOG_ALERT, r,
+ "DLL could not load GetExtensionVersion(): %s",
+ r->filename);
+ ap_os_dso_unload(isapi_handle);
+ return SERVER_ERROR;
}
if (!(isapi_entry =
- (void *)(GetProcAddress(isapi_handle, "HttpExtensionProc")))) {
- ap_log_rerror(APLOG_MARK, APLOG_ALERT, r,
- "DLL could not load HttpExtensionProc(): %s", r->filename);
- FreeLibrary(isapi_handle);
- return SERVER_ERROR;
+ (void *)(ap_os_dso_sym(isapi_handle, "HttpExtensionProc")))) {
+ ap_log_rerror(APLOG_MARK, APLOG_ALERT, r,
+ "DLL could not load HttpExtensionProc(): %s",
+ r->filename);
+ ap_os_dso_unload(isapi_handle);
+ return SERVER_ERROR;
}
- isapi_term = (void *)(GetProcAddress(isapi_handle, "TerminateExtension"));
+ isapi_term = (void *)(ap_os_dso_sym(isapi_handle, "TerminateExtension"));
/* Run GetExtensionVersion() */
if (!(*isapi_version)(pVer)) {
- ap_log_rerror(APLOG_MARK, APLOG_ALERT, r,
- "ISAPI GetExtensionVersion() failed: %s", r->filename);
- FreeLibrary(isapi_handle);
- return SERVER_ERROR;
+ ap_log_rerror(APLOG_MARK, APLOG_ALERT, r,
+ "ISAPI GetExtensionVersion() failed: %s", r->filename);
+ ap_os_dso_unload(isapi_handle);
+ return SERVER_ERROR;
}
- /* Set up variables */
+ /* Set up variables. There are a couple of special cases for ISAPI.
+ * XXX: These were taken verbatim from GetServerVariable, and should
+ * be reviewed carefully.
+ */
ap_add_common_vars(r);
ap_add_cgi_vars(r);
+ ap_table_setn(r->subprocess_env, "UNMAPPED_REMOTE_USER", "REMOTE_USER");
+ ap_table_setn(r->subprocess_env, "SERVER_PORT_SECURE", "0");
+ ap_table_setn(r->subprocess_env, "URL", r->uri);
/* Set up connection ID */
ecb->ConnID = (HCONN)cid;
@@ -193,59 +209,69 @@ int isapi_handler (request_rec *r) {
ecb->dwVersion = MAKELONG(0, 2);
ecb->dwHttpStatusCode = 0;
strcpy(ecb->lpszLogData, "");
- ecb->lpszMethod = r->method;
- ecb->lpszQueryString = ap_table_get(e, "QUERY_STRING");
- ecb->lpszPathInfo = ap_table_get(e, "PATH_INFO");
- ecb->lpszPathTranslated = ap_table_get(e, "PATH_TRANSLATED");
- ecb->lpszContentType = ap_table_get(e, "CONTENT_TYPE");
+ ecb->lpszMethod = ap_pstrdup(r->pool, r->method);
+ ecb->lpszQueryString = ap_pstrdup(r->pool, ap_table_get(e, "QUERY_STRING"));
+ ecb->lpszPathInfo = ap_pstrdup(r->pool, ap_table_get(e, "PATH_INFO"));
+ ecb->lpszPathTranslated = ap_pstrdup(r->pool, ap_table_get(e, "PATH_TRANSLATED"));
+ ecb->lpszContentType = ap_pstrdup(r->pool, ap_table_get(e, "CONTENT_TYPE"));
/* Set up client input */
if ((retval = ap_setup_client_block(r, REQUEST_CHUNKED_ERROR))) {
- if (isapi_term) (*isapi_term)(HSE_TERM_MUST_UNLOAD);
- FreeLibrary(isapi_handle);
- return retval;
+ if (isapi_term) (*isapi_term)( 2 /* HSE_TERM_MUST_UNLOAD */);
+ ap_os_dso_unload(isapi_handle);
+ return retval;
}
if (ap_should_client_block(r)) {
- /* Unlike IIS, which limits this to 48k, we read the whole
- * sucker in. I suppose this could be bad for memory if someone
- * uploaded the complete works of Shakespeare. Well, WebSite
- * does the same thing.
- */
- long to_read = atol(ap_table_get(e, "CONTENT_LENGTH"));
- long read;
-
- /* Actually, let's cap it at 48k, until we figure out what
- * to do with this... we don't want a Content-Length: 1000000000
- * taking out the machine.
- */
-
- if (to_read > 49152) {
- if (isapi_term) (*isapi_term)(HSE_TERM_MUST_UNLOAD);
- FreeLibrary(isapi_handle);
- return HTTP_REQUEST_ENTITY_TOO_LARGE;
- }
-
- ecb->lpbData = ap_pcalloc(r->pool, 1 + to_read);
-
- if ((read = ap_get_client_block(r, ecb->lpbData, to_read)) < 0) {
- if (isapi_term) (*isapi_term)(HSE_TERM_MUST_UNLOAD);
- FreeLibrary(isapi_handle);
- return SERVER_ERROR;
- }
-
- /* Although its not to spec, IIS seems to null-terminate
- * its lpdData string. So we will too. To make sure
- * cbAvailable matches cbTotalBytes, we'll up the latter
- * and equalize them.
- */
- ecb->cbAvailable = ecb->cbTotalBytes = read + 1;
- ecb->lpbData[read] = '\0';
- }
+ /* Time to start reading the appropriate amount of data,
+ * and allow the administrator to tweak the number
+ * TODO: add the httpd.conf option for ReadAheadBuffer.
+ */
+ if (r->remaining) {
+ ecb->cbTotalBytes = r->remaining;
+ if (ecb->cbTotalBytes > ReadAheadBuffer)
+ ecb->cbAvailable = ReadAheadBuffer;
+ else
+ ecb->cbAvailable = ecb->cbTotalBytes;
+ }
+ else
+ {
+ ecb->cbTotalBytes = 0xffffffff;
+ ecb->cbAvailable = ReadAheadBuffer;
+ }
+
+ ecb->lpbData = ap_pcalloc(r->pool, ecb->cbAvailable + 1);
+
+ p = ecb->lpbData;
+ read = 0;
+ while (read < ecb->cbAvailable &&
+ ((res = ap_get_client_block(r, ecb->lpbData + read,
+ ecb->cbAvailable - read)) > 0)) {
+ read += res;
+ }
+
+ if (res < 0) {
+ if (isapi_term) (*isapi_term)(HSE_TERM_MUST_UNLOAD);
+ ap_os_dso_unload(isapi_handle);
+ return SERVER_ERROR;
+ }
+
+ /* Although its not to spec, IIS seems to null-terminate
+ * its lpdData string. So we will too.
+ *
+ * XXX: This must be an issue... backing out the null
+ * from the count of bytes.
+ */
+ if (res == 0)
+ ecb->cbAvailable = ecb->cbTotalBytes = read;
+ else
+ ecb->cbAvailable = read;
+ ecb->lpbData[read] = '\0';
+ }
else {
- ecb->cbTotalBytes = 0;
- ecb->cbAvailable = 0;
- ecb->lpbData = NULL;
+ ecb->cbTotalBytes = 0;
+ ecb->cbAvailable = 0;
+ ecb->lpbData = NULL;
}
/* Set up the callbacks */
@@ -260,291 +286,610 @@ int isapi_handler (request_rec *r) {
/* Set the status (for logging) */
if (ecb->dwHttpStatusCode)
- r->status = ecb->dwHttpStatusCode;
+ r->status = ecb->dwHttpStatusCode;
/* Check for a log message - and log it */
if (ecb->lpszLogData && strcmp(ecb->lpszLogData, ""))
- ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
- "%s: %s", ecb->lpszLogData, r->filename);
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_ERR, r,
+ "ISAPI: %s: %s", ecb->lpszLogData, r->filename);
+
+ /* Soak up any remaining input */
+ if (r->remaining > 0) {
+ char argsbuffer[HUGE_STRING_LEN];
+ while (ap_get_client_block(r, argsbuffer, HUGE_STRING_LEN) > 0);
+ }
/* All done with the DLL... get rid of it */
if (isapi_term) (*isapi_term)(HSE_TERM_MUST_UNLOAD);
- FreeLibrary(isapi_handle);
+ ap_os_dso_unload(isapi_handle);
switch(retval) {
case HSE_STATUS_SUCCESS:
case HSE_STATUS_SUCCESS_AND_KEEP_CONN:
- /* Ignore the keepalive stuff; Apache handles it just fine without
- * the ISA's "advice".
- */
-
- if (cid->status) /* We have a special status to return */
- return cid->status;
-
- return OK;
- case HSE_STATUS_PENDING: /* We don't support this */
- ap_log_rerror(APLOG_MARK, APLOG_WARNING, r,
- "ISAPI asynchronous I/O not supported: %s", r->filename);
+ /* Ignore the keepalive stuff; Apache handles it just fine without
+ * the ISA's "advice".
+ */
+
+ if (cid->status) /* We have a special status to return */
+ return cid->status;
+
+ return OK;
+ case HSE_STATUS_PENDING: /* We don't support this */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI asynchronous I/O not supported: %s",
+ r->filename);
case HSE_STATUS_ERROR:
default:
- return SERVER_ERROR;
+ return SERVER_ERROR;
}
}
#pragma optimize("",on)
BOOL WINAPI GetServerVariable (HCONN hConn, LPSTR lpszVariableName,
- LPVOID lpvBuffer, LPDWORD lpdwSizeofBuffer) {
+ LPVOID lpvBuffer, LPDWORD lpdwSizeofBuffer) {
request_rec *r = ((isapi_cid *)hConn)->r;
- table *e = r->subprocess_env;
const char *result;
+ DWORD len;
+
+ if (!strcmp(lpszVariableName, "ALL_HTTP")) {
+ /* lf delimited, colon split, comma seperated and
+ * null terminated list of HTTP_ vars
+ */
+ char **env = (char**) ap_table_elts(r->subprocess_env)->elts;
+ int nelts = 2 * ap_table_elts(r->subprocess_env)->nelts;
+ int i;
+
+ for (len = 0, i = 0; i < nelts; i += 2)
+ if (!strncmp(env[i], "HTTP_", 5))
+ len += strlen(env[i]) + strlen(env[i + 1]) + 2;
+
+ if (*lpdwSizeofBuffer < len + 1) {
+ *lpdwSizeofBuffer = len + 1;
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return FALSE;
+ }
- /* Mostly, we just grab it from the environment, but there are
- * a couple of special cases
- */
-
- if (!strcasecmp(lpszVariableName, "UNMAPPED_REMOTE_USER")) {
- /* We don't support NT users, so this is always the same as
- * REMOTE_USER
- */
- result = ap_table_get(e, "REMOTE_USER");
- }
- else if (!strcasecmp(lpszVariableName, "SERVER_PORT_SECURE")) {
- /* Apache doesn't support secure requests inherently, so
- * we have no way of knowing. We'll be conservative, and say
- * all requests are insecure.
- */
- result = "0";
+ for (i = 0; i < nelts; i += 2)
+ if (!strncmp(env[i], "HTTP_", 5)) {
+ strcpy(lpvBuffer, env[i]);
+ ((char*)lpvBuffer) += strlen(env[i]);
+ *(((char*)lpvBuffer)++) = ':';
+ strcpy(lpvBuffer, env[i + 1]);
+ ((char*)lpvBuffer) += strlen(env[i + 1]);
+ *(((char*)lpvBuffer)++) = '\n';
+ }
+ *(((char*)lpvBuffer)++) = '\0';
+ *lpdwSizeofBuffer = len;
+ return TRUE;
}
- else if (!strcasecmp(lpszVariableName, "URL")) {
- result = r->uri;
- }
- else {
- result = ap_table_get(e, lpszVariableName);
+
+ if (!strcmp(lpszVariableName, "ALL_RAW")) {
+ /* lf delimited, colon split, comma seperated and
+ * null terminated list of the raw request header
+ */
+ char **raw = (char**) ap_table_elts(r->headers_in)->elts;
+ int nelts = 2 * ap_table_elts(r->headers_in)->nelts;
+ int i;
+
+ for (len = 0, i = 0; i < nelts; i += 2)
+ len += strlen(raw[i]) + strlen(raw[i + 1]) + 2;
+
+ if (*lpdwSizeofBuffer < len + 1) {
+ *lpdwSizeofBuffer = len + 1;
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return FALSE;
+ }
+
+ for (i = 0; i < nelts; i += 2) {
+ strcpy(lpvBuffer, raw[i]);
+ ((char*)lpvBuffer) += strlen(raw[i]);
+ *(((char*)lpvBuffer)++) = ':';
+ *(((char*)lpvBuffer)++) = ' ';
+ strcpy(lpvBuffer, raw[i + 1]);
+ ((char*)lpvBuffer) += strlen(raw[i + 1]);
+ *(((char*)lpvBuffer)++) = '\n';
+ i += 2;
+ }
+ *(((char*)lpvBuffer)++) = '\0';
+ *lpdwSizeofBuffer = len;
+ return TRUE;
}
+ /* Not a special case */
+ result = ap_table_get(r->subprocess_env, lpszVariableName);
if (result) {
- if (strlen(result) > *lpdwSizeofBuffer) {
- *lpdwSizeofBuffer = strlen(result);
- SetLastError(ERROR_INSUFFICIENT_BUFFER);
- return FALSE;
- }
- strncpy(lpvBuffer, result, *lpdwSizeofBuffer);
- return TRUE;
+ len = strlen(result);
+ if (*lpdwSizeofBuffer < len + 1) {
+ *lpdwSizeofBuffer = len + 1;
+ SetLastError(ERROR_INSUFFICIENT_BUFFER);
+ return FALSE;
+ }
+ strcpy(lpvBuffer, result);
+ *lpdwSizeofBuffer = len;
+ return TRUE;
}
- /* Didn't find it */
+ /* Not Found */
SetLastError(ERROR_INVALID_INDEX);
return FALSE;
}
BOOL WINAPI WriteClient (HCONN ConnID, LPVOID Buffer, LPDWORD lpwdwBytes,
- DWORD dwReserved) {
+ DWORD dwReserved) {
request_rec *r = ((isapi_cid *)ConnID)->r;
- int writ; /* written, actually, but why shouldn't I make up words? */
/* We only support synchronous writing */
if (dwReserved && dwReserved != HSE_IO_SYNC) {
- ap_log_rerror(APLOG_MARK, APLOG_WARNING, r,
- "ISAPI asynchronous I/O not supported: %s", r->filename);
- SetLastError(ERROR_INVALID_PARAMETER);
- return FALSE;
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI asynchronous I/O not supported: %s",
+ r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
}
- if ((writ = ap_rwrite(Buffer, *lpwdwBytes, r)) == EOF) {
- SetLastError(ERROR); /* XXX: Find the right error code */
- return FALSE;
+ if ((*lpwdwBytes = ap_rwrite(Buffer, *lpwdwBytes, r)) <= 0) {
+ if (!GetLastError())
+ SetLastError(ERROR); /* XXX: Find the right error code */
+ return FALSE;
}
-
- *lpwdwBytes = writ;
+
return TRUE;
}
BOOL WINAPI ReadClient (HCONN ConnID, LPVOID lpvBuffer, LPDWORD lpdwSize) {
- /* Doesn't need to do anything; we've read all the data already */
+ request_rec *r = ((isapi_cid *)ConnID)->r;
+ DWORD read = 0;
+ int res;
+
+ if (r->remaining < (long) *lpdwSize)
+ *lpdwSize = r->remaining;
+
+ while (read < *lpdwSize &&
+ ((res = ap_get_client_block(r, (char*)lpvBuffer + read,
+ *lpdwSize - read)) > 0)) {
+ if (res < 0) {
+ *lpdwSize = 0;
+ if (!GetLastError())
+ SetLastError(ERROR); /* XXX: Find the right error code */
+ return FALSE;
+ }
+
+ read += res;
+ }
+
+ *lpdwSize = read;
+ return TRUE;
+}
+
+static BOOL SendResponseHeaderEx(isapi_cid *cid, const char *stat,
+ const char *head, DWORD statlen,
+ DWORD headlen)
+{
+ int termarg;
+ char *termch;
+
+ if (!stat || statlen == 0 || !*stat) {
+ stat = "Status: 200 OK";
+ }
+ else {
+ char *newstat;
+ newstat = ap_palloc(cid->r->pool, statlen + 9);
+ strcpy(newstat, "Status: ");
+ ap_cpystrn(newstat + 8, stat, statlen + 1);
+ stat = newstat;
+ }
+
+ if (!head || headlen == 0 || !*head) {
+ head = "\r\n";
+ }
+ else
+ {
+ if (head[headlen]) {
+ /* Whoops... not NULL terminated */
+ head = ap_pstrndup(cid->r->pool, head, headlen);
+ }
+ }
+
+ /* Parse them out, or die trying */
+ cid->status = ap_scan_script_header_err_strs(cid->r, NULL, &termch,
+ &termarg, stat, head, NULL);
+ cid->ecb->dwHttpStatusCode = cid->r->status;
+
+ /* All the headers should be set now */
+ ap_send_http_header(cid->r);
+
+ /* Any data left should now be sent directly,
+ * it may be raw if headlen was provided.
+ */
+ if (termch && (termarg == 1)) {
+ if (headlen == -1 && *termch)
+ ap_rputs(termch, cid->r);
+ else if (headlen > (size_t) (termch - head))
+ ap_rwrite(termch, headlen - (termch - head), cid->r);
+ }
+
+ if (cid->status == HTTP_INTERNAL_SERVER_ERROR)
+ return FALSE;
return TRUE;
}
-/* XXX: There is an O(n^2) attack possible here. */
+/* XXX: Is there is still an O(n^2) attack possible here? Please detail. */
BOOL WINAPI ServerSupportFunction (HCONN hConn, DWORD dwHSERequest,
- LPVOID lpvBuffer, LPDWORD lpdwSize,
- LPDWORD lpdwDataType) {
+ LPVOID lpvBuffer, LPDWORD lpdwSize,
+ LPDWORD lpdwDataType) {
isapi_cid *cid = (isapi_cid *)hConn;
- request_rec *subreq, *r = cid->r;
- char *data;
+ request_rec *r = cid->r;
+ request_rec *subreq;
switch (dwHSERequest) {
- case HSE_REQ_SEND_URL_REDIRECT_RESP:
- /* Set the status to be returned when the HttpExtensionProc()
- * is done.
- */
- ap_table_set (r->headers_out, "Location", lpvBuffer);
- cid->status = cid->r->status = cid->ecb->dwHttpStatusCode = REDIRECT;
- return TRUE;
-
- case HSE_REQ_SEND_URL:
- /* Read any additional input */
-
- if (r->remaining > 0) {
- char argsbuffer[HUGE_STRING_LEN];
-
- while (ap_get_client_block(r, argsbuffer, HUGE_STRING_LEN));
- }
-
- /* Reset the method to GET */
- r->method = ap_pstrdup(r->pool, "GET");
- r->method_number = M_GET;
+ case 1: /* HSE_REQ_SEND_URL_REDIRECT_RESP */
+ /* Set the status to be returned when the HttpExtensionProc()
+ * is done.
+ * WARNING: Microsoft now advertises HSE_REQ_SEND_URL_REDIRECT_RESP
+ * and HSE_REQ_SEND_URL as equivalant per the Jan 2000 SDK.
+ * They most definately are not, even in their own samples.
+ */
+ ap_table_set(r->headers_out, "Location", lpvBuffer);
+ cid->status = cid->r->status
+ = cid->ecb->dwHttpStatusCode = HTTP_MOVED_TEMPORARILY;
+ return TRUE;
+
+ case 2: /* HSE_REQ_SEND_URL */
+ /* Soak up remaining input (there should be none) */
+ if (r->remaining > 0) {
+ char argsbuffer[HUGE_STRING_LEN];
+ while (ap_get_client_block(r, argsbuffer, HUGE_STRING_LEN) > 0);
+ }
+
+ /* Reset the method to GET */
+ r->method = ap_pstrdup(r->pool, "GET");
+ r->method_number = M_GET;
+
+ /* Don't let anyone think there's still data */
+ ap_table_unset(r->headers_in, "Content-Length");
+
+ /* AV fault per PR3598 - redirected path is lost! */
+ (char*)lpvBuffer = ap_pstrdup(r->pool, (char*)lpvBuffer);
+ ap_internal_redirect((char*)lpvBuffer, r);
+ return TRUE;
+
+ case 3: /* HSE_REQ_SEND_RESPONSE_HEADER */
+ {
+ /* Parse them out, or die trying */
+ DWORD statlen = 0, headlen = 0;
+ if (lpvBuffer)
+ statlen = strlen((char*) lpvBuffer);
+ if (lpdwDataType)
+ headlen = strlen((char*) lpdwDataType);
+ return SendResponseHeaderEx(cid, (char*) lpvBuffer, (char*) lpdwDataType,
+ statlen, headlen);
+ }
- /* Don't let anyone think there's still data */
- ap_table_unset(r->headers_in, "Content-Length");
-
- ap_internal_redirect((char *)lpvBuffer, r);
- return TRUE;
-
- case HSE_REQ_SEND_RESPONSE_HEADER:
- r->status_line = lpvBuffer ? lpvBuffer : ap_pstrdup(r->pool, "200 OK");
- sscanf(r->status_line, "%d", &r->status);
- cid->ecb->dwHttpStatusCode = r->status;
-
- /* Now fill in the HTTP headers, and the rest of it. Ick.
- * lpdwDataType contains a string that has headers (in MIME
- * format), a blank like, then (possibly) data. We need
- * to parse it.
- *
- * Easy case first:
- */
- if (!lpdwDataType) {
- ap_send_http_header(r);
- return TRUE;
- }
-
- /* Make a copy - don't disturb the original */
- data = ap_pstrdup(r->pool, (char *)lpdwDataType);
-
- /* We *should* break before this while loop ends */
- while (*data) {
- char *value, *lf = strchr(data, '\n');
- int p;
-
-#ifdef RELAX_HEADER_RULE
- if (lf)
- *lf = '\0';
-#else
- if (!lf) { /* Huh? Invalid data, I think */
- ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
- "ISA sent invalid headers: %s", r->filename);
- SetLastError(ERROR); /* XXX: Find right error */
- return FALSE;
- }
-
- /* Get rid of \n and \r */
- *lf = '\0';
-#endif
- p = strlen(data);
- if (p > 0 && data[p-1] == '\r') data[p-1] = '\0';
-
- /* End of headers */
- if (*data == '\0') {
-#ifdef RELAX_HEADER_RULE
- if (lf)
-#endif
- data = lf + 1; /* Reset data */
- break;
- }
-
- if (!(value = strchr(data, ':'))) {
- SetLastError(ERROR); /* XXX: Find right error */
- ap_log_rerror(APLOG_MARK, APLOG_ERR, r,
- "ISA sent invalid headers", r->filename);
- return FALSE;
- }
-
- *value++ = '\0';
- while (*value && ap_isspace(*value)) ++value;
-
- /* Check all the special-case headers. Similar to what
- * ap_scan_script_header_err() does (see that function for
- * more detail)
- */
-
- if (!strcasecmp(data, "Content-Type")) {
- char *tmp;
- /* Nuke trailing whitespace */
-
- char *endp = value + strlen(value) - 1;
- while (endp > value && ap_isspace(*endp)) *endp-- = '\0';
-
- tmp = ap_pstrdup (r->pool, value);
- ap_str_tolower(tmp);
- r->content_type = tmp;
- }
- else if (!strcasecmp(data, "Content-Length")) {
- ap_table_set(r->headers_out, data, value);
- }
- else if (!strcasecmp(data, "Transfer-Encoding")) {
- ap_table_set(r->headers_out, data, value);
- }
- else if (!strcasecmp(data, "Set-Cookie")) {
- ap_table_add(r->err_headers_out, data, value);
- }
- else {
- ap_table_merge(r->err_headers_out, data, value);
- }
-
- /* Reset data */
-#ifdef RELAX_HEADER_RULE
- if (!lf) {
- data += p;
- break;
- }
-#endif
- data = lf + 1;
- }
+ case 4: /* HSE_REQ_DONE_WITH_SESSION */
+ /* Do nothing... since we don't support async I/O, they'll
+ * return from HttpExtensionProc soon
+ */
+ return TRUE;
+
+ case 1001: /* HSE_REQ_MAP_URL_TO_PATH */
+ {
+ /* Map a URL to a filename */
+ char *file = (char *)lpvBuffer;
+ DWORD len;
+ subreq = ap_sub_req_lookup_uri(ap_pstrndup(r->pool, file, *lpdwSize), r);
+
+ len = ap_cpystrn(file, subreq->filename, *lpdwSize) - file;
- /* All the headers should be set now */
+ /* IIS puts a trailing slash on directories, Apache doesn't */
+ if (S_ISDIR (subreq->finfo.st_mode)) {
+ if (len < *lpdwSize - 1) {
+ file[len++] = '\\';
+ file[len] = '\0';
+ }
+ }
+ *lpdwSize = len;
+ return TRUE;
+ }
- ap_send_http_header(r);
+ case 1002: /* HSE_REQ_GET_SSPI_INFO */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI ServerSupportFunction HSE_REQ_GET_SSPI_INFO "
+ "is not supported: %s", r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+
+ case 1003: /* HSE_APPEND_LOG_PARAMETER */
+ /* Log lpvBuffer, of lpdwSize bytes, in the URI Query (cs-uri-query) field
+ * This code will do for now...
+ */
+ ap_table_set(r->notes, "isapi-parameter", (char*) lpvBuffer);
+ if (AppendLogToQuery) {
+ if (r->args)
+ r->args = ap_pstrcat(r->pool, r->args, (char*) lpvBuffer, NULL);
+ else
+ r->args = ap_pstrdup(r->pool, (char*) lpvBuffer);
+ }
+ if (AppendLogToErrors)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_INFO, r,
+ "ISAPI %s: %s", cid->r->filename,
+ (char*) lpvBuffer);
+ return TRUE;
- /* Any data left should now be sent directly */
- ap_rputs(data, r);
+ /* We don't support all this async I/O, Microsoft-specific stuff */
+ case 1005: /* HSE_REQ_IO_COMPLETION */
+ case 1006: /* HSE_REQ_TRANSMIT_FILE */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI asynchronous I/O not supported: %s",
+ r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+
+ case 1007: /* HSE_REQ_REFRESH_ISAPI_ACL */
+ /* Since we don't override the user ID and access, we can't reset.
+ */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI ServerSupportFunction "
+ "HSE_REQ_REFRESH_ISAPI_ACL "
+ "is not supported: %s", r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+
+ case 1008: /* HSE_REQ_IS_KEEP_CONN */
+ *((LPBOOL) lpvBuffer) = (r->connection->keepalive == 1);
+ return TRUE;
+
+ case 1010: /* HSE_REQ_ASYNC_READ_CLIENT */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI asynchronous I/O not supported: %s",
+ r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+
+ case 1011: /* HSE_REQ_GET_IMPERSONATION_TOKEN Added in ISAPI 4.0 */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI ServerSupportFunction "
+ "HSE_REQ_GET_IMPERSONATION_TOKEN "
+ "is not supported: %s", r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+
+ case 1012: /* HSE_REQ_MAP_URL_TO_PATH_EX */
+ {
+ /* Map a URL to a filename */
+ LPHSE_URL_MAPEX_INFO info = (LPHSE_URL_MAPEX_INFO) lpdwDataType;
+ char* test_uri = ap_pstrndup(r->pool, (char *)lpvBuffer, *lpdwSize);
+
+ subreq = ap_sub_req_lookup_uri(test_uri, r);
+ info->cchMatchingURL = strlen(test_uri);
+ info->cchMatchingPath = ap_cpystrn(info->lpszPath, subreq->filename,
+ MAX_PATH) - info->lpszPath;
+
+ /* Mapping started with assuming both strings matched.
+ * Now roll on the path_info as a mismatch and handle
+ * terminating slashes for directory matches.
+ */
+ if (subreq->path_info && *subreq->path_info) {
+ ap_cpystrn(info->lpszPath + info->cchMatchingPath,
+ subreq->path_info, MAX_PATH - info->cchMatchingPath);
+ info->cchMatchingURL -= strlen(subreq->path_info);
+ if (S_ISDIR(subreq->finfo.st_mode)
+ && info->cchMatchingPath < MAX_PATH - 1) {
+ /* roll forward over path_info's first slash */
+ ++info->cchMatchingPath;
+ ++info->cchMatchingURL;
+ }
+ }
+ else if (S_ISDIR(subreq->finfo.st_mode)
+ && info->cchMatchingPath < MAX_PATH - 1) {
+ /* Add a trailing slash for directory */
+ info->lpszPath[info->cchMatchingPath++] = '/';
+ info->lpszPath[info->cchMatchingPath] = '\0';
+ }
+
+ /* If the matched isn't a file, roll match back to the prior slash */
+ if (!subreq->finfo.st_mode) {
+ while (info->cchMatchingPath && info->cchMatchingURL) {
+ if (info->lpszPath[info->cchMatchingPath - 1] == '/')
+ break;
+ --info->cchMatchingPath;
+ --info->cchMatchingURL;
+ }
+ }
+
+ /* Paths returned with back slashes */
+ for (test_uri = info->lpszPath; *test_uri; ++test_uri)
+ if (*test_uri == '/')
+ *test_uri = '\\';
+
+ /* is a combination of:
+ * HSE_URL_FLAGS_READ 0x001 Allow read
+ * HSE_URL_FLAGS_WRITE 0x002 Allow write
+ * HSE_URL_FLAGS_EXECUTE 0x004 Allow execute
+ * HSE_URL_FLAGS_SSL 0x008 Require SSL
+ * HSE_URL_FLAGS_DONT_CACHE 0x010 Don't cache (VRoot only)
+ * HSE_URL_FLAGS_NEGO_CERT 0x020 Allow client SSL cert
+ * HSE_URL_FLAGS_REQUIRE_CERT 0x040 Require client SSL cert
+ * HSE_URL_FLAGS_MAP_CERT 0x080 Map client SSL cert to account
+ * HSE_URL_FLAGS_SSL128 0x100 Require 128-bit SSL cert
+ * HSE_URL_FLAGS_SCRIPT 0x200 Allow script execution
+ *
+ * XxX: As everywhere, EXEC flags could use some work...
+ * and this could go further with more flags, as desired.
+ */
+ info->dwFlags = (subreq->finfo.st_mode & _S_IREAD ? 0x001 : 0)
+ | (subreq->finfo.st_mode & _S_IWRITE ? 0x002 : 0)
+ | (subreq->finfo.st_mode & _S_IEXEC ? 0x204 : 0);
+ return TRUE;
+ }
- return TRUE;
+ case 1014: /* HSE_REQ_ABORTIVE_CLOSE */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI ServerSupportFunction HSE_REQ_ABORTIVE_CLOSE"
+ " is not supported: %s", r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+
+ case 1015: /* HSE_REQ_GET_CERT_INFO_EX Added in ISAPI 4.0 */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI ServerSupportFunction "
+ "HSE_REQ_GET_CERT_INFO_EX "
+ "is not supported: %s", r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+
+ case 1016: /* HSE_REQ_SEND_RESPONSE_HEADER_EX Added in ISAPI 4.0 */
+ {
+ LPHSE_SEND_HEADER_EX_INFO shi
+ = (LPHSE_SEND_HEADER_EX_INFO) lpvBuffer;
+ /* XXX: ignore shi->fKeepConn? We shouldn't need the advise */
+ /* r->connection->keepalive = shi->fKeepConn; */
+ return SendResponseHeaderEx(cid, shi->pszStatus, shi->pszHeader,
+ shi->cchStatus, shi->cchHeader);
+ }
- case HSE_REQ_MAP_URL_TO_PATH:
- /* Map a URL to a filename */
- subreq = ap_sub_req_lookup_uri(ap_pstrndup(r->pool, (char *)lpvBuffer,
- *lpdwSize), r);
+ case 1017: /* HSE_REQ_CLOSE_CONNECTION Added after ISAPI 4.0 */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI ServerSupportFunction "
+ "HSE_REQ_CLOSE_CONNECTION "
+ "is not supported: %s", r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+
+ case 1018: /* HSE_REQ_IS_CONNECTED Added after ISAPI 4.0 */
+ /* Returns True if client is connected c.f. MSKB Q188346
+ * XXX: That statement is very ambigious... assuming the
+ * identical return mechanism as HSE_REQ_IS_KEEP_CONN.
+ */
+ *((LPBOOL) lpvBuffer) = (r->connection->aborted == 0);
+ return TRUE;
+
+ case 1020: /* HSE_REQ_EXTENSION_TRIGGER Added after ISAPI 4.0 */
+ /* Undocumented - defined by the Microsoft Jan '00 Platform SDK
+ */
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI ServerSupportFunction "
+ "HSE_REQ_EXTENSION_TRIGGER "
+ "is not supported: %s", r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
- GetFullPathName(subreq->filename, *lpdwSize - 1, (char *)lpvBuffer, NULL);
- /* IIS puts a trailing slash on directories, Apache doesn't */
+ default:
+ if (LogNotSupported)
+ ap_log_rerror(APLOG_MARK, APLOG_NOERRNO|APLOG_WARNING, r,
+ "ISAPI ServerSupportFunction (%d) not supported: "
+ "%s", dwHSERequest, r->filename);
+ SetLastError(ERROR_INVALID_PARAMETER);
+ return FALSE;
+ }
+}
- if (S_ISDIR (subreq->finfo.st_mode)) {
- int l = strlen((char *)lpvBuffer);
+/*
+ * Command handler for the ISAPIReadAheadBuffer directive, which is TAKE1
+ */
+static const char *isapi_cmd_readaheadbuffer(cmd_parms *cmd, void *config,
+ char *arg)
+{
+ long val;
+ const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
+ if (err != NULL) {
+ return err;
+ }
- ((char *)lpvBuffer)[l] = '\\';
- ((char *)lpvBuffer)[l + 1] = '\0';
- }
-
- return TRUE;
+ if (((val = strtol(arg, (char **) &err, 10)) <= 0) || *err)
+ return "ISAPIReadAheadBuffer must be a legitimate value.";
+
+ ReadAheadBuffer = val;
+ return NULL;
+}
- case HSE_REQ_DONE_WITH_SESSION:
- /* Do nothing... since we don't support async I/O, they'll
- * return from HttpExtensionProc soon
- */
- return TRUE;
+/*
+ * Command handler for the ISAPIReadAheadBuffer directive, which is TAKE1
+ */
+static const char *isapi_cmd_lognotsupported(cmd_parms *cmd, void *config,
+ char *arg)
+{
+ const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
+ if (err != NULL) {
+ return err;
+ }
- /* We don't support all this async I/O, Microsoft-specific stuff */
- case HSE_REQ_IO_COMPLETION:
- case HSE_REQ_TRANSMIT_FILE:
- ap_log_rerror(APLOG_MARK, APLOG_WARNING, r,
- "ISAPI asynchronous I/O not supported: %s", r->filename);
- default:
- SetLastError(ERROR_INVALID_PARAMETER);
- return FALSE;
+ if (strcasecmp(arg, "on") == 0) {
+ LogNotSupported = -1;
+ }
+ else if (strcasecmp(arg, "off") == 0) {
+ LogNotSupported = 0;
}
+ else {
+ return "ISAPILogNotSupported must be on or off";
+ }
+ return NULL;
+}
+
+static const char *isapi_cmd_appendlogtoerrors(cmd_parms *cmd, void *config,
+ char *arg)
+{
+ const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
+ if (err != NULL) {
+ return err;
+ }
+
+ if (strcasecmp(arg, "on") == 0) {
+ AppendLogToErrors = -1;
+ }
+ else if (strcasecmp(arg, "off") == 0) {
+ AppendLogToErrors = 0;
+ }
+ else {
+ return "ISAPIAppendLogToErrors must be on or off";
+ }
+ return NULL;
}
+static const char *isapi_cmd_appendlogtoquery(cmd_parms *cmd, void *config,
+ char *arg)
+{
+ const char *err = ap_check_cmd_context(cmd, GLOBAL_ONLY);
+ if (err != NULL) {
+ return err;
+ }
+
+ if (strcasecmp(arg, "on") == 0) {
+ AppendLogToQuery = -1;
+ }
+ else if (strcasecmp(arg, "off") == 0) {
+ AppendLogToQuery = 0;
+ }
+ else {
+ return "ISAPIAppendLogToQuery must be on or off";
+ }
+ return NULL;
+}
+
+static const command_rec isapi_cmds[] = {
+{ "ISAPIReadAheadBuffer", isapi_cmd_readaheadbuffer, NULL, RSRC_CONF, TAKE1,
+ "Maximum bytes to initially pass to the ISAPI handler" },
+{ "ISAPILogNotSupported", isapi_cmd_lognotsupported, NULL, RSRC_CONF, TAKE1,
+ "Log requests not supported by the ISAPI server" },
+{ "ISAPIAppendLogToErrors", isapi_cmd_appendlogtoerrors, NULL, RSRC_CONF, TAKE1,
+ "Send all Append Log requests to the error log" },
+{ "ISAPIAppendLogToQuery", isapi_cmd_appendlogtoquery, NULL, RSRC_CONF, TAKE1,
+ "Append Log requests are concatinated to the query args" },
+{ NULL }
+};
+
handler_rec isapi_handlers[] = {
{ "isapi-isa", isapi_handler },
{ NULL}
@@ -552,18 +897,18 @@ handler_rec isapi_handlers[] = {
module isapi_module = {
STANDARD_MODULE_STUFF,
- NULL, /* initializer */
- NULL, /* create per-dir config */
- NULL, /* merge per-dir config */
- NULL, /* server config */
- NULL, /* merge server config */
- NULL, /* command table */
- isapi_handlers, /* handlers */
- NULL, /* filename translation */
- NULL, /* check_user_id */
- NULL, /* check auth */
- NULL, /* check access */
- NULL, /* type_checker */
- NULL, /* logger */
- NULL /* header parser */
+ NULL, /* initializer */
+ NULL, /* create per-dir config */
+ NULL, /* merge per-dir config */
+ NULL, /* server config */
+ NULL, /* merge server config */
+ isapi_cmds, /* command table */
+ isapi_handlers, /* handlers */
+ NULL, /* filename translation */
+ NULL, /* check_user_id */
+ NULL, /* check auth */
+ NULL, /* check access */
+ NULL, /* type_checker */
+ NULL, /* logger */
+ NULL /* header parser */
};
diff --git a/usr.sbin/httpd/src/os/win32/os.h b/usr.sbin/httpd/src/os/win32/os.h
index 18f1a164228..7b5d9103726 100644
--- a/usr.sbin/httpd/src/os/win32/os.h
+++ b/usr.sbin/httpd/src/os/win32/os.h
@@ -106,10 +106,14 @@
#define MULTITHREAD
#define HAVE_CANONICAL_FILENAME
#define HAVE_DRIVE_LETTERS
+#define HAVE_UNC_PATHS
typedef int uid_t;
typedef int gid_t;
typedef int pid_t;
-typedef int mode_t;
+#ifdef _MSC_VER
+/* modified to match declaration in sys/stat.h */
+typedef unsigned short mode_t;
+#endif
typedef char * caddr_t;
/*
@@ -118,34 +122,39 @@ every configuration function as __stdcall.
*/
#ifdef SHARED_MODULE
-# define API_VAR_EXPORT __declspec(dllimport)
-# define API_EXPORT(type) __declspec(dllimport) type __stdcall
-# define API_EXPORT_NONSTD(type) __declspec(dllimport) type
+#define API_VAR_EXPORT __declspec(dllimport)
+#define API_EXPORT(type) __declspec(dllimport) type __stdcall
+#define API_EXPORT_NONSTD(type) __declspec(dllimport) type __cdecl
#else
-# define API_VAR_EXPORT __declspec(dllexport)
-# define API_EXPORT(type) __declspec(dllexport) type __stdcall
-# define API_EXPORT_NONSTD(type) __declspec(dllexport) type
+#define API_VAR_EXPORT __declspec(dllexport)
+#define API_EXPORT(type) __declspec(dllexport) type __stdcall
+#define API_EXPORT_NONSTD(type) __declspec(dllexport) type __cdecl
#endif
#define MODULE_VAR_EXPORT __declspec(dllexport)
#define strcasecmp(s1, s2) stricmp(s1, s2)
#define strncasecmp(s1, s2, n) strnicmp(s1, s2, n)
#define lstat(x, y) stat(x, y)
+#ifndef S_ISLNK
#define S_ISLNK(m) (0)
-#define S_ISREG(m) ((m & _S_IFREG) == _S_IFREG)
-#ifndef S_ISDIR
-#define S_ISDIR(m) (((m) & S_IFDIR) == S_IFDIR)
#endif
#ifndef S_ISREG
-#define S_ISREG(m) (((m)&(S_IFREG)) == (S_IFREG))
+#define S_ISREG(m) ((m & _S_IFREG) == _S_IFREG)
+#endif
+#ifndef S_ISDIR
+#define S_ISDIR(m) (((m) & _S_IFDIR) == _S_IFDIR)
#endif
#define STDIN_FILENO 0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
#define JMP_BUF jmp_buf
#define sleep(t) Sleep(t*1000)
+#ifndef O_CREAT
#define O_CREAT _O_CREAT
+#endif
+#ifndef O_RDWR
#define O_RDWR _O_RDWR
+#endif
#define SIGPIPE 17
/* Seems Windows is not a subgenius */
#define NO_SLACK
@@ -159,7 +168,7 @@ __inline int ap_os_is_path_absolute(const char *file)
/* For now, just do the same check that http_request.c and mod_alias.c
* do.
*/
- return file[0] == '/' || file[1] == ':';
+ return file && (file[0] == '/' || (file[1] == ':' && file[2] == '/'));
}
#define stat(f,ps) os_stat(f,ps)
@@ -175,7 +184,7 @@ API_EXPORT(int) os_spawnv(int mode,const char *cmdname,const char *const *argv);
API_EXPORT(int) os_spawnve(int mode,const char *cmdname,const char *const *argv,const char *const *envp);
#define _spawnle os_spawnle
#define spawnle os_spawnle
-API_EXPORT(int) os_spawnle(int mode,const char *cmdname,...);
+API_EXPORT_NONSTD(int) os_spawnle(int mode,const char *cmdname,...);
/* OS-dependent filename routines in util_win32.c */
@@ -186,10 +195,11 @@ API_EXPORT(int) ap_os_is_filename_valid(const char *file);
*/
#define ap_os_dso_handle_t HINSTANCE
#define ap_os_dso_init()
-#define ap_os_dso_load(l) LoadLibraryEx(l, NULL, LOAD_WITH_ALTERED_SEARCH_PATH)
#define ap_os_dso_unload(l) FreeLibrary(l)
#define ap_os_dso_sym(h,s) GetProcAddress(h,s)
-#define ap_os_dso_error() "" /* for now */
+
+API_EXPORT(ap_os_dso_handle_t) ap_os_dso_load(const char *);
+API_EXPORT(const char *) ap_os_dso_error(void);
/* Other ap_os_ routines not used by this platform */
#define ap_os_kill(pid, sig) kill(pid, sig)
diff --git a/usr.sbin/httpd/src/os/win32/readdir.h b/usr.sbin/httpd/src/os/win32/readdir.h
index d87fd1987ea..54a0b4a9edf 100644
--- a/usr.sbin/httpd/src/os/win32/readdir.h
+++ b/usr.sbin/httpd/src/os/win32/readdir.h
@@ -3,6 +3,9 @@
* on Windows 95/NT.
*/
+#ifndef APACHE_READDIR_H
+#define APACHE_READDIR_H
+
#include <io.h>
#include <stdio.h>
#include <stdlib.h>
@@ -34,3 +37,5 @@ typedef struct {
API_EXPORT(DIR *) opendir(const char *);
API_EXPORT(struct dirent *) readdir(DIR *);
API_EXPORT(int) closedir(DIR *);
+
+#endif /* ndef APACHE_READDIR_H */
diff --git a/usr.sbin/httpd/src/os/win32/registry.c b/usr.sbin/httpd/src/os/win32/registry.c
index cb4e4a49518..3cbe57b994d 100644
--- a/usr.sbin/httpd/src/os/win32/registry.c
+++ b/usr.sbin/httpd/src/os/win32/registry.c
@@ -36,11 +36,13 @@
* major release, but will change when the final release is made.
*/
-#define VENDOR "Apache Group"
-#define SOFTWARE "Apache"
-#define VERSION "1.3.12"
+/* Define where the Apache values are stored in the registry.
+ *
+ * If you are looking here to roll the tarball, you didn't need to visit.
+ * registry.c now picks up the version from include/httpd.h
+ */
-#define REGKEY "SOFTWARE\\" VENDOR "\\" SOFTWARE "\\" VERSION
+#define REGKEY "SOFTWARE\\" SERVER_BASEVENDOR "\\" SERVER_BASEPRODUCT "\\" SERVER_BASEREVISION
#define SERVICEKEYPRE "System\\CurrentControlSet\\Services\\"
#define SERVICEKEYPOST "\\Parameters"
@@ -199,7 +201,7 @@ static int ap_registry_get_key_int(pool *p, char *key, char *name, char *pBuffer
* an error getting the key.
*/
-int ap_registry_get_server_root(pool *p, char *dir, int size)
+API_EXPORT(int) ap_registry_get_server_root(pool *p, char *dir, int size)
{
int rv;
@@ -211,21 +213,29 @@ int ap_registry_get_server_root(pool *p, char *dir, int size)
return (rv < -1) ? -1 : 0;
}
-char *ap_get_service_key(char *service_name)
+API_EXPORT(char *) ap_get_service_key(char *display_name)
{
- char *key = malloc(strlen(SERVICEKEYPRE) +
- strlen(service_name) +
- strlen(SERVICEKEYPOST) + 1);
+ char *key, *service_name;
+
+ if (display_name == NULL)
+ return strdup("");
+
+ service_name = strdup(display_name);
+ ap_remove_spaces(service_name, display_name);
+
+ key = malloc(strlen(SERVICEKEYPRE) +
+ strlen(service_name) +
+ strlen(SERVICEKEYPOST) + 1);
sprintf(key,"%s%s%s", SERVICEKEYPRE, service_name, SERVICEKEYPOST);
return(key);
}
-int ap_registry_get_service_conf(pool *p, char *dir, int size, char *service_name)
+API_EXPORT(int) ap_registry_get_service_conf(pool *p, char *dir, int size, char *display_name)
{
int rv;
- char *key = ap_get_service_key(service_name);
+ char *key = ap_get_service_key(display_name);
rv = ap_registry_get_key_int(p, key, "ConfPath", dir, size, NULL);
if (rv < 0) {
@@ -443,10 +453,10 @@ static int ap_registry_store_key_int(char *key, char *name, DWORD type, void *va
* logged via aplog_error().
*/
-int ap_registry_set_service_conf(char *conf, char *service_name)
+API_EXPORT(int) ap_registry_set_service_conf(char *conf, char *display_name)
{
int rv;
- char *key = ap_get_service_key(service_name);
+ char *key = ap_get_service_key(display_name);
rv = ap_registry_store_key_int(key, "ConfPath", REG_SZ, conf, strlen(conf)+1);
free(key);
diff --git a/usr.sbin/httpd/src/os/win32/registry.h b/usr.sbin/httpd/src/os/win32/registry.h
index 7075e786068..ac6b35794b0 100644
--- a/usr.sbin/httpd/src/os/win32/registry.h
+++ b/usr.sbin/httpd/src/os/win32/registry.h
@@ -2,7 +2,7 @@
* Declarations for users of the functions defined in registry.c
*/
-extern int ap_registry_get_server_root(pool *p, char *dir, int size);
+API_EXPORT(int) ap_registry_get_server_root(pool *p, char *dir, int size);
extern int ap_registry_set_server_root(char *dir);
-extern int ap_registry_get_service_conf(pool *p, char *dir, int size, char *service_name);
-extern int ap_registry_set_service_conf(char *dir, char *service_name);
+API_EXPORT(int) ap_registry_get_service_conf(pool *p, char *dir, int size, char *display_name);
+API_EXPORT(int) ap_registry_set_service_conf(char *dir, char *display_name);
diff --git a/usr.sbin/httpd/src/os/win32/service.c b/usr.sbin/httpd/src/os/win32/service.c
index 8108ae1ad93..2052963ca5f 100644
--- a/usr.sbin/httpd/src/os/win32/service.c
+++ b/usr.sbin/httpd/src/os/win32/service.c
@@ -14,6 +14,8 @@
#include "service.h"
#include "registry.h"
+#define SERVICE_APACHE_RESTART 128
+
static struct
{
int (*main_fn)(int, char **);
@@ -26,11 +28,83 @@ static struct
FILE *logFile;
} globdat;
+/* statics for atexit processing or shared between threads */
+static BOOL die_on_logoff = FALSE;
+static DWORD monitor_thread_id = 0;
+DWORD (WINAPI *RegisterServiceProcess)(DWORD, DWORD);
+HINSTANCE monitor_hkernel = NULL;
+
static void WINAPI service_main_fn(DWORD, LPTSTR *);
static void WINAPI service_ctrl(DWORD ctrlCode);
static int ReportStatusToSCMgr(int currentState, int exitCode, int waitHint);
static int ap_start_service(SC_HANDLE);
static int ap_stop_service(SC_HANDLE);
+static int ap_restart_service(SC_HANDLE);
+
+/* exit() for Win32 is macro mapped (horrible, we agree) that allows us
+ * to catch the non-zero conditions and inform the console process that
+ * the application died, and hang on to the console a bit longer.
+ *
+ * The macro only maps for http_main.c and other sources that include
+ * the service.h header, so we best assume it's an error to exit from
+ * _any_ other module.
+ *
+ * If real_exit_code is reset to 0, it will not be set or trigger this
+ * behavior on exit. All service and child processes are expected to
+ * reset this flag to zero to avoid undesireable side effects.
+ */
+int real_exit_code = 1;
+
+void hold_console_open_on_error(void)
+{
+ HANDLE hConIn;
+ HANDLE hConErr;
+ DWORD result;
+ time_t start;
+ time_t remains;
+ char *msg = "Note the errors or messages above, "
+ "and press the <ESC> key to exit. ";
+ CONSOLE_SCREEN_BUFFER_INFO coninfo;
+ INPUT_RECORD in;
+ char count[16];
+
+ if (!real_exit_code)
+ return;
+ hConIn = GetStdHandle(STD_INPUT_HANDLE);
+ hConErr = GetStdHandle(STD_ERROR_HANDLE);
+ if ((hConIn == INVALID_HANDLE_VALUE) || (hConErr == INVALID_HANDLE_VALUE))
+ return;
+ if (!WriteConsole(hConErr, msg, strlen(msg), &result, NULL) || !result)
+ return;
+ if (!GetConsoleScreenBufferInfo(hConErr, &coninfo))
+ return;
+ if (!SetConsoleMode(hConIn, ENABLE_MOUSE_INPUT | 0x80))
+ return;
+
+ start = time(NULL);
+ do
+ {
+ while (PeekConsoleInput(hConIn, &in, 1, &result) && result)
+ {
+ if (!ReadConsoleInput(hConIn, &in, 1, &result) || !result)
+ return;
+ if ((in.EventType == KEY_EVENT) && in.Event.KeyEvent.bKeyDown
+ && (in.Event.KeyEvent.uChar.AsciiChar == 27))
+ return;
+ if (in.EventType == MOUSE_EVENT
+ && (in.Event.MouseEvent.dwEventFlags == DOUBLE_CLICK))
+ return;
+ }
+ remains = ((start + 30) - time(NULL));
+ sprintf (count, "%d...", remains);
+ if (!SetConsoleCursorPosition(hConErr, coninfo.dwCursorPosition))
+ return;
+ if (!WriteConsole(hConErr, count, strlen(count), &result, NULL)
+ || !result)
+ return;
+ }
+ while ((remains > 0) && WaitForSingleObject(hConIn, 1000) != WAIT_FAILED);
+}
int service_main(int (*main_fn)(int, char **), int argc, char **argv )
{
@@ -40,6 +114,9 @@ int service_main(int (*main_fn)(int, char **), int argc, char **argv )
{ NULL, NULL }
};
+ /* Prevent holding open the (nonexistant) console */
+ real_exit_code = 0;
+
globdat.main_fn = main_fn;
globdat.stop_event = create_event(0, 0, "apache-signal");
globdat.connected = 1;
@@ -57,20 +134,240 @@ int service_main(int (*main_fn)(int, char **), int argc, char **argv )
}
}
+/* This is the WndProc procedure for our invisible window.
+ * When the user shuts down the system, this window is sent
+ * a signal WM_QUERYENDSESSION with lParam == 0 to indicate
+ * a system shutdown. We clean up by shutting down Apache and
+ * indicate to the system that the message was received and
+ * understood (return TRUE).
+ * If a user logs off, the window is sent WM_QUERYENDSESSION
+ * as well, but with lParam != 0. We ignore this case.
+ */
+
+int send_signal(pool *p, char *signal);
+
+LRESULT CALLBACK Service9xWndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
+{
+ if (message == WM_QUERYENDSESSION)
+ {
+ /* Hmmm... not logging out, must be shutting down */
+ if ((lParam == 0) || die_on_logoff)
+ {
+ /* Tell Apache to shut down gracefully */
+ ap_start_shutdown();
+ if (wParam)
+ Sleep(30000);
+ }
+ return TRUE;
+ }
+ return (DefWindowProc(hWnd, message, wParam, lParam));
+}
+
+DWORD WINAPI WatchWindow(void *service_name)
+{
+ /* When running as a service under Windows 9x, there is no console
+ * window present, and no ConsoleCtrlHandler to call when the system
+ * is shutdown. If the WatchWindow thread is created with a NULL
+ * service_name argument, then the ...SystemMonitor window class is
+ * used to create the "Apache" window to watch for logoff and shutdown.
+ * If the service_name is provided, the ...ServiceMonitor window class
+ * is used to create the window named by the service_name argument,
+ * and the logoff message is ignored.
+ */
+ WNDCLASS wc;
+ HWND hwndMain;
+ MSG msg;
+ wc.style = CS_GLOBALCLASS;
+ wc.lpfnWndProc = (WNDPROC) Service9xWndProc;
+ wc.cbClsExtra = 0;
+ wc.cbWndExtra = 0;
+ wc.hInstance = NULL;
+ wc.hIcon = NULL;
+ wc.hCursor = NULL;
+ wc.hbrBackground = NULL;
+ wc.lpszMenuName = NULL;
+ if (service_name)
+ wc.lpszClassName = "ApacheWin95ServiceMonitor";
+ else
+ wc.lpszClassName = "ApacheWin95SystemMonitor";
+
+ die_on_logoff = service_name ? FALSE : TRUE;
+
+ if (!RegisterClass(&wc))
+ {
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Could not register window class for WatchWindow");
+ return 0;
+ }
+
+ /* Create an invisible window */
+ hwndMain = CreateWindow(wc.lpszClassName,
+ service_name ? (char *) service_name : "Apache",
+ WS_OVERLAPPEDWINDOW & ~WS_VISIBLE, CW_USEDEFAULT, CW_USEDEFAULT,
+ CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, NULL, NULL);
+
+ if (!hwndMain)
+ {
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Could not create WatchWindow");
+ return 0;
+ }
+
+ while (GetMessage(&msg, NULL, 0, 0))
+ {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ }
+ return 0;
+}
+
+void stop_service_monitor(void)
+{
+ PostThreadMessage(monitor_thread_id, WM_QUIT, 0, 0);
+
+ /* When the service quits, remove it from the
+ system service table */
+ RegisterServiceProcess((DWORD)NULL, 0);
+
+ /* Free the kernel library */
+ FreeLibrary(monitor_hkernel);
+}
+
+int service95_main(int (*main_fn)(int, char **), int argc, char **argv,
+ char *display_name)
+{
+ /* Windows 95/98 */
+ char *service_name;
+ HANDLE thread;
+
+ /* Remove spaces from display name to create service name */
+ service_name = strdup(display_name);
+ ap_remove_spaces(service_name, display_name);
+
+ /* Obtain a handle to the kernel library */
+ monitor_hkernel = LoadLibrary("KERNEL32.DLL");
+ if (!monitor_hkernel)
+ return -1;
+
+ /* Find the RegisterServiceProcess function */
+ RegisterServiceProcess = (DWORD (WINAPI *)(DWORD, DWORD))
+ GetProcAddress(monitor_hkernel, "RegisterServiceProcess");
+ if (RegisterServiceProcess == NULL)
+ return -1;
+
+ /* Register this process as a service */
+ if (!RegisterServiceProcess((DWORD)NULL, 1))
+ return -1;
+
+ /* Prevent holding open the (nonexistant) console */
+ real_exit_code = 0;
+
+ /* Hide the console */
+ FreeConsole();
+
+ thread = CreateThread(NULL, 0, WatchWindow, (LPVOID) service_name, 0,
+ &monitor_thread_id);
+ if (thread)
+ CloseHandle(thread);
+
+ atexit(stop_service_monitor);
+
+ /* Run the service */
+ globdat.exit_status = main_fn(argc, argv);
+}
+
void service_cd()
{
- /* change to the drive with the executable */
- char buf[300];
+ /* change to the drive and directory with the executable */
+ char buf[300], *p;
GetModuleFileName(NULL, buf, 300);
- buf[2] = 0;
+ p = strrchr(buf, '\\');
+ if (p != NULL)
+ *p = 0;
chdir(buf);
}
+long __stdcall service_stderr_thread(LPVOID hPipe)
+{
+ HANDLE hPipeRead = (HANDLE) hPipe;
+ HANDLE hEventSource;
+ char errbuf[256];
+ char *errmsg = errbuf;
+ char *errarg[9];
+ DWORD errlen = 0;
+ DWORD errres;
+ HKEY hk;
+
+ errarg[0] = "The Apache service named";
+ errarg[1] = ap_server_argv0;
+ errarg[2] = "reported the following error:\r\n>>>";
+ errarg[3] = errmsg;
+ errarg[4] = "<<<\r\n before the error.log file could be opened.\r\n";
+ errarg[5] = "More information may be available in the error.log file.";
+ errarg[6] = NULL;
+ errarg[7] = NULL;
+ errarg[8] = NULL;
+
+ /* What are we going to do in here, bail on the user? not. */
+ if (!RegCreateKey(HKEY_LOCAL_MACHINE, "SYSTEM\\CurrentControlSet\\Services"
+ "\\EventLog\\Application\\Apache Service", &hk))
+ {
+ /* The stock message file */
+ char *netmsgkey = "%SystemRoot%\\System32\\netmsg.dll";
+ DWORD dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE |
+ EVENTLOG_INFORMATION_TYPE;
+
+ RegSetValueEx(hk, "EventMessageFile", 0, REG_EXPAND_SZ,
+ (LPBYTE) netmsgkey, strlen(netmsgkey) + 1);
+
+ RegSetValueEx(hk, "TypesSupported", 0, REG_DWORD,
+ (LPBYTE) &dwData, sizeof(dwData));
+ RegCloseKey(hk);
+ }
+
+ hEventSource = RegisterEventSource(NULL, "Apache Service");
+
+ while (ReadFile(hPipeRead, errmsg, 1, &errres, NULL) && (errres == 1))
+ {
+ if ((errmsg > errbuf) || !isspace(*errmsg))
+ {
+ ++errlen;
+ ++errmsg;
+ if ((*(errmsg - 1) == '\n') || (errlen == sizeof(errbuf) - 1))
+ {
+ while (errlen && isspace(errbuf[errlen - 1]))
+ --errlen;
+ errbuf[errlen] = '\0';
+
+ /* Generic message: '%1 %2 %3 %4 %5 %6 %7 %8 %9'
+ * The event code in netmsg.dll is 3299
+ */
+ ReportEvent(hEventSource, EVENTLOG_ERROR_TYPE, 0,
+ 3299, NULL, 9, 0, errarg, NULL);
+ errmsg = errbuf;
+ errlen = 0;
+ }
+ }
+ }
+
+ CloseHandle(hPipeRead);
+ return 0;
+}
+
void __stdcall service_main_fn(DWORD argc, LPTSTR *argv)
{
+ HANDLE hCurrentProcess;
+ HANDLE hPipeRead = NULL;
+ HANDLE hPipeWrite = NULL;
+ HANDLE hPipeReadDup;
+ HANDLE thread;
+ DWORD threadid;
+ SECURITY_ATTRIBUTES sa = {0};
+
ap_server_argv0 = globdat.name = argv[0];
-
- if(!(globdat.hServiceStatus = RegisterServiceCtrlHandler( globdat.name, service_ctrl)))
+
+ if(!(globdat.hServiceStatus = RegisterServiceCtrlHandler(globdat.name,
+ service_ctrl)))
{
ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
"Failure registering service handler");
@@ -82,16 +379,60 @@ void __stdcall service_main_fn(DWORD argc, LPTSTR *argv)
NO_ERROR, // exit code
3000); // wait hint
+ /* Create a pipe to send stderr messages to the system error log */
+ hCurrentProcess = GetCurrentProcess();
+ if (CreatePipe(&hPipeRead, &hPipeWrite, &sa, 0))
+ {
+ if (DuplicateHandle(hCurrentProcess, hPipeRead, hCurrentProcess,
+ &hPipeReadDup, 0, FALSE, DUPLICATE_SAME_ACCESS))
+ {
+ CloseHandle(hPipeRead);
+ hPipeRead = hPipeReadDup;
+ thread = CreateThread(NULL, 0, service_stderr_thread,
+ (LPVOID) hPipeRead, 0, &threadid);
+ if (thread)
+ {
+ int fh;
+ FILE *fl;
+ CloseHandle(thread);
+ fflush(stderr);
+ SetStdHandle(STD_ERROR_HANDLE, hPipeWrite);
+
+ fh = _open_osfhandle((long) STD_ERROR_HANDLE,
+ _O_WRONLY | _O_BINARY);
+ dup2(fh, STDERR_FILENO);
+ fl = _fdopen(STDERR_FILENO, "wcb");
+ memcpy(stderr, fl, sizeof(FILE));
+ }
+ else
+ {
+ CloseHandle(hPipeRead);
+ CloseHandle(hPipeWrite);
+ hPipeWrite = NULL;
+ }
+ }
+ else
+ {
+ CloseHandle(hPipeRead);
+ CloseHandle(hPipeWrite);
+ hPipeWrite = NULL;
+ }
+ }
+
service_cd();
if( service_init() )
/* Arguments are ok except for \! */
globdat.exit_status = (*globdat.main_fn)( argc, argv );
-
+
+ if (hPipeWrite)
+ CloseHandle(hPipeWrite);
+
ReportStatusToSCMgr(SERVICE_STOPPED, NO_ERROR, 0);
return;
}
+
void service_set_status(int status)
{
ReportStatusToSCMgr(status, NO_ERROR, 3000);
@@ -128,6 +469,11 @@ VOID WINAPI service_ctrl(DWORD dwCtrlCode)
ap_start_shutdown();
break;
+ case SERVICE_APACHE_RESTART:
+ state = SERVICE_START_PENDING;
+ ap_start_restart(1);
+ break;
+
// Update the service status.
//
case SERVICE_CONTROL_INTERROGATE:
@@ -185,15 +531,13 @@ int ReportStatusToSCMgr(int currentState, int exitCode, int waitHint)
return(1);
}
-void InstallService(char *service_name, char *conf)
+void InstallService(char *display_name, char *conf)
{
- SC_HANDLE schService;
- SC_HANDLE schSCManager;
-
- TCHAR szPath[512];
+ TCHAR szPath[MAX_PATH];
TCHAR szQuotedPath[512];
+ char *service_name;
- printf("Installing the %s service to use %s\n", service_name, conf);
+ printf("Installing the %s service to use %s\n", display_name, conf);
if (GetModuleFileName( NULL, szPath, 512 ) == 0)
{
@@ -202,39 +546,54 @@ void InstallService(char *service_name, char *conf)
return;
}
- ap_snprintf(szQuotedPath, 512, "\"%s\"", szPath);
+ /* Remove spaces from display name to create service name */
+ service_name = strdup(display_name);
+ ap_remove_spaces(service_name, display_name);
- schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- );
- if (!schSCManager) {
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "OpenSCManager failed");
- }
- else {
+ if (isWindowsNT())
+ {
+ SC_HANDLE schService;
+ SC_HANDLE schSCManager;
+
+ ap_snprintf(szQuotedPath, sizeof(szQuotedPath), "\"%s\" --ntservice", szPath);
+
+ schSCManager = OpenSCManager(
+ NULL, // machine (local)
+ NULL, // database (default)
+ SC_MANAGER_ALL_ACCESS // access required
+ );
+ if (!schSCManager) {
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "OpenSCManager failed");
+ return;
+ }
+
+ /* Added dependencies for the following: TCPIP, AFD
+ * AFD is the winsock handler, TCPIP is self evident
+ *
+ * RPCSS is the Remote Procedure Call (RPC) Locator
+ * required for DCOM communication. I am far from
+ * convinced we should toggle this, but be warned that
+ * future apache modules or ISAPI dll's may depend on it.
+ */
schService = CreateService(
schSCManager, // SCManager database
service_name, // name of service
- service_name, // name to display
+ display_name, // name to display
SERVICE_ALL_ACCESS, // desired access
SERVICE_WIN32_OWN_PROCESS, // service type
- SERVICE_AUTO_START, // start type
+ SERVICE_AUTO_START, // start type
SERVICE_ERROR_NORMAL, // error control type
szQuotedPath, // service's binary
NULL, // no load ordering group
NULL, // no tag identifier
- NULL, // dependencies
+ "Tcpip\0Afd\0", // dependencies
NULL, // LocalSystem account
NULL); // no password
if (schService) {
CloseServiceHandle(schService);
- /* Now store the server_root in the registry */
- if(!ap_registry_set_service_conf(conf, service_name))
- printf("The %s service has been installed successfully.\n", service_name );
}
else {
ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
@@ -243,32 +602,119 @@ void InstallService(char *service_name, char *conf)
CloseServiceHandle(schSCManager);
}
-}
+ else /* !isWindowsNT() */
+ {
+ HKEY hkey;
+ DWORD rv;
+
+ ap_snprintf(szQuotedPath, sizeof(szQuotedPath),
+ "\"%s\" -k start -n %s",
+ szPath, service_name);
+ /* Create/Find the RunServices key */
+ rv = RegCreateKey(HKEY_LOCAL_MACHINE, "Software\\Microsoft\\Windows"
+ "\\CurrentVersion\\RunServices", &hkey);
+ if (rv != ERROR_SUCCESS) {
+ SetLastError(rv);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Could not create/open the RunServices registry key");
+ return;
+ }
+ /* Attempt to add the value for our service */
+ rv = RegSetValueEx(hkey, service_name, 0, REG_SZ,
+ (unsigned char *)szQuotedPath,
+ strlen(szQuotedPath) + 1);
+ if (rv != ERROR_SUCCESS) {
+ SetLastError(rv);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Unable to install service: "
+ "Could not add to RunServices Registry Key");
+ RegCloseKey(hkey);
+ return;
+ }
-void RemoveService(char *service_name)
-{
- SC_HANDLE schService;
- SC_HANDLE schSCManager;
+ RegCloseKey(hkey);
+
+ /* Create/Find the Service key for Monitor Applications to iterate */
+ ap_snprintf(szPath, sizeof(szPath),
+ "SYSTEM\\CurrentControlSet\\Services\\%s", service_name);
+ rv = RegCreateKey(HKEY_LOCAL_MACHINE, szPath, &hkey);
+ if (rv != ERROR_SUCCESS) {
+ SetLastError(rv);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Could not create/open the %s registry key", szPath);
+ return;
+ }
- printf("Removing the %s service\n", service_name);
+ /* Attempt to add the ImagePath value to identify it as Apache */
+ rv = RegSetValueEx(hkey, "ImagePath", 0, REG_SZ,
+ (unsigned char *)szQuotedPath,
+ strlen(szQuotedPath) + 1);
+ if (rv != ERROR_SUCCESS) {
+ SetLastError(rv);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Unable to install service: "
+ "Could not add ImagePath to %s Registry Key",
+ service_name);
+ RegCloseKey(hkey);
+ return;
+ }
- schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- );
- if (!schSCManager) {
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "OpenSCManager failed");
+ /* Attempt to add the DisplayName value for our service */
+ rv = RegSetValueEx(hkey, "DisplayName", 0, REG_SZ,
+ (unsigned char *)display_name,
+ strlen(display_name) + 1);
+ if (rv != ERROR_SUCCESS) {
+ SetLastError(rv);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Unable to install service: "
+ "Could not add DisplayName to %s Registry Key",
+ service_name);
+ RegCloseKey(hkey);
+ return;
+ }
+
+ RegCloseKey(hkey);
}
- else {
+
+ /* Both Platforms: Now store the server_root in the registry */
+ if(!ap_registry_set_service_conf(conf, service_name))
+ printf("The %s service has been installed successfully.\n", display_name);
+}
+
+void RemoveService(char *display_name)
+{
+ char *service_name;
+ BOOL success = FALSE;
+
+ printf("Removing the %s service\n", display_name);
+
+ /* Remove spaces from display name to create service name */
+ service_name = strdup(display_name);
+ ap_remove_spaces(service_name, display_name);
+
+ if (isWindowsNT())
+ {
+ SC_HANDLE schService;
+ SC_HANDLE schSCManager;
+
+ schSCManager = OpenSCManager(
+ NULL, // machine (NULL == local)
+ NULL, // database (NULL == default)
+ SC_MANAGER_ALL_ACCESS // access required
+ );
+ if (!schSCManager) {
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "OpenSCManager failed");
+ return;
+ }
+
schService = OpenService(schSCManager, service_name, SERVICE_ALL_ACCESS);
if (schService == NULL) {
/* Could not open the service */
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "OpenService failed");
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "OpenService failed");
}
else {
/* try to stop the service */
@@ -276,59 +722,129 @@ void RemoveService(char *service_name)
// now remove the service
if (DeleteService(schService) == 0)
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "DeleteService failed");
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "DeleteService failed");
else
- printf("The %s service has been removed successfully.\n", service_name );
+ success = TRUE;
CloseServiceHandle(schService);
}
/* SCM removes registry parameters */
CloseServiceHandle(schSCManager);
}
-
+ else /* !isWindowsNT() */
+ {
+ HKEY hkey;
+ DWORD rv;
+
+ /* Open the RunServices key */
+ rv = RegOpenKey(HKEY_LOCAL_MACHINE,
+ "Software\\Microsoft\\Windows\\CurrentVersion\\RunServices",
+ &hkey);
+ if (rv != ERROR_SUCCESS) {
+ SetLastError(rv);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Could not open the RunServices registry key.");
+ }
+ else {
+ /* Delete the registry value for this service */
+ rv = RegDeleteValue(hkey, service_name);
+ if (rv != ERROR_SUCCESS) {
+ SetLastError(rv);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Unable to remove service: "
+ "Could not delete the RunServices entry.");
+ }
+ else
+ success = TRUE;
+ }
+ RegCloseKey(hkey);
+
+ /* Open the Services key */
+ rv = RegOpenKey(HKEY_LOCAL_MACHINE,
+ "SYSTEM\\CurrentControlSet\\Services", &hkey);
+ if (rv != ERROR_SUCCESS) {
+ rv = RegDeleteValue(hkey, service_name);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Could not open the Services registry key.");
+ success = FALSE;
+ }
+ else {
+ /* Delete the registry key for this service */
+ rv = RegDeleteKey(hkey, service_name);
+ if (rv != ERROR_SUCCESS) {
+ SetLastError(rv);
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "Unable to remove service: "
+ "Could not delete the Services registry key.");
+ success = FALSE;
+ }
+ }
+ RegCloseKey(hkey);
+ }
+ if (success)
+ printf("The %s service has been removed successfully.\n",
+ display_name);
}
-/* A hack to determine if we're running as a service without waiting for
- * the SCM to fail; if AllocConsole succeeds, we're a service.
+/*
+ * A hack to determine if we're running as a service without waiting for
+ * the SCM to fail.
*/
-BOOL isProcessService() {
- if( !AllocConsole() )
+BOOL isProcessService()
+{
+ if (!isWindowsNT() || !AllocConsole())
return FALSE;
FreeConsole();
return TRUE;
}
/* Determine is service_name is a valid service
+ *
+ * TODO: be nice if we tested that it is an 'apache' service, no?
*/
-BOOL isValidService(char *service_name) {
- SC_HANDLE schSCM, schSVC;
- int Err;
+BOOL isValidService(char *display_name) {
+ char service_key[MAX_PATH];
+ char *service_name;
+ HKEY hkey;
+
+ /* Remove spaces from display name to create service name */
+ strcpy(service_key, "System\\CurrentControlSet\\Services\\");
+ service_name = strchr(service_key, '\0');
+ ap_remove_spaces(service_name, display_name);
- if (!(schSCM = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS))) {
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "OpenSCManager failed");
- return FALSE;
+ if (RegOpenKey(HKEY_LOCAL_MACHINE, service_key, &hkey) != ERROR_SUCCESS) {
+ return FALSE;
}
+ RegCloseKey(hkey);
+ return TRUE;
+}
- if ((schSVC = OpenService(schSCM, service_name, SERVICE_ALL_ACCESS))) {
- CloseServiceHandle(schSVC);
- CloseServiceHandle(schSCM);
- return TRUE;
+BOOL isWindowsNT(void)
+{
+ static BOOL once = FALSE;
+ static BOOL isNT = FALSE;
+
+ if (!once)
+ {
+ OSVERSIONINFO osver;
+ osver.dwOSVersionInfoSize = sizeof(osver);
+ if (GetVersionEx(&osver))
+ if (osver.dwPlatformId == VER_PLATFORM_WIN32_NT)
+ isNT = TRUE;
+ once = TRUE;
}
-
- Err = GetLastError();
- if (Err != ERROR_SERVICE_DOES_NOT_EXIST && Err != ERROR_INVALID_NAME)
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "OpenService failed");
-
- return FALSE;
+ return isNT;
}
-int send_signal_to_service(char *service_name, char *sig) {
+int send_signal_to_service(char *display_name, char *sig)
+{
+ DWORD service_pid;
+ HANDLE hwnd;
SC_HANDLE schService;
SC_HANDLE schSCManager;
+ char *service_name;
int success = FALSE;
enum { start, restart, stop, unknown } action;
@@ -345,50 +861,121 @@ int send_signal_to_service(char *service_name, char *sig) {
return FALSE;
}
- schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- );
- if (!schSCManager) {
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "OpenSCManager failed");
- }
- else {
+ /* Remove spaces from display name to create service name */
+ service_name = strdup(display_name);
+ ap_remove_spaces(service_name, display_name);
+
+ if (isWindowsNT())
+ {
+ schSCManager = OpenSCManager(
+ NULL, // machine (NULL == local)
+ NULL, // database (NULL == default)
+ SC_MANAGER_ALL_ACCESS // access required
+ );
+ if (!schSCManager) {
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "OpenSCManager failed");
+ return FALSE;
+ }
+
schService = OpenService(schSCManager, service_name, SERVICE_ALL_ACCESS);
if (schService == NULL) {
/* Could not open the service */
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "OpenService failed");
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "OpenService failed");
+ CloseServiceHandle(schSCManager);
+ return FALSE;
}
- else {
- if (!QueryServiceStatus(schService, &globdat.ssStatus))
- ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
- "QueryService failed");
- else {
- if (globdat.ssStatus.dwCurrentState == SERVICE_STOPPED && action == stop)
- printf("The %s service is not started.\n", service_name);
- else if (globdat.ssStatus.dwCurrentState == SERVICE_RUNNING && action == start)
- printf("The %s service has already been started.\n", service_name);
- else {
- printf("The %s service is %s.\n", service_name, participle[action]);
-
- if (action == stop || action == restart)
- success = ap_stop_service(schService);
- if (action == start || action == restart)
- success = ap_start_service(schService);
-
- if( success )
- printf("The %s service has %s.\n", service_name, past[action]);
+
+ if (!QueryServiceStatus(schService, &globdat.ssStatus)) {
+ ap_log_error(APLOG_MARK, APLOG_ERR|APLOG_WIN32ERROR, NULL,
+ "QueryService failed");
+ CloseServiceHandle(schService);
+ CloseServiceHandle(schSCManager);
+ }
+ }
+ else /* !isWindowsNT() */
+ {
+ /* Locate the window named service_name of class ApacheWin95ServiceMonitor
+ * from the active top level windows
+ */
+ hwnd = FindWindow("ApacheWin95ServiceMonitor", service_name);
+ if (hwnd && GetWindowThreadProcessId(hwnd, &service_pid))
+ globdat.ssStatus.dwCurrentState = SERVICE_RUNNING;
+ else
+ globdat.ssStatus.dwCurrentState = SERVICE_STOPPED;
+ }
+
+ if (globdat.ssStatus.dwCurrentState == SERVICE_STOPPED
+ && action == stop) {
+ printf("The %s service is not started.\n", display_name);
+ }
+ else if (globdat.ssStatus.dwCurrentState == SERVICE_RUNNING
+ && action == start) {
+ printf("The %s service has already been started.\n", display_name);
+ }
+ else
+ {
+ printf("The %s service is %s.\n", display_name, participle[action]);
+
+ if (isWindowsNT())
+ {
+ if (action == stop)
+ success = ap_stop_service(schService);
+ else if ((action == start)
+ || ((action == restart)
+ && (globdat.ssStatus.dwCurrentState
+ == SERVICE_STOPPED)))
+ success = ap_start_service(schService);
+ else if (action == restart)
+ success = ap_restart_service(schService);
+ }
+ else /* !isWindowsNT()) */
+ {
+ char prefix[20];
+ ap_snprintf(prefix, sizeof(prefix), "ap%ld", (long)service_pid);
+ setup_signal_names(prefix);
+
+ if (action == stop) {
+ int ticks = 60;
+ ap_start_shutdown();
+ while (--ticks)
+ {
+ if (!IsWindow(hwnd)) {
+ success = TRUE;
+ break;
+ }
+ Sleep(1000);
+ }
+ }
+ else /* !stop */
+ {
+ /* This gets a bit tricky... start and restart (of stopped service)
+ * will simply fall through and *THIS* process will fade into an
+ * invisible 'service' process, detaching from the user's console.
+ * We need to change the restart signal to "start", however,
+ * if the service was not -yet- running, and we do return FALSE
+ * to assure main() that we haven't done anything yet.
+ */
+ if (action == restart)
+ {
+ if (globdat.ssStatus.dwCurrentState == SERVICE_STOPPED)
+ strcpy(sig, "start");
else
- printf("Failed to %s the %s service.\n", sig, service_name );
+ ap_start_restart(1);
}
-
- CloseServiceHandle(schService);
}
}
- /* SCM removes registry parameters */
+
+ if( success )
+ printf("The %s service has %s.\n", display_name, past[action]);
+ else
+ printf("Failed to %s the %s service.\n", sig, display_name);
+ }
+
+ if (isWindowsNT()) {
+ CloseServiceHandle(schService);
CloseServiceHandle(schSCManager);
}
return success;
@@ -426,6 +1013,117 @@ int ap_start_service(SC_HANDLE schService) {
return TRUE;
return FALSE;
}
-
+
+int ap_restart_service(SC_HANDLE schService)
+{
+ int ticks;
+ if (ControlService(schService, SERVICE_APACHE_RESTART, &globdat.ssStatus))
+ {
+ ticks = 60;
+ while (globdat.ssStatus.dwCurrentState == SERVICE_START_PENDING)
+ {
+ Sleep(1000);
+ if (!QueryServiceStatus(schService, &globdat.ssStatus))
+ return FALSE;
+ if (!--ticks)
+ break;
+ }
+ }
+ if (globdat.ssStatus.dwCurrentState == SERVICE_RUNNING)
+ return TRUE;
+ return FALSE;
+}
+
+/* Control handler for processing Ctrl-C/Ctrl-Break and
+ * on Windows NT also user logoff and system shutdown
+ */
+
+static BOOL CALLBACK ap_control_handler(DWORD ctrl_type)
+{
+ switch (ctrl_type)
+ {
+ case CTRL_C_EVENT:
+ case CTRL_BREAK_EVENT:
+ real_exit_code = 0;
+ fprintf(stderr, "Apache server interrupted...\n");
+ /* for Interrupt signals, shut down the server.
+ * Tell the system we have dealt with the signal
+ * without waiting for Apache to terminate.
+ */
+ ap_start_shutdown();
+ return TRUE;
+
+ case CTRL_CLOSE_EVENT:
+ case CTRL_LOGOFF_EVENT:
+ case CTRL_SHUTDOWN_EVENT:
+ /* for Terminate signals, shut down the server.
+ * Wait for Apache to terminate, but respond
+ * after a reasonable time to tell the system
+ * that we have already tried to shut down.
+ */
+ real_exit_code = 0;
+ fprintf(stderr, "Apache server shutdown initiated...\n");
+ ap_start_shutdown();
+ Sleep(30000);
+ return TRUE;
+ }
+
+ /* We should never get here, but this is (mostly) harmless */
+ return FALSE;
+}
+
+void stop_console_monitor(void)
+{
+ if (!isWindowsNT() && monitor_thread_id)
+ PostThreadMessage(monitor_thread_id, WM_QUIT, 0, 0);
+
+ /* Remove the control handler at the end of the day. */
+ SetConsoleCtrlHandler(ap_control_handler, FALSE);
+}
+
+void ap_start_console_monitor(void)
+{
+ HANDLE console_input;
+
+ console_input = GetStdHandle(STD_INPUT_HANDLE);
+ /* Assure we properly accept Ctrl+C as an interrupt...
+ * Win/2000 definately makes some odd assumptions about
+ * ctrl+c and the reserved console mode bits!
+ */
+ if (console_input != INVALID_HANDLE_VALUE)
+ {
+ /* The SetConsoleCtrlHandler(NULL... would fault under Win9x
+ * WinNT also includes an undocumented 0x80 bit for console mode
+ * that preserves the console window behavior, and prevents the
+ * bogus 'selection' mode from being accedently triggered.
+ */
+ if (isWindowsNT()) {
+ SetConsoleCtrlHandler(NULL, FALSE);
+ SetConsoleMode(console_input, ENABLE_LINE_INPUT
+ | ENABLE_ECHO_INPUT
+ | ENABLE_PROCESSED_INPUT
+ | 0x80);
+ }
+ else {
+ SetConsoleMode(console_input, ENABLE_LINE_INPUT
+ | ENABLE_ECHO_INPUT
+ | ENABLE_PROCESSED_INPUT);
+ }
+ SetConsoleCtrlHandler(ap_control_handler, TRUE);
+ }
+
+ /* Under 95/98 create a monitor window to watch for session end,
+ * pass NULL to WatchWindow so we do not appear to be a service.
+ */
+ if (!isWindowsNT()) {
+ HANDLE thread;
+ thread = CreateThread(NULL, 0, WatchWindow, NULL, 0,
+ &monitor_thread_id);
+ if (thread)
+ CloseHandle(thread);
+ }
+
+ atexit(stop_console_monitor);
+}
#endif /* WIN32 */
diff --git a/usr.sbin/httpd/src/os/win32/service.h b/usr.sbin/httpd/src/os/win32/service.h
index 822596c4161..34d95fac671 100644
--- a/usr.sbin/httpd/src/os/win32/service.h
+++ b/usr.sbin/httpd/src/os/win32/service.h
@@ -3,15 +3,32 @@
#define SERVICE_H
#ifdef WIN32
+
+/* BIG RED WARNING: exit() is mapped to allow us to capture the exit
+ * status. This header must only be included from modules linked into
+ * the ApacheCore.dll - since it's a horrible behavior to exit() from
+ * any module outside the main() block, and we -will- assume it's a
+ * fatal error. No dynamically linked module will ever be able to find
+ * the real_exit_code, and _will_ GP fault if it tries this macro.
+ */
+
+#define exit(status) ((exit)(real_exit_code ? (real_exit_code = (status)) : (status)))
+extern int real_exit_code;
+void hold_console_open_on_error(void);
+
int service_main(int (*main_fn)(int, char **), int argc, char **argv);
+int service95_main(int (*main_fn)(int, char **), int argc, char **argv,
+ char *display_name);
void service_set_status(int status);
void service_cd();
BOOL isProcessService();
-BOOL isValidService(char *service_name);
-void InstallService(char *service_name, char *conf);
-void RemoveService(char *service_name);
+BOOL isValidService(char *display_name);
+void InstallService(char *display_name, char *conf);
+void RemoveService(char *display_name);
int service_init();
-int send_signal_to_service(char *service_name, char *sig);
+int send_signal_to_service(char *display_name, char *sig);
+BOOL isWindowsNT(void);
+void ap_start_console_monitor(void);
#endif /* WIN32 */
#endif /* SERVICE_H */
diff --git a/usr.sbin/httpd/src/os/win32/util_win32.c b/usr.sbin/httpd/src/os/win32/util_win32.c
index 348e0f9e2aa..9c044f97a4b 100644
--- a/usr.sbin/httpd/src/os/win32/util_win32.c
+++ b/usr.sbin/httpd/src/os/win32/util_win32.c
@@ -34,7 +34,7 @@ API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool,
{
char buf[HUGE_STRING_LEN];
char *pInputName;
- char *p, *q;
+ char *p, *q, *t;
BOOL bDone = FALSE;
BOOL bFileExists = TRUE;
HANDLE hFind;
@@ -43,7 +43,7 @@ API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool,
if (!szFile || strlen(szFile) == 0 || strlen(szFile) >= sizeof(buf))
return ap_pstrdup(pPool, "");
- buf[0] = '\0';
+ t = buf;
pInputName = ap_pstrdup(pPool, szFile);
/* First convert all slashes to \ so Win32 calls work OK */
@@ -52,27 +52,30 @@ API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool,
*p = '\\';
}
- p = pInputName;
+ q = p = pInputName;
/* If there is drive information, copy it over. */
if (pInputName[1] == ':') {
- buf[0] = tolower(*p++);
- buf[1] = *p++;
- buf[2] = '\0';
+ /* This is correct - if systemcase is used for
+ * comparison, d: designations will match
+ */
+ *(t++) = tolower(*p++);
+ *(t++) = *p++;
+ q = p;
/* If all we have is a drive letter, then we are done */
- if (strlen(pInputName) == 2)
+ if (!*p)
bDone = TRUE;
- }
-
- q = p;
+ }
+
if (*p == '\\') {
- p++;
- if (*p == '\\') /* Possible UNC name */
+ ++p;
+ if (*p == '\\') /* UNC name */
{
- p++;
/* Get past the machine name. FindFirstFile */
/* will not find a machine name only */
- p = strchr(p, '\\');
+ *(t++) = '\\';
+ ++q;
+ p = strchr(p + 1, '\\');
if (p)
{
p++;
@@ -80,14 +83,21 @@ API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool,
/* will not find a \\machine\share name only */
p = strchr(p, '\\');
if (p) {
- strncat(buf,q,p-q);
+ /* This was faulty - as of 1.3.13 \\machine\share
+ * name is now always lowercased
+ */
+ strncpy(t,q,p-q);
+ strlwr(t);
+ t += p - q;
q = p;
p++;
}
}
- if (!p)
+ if (!p) {
+ bFileExists = FALSE;
p = q;
+ }
}
}
@@ -117,13 +127,17 @@ API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool,
FindClose(hFind);
if (*q == '\\')
- strcat(buf,"\\");
- strcat(buf, wfd.cFileName);
+ *(t++) = '\\';
+ t = strchr(strcpy(t, wfd.cFileName), '\0');
}
}
if (!bFileExists || OnlyDots((*q == '.' ? q : q+1))) {
- strcat(buf, q);
+ /* XXX: Comparison could be faulty ...\unknown
+ * names may not match!
+ */
+ strcpy(t, q);
+ t = strchr(t, '\0');
}
if (p) {
@@ -135,8 +149,9 @@ API_EXPORT(char *) ap_os_systemcase_filename(pool *pPool,
bDone = TRUE;
}
}
+ *t = '\0';
- /* First convert all slashes to / so server code handles it ok */
+ /* Finally, convert all slashes to / so server code handles it ok */
for (p = buf; *p; p++) {
if (*p == '\\')
*p = '/';
@@ -214,9 +229,17 @@ API_EXPORT(char *) ap_os_case_canonical_filename(pool *pPool,
* (where n is a number) and the first three characters
* after the last period."
* Here, we attempt to detect and decode these names.
- */
- p = strchr(pNewStr, '~');
- if (p != NULL) {
+ *
+ * XXX: Netware network clients may have alternate short names,
+ * simply truncated, with no embedded '~'. Further, this behavior
+ * can be modified on WinNT volumes. This was not a safe test,
+ * therefore exclude the '~' pretest.
+ */
+#ifdef WIN32_SHORT_FILENAME_INSECURE_BEHAVIOR
+ p = strchr(pNewStr, '~');
+ if (p != NULL)
+#endif
+ {
char *pConvertedName, *pQstr, *pPstr;
char buf[HUGE_STRING_LEN];
/* We potentially have a short name. Call
@@ -262,7 +285,6 @@ API_EXPORT(char *) ap_os_case_canonical_filename(pool *pPool,
}
}
-
return pNewStr;
}
@@ -288,8 +310,9 @@ API_EXPORT(char *) ap_os_canonical_filename(pool *pPool, const char *szFile)
API_EXPORT(int) os_stat(const char *szPath, struct stat *pStat)
{
int n;
+ int len = strlen(szPath);
- if (strlen(szPath) == 0) {
+ if ((len == 0) || (len >= MAX_PATH)) {
return -1;
}
@@ -298,7 +321,6 @@ API_EXPORT(int) os_stat(const char *szPath, struct stat *pStat)
char *s;
int nSlashes = 0;
- ap_assert(strlen(szPath) < _MAX_PATH);
strcpy(buf, szPath);
for (s = buf; *s; ++s) {
if (*s == '/') {
@@ -308,6 +330,9 @@ API_EXPORT(int) os_stat(const char *szPath, struct stat *pStat)
}
/* then we need to add one more to get \\machine\share\ */
if (nSlashes == 3) {
+ if (++len >= MAX_PATH) {
+ return -1;
+ }
*s++ = '\\';
}
*s = '\0';
@@ -424,7 +449,7 @@ API_EXPORT(int) os_spawnve(int mode, const char *cmdname,
return _spawnve(mode, szCmd, aszArgs, envp);
}
-API_EXPORT(int) os_spawnle(int mode, const char *cmdname, ...)
+API_EXPORT_NONSTD(int) os_spawnle(int mode, const char *cmdname, ...)
{
int n;
va_list vlist;
@@ -580,7 +605,7 @@ API_EXPORT(int) ap_os_is_filename_valid(const char *file)
};
/* Test 1 */
- if (strlen(file) > MAX_PATH) {
+ if (strlen(file) >= MAX_PATH) {
/* Path too long for Windows. Note that this test is not valid
* if the path starts with //?/ or \\?\. */
return 0;
@@ -675,3 +700,69 @@ API_EXPORT(int) ap_os_is_filename_valid(const char *file)
return 1;
}
+
+
+API_EXPORT(ap_os_dso_handle_t) ap_os_dso_load(const char *module_name)
+{
+ UINT em;
+ ap_os_dso_handle_t dsoh;
+ char path[MAX_PATH], *p;
+ /* Load the module...
+ * per PR2555, the LoadLibraryEx function is very picky about slashes.
+ * Debugging on NT 4 SP 6a reveals First Chance Exception within NTDLL.
+ * LoadLibrary in the MS PSDK also reveals that it -explicitly- states
+ * that backslashes must be used.
+ *
+ * Transpose '\' for '/' in the filename.
+ */
+ ap_cpystrn(path, module_name, MAX_PATH);
+ p = path;
+ while (p = strchr(p, '/'))
+ *p = '\\';
+
+ /* First assume the dso/dll's required by -this- dso are sitting in the
+ * same path or can be found in the usual places. Failing that, let's
+ * let that dso look in the apache root.
+ */
+ em = SetErrorMode(SEM_FAILCRITICALERRORS);
+ dsoh = LoadLibraryEx(path, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+ if (!dsoh) {
+ dsoh = LoadLibraryEx(path, NULL, 0);
+ }
+ SetErrorMode(em);
+ return dsoh;
+}
+
+API_EXPORT(const char *) ap_os_dso_error(void)
+{
+ int len, nErrorCode;
+ static char errstr[120];
+ /* This is -not- threadsafe code, but it's about the best we can do.
+ * mostly a potential problem for isapi modules, since LoadModule
+ * errors are handled within a single config thread.
+ */
+
+ nErrorCode = GetLastError();
+ len = ap_snprintf(errstr, sizeof(errstr) - len, "(%d) ", nErrorCode);
+
+ len += FormatMessage(
+ FORMAT_MESSAGE_FROM_SYSTEM,
+ NULL,
+ nErrorCode,
+ MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), /* Default language */
+ (LPTSTR) errstr + len,
+ sizeof(errstr) - len,
+ NULL
+ );
+ /* FormatMessage may have appended a newline (\r\n). So remove it
+ * and use ": " instead like the Unix errors. The error may also
+ * end with a . before the return - if so, trash it.
+ */
+ if (len > 1 && errstr[len-2] == '\r' && errstr[len-1] == '\n') {
+ if (len > 2 && errstr[len-3] == '.')
+ len--;
+ errstr[len-2] = ':';
+ errstr[len-1] = ' ';
+ }
+ return errstr;
+}
diff --git a/usr.sbin/httpd/src/regex/regex.dsp b/usr.sbin/httpd/src/regex/regex.dsp
index 60dd1090756..30ad09a43e0 100644
--- a/usr.sbin/httpd/src/regex/regex.dsp
+++ b/usr.sbin/httpd/src/regex/regex.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="regex" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
@@ -22,6 +22,7 @@ CFG=regex - Win32 Debug
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -38,8 +39,8 @@ CPP=cl.exe
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
@@ -59,8 +60,8 @@ LIB32=link.exe -lib
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
-# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /FD /c
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
diff --git a/usr.sbin/httpd/src/regex/regex.mak b/usr.sbin/httpd/src/regex/regex.mak
index 1484294ea4f..0cc1c4ed8ca 100644
--- a/usr.sbin/httpd/src/regex/regex.mak
+++ b/usr.sbin/httpd/src/regex/regex.mak
@@ -25,8 +25,6 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-
!IF "$(CFG)" == "regex - Win32 Release"
OUTDIR=.\Release
@@ -56,11 +54,43 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+RSC=rc.exe
+CPP=cl.exe
CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D\
- "_WINDOWS" /Fp"$(INTDIR)\regex.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD\
- /c
+ "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Release/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\regex.bsc"
BSC32_SBRS= \
@@ -107,29 +137,12 @@ CLEAN :
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+RSC=rc.exe
+CPP=cl.exe
CPP_PROJ=/nologo /MDd /W3 /GX /Z7 /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D\
- "_WINDOWS" /Fp"$(INTDIR)\regex.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD\
- /c
+ "_WINDOWS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Debug/
CPP_SBRS=.
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\regex.bsc"
-BSC32_SBRS= \
-
-LIB32=link.exe -lib
-LIB32_FLAGS=/nologo /out:"$(OUTDIR)\regex.lib"
-LIB32_OBJS= \
- "$(INTDIR)\regcomp.obj" \
- "$(INTDIR)\regerror.obj" \
- "$(INTDIR)\regexec.obj" \
- "$(INTDIR)\regfree.obj"
-
-"$(OUTDIR)\regex.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
- $(LIB32) @<<
- $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -161,27 +174,30 @@ LIB32_OBJS= \
$(CPP_PROJ) $<
<<
-
-!IF "$(CFG)" == "regex - Win32 Release" || "$(CFG)" == "regex - Win32 Debug"
-SOURCE=.\regcomp.c
-
-!IF "$(CFG)" == "regex - Win32 Release"
-
-DEP_CPP_REGCO=\
- "..\include\hsregex.h"\
- ".\cclass.h"\
- ".\cname.h"\
- ".\regcomp.ih"\
- ".\regex2.h"\
- ".\utils.h"\
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\regex.bsc"
+BSC32_SBRS= \
+LIB32=link.exe -lib
+LIB32_FLAGS=/nologo /out:"$(OUTDIR)\regex.lib"
+LIB32_OBJS= \
+ "$(INTDIR)\regcomp.obj" \
+ "$(INTDIR)\regerror.obj" \
+ "$(INTDIR)\regexec.obj" \
+ "$(INTDIR)\regfree.obj"
-"$(INTDIR)\regcomp.obj" : $(SOURCE) $(DEP_CPP_REGCO) "$(INTDIR)"
+"$(OUTDIR)\regex.lib" : "$(OUTDIR)" $(DEF_FILE) $(LIB32_OBJS)
+ $(LIB32) @<<
+ $(LIB32_FLAGS) $(DEF_FLAGS) $(LIB32_OBJS)
+<<
+!ENDIF
-!ELSEIF "$(CFG)" == "regex - Win32 Debug"
+!IF "$(CFG)" == "regex - Win32 Release" || "$(CFG)" == "regex - Win32 Debug"
+SOURCE=.\regcomp.c
DEP_CPP_REGCO=\
+ "..\include\ap_ctype.h"\
"..\include\hsregex.h"\
".\cclass.h"\
".\cname.h"\
@@ -193,23 +209,7 @@ DEP_CPP_REGCO=\
"$(INTDIR)\regcomp.obj" : $(SOURCE) $(DEP_CPP_REGCO) "$(INTDIR)"
-!ENDIF
-
SOURCE=.\regerror.c
-
-!IF "$(CFG)" == "regex - Win32 Release"
-
-DEP_CPP_REGER=\
- "..\include\hsregex.h"\
- ".\regerror.ih"\
- ".\utils.h"\
-
-
-"$(INTDIR)\regerror.obj" : $(SOURCE) $(DEP_CPP_REGER) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "regex - Win32 Debug"
-
DEP_CPP_REGER=\
"..\include\hsregex.h"\
".\regerror.ih"\
@@ -219,13 +219,9 @@ DEP_CPP_REGER=\
"$(INTDIR)\regerror.obj" : $(SOURCE) $(DEP_CPP_REGER) "$(INTDIR)"
-!ENDIF
-
SOURCE=.\regexec.c
-
-!IF "$(CFG)" == "regex - Win32 Release"
-
DEP_CPP_REGEX=\
+ "..\include\ap_ctype.h"\
"..\include\hsregex.h"\
".\engine.c"\
".\engine.ih"\
@@ -236,21 +232,6 @@ DEP_CPP_REGEX=\
"$(INTDIR)\regexec.obj" : $(SOURCE) $(DEP_CPP_REGEX) "$(INTDIR)"
-!ELSEIF "$(CFG)" == "regex - Win32 Debug"
-
-DEP_CPP_REGEX=\
- "..\include\hsregex.h"\
- ".\engine.c"\
- ".\engine.ih"\
- ".\regex2.h"\
- ".\utils.h"\
-
-
-"$(INTDIR)\regexec.obj" : $(SOURCE) $(DEP_CPP_REGEX) "$(INTDIR)"
-
-
-!ENDIF
-
SOURCE=.\regfree.c
DEP_CPP_REGFR=\
"..\include\hsregex.h"\
diff --git a/usr.sbin/httpd/src/support/ab.c b/usr.sbin/httpd/src/support/ab.c
index 9135a261378..acca8363bcb 100644
--- a/usr.sbin/httpd/src/support/ab.c
+++ b/usr.sbin/httpd/src/support/ab.c
@@ -119,6 +119,8 @@
#include <errno.h>
#include <sys/ioctl.h>
#include <string.h>
+#include <sys/types.h>
+#include <sys/uio.h>
#define ap_select select
#else /* (!)NO_APACHE_INCLUDES */
@@ -884,14 +886,14 @@ static void test(void)
static void copyright(void)
{
if (!use_html) {
- printf("This is ApacheBench, Version %s\n", VERSION " <$Revision: 1.5 $> apache-1.3");
+ printf("This is ApacheBench, Version %s\n", VERSION " <$Revision: 1.6 $> apache-1.3");
printf("Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/\n");
printf("Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/\n");
printf("\n");
}
else {
printf("<p>\n");
- printf(" This is ApacheBench, Version %s <i>&lt;%s&gt;</i> apache-1.3<br>\n", VERSION, "$Revision: 1.5 $");
+ printf(" This is ApacheBench, Version %s <i>&lt;%s&gt;</i> apache-1.3<br>\n", VERSION, "$Revision: 1.6 $");
printf(" Copyright (c) 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br>\n");
printf(" Copyright (c) 1998-1999 The Apache Group, http://www.apache.org/<br>\n");
printf("</p>\n<p>\n");
@@ -906,7 +908,7 @@ static void usage(char *progname)
fprintf(stderr, " -n requests Number of requests to perform\n");
fprintf(stderr, " -c concurrency Number of multiple requests to make\n");
fprintf(stderr, " -t timelimit Seconds to max. wait for responses\n");
- fprintf(stderr, " -p postfile File containg data to POST\n");
+ fprintf(stderr, " -p postfile File containing data to POST\n");
fprintf(stderr, " -T content-type Content-type header for POSTing\n");
fprintf(stderr, " -v verbosity How much troubleshooting info to print\n");
fprintf(stderr, " -w Print out results in HTML tables\n");
@@ -914,7 +916,7 @@ static void usage(char *progname)
fprintf(stderr, " -x attributes String to insert as table attributes\n");
fprintf(stderr, " -y attributes String to insert as tr attributes\n");
fprintf(stderr, " -z attributes String to insert as td or th attributes\n");
- fprintf(stderr, " -C attribute Add cookie, eg. 'Apache=1234. (repeatable)\n");
+ fprintf(stderr, " -C attribute Add cookie, eg. 'Apache=1234' (repeatable)\n");
fprintf(stderr, " -H attribute Add Arbitrary header line, eg. 'Accept-Encoding: zop'\n");
fprintf(stderr, " Inserted after all normal header lines. (repeatable)\n");
fprintf(stderr, " -A attribute Add Basic WWW Authentication, the attributes\n");
@@ -1060,7 +1062,7 @@ int main(int argc, char **argv)
l=ap_base64encode(tmp,optarg,strlen(optarg));
tmp[l]='\0';
- strncat(auth, "Authorization: basic ", sizeof(auth));
+ strncat(auth, "Authorization: Basic ", sizeof(auth));
strncat(auth, tmp, sizeof(auth));
strncat(auth, "\r\n", sizeof(auth));
break;
@@ -1073,7 +1075,7 @@ int main(int argc, char **argv)
l=ap_base64encode(tmp,optarg,strlen(optarg));
tmp[l]='\0';
- strncat(auth, "Proxy-Authorization: basic ", sizeof(auth));
+ strncat(auth, "Proxy-Authorization: Basic ", sizeof(auth));
strncat(auth, tmp, sizeof(auth));
strncat(auth, "\r\n", sizeof(auth));
break;
diff --git a/usr.sbin/httpd/src/support/apxs.pl b/usr.sbin/httpd/src/support/apxs.pl
index 674fd1bce9c..8ec1d05160f 100644
--- a/usr.sbin/httpd/src/support/apxs.pl
+++ b/usr.sbin/httpd/src/support/apxs.pl
@@ -245,7 +245,7 @@ sub execute_cmds {
print STDERR "$cmd\n";
$rc = system("$cmd");
if ($rc != 0) {
- printf(STDERR "apxs:Break: Command failed with rc=%d\n", $rc << 8);
+ printf(STDERR "apxs:Break: Command failed with rc=%d\n", $rc >> 8);
exit(1);
}
}
diff --git a/usr.sbin/httpd/src/support/dbmmanage b/usr.sbin/httpd/src/support/dbmmanage
index d176d85748e..441901bef14 100644
--- a/usr.sbin/httpd/src/support/dbmmanage
+++ b/usr.sbin/httpd/src/support/dbmmanage
@@ -1,75 +1,125 @@
#!/usr/local/bin/perl
# ====================================================================
-# Copyright (c) 1995-1999 The Apache Group. All rights reserved.
+# The Apache Software License, Version 1.1
+#
+# Copyright (c) 2000 The Apache Software Foundation. All rights
+# reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
+# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in
# the documentation and/or other materials provided with the
# distribution.
#
-# 3. All advertising materials mentioning features or use of this
-# software must display the following acknowledgment:
-# "This product includes software developed by the Apache Group
-# for use in the Apache HTTP server project (http://www.apache.org/)."
-#
-# 4. The names "Apache Server" and "Apache Group" must not be used to
-# endorse or promote products derived from this software without
-# prior written permission. For written permission, please contact
-# apache@apache.org.
+# 3. The end-user documentation included with the redistribution,
+# if any, must include the following acknowledgment:
+# "This product includes software developed by the
+# Apache Software Foundation (http://www.apache.org/)."
+# Alternately, this acknowledgment may appear in the software itself,
+# if and wherever such third-party acknowledgments normally appear.
#
-# 5. Products derived from this software may not be called "Apache"
-# nor may "Apache" appear in their names without prior written
-# permission of the Apache Group.
+# 4. The names "Apache" and "Apache Software Foundation" must
+# not be used to endorse or promote products derived from this
+# software without prior written permission. For written
+# permission, please contact apache@apache.org.
#
-# 6. Redistributions of any form whatsoever must retain the following
-# acknowledgment:
-# "This product includes software developed by the Apache Group
-# for use in the Apache HTTP server project (http://www.apache.org/)."
+# 5. Products derived from this software may not be called "Apache",
+# nor may "Apache" appear in their name, without prior written
+# permission of the Apache Software Foundation.
#
-# THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
-# EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
# ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-# OF THE POSSIBILITY OF SUCH DAMAGE.
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+# SUCH DAMAGE.
+# ====================================================================
# ====================================================================
#
# This software consists of voluntary contributions made by many
-# individuals on behalf of the Apache Group and was originally based
-# on public domain software written at the National Center for
-# Supercomputing Applications, University of Illinois, Urbana-Champaign.
-# For more information on the Apache Group and the Apache HTTP server
-# project, please see <http://www.apache.org/>.
+# individuals on behalf of the Apache Software Foundation. For more
+# information on the Apache Software Foundation, please see
+# <http://www.apache.org/>.
+#
+# Portions of this software are based upon public domain software
+# originally written at the National Center for Supercomputing Applications,
+# University of Illinois, Urbana-Champaign.
+#
#for more functionality see the HTTPD::UserAdmin module:
# http://www.perl.com/CPAN/modules/by-module/HTTPD/HTTPD-Tools-x.xx.tar.gz
#
-# usage: dbmmanage <DBMfile> <command> <key> <value>
+# usage: dbmmanage <DBMfile> <command> <user> <password> <groups> <comment>
package dbmmanage;
-# -ldb -lndbm -lgdbm
-BEGIN { @AnyDBM_File::ISA = qw(DB_File NDBM_File GDBM_File) }
+# -ldb -lndbm -lgdbm -lsdbm
+BEGIN { @AnyDBM_File::ISA = qw(DB_File NDBM_File GDBM_File SDBM_File) }
use strict;
use Fcntl;
use AnyDBM_File ();
-my($file,$command,$key,$crypted_pwd) = @ARGV;
+sub usage {
+ my $cmds = join "|", sort keys %dbmc::;
+ die <<SYNTAX;
+Usage: dbmmanage [enc] dbname command [username [pw [group[,group] [comment]]]]
-usage() unless $file and $command and defined &{$dbmc::{$command}};
+ where enc is -d for crypt encryption (default except on Win32, Netware)
+ -m for MD5 encryption (default on Win32, Netware)
+ -s for SHA1 encryption
+ -p for plaintext
+
+ command is one of: $cmds
+
+ pw of . for update command retains the old password
+ pw of - (or blank) for update command prompts for the password
+
+ groups or comment of . (or blank) for update command retains old values
+ groups or comment of - for update command clears the existing value
+ groups or comment of - for add and adduser commands is the empty value
+SYNTAX
+}
+
+sub need_sha1_crypt {
+ if (!eval ('require "Digest/SHA1.pm";')) {
+ print STDERR <<SHAERR;
+dbmmanage SHA1 passwords require the interface or the module Digest::SHA1
+available from CPAN:
+
+ http://www.cpan.org/modules/by-module/Digest/Digest-MD5-2.12.tar.gz
+
+Please install Digest::SHA1 and try again, or use a different crypt option:
+
+SHAERR
+ usage();
+ }
+}
+
+sub need_md5_crypt {
+ if (!eval ('require "Crypt/PasswdMD5.pm";')) {
+ print STDERR <<MD5ERR;
+dbmmanage MD5 passwords require the module Crypt::PasswdMD5 available from CPAN
+
+ http://www.cpan.org/modules/by-module/Crypt/PasswdMD5-1.1.tar.gz
+
+Please install Crypt::PasswdMD5 and try again, or use a different crypt option:
+
+MD5ERR
+ usage();
+ }
+}
# if your osname is in $newstyle_salt, then use new style salt (starts with '_' and contains
# four bytes of iteration count and four bytes of salt). Otherwise, just use
@@ -78,14 +128,72 @@ usage() unless $file and $command and defined &{$dbmc::{$command}};
# I believe that 4.4BSD derived systems do (at least BSD/OS 2.0 does).
# The new style crypt() allows up to 20 characters of the password to be
# significant rather than only 8.
-my $newstyle_salt = join '|', qw{bsdos}; #others?
+#
+my $newstyle_salt_platforms = join '|', qw{bsdos}; #others?
+my $newstyle_salt = $^O =~ /(?:$newstyle_salt_platforms)/;
+
+# Some platforms just can't crypt() for Apache
+#
+my $crypt_not_supported_platforms = join '|', qw{MSWin32 NetWare}; #others?
+my $crypt_not_supported = $^O =~ /(?:$crypt_not_supported_platforms)/;
+
+my $crypt_method = "crypt";
+
+if ($crypt_not_supported) {
+ $crypt_method = "md5";
+}
+
+# Some platforms won't jump through our favorite hoops
+#
+my $not_unix_platforms = join '|', qw{MSWin32 NetWare}; #others?
+my $not_unix = $^O =~ /(?:$not_unix_platforms)/;
+
+if ($crypt_not_supported) {
+ $crypt_method = "md5";
+}
+
+if (@ARGV[0] eq "-d") {
+ shift @ARGV;
+ if ($crypt_not_supported) {
+ print STDERR
+ "Warning: Apache/$^O does not support crypt()ed passwords!\n\n";
+ }
+ $crypt_method = "crypt";
+}
+
+if (@ARGV[0] eq "-m") {
+ shift @ARGV;
+ $crypt_method = "md5";
+}
+
+if (@ARGV[0] eq "-p") {
+ shift @ARGV;
+ if (!$crypt_not_supported) {
+ print STDERR
+ "Warning: Apache/$^O does not support plaintext passwords!\n\n";
+ }
+ $crypt_method = "plain";
+}
+
+if (@ARGV[0] eq "-s") {
+ shift @ARGV;
+ need_sha1_crypt();
+ $crypt_method = "sha1";
+}
+
+if ($crypt_method eq "md5") {
+ need_md5_crypt();
+}
+
+my($file,$command,$key,$crypted_pwd,$groups,$comment) = @ARGV;
+
+usage() unless $file and $command and defined &{$dbmc::{$command}};
# remove extension if any
my $chop = join '|', qw{db.? pag dir};
$file =~ s/\.($chop)$//;
my $is_update = $command eq "update";
-my $Is_Win32 = $^O eq "MSWin32";
my %DB = ();
my @range = ();
my($mode, $flags) = $command =~
@@ -95,19 +203,20 @@ tie (%DB, "AnyDBM_File", $file, $flags, $mode) || die "Can't tie $file: $!";
dbmc->$command();
untie %DB;
-sub usage {
- my $cmds = join "|", sort keys %dbmc::;
- die "usage: $0 filename [$cmds] [username]\n";
-}
my $x;
sub genseed {
my $psf;
- for (qw(-xlwwa -le)) {
- `ps $_ 2>/dev/null`;
- $psf = $_, last unless $?;
+ if ($not_unix) {
+ srand (time ^ $$ or time ^ ($$ + ($$ << 15)));
+ }
+ else {
+ for (qw(-xlwwa -le)) {
+ `ps $_ 2>/dev/null`;
+ $psf = $_, last unless $?;
+ }
+ srand (time ^ $$ ^ unpack("%L*", `ps $psf | gzip -f`));
}
- srand (time ^ $$ ^ unpack("%L*", `ps $psf | gzip -f`));
@range = (qw(. /), '0'..'9','a'..'z','A'..'Z');
$x = int scalar @range;
}
@@ -116,18 +225,50 @@ sub randchar {
join '', map $range[rand $x], 1..shift||1;
}
-sub salt {
- my $newstyle = $^O =~ /(?:$newstyle_salt)/;
+sub saltpw_crypt {
genseed() unless @range;
- return $newstyle ?
+ return $newstyle_salt ?
join '', "_", randchar, "a..", randchar(4) :
randchar(2);
}
+sub cryptpw_crypt {
+ my ($pw, $salt) = @_;
+ $salt = saltpw_crypt unless $salt;
+ crypt $pw, $salt;
+}
+
+sub saltpw_md5 {
+ genseed() unless @range;
+ randchar(8);
+}
+
+sub cryptpw_md5 {
+ my($pw, $salt) = @_;
+ $salt = saltpw_md5 unless $salt;
+ Crypt::PasswdMD5::apache_md5_crypt($pw, $salt);
+}
+
+sub cryptpw_sha1 {
+ my($pw, $salt) = @_;
+ '{SHA}' . Digest::SHA1::sha1_base64($pw) . "=";
+}
+
+sub cryptpw {
+ if ($crypt_method eq "md5") {
+ return cryptpw_md5(@_);
+ } elsif ($crypt_method eq "sha1") {
+ return cryptpw_sha1(@_);
+ } elsif ($crypt_method eq "crypt") {
+ return cryptpw_crypt(@_);
+ }
+ @_[0]; # otherwise return plaintext
+}
+
sub getpass {
my $prompt = shift || "Enter password:";
- unless($Is_Win32) {
+ unless($not_unix) {
open STDIN, "/dev/tty" or warn "couldn't open /dev/tty $!\n";
system "stty -echo;";
}
@@ -138,7 +279,7 @@ sub getpass {
$pwd .= $c;
}
- system "stty echo" unless $Is_Win32;
+ system "stty echo" unless $not_unix;
print STDERR "\n";
die "Can't use empty password!\n" unless length $pwd;
return $pwd;
@@ -146,7 +287,15 @@ sub getpass {
sub dbmc::update {
die "Sorry, user `$key' doesn't exist!\n" unless $DB{$key};
- dbmc->adduser;
+ $crypted_pwd = (split /:/, $DB{$key}, 3)[0] if $crypted_pwd eq '.';
+ $groups = (split /:/, $DB{$key}, 3)[1] if !$groups || $groups eq '.';
+ $comment = (split /:/, $DB{$key}, 3)[2] if !$comment || $comment eq '.';
+ if (!$crypted_pwd || $crypted_pwd eq '-') {
+ dbmc->adduser;
+ }
+ else {
+ dbmc->add;
+ }
}
sub dbmc::add {
@@ -154,15 +303,19 @@ sub dbmc::add {
unless($is_update) {
die "Sorry, user `$key' already exists!\n" if $DB{$key};
}
+ $groups = '' if $groups eq '-';
+ $comment = '' if $comment eq '-';
+ $groups .= ":" . $comment if $comment;
+ $crypted_pwd .= ":" . $groups if $groups;
$DB{$key} = $crypted_pwd;
my $action = $is_update ? "updated" : "added";
- print "User $key $action with password encrypted to $DB{$key}\n";
+ print "User $key $action with password encrypted to $DB{$key} using $crypt_method\n";
}
sub dbmc::adduser {
my $value = getpass "New password:";
die "They don't match, sorry.\n" unless getpass("Re-type new password:") eq $value;
- $crypted_pwd = crypt $value, caller->salt;
+ $crypted_pwd = cryptpw $value;
dbmc->add;
}
@@ -177,12 +330,26 @@ sub dbmc::view {
sub dbmc::check {
die "Sorry, user `$key' doesn't exist!\n" unless $DB{$key};
- print crypt(getpass(), $DB{$key}) eq $DB{$key} ? "password ok\n" : "password mismatch\n";
+ my $chkpass = (split /:/, $DB{$key}, 3)[0];
+ my $testpass = getpass();
+ if (substr($chkpass, 0, 6) eq '$apr1$') {
+ need_md5_crypt;
+ $crypt_method = "md5";
+ } elsif (substr($chkpass, 0, 5) eq '{SHA}') {
+ need_sha1_crypt;
+ $crypt_method = "sha1";
+ } elsif (length($chkpass) == 13 && $chkpass ne $testpass) {
+ $crypt_method = "crypt";
+ } else {
+ $crypt_method = "plain";
+ }
+ print $crypt_method . (cryptpw($testpass, $chkpass) eq $chkpass
+ ? " password ok\n" : " password mismatch\n");
}
sub dbmc::import {
while(defined($_ = <STDIN>) and chomp) {
- ($key,$crypted_pwd) = split /:/, $_, 2;
+ ($key,$crypted_pwd,$groups,$comment) = split /:/, $_, 4;
dbmc->add;
}
}
diff --git a/usr.sbin/httpd/src/support/htdigest.dsp b/usr.sbin/httpd/src/support/htdigest.dsp
index f00f87e7e74..7005379b361 100644
--- a/usr.sbin/httpd/src/support/htdigest.dsp
+++ b/usr.sbin/httpd/src/support/htdigest.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="htdigest" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
@@ -17,12 +17,12 @@ CFG=htdigest - Win32 Debug
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "htdigest - Win32 Release" (based on\
- "Win32 (x86) Console Application")
+!MESSAGE "htdigest - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "htdigest - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -37,12 +37,12 @@ RSC=rc.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\os\win32" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -50,7 +50,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"release/htdigest.exe"
+# ADD LINK32 /nologo /subsystem:console /map /machine:I386
# SUBTRACT LINK32 /pdb:none
!ELSEIF "$(CFG)" == "htdigest - Win32 Debug"
@@ -62,12 +62,12 @@ LINK32=link.exe
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
-# PROP Output_Dir ""
-# PROP Intermediate_Dir ""
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\os\win32" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
@@ -75,7 +75,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /out:"debug/htdigest.exe" /pdbtype:sept
+# ADD LINK32 /nologo /subsystem:console /incremental:no /map /debug /machine:I386 /pdbtype:sept
!ENDIF
diff --git a/usr.sbin/httpd/src/support/htdigest.mak b/usr.sbin/httpd/src/support/htdigest.mak
index 0f048e7d397..ce39f93009c 100644
--- a/usr.sbin/httpd/src/support/htdigest.mak
+++ b/usr.sbin/httpd/src/support/htdigest.mak
@@ -29,19 +29,19 @@ NULL=nul
!IF "$(CFG)" == "htdigest - Win32 Release"
-OUTDIR=.
-INTDIR=.
+OUTDIR=.\Release
+INTDIR=.\Release
# Begin Custom Macros
-OutDir=.
+OutDir=.\Release
# End Custom Macros
!IF "$(RECURSE)" == "0"
-ALL : "$(OUTDIR)\release\htdigest.exe"
+ALL : "$(OUTDIR)\htdigest.exe"
!ELSE
-ALL : "$(OUTDIR)\release\htdigest.exe"
+ALL : "$(OUTDIR)\htdigest.exe"
!ENDIF
@@ -51,12 +51,16 @@ CLEAN :
-@erase "$(INTDIR)\ap_md5c.obj"
-@erase "$(INTDIR)\htdigest.obj"
-@erase "$(INTDIR)\vc50.idb"
- -@erase "$(OUTDIR)\release\htdigest.exe"
+ -@erase "$(OUTDIR)\htdigest.exe"
+ -@erase "$(OUTDIR)\htdigest.map"
+
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP=cl.exe
-CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\include" /D "WIN32" /D "NDEBUG" /D\
- "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\htdigest.pch" /YX /FD /c
-CPP_OBJS=.
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\include" /I "..\os\win32" /D "WIN32" /D\
+ "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP_OBJS=.\Release/
CPP_SBRS=.
.c{$(CPP_OBJS)}.obj::
@@ -95,37 +99,35 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\htdigest.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
- odbccp32.lib /nologo /subsystem:console /incremental:no\
- /pdb:"$(OUTDIR)\htdigest.pdb" /machine:I386\
- /out:"$(OUTDIR)\release\htdigest.exe"
+LINK32_FLAGS=/nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)\htdigest.pdb" /map:"$(INTDIR)\htdigest.map" /machine:I386\
+ /out:"$(OUTDIR)\htdigest.exe"
LINK32_OBJS= \
"$(INTDIR)\ap_cpystrn.obj" \
"$(INTDIR)\ap_getpass.obj" \
"$(INTDIR)\ap_md5c.obj" \
"$(INTDIR)\htdigest.obj"
-"$(OUTDIR)\release\htdigest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+"$(OUTDIR)\htdigest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
!ELSEIF "$(CFG)" == "htdigest - Win32 Debug"
-OUTDIR=.
-INTDIR=.
+OUTDIR=.\Debug
+INTDIR=.\Debug
# Begin Custom Macros
-OutDir=.
+OutDir=.\Debug
# End Custom Macros
!IF "$(RECURSE)" == "0"
-ALL : "$(OUTDIR)\debug\htdigest.exe"
+ALL : "$(OUTDIR)\htdigest.exe"
!ELSE
-ALL : "$(OUTDIR)\debug\htdigest.exe"
+ALL : "$(OUTDIR)\htdigest.exe"
!ENDIF
@@ -136,14 +138,18 @@ CLEAN :
-@erase "$(INTDIR)\htdigest.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
- -@erase "$(OUTDIR)\debug\htdigest.exe"
- -@erase "$(OUTDIR)\debug\htdigest.ilk"
+ -@erase "$(OUTDIR)\htdigest.exe"
+ -@erase "$(OUTDIR)\htdigest.map"
-@erase "$(OUTDIR)\htdigest.pdb"
+"$(OUTDIR)" :
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+
CPP=cl.exe
-CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /I "..\include" /D "WIN32" /D\
- "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fp"$(INTDIR)\htdigest.pch" /YX /FD /c
-CPP_OBJS=.
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\os\win32" /D\
+ "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\"\
+ /FD /c
+CPP_OBJS=.\Debug/
CPP_SBRS=.
.c{$(CPP_OBJS)}.obj::
@@ -182,18 +188,16 @@ BSC32_FLAGS=/nologo /o"$(OUTDIR)\htdigest.bsc"
BSC32_SBRS= \
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib\
- odbccp32.lib /nologo /subsystem:console /incremental:yes\
- /pdb:"$(OUTDIR)\htdigest.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)\debug\htdigest.exe" /pdbtype:sept
+LINK32_FLAGS=/nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)\htdigest.pdb" /map:"$(INTDIR)\htdigest.map" /debug\
+ /machine:I386 /out:"$(OUTDIR)\htdigest.exe" /pdbtype:sept
LINK32_OBJS= \
"$(INTDIR)\ap_cpystrn.obj" \
"$(INTDIR)\ap_getpass.obj" \
"$(INTDIR)\ap_md5c.obj" \
"$(INTDIR)\htdigest.obj"
-"$(OUTDIR)\debug\htdigest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+"$(OUTDIR)\htdigest.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
$(LINK32) @<<
$(LINK32_FLAGS) $(LINK32_OBJS)
<<
@@ -205,8 +209,8 @@ LINK32_OBJS= \
"htdigest - Win32 Debug"
SOURCE=..\ap\ap_cpystrn.c
DEP_CPP_AP_CP=\
- "..\include\alloc.h"\
"..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
@@ -216,13 +220,10 @@ DEP_CPP_AP_CP=\
"..\include\util_uri.h"\
"..\os\win32\os.h"\
"..\os\win32\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
NODEP_CPP_AP_CP=\
"..\include\ap_config_auto.h"\
"..\include\ebcdic.h"\
- "..\include\os.h"\
"..\include\sfio.h"\
@@ -238,12 +239,9 @@ DEP_CPP_AP_GE=\
"..\include\ap_mmn.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
NODEP_CPP_AP_GE=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
"$(INTDIR)\ap_getpass.obj" : $(SOURCE) $(DEP_CPP_AP_GE) "$(INTDIR)"
@@ -259,13 +257,10 @@ DEP_CPP_AP_MD=\
"..\include\ap_mmn.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
NODEP_CPP_AP_MD=\
"..\ap\ebcdic.h"\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
"$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)"
@@ -281,12 +276,9 @@ DEP_CPP_HTDIG=\
"..\include\ap_mmn.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
NODEP_CPP_HTDIG=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
"$(INTDIR)\htdigest.obj" : $(SOURCE) $(DEP_CPP_HTDIG) "$(INTDIR)"
diff --git a/usr.sbin/httpd/src/support/htpasswd.1 b/usr.sbin/httpd/src/support/htpasswd.1
index 58b6b338c1e..8c385cb5ea8 100644
--- a/usr.sbin/httpd/src/support/htpasswd.1
+++ b/usr.sbin/httpd/src/support/htpasswd.1
@@ -1,57 +1,60 @@
-.TH htpasswd 1 "February 2000"
-.\" Copyright (c) 1997-2000 The Apache Group. All rights reserved.
+.TH htpasswd 1 "May 2000"
+.\" The Apache Software License, Version 1.1
+.\"
+.\" Copyright (c) 2000 The Apache Software Foundation. All rights
+.\" reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\"
.\" 1. Redistributions of source code must retain the above copyright
-.\" notice, this list of conditions and the following disclaimer.
+.\" notice, this list of conditions and the following disclaimer.
.\"
.\" 2. Redistributions in binary form must reproduce the above copyright
.\" notice, this list of conditions and the following disclaimer in
.\" the documentation and/or other materials provided with the
.\" distribution.
.\"
-.\" 3. All advertising materials mentioning features or use of this
-.\" software must display the following acknowledgment:
-.\" "This product includes software developed by the Apache Group
-.\" for use in the Apache HTTP server project (http://www.apache.org/)."
-.\"
-.\" 4. The names "Apache Server" and "Apache Group" must not be used to
-.\" endorse or promote products derived from this software without
-.\" prior written permission. For written permission, please contact
-.\" apache@apache.org.
+.\" 3. The end-user documentation included with the redistribution,
+.\" if any, must include the following acknowledgment:
+.\" "This product includes software developed by the
+.\" Apache Software Foundation (http://www.apache.org/)."
+.\" Alternately, this acknowledgment may appear in the software itself,
+.\" if and wherever such third-party acknowledgments normally appear.
.\"
-.\" 5. Products derived from this software may not be called "Apache"
-.\" nor may "Apache" appear in their names without prior written
-.\" permission of the Apache Group.
+.\" 4. The names "Apache" and "Apache Software Foundation" must
+.\" not be used to endorse or promote products derived from this
+.\" software without prior written permission. For written
+.\" permission, please contact apache@apache.org.
.\"
-.\" 6. Redistributions of any form whatsoever must retain the following
-.\" acknowledgment:
-.\" "This product includes software developed by the Apache Group
-.\" for use in the Apache HTTP server project (http://www.apache.org/)."
+.\" 5. Products derived from this software may not be called "Apache",
+.\" nor may "Apache" appear in their name, without prior written
+.\" permission of the Apache Software Foundation.
.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
-.\" EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
+.\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+.\" WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+.\" DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
.\" ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-.\" LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-.\" STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
-.\" OF THE POSSIBILITY OF SUCH DAMAGE.
+.\" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+.\" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+.\" USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+.\" ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+.\" OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+.\" OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+.\" SUCH DAMAGE.
.\" ====================================================================
.\"
.\" This software consists of voluntary contributions made by many
-.\" individuals on behalf of the Apache Group and was originally based
-.\" on public domain software written at the National Center for
-.\" Supercomputing Applications, University of Illinois, Urbana-Champaign.
-.\" For more information on the Apache Group and the Apache HTTP server
-.\" project, please see <http://www.apache.org/>.
+.\" individuals on behalf of the Apache Software Foundation. For more
+.\" information on the Apache Software Foundation, please see
+.\" <http://www.apache.org/>.
+.\"
+.\" Portions of this software are based upon public domain software
+.\" originally written at the National Center for Supercomputing Applications,
+.\" University of Illinois, Urbana-Champaign.
+.\"
.SH NAME
htpasswd \- Create and update user authentication files
.SH SYNOPSIS
@@ -88,6 +91,33 @@ htpasswd \- Create and update user authentication files
.I passwdfile
.I username
.I password
+.br
+.B htpasswd
+.B \-n
+[
+.B \-m
+|
+.B \-d
+|
+.B \-s
+|
+.B \-p
+]
+.I username
+.br
+.B htpasswd
+.B \-nb
+[
+.B \-m
+|
+.B \-d
+|
+.B \-s
+|
+.B \-p
+]
+.I username
+.I password
.SH DESCRIPTION
.B htpasswd
is used to create and update the flat-files used to store
@@ -103,8 +133,9 @@ Resources available from the
Apache web server can be restricted to just the users listed
in the files created by
.B htpasswd.
-This program can only be used
-when the usernames are stored in a flat-file. To use a
+This program can only manage usernames and passwords
+stored in a flat-file. It can encrypt and display password information
+for use in other types of data stores, though. To use a
DBM database see
\fBdbmmanage\fP.
.PP
@@ -130,7 +161,15 @@ extreme care, since the password is clearly visible on the command
line.\fP
.IP \-c
Create the \fIpasswdfile\fP. If \fIpasswdfile\fP already exists, it
-is rewritten and truncated.
+is rewritten and truncated. This option cannot be combined with
+the \fB-n\fP option.
+.IP \-n
+Display the results on standard output rather than updating a file.
+This is useful for generating password records acceptable to Apache
+for inclusion in non-text data stores. This option changes the
+syntax of the command line, since the \fIpasswdfile\fP argument
+(usually the first one) is omitted. It cannot be combined with
+the \fB-c\fP option.
.IP \-m
Use Apache's modified MD5 algorithm for passwords. Passwords encrypted
with this algorithm are transportable to any platform (Windows, Unix,
@@ -140,7 +179,7 @@ this flag is the default.
Use crypt() encryption for passwords. The default on all platforms but
Windows and TPF. Though possibly supported by
.B htpasswd
-onm all platforms, it is not supported by the
+on all platforms, it is not supported by the
.B httpd
server on Windows and TPF.
.IP \-s
diff --git a/usr.sbin/httpd/src/support/htpasswd.c b/usr.sbin/httpd/src/support/htpasswd.c
index 23d0941ed62..1b24d022528 100644
--- a/usr.sbin/httpd/src/support/htpasswd.c
+++ b/usr.sbin/httpd/src/support/htpasswd.c
@@ -1,58 +1,60 @@
/* ====================================================================
- * Copyright (c) 1995-1999 The Apache Group. All rights reserved.
+ * The Apache Software License, Version 1.1
+ *
+ * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
- * 3. All advertising materials mentioning features or use of this
- * software must display the following acknowledgment:
- * "This product includes software developed by the Apache Group
- * for use in the Apache HTTP server project (http://www.apache.org/)."
- *
- * 4. The names "Apache Server" and "Apache Group" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * apache@apache.org.
+ * 3. The end-user documentation included with the redistribution,
+ * if any, must include the following acknowledgment:
+ * "This product includes software developed by the
+ * Apache Software Foundation (http://www.apache.org/)."
+ * Alternately, this acknowledgment may appear in the software itself,
+ * if and wherever such third-party acknowledgments normally appear.
*
- * 5. Products derived from this software may not be called "Apache"
- * nor may "Apache" appear in their names without prior written
- * permission of the Apache Group.
+ * 4. The names "Apache" and "Apache Software Foundation" must
+ * not be used to endorse or promote products derived from this
+ * software without prior written permission. For written
+ * permission, please contact apache@apache.org.
*
- * 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
- * "This product includes software developed by the Apache Group
- * for use in the Apache HTTP server project (http://www.apache.org/)."
+ * 5. Products derived from this software may not be called "Apache",
+ * nor may "Apache" appear in their name, without prior written
+ * permission of the Apache Software Foundation.
*
- * THIS SOFTWARE IS PROVIDED BY THE APACHE GROUP ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE APACHE GROUP OR
+ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
+ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ * ====================================================================
* ====================================================================
*
* This software consists of voluntary contributions made by many
- * individuals on behalf of the Apache Group and was originally based
- * on public domain software written at the National Center for
- * Supercomputing Applications, University of Illinois, Urbana-Champaign.
- * For more information on the Apache Group and the Apache HTTP server
- * project, please see <http://www.apache.org/>.
+ * individuals on behalf of the Apache Software Foundation. For more
+ * information on the Apache Software Foundation, please see
+ * <http://www.apache.org/>.
*
+ * Portions of this software are based upon public domain software
+ * originally written at the National Center for Supercomputing Applications,
+ * University of Illinois, Urbana-Champaign.
*/
/******************************************************************************
@@ -88,6 +90,10 @@
#include "ap_md5.h"
#include "ap_sha1.h"
+#ifdef HAVE_CRYPT_H
+#include <crypt.h>
+#endif
+
#ifdef WIN32
#include <conio.h>
#include "../os/win32/getopt.h"
@@ -120,6 +126,16 @@
* access it.
*/
static char *tempfilename;
+/*
+ * If our platform knows about the tmpnam() external buffer size, create
+ * a buffer to pass in. This is needed in a threaded environment, or
+ * one that thinks it is (like HP-UX).
+ */
+#ifdef L_tmpnam
+static char tname_buf[L_tmpnam];
+#else
+static char *tname_buf = NULL;
+#endif
/*
* Get a line of input from the user, not including any terminating
@@ -241,14 +257,17 @@ static int usage(void)
fprintf(stderr, "Usage:\n");
fprintf(stderr, "\thtpasswd [-cmdps] passwordfile username\n");
fprintf(stderr, "\thtpasswd -b[cmdps] passwordfile username password\n\n");
+ fprintf(stderr, "\thtpasswd -n[mdps] username\n");
+ fprintf(stderr, "\thtpasswd -nb[mdps] username password\n");
fprintf(stderr, " -c Create a new file.\n");
+ fprintf(stderr, " -n Don't update file; display results on stdout.\n");
fprintf(stderr, " -m Force MD5 encryption of the password"
-#if defined(WIN32) || defined(TPF)
+#if defined(WIN32) || defined(TPF) || defined(NETWARE)
" (default)"
#endif
".\n");
fprintf(stderr, " -d Force CRYPT encryption of the password"
-#if (!(defined(WIN32) || defined(TPF)))
+#if (!(defined(WIN32) || defined(TPF) || defined(NETWARE)))
" (default)"
#endif
".\n");
@@ -257,7 +276,7 @@ static int usage(void)
fprintf(stderr, " -b Use the password from the command line rather "
"than prompting for it.\n");
fprintf(stderr,
- "On Windows and TPF systems the '-m' flag is used by default.\n");
+ "On Windows, TPF and NetWare systems the '-m' flag is used by default.\n");
fprintf(stderr,
"On all other systems, the '-p' flag will probably not work.\n");
return ERR_SYNTAX;
@@ -354,6 +373,7 @@ int main(int argc, char *argv[])
int found = 0;
int alg = ALG_CRYPT;
int newfile = 0;
+ int nofile = 0;
int noninteractive = 0;
int i;
int args_left = 2;
@@ -383,6 +403,10 @@ int main(int argc, char *argv[])
if (*arg == 'c') {
newfile++;
}
+ else if (*arg == 'n') {
+ nofile++;
+ args_left--;
+ }
else if (*arg == 'm') {
alg = ALG_APMD5;
}
@@ -413,15 +437,24 @@ int main(int argc, char *argv[])
if ((argc - i) != args_left) {
return usage();
}
- if (strlen(argv[i]) > (sizeof(pwfilename) - 1)) {
- fprintf(stderr, "%s: filename too long\n", argv[0]);
- return ERR_OVERFLOW;
+ if (newfile && nofile) {
+ fprintf(stderr, "%s: -c and -n options conflict\n", argv[0]);
+ return ERR_SYNTAX;
}
- strcpy(pwfilename, argv[i]);
- if (strlen(argv[i + 1]) > (sizeof(user) - 1)) {
- fprintf(stderr, "%s: username too long (>%d)\n", argv[0],
- sizeof(user) - 1);
- return ERR_OVERFLOW;
+ if (nofile) {
+ i--;
+ }
+ else {
+ if (strlen(argv[i]) > (sizeof(pwfilename) - 1)) {
+ fprintf(stderr, "%s: filename too long\n", argv[0]);
+ return ERR_OVERFLOW;
+ }
+ strcpy(pwfilename, argv[i]);
+ if (strlen(argv[i + 1]) > (sizeof(user) - 1)) {
+ fprintf(stderr, "%s: username too long (>%d)\n", argv[0],
+ sizeof(user) - 1);
+ return ERR_OVERFLOW;
+ }
}
strcpy(user, argv[i + 1]);
if ((arg = strchr(user, ':')) != NULL) {
@@ -443,62 +476,68 @@ int main(int argc, char *argv[])
alg = ALG_APMD5;
fprintf(stderr, "Automatically using MD5 format on Windows.\n");
}
-#elif defined(TPF)
+#elif defined(TPF) || defined(NETWARE)
if (alg == ALG_CRYPT) {
alg = ALG_APMD5;
fprintf(stderr, "Automatically using MD5 format.\n");
}
#endif
-#if (!(defined(WIN32) || defined(TPF)))
+#if (!(defined(WIN32) || defined(TPF) || defined(NETWARE)))
if (alg == ALG_PLAIN) {
fprintf(stderr,"Warning: storing passwords as plain text might "
"just not work on this platform.\n");
}
#endif
- /*
- * Verify that the file exists if -c was omitted. We give a special
- * message if it doesn't.
- */
- if ((! newfile) && (! exists(pwfilename))) {
- fprintf(stderr, "%s: cannot modify file %s; use '-c' to create it\n",
- argv[0], pwfilename);
- perror("fopen");
- exit(ERR_FILEPERM);
- }
- /*
- * Verify that we can read the existing file in the case of an update
- * to it (rather than creation of a new one).
- */
- if ((! newfile) && (! readable(pwfilename))) {
- fprintf(stderr, "%s: cannot open file %s for read access\n",
- argv[0], pwfilename);
- perror("fopen");
- exit(ERR_FILEPERM);
- }
- /*
- * Now check to see if we can preserve an existing file in case
- * of password verification errors on a -c operation.
- */
- if (newfile && exists(pwfilename) && (! readable(pwfilename))) {
- fprintf(stderr, "%s: cannot open file %s for read access\n"
- "%s: existing auth data would be lost on password mismatch",
- argv[0], pwfilename, argv[0]);
- perror("fopen");
- exit(ERR_FILEPERM);
- }
- /*
- * Now verify that the file is writable!
- */
- if (! writable(pwfilename)) {
- fprintf(stderr, "%s: cannot open file %s for write access\n",
- argv[0], pwfilename);
- perror("fopen");
- exit(ERR_FILEPERM);
+ if (! nofile) {
+ /*
+ * Only do the file checks if we're supposed to frob it.
+ *
+ * Verify that the file exists if -c was omitted. We give a special
+ * message if it doesn't.
+ */
+ if ((! newfile) && (! exists(pwfilename))) {
+ fprintf(stderr,
+ "%s: cannot modify file %s; use '-c' to create it\n",
+ argv[0], pwfilename);
+ perror("fopen");
+ exit(ERR_FILEPERM);
+ }
+ /*
+ * Verify that we can read the existing file in the case of an update
+ * to it (rather than creation of a new one).
+ */
+ if ((! newfile) && (! readable(pwfilename))) {
+ fprintf(stderr, "%s: cannot open file %s for read access\n",
+ argv[0], pwfilename);
+ perror("fopen");
+ exit(ERR_FILEPERM);
+ }
+ /*
+ * Now check to see if we can preserve an existing file in case
+ * of password verification errors on a -c operation.
+ */
+ if (newfile && exists(pwfilename) && (! readable(pwfilename))) {
+ fprintf(stderr, "%s: cannot open file %s for read access\n"
+ "%s: existing auth data would be lost on "
+ "password mismatch",
+ argv[0], pwfilename, argv[0]);
+ perror("fopen");
+ exit(ERR_FILEPERM);
+ }
+ /*
+ * Now verify that the file is writable!
+ */
+ if (! writable(pwfilename)) {
+ fprintf(stderr, "%s: cannot open file %s for write access\n",
+ argv[0], pwfilename);
+ perror("fopen");
+ exit(ERR_FILEPERM);
+ }
}
/*
- * All the file access checks have been made. Time to go to work;
+ * All the file access checks (if any) have been made. Time to go to work;
* try to create the record for the username in question. If that
* fails, there's no need to waste any time on file manipulations.
* Any error message text is returned in the record buffer, since
@@ -511,15 +550,30 @@ int main(int argc, char *argv[])
fprintf(stderr, "%s: %s\n", argv[0], record);
exit(i);
}
+ if (nofile) {
+ printf("%s\n", record);
+ exit(0);
+ }
/*
* We can access the files the right way, and we have a record
* to add or update. Let's do it..
*/
- tempfilename = tmpnam(NULL);
+ errno = 0;
+ tempfilename = tmpnam(tname_buf);
+ if ((tempfilename == NULL) || (*tempfilename == '\0')) {
+ fprintf(stderr, "%s: unable to generate temporary filename\n",
+ argv[0]);
+ if (errno == 0) {
+ errno = ENOENT;
+ }
+ perror("tmpnam");
+ exit(ERR_FILEPERM);
+ }
ftemp = fopen(tempfilename, "w+");
if (ftemp == NULL) {
- fprintf(stderr, "%s: unable to create temporary file\n", argv[0]);
+ fprintf(stderr, "%s: unable to create temporary file '%s'\n", argv[0],
+ tempfilename);
perror("fopen");
exit(ERR_FILEPERM);
}
diff --git a/usr.sbin/httpd/src/support/htpasswd.dsp b/usr.sbin/httpd/src/support/htpasswd.dsp
index 7949d7f7e82..849f232461f 100644
--- a/usr.sbin/httpd/src/support/htpasswd.dsp
+++ b/usr.sbin/httpd/src/support/htpasswd.dsp
@@ -1,5 +1,5 @@
# Microsoft Developer Studio Project File - Name="htpasswd" - Package Owner=<4>
-# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
@@ -17,12 +17,12 @@ CFG=htpasswd - Win32 Debug
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
-!MESSAGE "htpasswd - Win32 Release" (based on\
- "Win32 (x86) Console Application")
+!MESSAGE "htpasswd - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "htpasswd - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
+# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
@@ -41,8 +41,8 @@ RSC=rc.exe
# PROP Intermediate_Dir "Release"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /GX /O2 /I "..\include" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "..\include" /I "..\os\win32" /D "NDEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /FD /c
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
@@ -50,7 +50,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 ws2_32.lib /nologo /subsystem:console /map /machine:I386
!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
@@ -65,8 +65,8 @@ LINK32=link.exe
# PROP Intermediate_Dir "Debug"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
-# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
-# ADD CPP /nologo /W3 /Gm /GX /Zi /Od /I "..\include" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /YX /FD /c
+# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
+# ADD CPP /nologo /MDd /W3 /Gm /GX /ZI /Od /I "..\include" /I "..\os\win32" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /FD /c
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
@@ -74,7 +74,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
-# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 ws2_32.lib /nologo /subsystem:console /incremental:no /map /debug /machine:I386 /pdbtype:sept
# SUBTRACT LINK32 /pdb:none
!ENDIF
@@ -85,31 +85,31 @@ LINK32=link.exe
# Name "htpasswd - Win32 Debug"
# Begin Source File
-SOURCE=..\ap\ap_cpystrn.c
+SOURCE=..\ap\ap_base64.c
# End Source File
# Begin Source File
-SOURCE=..\ap\ap_getpass.c
+SOURCE=..\ap\ap_checkpass.c
# End Source File
# Begin Source File
-SOURCE=..\ap\ap_md5c.c
+SOURCE=..\ap\ap_cpystrn.c
# End Source File
# Begin Source File
-SOURCE=..\ap\ap_snprintf.c
+SOURCE=..\ap\ap_getpass.c
# End Source File
# Begin Source File
-SOURCE=..\ap\ap_sha1.c
+SOURCE=..\ap\ap_md5c.c
# End Source File
# Begin Source File
-SOURCE=..\ap\ap_checkpass.c
+SOURCE=..\ap\ap_sha1.c
# End Source File
# Begin Source File
-SOURCE=..\ap\ap_base64.c
+SOURCE=..\ap\ap_snprintf.c
# End Source File
# Begin Source File
diff --git a/usr.sbin/httpd/src/support/htpasswd.mak b/usr.sbin/httpd/src/support/htpasswd.mak
index fa69fcd3503..b2d7ff2e3c9 100644
--- a/usr.sbin/httpd/src/support/htpasswd.mak
+++ b/usr.sbin/httpd/src/support/htpasswd.mak
@@ -27,9 +27,6 @@ NULL=
NULL=nul
!ENDIF
-CPP=cl.exe
-RSC=rc.exe
-
!IF "$(CFG)" == "htpasswd - Win32 Release"
OUTDIR=.\Release
@@ -49,41 +46,75 @@ ALL : "$(OUTDIR)\htpasswd.exe"
!ENDIF
CLEAN :
+ -@erase "$(INTDIR)\ap_base64.obj"
+ -@erase "$(INTDIR)\ap_checkpass.obj"
-@erase "$(INTDIR)\ap_cpystrn.obj"
-@erase "$(INTDIR)\ap_getpass.obj"
-@erase "$(INTDIR)\ap_md5c.obj"
- -@erase "$(INTDIR)\ap_snprintf.obj"
-@erase "$(INTDIR)\ap_sha1.obj"
- -@erase "$(INTDIR)\ap_checkpass.obj"
- -@erase "$(INTDIR)\ap_base64.obj"
+ -@erase "$(INTDIR)\ap_snprintf.obj"
-@erase "$(INTDIR)\htpasswd.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(OUTDIR)\htpasswd.exe"
+ -@erase "$(OUTDIR)\htpasswd.map"
"$(OUTDIR)" :
- if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
+ if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /ML /W3 /GX /O2 /I "..\include" /D "NDEBUG" /D "WIN32" /D\
- "_CONSOLE" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /Fp"$(INTDIR)\htpasswd.pch" /YX\
- /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MD /W3 /GX /O2 /I "..\include" /I "..\os\win32" /D "NDEBUG"\
+ /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN" /Fo"$(INTDIR)\\"\
+ /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Release/
CPP_SBRS=.
+
+.c{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_OBJS)}.obj::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.c{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cpp{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+.cxx{$(CPP_SBRS)}.sbr::
+ $(CPP) @<<
+ $(CPP_PROJ) $<
+<<
+
+RSC=rc.exe
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\htpasswd.bsc"
BSC32_SBRS= \
-
+
LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:console /incremental:no\
- /pdb:"$(OUTDIR)\htpasswd.pdb" /machine:I386 /out:"$(OUTDIR)\htpasswd.exe"
+LINK32_FLAGS=ws2_32.lib /nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)\htpasswd.pdb" /map:"$(INTDIR)\htpasswd.map" /machine:I386\
+ /out:"$(OUTDIR)\htpasswd.exe"
LINK32_OBJS= \
+ "$(INTDIR)\ap_base64.obj" \
+ "$(INTDIR)\ap_checkpass.obj" \
"$(INTDIR)\ap_cpystrn.obj" \
"$(INTDIR)\ap_getpass.obj" \
"$(INTDIR)\ap_md5c.obj" \
- "$(INTDIR)\ap_snprintf.obj" \
"$(INTDIR)\ap_sha1.obj" \
- "$(INTDIR)\ap_checkpass.obj" \
- "$(INTDIR)\ap_base64.obj" \
+ "$(INTDIR)\ap_snprintf.obj" \
"$(INTDIR)\htpasswd.obj"
"$(OUTDIR)\htpasswd.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
@@ -110,53 +141,29 @@ ALL : "$(OUTDIR)\htpasswd.exe"
!ENDIF
CLEAN :
+ -@erase "$(INTDIR)\ap_base64.obj"
+ -@erase "$(INTDIR)\ap_checkpass.obj"
-@erase "$(INTDIR)\ap_cpystrn.obj"
-@erase "$(INTDIR)\ap_getpass.obj"
-@erase "$(INTDIR)\ap_md5c.obj"
- -@erase "$(INTDIR)\ap_snprintf.obj"
-@erase "$(INTDIR)\ap_sha1.obj"
- -@erase "$(INTDIR)\ap_checkpass.obj"
- -@erase "$(INTDIR)\ap_base64.obj"
+ -@erase "$(INTDIR)\ap_snprintf.obj"
-@erase "$(INTDIR)\htpasswd.obj"
-@erase "$(INTDIR)\vc50.idb"
-@erase "$(INTDIR)\vc50.pdb"
-@erase "$(OUTDIR)\htpasswd.exe"
- -@erase "$(OUTDIR)\htpasswd.ilk"
+ -@erase "$(OUTDIR)\htpasswd.map"
-@erase "$(OUTDIR)\htpasswd.pdb"
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
-CPP_PROJ=/nologo /MLd /W3 /Gm /GX /Zi /Od /I "..\include" /D "_DEBUG" /D\
- "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN"\
- /Fp"$(INTDIR)\htpasswd.pch" /YX /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
+CPP=cl.exe
+CPP_PROJ=/nologo /MDd /W3 /Gm /GX /Zi /Od /I "..\include" /I "..\os\win32" /D\
+ "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "_MBCS" /D "WIN32_LEAN_AND_MEAN"\
+ /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
CPP_OBJS=.\Debug/
CPP_SBRS=.
-BSC32=bscmake.exe
-BSC32_FLAGS=/nologo /o"$(OUTDIR)\htpasswd.bsc"
-BSC32_SBRS= \
-
-LINK32=link.exe
-LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib\
- advapi32.lib shell32.lib ws2_32.lib /nologo /subsystem:console /incremental:yes\
- /pdb:"$(OUTDIR)\htpasswd.pdb" /debug /machine:I386\
- /out:"$(OUTDIR)\htpasswd.exe" /pdbtype:sept
-LINK32_OBJS= \
- "$(INTDIR)\ap_cpystrn.obj" \
- "$(INTDIR)\ap_getpass.obj" \
- "$(INTDIR)\ap_md5c.obj" \
- "$(INTDIR)\ap_snprintf.obj" \
- "$(INTDIR)\ap_sha1.obj" \
- "$(INTDIR)\ap_checkpass.obj" \
- "$(INTDIR)\ap_base64.obj" \
- "$(INTDIR)\htpasswd.obj"
-
-"$(OUTDIR)\htpasswd.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
- $(LINK32) @<<
- $(LINK32_FLAGS) $(LINK32_OBJS)
-<<
-
-!ENDIF
.c{$(CPP_OBJS)}.obj::
$(CPP) @<<
@@ -188,86 +195,97 @@ LINK32_OBJS= \
$(CPP_PROJ) $<
<<
+RSC=rc.exe
+BSC32=bscmake.exe
+BSC32_FLAGS=/nologo /o"$(OUTDIR)\htpasswd.bsc"
+BSC32_SBRS= \
+
+LINK32=link.exe
+LINK32_FLAGS=ws2_32.lib /nologo /subsystem:console /incremental:no\
+ /pdb:"$(OUTDIR)\htpasswd.pdb" /map:"$(INTDIR)\htpasswd.map" /debug\
+ /machine:I386 /out:"$(OUTDIR)\htpasswd.exe" /pdbtype:sept
+LINK32_OBJS= \
+ "$(INTDIR)\ap_base64.obj" \
+ "$(INTDIR)\ap_checkpass.obj" \
+ "$(INTDIR)\ap_cpystrn.obj" \
+ "$(INTDIR)\ap_getpass.obj" \
+ "$(INTDIR)\ap_md5c.obj" \
+ "$(INTDIR)\ap_sha1.obj" \
+ "$(INTDIR)\ap_snprintf.obj" \
+ "$(INTDIR)\htpasswd.obj"
-!IF "$(CFG)" == "htpasswd - Win32 Release" || "$(CFG)" ==\
- "htpasswd - Win32 Debug"
-SOURCE=..\ap\ap_cpystrn.c
+"$(OUTDIR)\htpasswd.exe" : "$(OUTDIR)" $(DEF_FILE) $(LINK32_OBJS)
+ $(LINK32) @<<
+ $(LINK32_FLAGS) $(LINK32_OBJS)
+<<
-!IF "$(CFG)" == "htpasswd - Win32 Release"
+!ENDIF
-DEP_CPP_AP_CP=\
- "..\include\alloc.h"\
+
+!IF "$(CFG)" == "htpasswd - Win32 Release" || "$(CFG)" ==\
+ "htpasswd - Win32 Debug"
+SOURCE=..\ap\ap_base64.c
+DEP_CPP_AP_BA=\
"..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
- "..\include\buff.h"\
"..\include\hsregex.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
"..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_CP=\
+
+NODEP_CPP_AP_BA=\
+ "..\ap\ebcdic.h"\
"..\include\ap_config_auto.h"\
- "..\include\ebcdic.h"\
- "..\include\os.h"\
- "..\include\sfio.h"\
-
+
-"$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)"
+"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
-
-DEP_CPP_AP_CP=\
- "..\include\alloc.h"\
+SOURCE=..\ap\ap_checkpass.c
+DEP_CPP_AP_CH=\
"..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
+ "..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
- "..\include\buff.h"\
+ "..\include\ap_sha1.h"\
"..\include\hsregex.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
"..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
-
+
+NODEP_CPP_AP_CH=\
+ "..\include\ap_config_auto.h"\
+
-"$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)"
+"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
-SOURCE=..\ap\ap_getpass.c
-
-!IF "$(CFG)" == "htpasswd - Win32 Release"
-
-DEP_CPP_AP_GE=\
+SOURCE=..\ap\ap_cpystrn.c
+DEP_CPP_AP_CP=\
"..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
+ "..\include\buff.h"\
"..\include\hsregex.h"\
+ "..\include\httpd.h"\
+ "..\include\util_uri.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_GE=\
+ "..\os\win32\readdir.h"\
+
+NODEP_CPP_AP_CP=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
-
+ "..\include\ebcdic.h"\
+ "..\include\sfio.h"\
+
-"$(INTDIR)\ap_getpass.obj" : $(SOURCE) $(DEP_CPP_AP_GE) "$(INTDIR)"
+"$(INTDIR)\ap_cpystrn.obj" : $(SOURCE) $(DEP_CPP_AP_CP) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
-
+SOURCE=..\ap\ap_getpass.c
DEP_CPP_AP_GE=\
"..\include\ap.h"\
"..\include\ap_config.h"\
@@ -275,18 +293,16 @@ DEP_CPP_AP_GE=\
"..\include\ap_mmn.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
-
+
+NODEP_CPP_AP_GE=\
+ "..\include\ap_config_auto.h"\
+
"$(INTDIR)\ap_getpass.obj" : $(SOURCE) $(DEP_CPP_AP_GE) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=..\ap\ap_md5c.c
-
-!IF "$(CFG)" == "htpasswd - Win32 Release"
-
DEP_CPP_AP_MD=\
"..\include\ap.h"\
"..\include\ap_config.h"\
@@ -295,44 +311,39 @@ DEP_CPP_AP_MD=\
"..\include\ap_mmn.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
+
NODEP_CPP_AP_MD=\
"..\ap\ebcdic.h"\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
-
+
"$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
-
-DEP_CPP_AP_MD=\
+SOURCE=..\ap\ap_sha1.c
+DEP_CPP_AP_SH=\
"..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
- "..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
+ "..\include\ap_sha1.h"\
"..\include\hsregex.h"\
"..\os\win32\os.h"\
+
+NODEP_CPP_AP_SH=\
+ "..\ap\ebcdic.h"\
+ "..\include\ap_config_auto.h"\
+
-
-"$(INTDIR)\ap_md5c.obj" : $(SOURCE) $(DEP_CPP_AP_MD) "$(INTDIR)"
+"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
SOURCE=..\ap\ap_snprintf.c
-
-!IF "$(CFG)" == "htpasswd - Win32 Release"
-
DEP_CPP_AP_SN=\
- "..\include\alloc.h"\
"..\include\ap.h"\
+ "..\include\ap_alloc.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_mmn.h"\
@@ -342,209 +353,36 @@ DEP_CPP_AP_SN=\
"..\include\util_uri.h"\
"..\os\win32\os.h"\
"..\os\win32\readdir.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
+
NODEP_CPP_AP_SN=\
"..\include\ap_config_auto.h"\
"..\include\ebcdic.h"\
- "..\include\os.h"\
"..\include\sfio.h"\
-
-
-"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
-
-DEP_CPP_AP_SN=\
- "..\include\alloc.h"\
- "..\include\ap.h"\
- "..\include\ap_config.h"\
- "..\include\ap_ctype.h"\
- "..\include\ap_mmn.h"\
- "..\include\buff.h"\
- "..\include\hsregex.h"\
- "..\include\httpd.h"\
- "..\include\util_uri.h"\
- "..\os\win32\os.h"\
- "..\os\win32\readdir.h"\
-
+
"$(INTDIR)\ap_snprintf.obj" : $(SOURCE) $(DEP_CPP_AP_SN) "$(INTDIR)"
$(CPP) $(CPP_PROJ) $(SOURCE)
-!ENDIF
-
-SOURCE=..\ap\ap_sha1.c
-
-!IF "$(CFG)" == "htpasswd - Win32 Release"
-
-DEP_CPP_AP_SH=\
- "..\include\ap.h"\
- "..\include\ap_config.h"\
- "..\include\ap_ctype.h"\
- "..\include\ap_sha1.h"\
- "..\include\ap_mmn.h"\
- "..\include\hsregex.h"\
- "..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_SH=\
- "..\ap\ebcdic.h"\
- "..\include\ap_config_auto.h"\
- "..\include\os.h"\
-
-
-"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
-
-DEP_CPP_AP_SH=\
- "..\include\ap.h"\
- "..\include\ap_config.h"\
- "..\include\ap_ctype.h"\
- "..\include\ap_sha1.h"\
- "..\include\ap_mmn.h"\
- "..\include\hsregex.h"\
- "..\os\win32\os.h"\
-
-
-"$(INTDIR)\ap_sha1.obj" : $(SOURCE) $(DEP_CPP_AP_SH) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=..\ap\ap_checkpass.c
-
-!IF "$(CFG)" == "htpasswd - Win32 Release"
-
-DEP_CPP_AP_CH=\
- "..\include\ap.h"\
- "..\include\ap_config.h"\
- "..\include\ap_ctype.h"\
- "..\include\ap_mmn.h"\
- "..\include\hsregex.h"\
- "..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_CH=\
- "..\ap\ebcdic.h"\
- "..\include\ap_config_auto.h"\
- "..\include\os.h"\
-
-
-"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
-
-DEP_CPP_AP_CH=\
- "..\include\ap.h"\
- "..\include\ap_config.h"\
- "..\include\ap_ctype.h"\
- "..\include\ap_mmn.h"\
- "..\include\hsregex.h"\
- "..\os\win32\os.h"\
-
-
-"$(INTDIR)\ap_checkpass.obj" : $(SOURCE) $(DEP_CPP_AP_CH) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
-SOURCE=..\ap\ap_base64.c
-
-!IF "$(CFG)" == "htpasswd - Win32 Release"
-
-DEP_CPP_AP_BA=\
- "..\include\ap.h"\
- "..\include\ap_config.h"\
- "..\include\ap_ctype.h"\
- "..\include\ap_mmn.h"\
- "..\include\hsregex.h"\
- "..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
-NODEP_CPP_AP_BA=\
- "..\ap\ebcdic.h"\
- "..\include\ap_config_auto.h"\
- "..\include\os.h"\
-
-
-"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
-
-DEP_CPP_AP_BA=\
- "..\include\ap.h"\
- "..\include\ap_config.h"\
- "..\include\ap_ctype.h"\
- "..\include\ap_mmn.h"\
- "..\include\hsregex.h"\
- "..\os\win32\os.h"\
-
-
-"$(INTDIR)\ap_base64.obj" : $(SOURCE) $(DEP_CPP_AP_BA) "$(INTDIR)"
- $(CPP) $(CPP_PROJ) $(SOURCE)
-
-
-!ENDIF
-
SOURCE=.\htpasswd.c
-
-!IF "$(CFG)" == "htpasswd - Win32 Release"
-
DEP_CPP_HTPAS=\
"..\include\ap.h"\
"..\include\ap_config.h"\
"..\include\ap_ctype.h"\
"..\include\ap_md5.h"\
"..\include\ap_mmn.h"\
+ "..\include\ap_sha1.h"\
"..\include\hsregex.h"\
"..\os\win32\getopt.h"\
"..\os\win32\os.h"\
- {$(INCLUDE)}"sys\stat.h"\
- {$(INCLUDE)}"sys\types.h"\
-
+
NODEP_CPP_HTPAS=\
"..\include\ap_config_auto.h"\
- "..\include\os.h"\
-
-
-"$(INTDIR)\htpasswd.obj" : $(SOURCE) $(DEP_CPP_HTPAS) "$(INTDIR)"
-
-
-!ELSEIF "$(CFG)" == "htpasswd - Win32 Debug"
-
-DEP_CPP_HTPAS=\
- "..\include\ap.h"\
- "..\include\ap_config.h"\
- "..\include\ap_ctype.h"\
- "..\include\ap_md5.h"\
- "..\include\ap_mmn.h"\
- "..\include\hsregex.h"\
- "..\os\win32\getopt.h"\
- "..\os\win32\os.h"\
-
+
"$(INTDIR)\htpasswd.obj" : $(SOURCE) $(DEP_CPP_HTPAS) "$(INTDIR)"
-!ENDIF
-
!ENDIF
diff --git a/usr.sbin/httpd/src/support/httpd.exp b/usr.sbin/httpd/src/support/httpd.exp
index bcb09e17d8c..ea40eba0e2b 100644
--- a/usr.sbin/httpd/src/support/httpd.exp
+++ b/usr.sbin/httpd/src/support/httpd.exp
@@ -74,6 +74,7 @@ ap_clear_module_list
ap_clear_pool
ap_clear_table
ap_close_piped_log
+ap_configtestonly
ap_construct_server
ap_construct_url
ap_content_type_tolower
@@ -169,6 +170,7 @@ ap_is_directory
ap_is_fnmatch
ap_is_initial_req
ap_is_matchexp
+ap_is_rdirectory
ap_is_url
ap_keepalive_timeout
ap_kill_cleanup
@@ -267,6 +269,7 @@ ap_regexec
ap_register_cleanup
ap_register_other_child
ap_remove_module
+ap_remove_spaces
ap_requires
ap_reset_timeout
ap_response_code_string
@@ -287,6 +290,7 @@ ap_rwrite
ap_satisfies
ap_scan_script_header_err
ap_scan_script_header_err_buff
+ap_scan_script_header_err_strs
ap_scoreboard_fname
ap_scoreboard_image
ap_send_error_response
@@ -340,7 +344,9 @@ ap_start_restart
ap_start_shutdown
ap_str_tolower
ap_strcasecmp_match
+ap_strcasestr
ap_strcmp_match
+ap_stripprefix
ap_sub_req_lookup_file
ap_sub_req_lookup_uri
ap_sub_req_method_uri
@@ -358,6 +364,7 @@ ap_table_setn
ap_table_unset
ap_threads_per_child
ap_tm2sec
+ap_to64
ap_translate_name
ap_uname2id
ap_unblock_alarms
@@ -376,6 +383,7 @@ ap_uudecode
ap_validate_password
ap_vbprintf
ap_vformatter
+ap_vrprintf
ap_vsnprintf
core_module
top_module
diff --git a/usr.sbin/httpd/src/support/logresolve.c b/usr.sbin/httpd/src/support/logresolve.c
index 2e02e3a80f0..f6c86953500 100644
--- a/usr.sbin/httpd/src/support/logresolve.c
+++ b/usr.sbin/httpd/src/support/logresolve.c
@@ -44,7 +44,7 @@
#include <ctype.h>
-#ifndef MPE
+#if !defined(MPE) && !defined(WIN32)
#ifndef BEOS
#include <arpa/inet.h>
#else
@@ -52,7 +52,7 @@
#include <netinet/in.h>
#define NO_ADDRESS 4
#endif /* BEOS */
-#endif /* MPE */
+#endif /* !MPE && !WIN32*/
static void cgethost(struct in_addr ipnum, char *string, int check);
static int getline(char *s, int n);
@@ -105,7 +105,7 @@ struct nsrec {
extern int h_errno; /* some machines don't have this in their headers */
#endif
-/* largeste value for h_errno */
+/* largest value for h_errno */
#define MAX_ERR (NO_ADDRESS)
#define UNKNOWN_ERR (MAX_ERR+1)
#define NO_REVERSE (MAX_ERR+2)
@@ -280,6 +280,11 @@ int main (int argc, char *argv[])
char *bar, hoststring[MAXDNAME + 1], line[MAXLINE], *statfile;
int i, check;
+#ifdef WIN32
+ WSADATA wsaData;
+ WSAStartup(0x101, &wsaData);
+#endif
+
check = 0;
statfile = NULL;
for (i = 1; i < argc; i++) {
@@ -335,6 +340,10 @@ int main (int argc, char *argv[])
puts(hoststring);
}
+#ifdef WIN32
+ WSACleanup();
+#endif
+
if (statfile != NULL) {
FILE *fp;
fp = fopen(statfile, "w");
diff --git a/usr.sbin/httpd/src/support/rotatelogs.c b/usr.sbin/httpd/src/support/rotatelogs.c
index dc6bd977296..887fd607d4c 100644
--- a/usr.sbin/httpd/src/support/rotatelogs.c
+++ b/usr.sbin/httpd/src/support/rotatelogs.c
@@ -7,14 +7,16 @@
*/
-#define BUFSIZE 65536
-#define MAX_PATH 1024
-
#include "ap_config.h"
#include <time.h>
#include <errno.h>
#include <fcntl.h>
+#define BUFSIZE 65536
+#ifndef MAX_PATH
+#define MAX_PATH 1024
+#endif
+
int main (int argc, char **argv)
{
char buf[BUFSIZE], buf2[MAX_PATH];
@@ -79,4 +81,6 @@ int main (int argc, char **argv)
exit(5);
}
}
+ /* We never get here, but surpress the compile warning */
+ return (0);
}