Merge lp:~racb/ubuntu/quantal/apache2/988819 into lp:ubuntu/quantal/apache2

Proposed by Robie Basak on 2012-05-23
Status: Rejected
Rejected by: Robie Basak on 2016-06-08
Proposed branch: lp:~racb/ubuntu/quantal/apache2/988819
Merge into: lp:ubuntu/quantal/apache2
Diff against target: 97692 lines (+586/-96068)
68 files modified
.pc/004_usr_bin_perl_0wnz_j00/docs/cgi-examples/printenv (+0/-13)
.pc/008_make_include_safe/server/config.c (+0/-2190)
.pc/009_apache2_has_dso/support/apxs.in (+0/-768)
.pc/010_fhs_compliance/config.layout (+0/-324)
.pc/010_fhs_compliance/configure (+0/-20482)
.pc/010_fhs_compliance/configure.in (+0/-732)
.pc/010_fhs_compliance/include/ap_config_layout.h.in (+0/-64)
.pc/031_apxs2_sucks_more/support/apxs.in (+0/-769)
.pc/032_suexec_is_shared/os/unix/unixd.c (+0/-775)
.pc/033_dbm_read_hash_or_btree/support/dbmmanage.in (+0/-312)
.pc/034_apxs2_libtool_fixtastic/support/apxs.in (+0/-771)
.pc/038_no_LD_LIBRARY_PATH/support/envvars-std.in (+0/-24)
.pc/045_suexec_log_cloexec/support/suexec.c (+0/-638)
.pc/047_fix_usage_message/server/main.c (+0/-778)
.pc/052_logresolve_linelength/support/logresolve.c (+0/-387)
.pc/057_disablemods/acinclude.m4 (+0/-576)
.pc/057_disablemods/configure (+0/-20482)
.pc/058_suexec-CVE-2007-1742/support/suexec.c (+0/-636)
.pc/067_fix_segfault_in_ab/support/ab.c (+0/-2298)
.pc/071_fix_cacheenable/modules/cache/cache_util.c (+0/-917)
.pc/073_mod_dav_trunk_fixes/modules/dav/fs/lock.c (+0/-1514)
.pc/073_mod_dav_trunk_fixes/modules/dav/fs/repos.c (+0/-2167)
.pc/073_mod_dav_trunk_fixes/modules/dav/main/mod_dav.c (+0/-4869)
.pc/074_link_support_progs_with_lcrypt/configure (+0/-20486)
.pc/074_link_support_progs_with_lcrypt/support/config.m4 (+0/-140)
.pc/075_mod_rewrite_literal_ipv6_redirect/modules/mappers/mod_rewrite.c (+0/-4940)
.pc/076_apxs2_a2enmod/support/apxs.in (+0/-771)
.pc/077_CacheIgnoreURLSessionIdentifiers/modules/cache/cache_storage.c (+0/-558)
.pc/079_polish_translation/docs/error/HTTP_NOT_FOUND.html.var (+0/-444)
.pc/082_ab_num_requests/support/ab.c (+0/-2297)
.pc/201_build_suexec-custom/Makefile.in (+0/-233)
.pc/201_build_suexec-custom/support/Makefile.in (+0/-72)
.pc/applied-patches (+0/-25)
Makefile.in (+1/-1)
acinclude.m4 (+8/-13)
config.guess (+0/-1500)
config.layout (+3/-3)
config.sub (+0/-1608)
configure (+14/-18)
configure.in (+3/-3)
debian/changelog (+44/-2)
debian/config-dir/sites-available/default (+0/-10)
debian/config-dir/sites-available/default-ssl (+0/-9)
debian/control (+2/-3)
debian/gbp.conf (+3/-0)
debian/patches/083_dlopen_search_path (+145/-0)
debian/patches/series (+1/-0)
debian/rules (+5/-5)
docs/cgi-examples/printenv (+1/-1)
docs/error/HTTP_NOT_FOUND.html.var (+1/-1)
include/ap_config_layout.h.in (+0/-1)
modules/cache/cache_storage.c (+17/-49)
modules/cache/cache_util.c (+35/-72)
modules/dav/fs/lock.c (+84/-13)
modules/dav/fs/repos.c (+54/-125)
modules/dav/main/mod_dav.c (+3/-23)
modules/mappers/mod_rewrite.c (+2/-19)
os/unix/unixd.c (+0/-4)
server/config.c (+2/-29)
server/main.c (+1/-3)
support/Makefile.in (+1/-5)
support/ab.c (+3/-5)
support/apxs.in (+121/-51)
support/config.m4 (+2/-2)
support/dbmmanage.in (+3/-5)
support/envvars-std.in (+3/-0)
support/logresolve.c (+12/-10)
support/suexec.c (+12/-23)
To merge this branch: bzr merge lp:~racb/ubuntu/quantal/apache2/988819
Reviewer Review Type Date Requested Status
masum chechra (community) 2012-05-23 Approve on 2016-05-08
Chuck Short 2012-05-23 Approve on 2012-05-29
Review via email: mp+106934@code.launchpad.net

Description of the Change

This is a merge from Debian in order to pick up a fix to bug 988819. I wasn't sure if I was supposed to close the bug in the changelog or not for this kind of case, since the merge would have happened eventually anyway regardless of the bug being there.

To post a comment you must log in.
Chuck Short (zulcss) wrote :

Robie,

Can you do this merge through merges.ubuntu.com. I think the bzr branch is a little messed up:

chuck@homer:~/work/server/merges/quantal/apache2/apache2$ bzr bd -S
Building using working tree
Building package in normal mode
Looking for a way to retrieve the upstream tarball
Using pristine-tar to reconstruct apache2_2.2.22.orig.tar.gz.
bzr: ERROR: [Errno 2] No such file or directory: '/home/chuck/work/server/merges/quantal/apache2/apache2/.pc/004_usr_bin_perl_0wnz_j00/docs/cgi-examples/printenv'
chuck@homer:~/work/server/merges/quantal/apache2/apache2$ ls

review: Approve
masum chechra (makhipandey7) wrote :

Hey Dear,

i want be a active member of ubuntu etherpad instance

review: Approve
review: Approve

Unmerged revisions

77. By Robie Basak on 2012-05-15

  * Merge from Debian testing. Remaining changes:
    - debian/{control, rules}: Enable PIE hardening.
    - debian/{control, rules, apache2.2-common.ufw.profile}: Add ufw profiles.
    - debian/control: Add bzr tag and point it to our tree
    - debian/apache2.py, debian/apache2.2-common.install: Add apport hook.
    - debian/control, debian/ask-for-passphrase, debian/config-dir/mods-available/ssl.conf:
      Plymouth aware passphrase dialog program ask-for-passphrase.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== removed directory '.pc/004_usr_bin_perl_0wnz_j00'
2=== removed directory '.pc/004_usr_bin_perl_0wnz_j00/docs'
3=== removed directory '.pc/004_usr_bin_perl_0wnz_j00/docs/cgi-examples'
4=== removed file '.pc/004_usr_bin_perl_0wnz_j00/docs/cgi-examples/printenv'
5--- .pc/004_usr_bin_perl_0wnz_j00/docs/cgi-examples/printenv 2011-12-29 12:09:14 +0000
6+++ .pc/004_usr_bin_perl_0wnz_j00/docs/cgi-examples/printenv 1970-01-01 00:00:00 +0000
7@@ -1,13 +0,0 @@
8-#!/usr/local/bin/perl
9-##
10-## printenv -- demo CGI program which just prints its environment
11-##
12-
13-print "Content-type: text/plain; charset=iso-8859-1\n\n";
14-foreach $var (sort(keys(%ENV))) {
15- $val = $ENV{$var};
16- $val =~ s|\n|\\n|g;
17- $val =~ s|"|\\"|g;
18- print "${var}=\"${val}\"\n";
19-}
20-
21
22=== removed directory '.pc/008_make_include_safe'
23=== removed directory '.pc/008_make_include_safe/server'
24=== removed file '.pc/008_make_include_safe/server/config.c'
25--- .pc/008_make_include_safe/server/config.c 2011-12-29 12:09:14 +0000
26+++ .pc/008_make_include_safe/server/config.c 1970-01-01 00:00:00 +0000
27@@ -1,2190 +0,0 @@
28-/* Licensed to the Apache Software Foundation (ASF) under one or more
29- * contributor license agreements. See the NOTICE file distributed with
30- * this work for additional information regarding copyright ownership.
31- * The ASF licenses this file to You under the Apache License, Version 2.0
32- * (the "License"); you may not use this file except in compliance with
33- * the License. You may obtain a copy of the License at
34- *
35- * http://www.apache.org/licenses/LICENSE-2.0
36- *
37- * Unless required by applicable law or agreed to in writing, software
38- * distributed under the License is distributed on an "AS IS" BASIS,
39- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
40- * See the License for the specific language governing permissions and
41- * limitations under the License.
42- */
43-
44-/*
45- * http_config.c: once was auxillary functions for reading httpd's config
46- * file and converting filenames into a namespace
47- *
48- * Rob McCool
49- *
50- * Wall-to-wall rewrite for Apache... commands which are part of the
51- * server core can now be found next door in "http_core.c". Now contains
52- * general command loop, and functions which do bookkeeping for the new
53- * Apache config stuff (modules and configuration vectors).
54- *
55- * rst
56- *
57- */
58-
59-#include "apr.h"
60-#include "apr_strings.h"
61-#include "apr_portable.h"
62-#include "apr_file_io.h"
63-#include "apr_fnmatch.h"
64-
65-#define APR_WANT_STDIO
66-#define APR_WANT_STRFUNC
67-#include "apr_want.h"
68-
69-#define CORE_PRIVATE
70-
71-#include "ap_config.h"
72-#include "httpd.h"
73-#include "http_config.h"
74-#include "http_protocol.h"
75-#include "http_core.h"
76-#include "http_log.h" /* for errors in parse_htaccess */
77-#include "http_request.h" /* for default_handler (see invoke_handler) */
78-#include "http_main.h"
79-#include "http_vhost.h"
80-#include "util_cfgtree.h"
81-#include "mpm.h"
82-
83-
84-AP_DECLARE_DATA const char *ap_server_argv0 = NULL;
85-
86-AP_DECLARE_DATA const char *ap_server_root = NULL;
87-
88-AP_DECLARE_DATA apr_array_header_t *ap_server_pre_read_config = NULL;
89-AP_DECLARE_DATA apr_array_header_t *ap_server_post_read_config = NULL;
90-AP_DECLARE_DATA apr_array_header_t *ap_server_config_defines = NULL;
91-
92-AP_DECLARE_DATA ap_directive_t *ap_conftree = NULL;
93-
94-APR_HOOK_STRUCT(
95- APR_HOOK_LINK(header_parser)
96- APR_HOOK_LINK(pre_config)
97- APR_HOOK_LINK(post_config)
98- APR_HOOK_LINK(open_logs)
99- APR_HOOK_LINK(child_init)
100- APR_HOOK_LINK(handler)
101- APR_HOOK_LINK(quick_handler)
102- APR_HOOK_LINK(optional_fn_retrieve)
103- APR_HOOK_LINK(test_config)
104-)
105-
106-AP_IMPLEMENT_HOOK_RUN_ALL(int, header_parser,
107- (request_rec *r), (r), OK, DECLINED)
108-
109-AP_IMPLEMENT_HOOK_RUN_ALL(int, pre_config,
110- (apr_pool_t *pconf, apr_pool_t *plog,
111- apr_pool_t *ptemp),
112- (pconf, plog, ptemp), OK, DECLINED)
113-
114-AP_IMPLEMENT_HOOK_VOID(test_config,
115- (apr_pool_t *pconf, server_rec *s),
116- (pconf, s))
117-
118-AP_IMPLEMENT_HOOK_RUN_ALL(int, post_config,
119- (apr_pool_t *pconf, apr_pool_t *plog,
120- apr_pool_t *ptemp, server_rec *s),
121- (pconf, plog, ptemp, s), OK, DECLINED)
122-
123-/* During the course of debugging I expanded this macro out, so
124- * rather than remove all the useful information there is in the
125- * following lines, I'm going to leave it here in case anyone
126- * else finds it useful.
127- *
128- * Ben has looked at it and thinks it correct :)
129- *
130-AP_DECLARE(int) ap_hook_post_config(ap_HOOK_post_config_t *pf,
131- const char * const *aszPre,
132- const char * const *aszSucc,
133- int nOrder)
134-{
135- ap_LINK_post_config_t *pHook;
136-
137- if (!_hooks.link_post_config) {
138- _hooks.link_post_config = apr_array_make(apr_hook_global_pool, 1,
139- sizeof(ap_LINK_post_config_t));
140- apr_hook_sort_register("post_config", &_hooks.link_post_config);
141- }
142-
143- pHook = apr_array_push(_hooks.link_post_config);
144- pHook->pFunc = pf;
145- pHook->aszPredecessors = aszPre;
146- pHook->aszSuccessors = aszSucc;
147- pHook->nOrder = nOrder;
148- pHook->szName = apr_hook_debug_current;
149-
150- if (apr_hook_debug_enabled)
151- apr_hook_debug_show("post_config", aszPre, aszSucc);
152-}
153-
154-AP_DECLARE(apr_array_header_t *) ap_hook_get_post_config(void) {
155- return _hooks.link_post_config;
156-}
157-
158-AP_DECLARE(int) ap_run_post_config(apr_pool_t *pconf,
159- apr_pool_t *plog,
160- apr_pool_t *ptemp,
161- server_rec *s)
162-{
163- ap_LINK_post_config_t *pHook;
164- int n;
165-
166- if(!_hooks.link_post_config)
167- return;
168-
169- pHook = (ap_LINK_post_config_t *)_hooks.link_post_config->elts;
170- for (n = 0; n < _hooks.link_post_config->nelts; ++n)
171- pHook[n].pFunc (pconf, plog, ptemp, s);
172-}
173- */
174-
175-AP_IMPLEMENT_HOOK_RUN_ALL(int, open_logs,
176- (apr_pool_t *pconf, apr_pool_t *plog,
177- apr_pool_t *ptemp, server_rec *s),
178- (pconf, plog, ptemp, s), OK, DECLINED)
179-
180-AP_IMPLEMENT_HOOK_VOID(child_init,
181- (apr_pool_t *pchild, server_rec *s),
182- (pchild, s))
183-
184-AP_IMPLEMENT_HOOK_RUN_FIRST(int, handler, (request_rec *r),
185- (r), DECLINED)
186-
187-AP_IMPLEMENT_HOOK_RUN_FIRST(int, quick_handler, (request_rec *r, int lookup),
188- (r, lookup), DECLINED)
189-
190-AP_IMPLEMENT_HOOK_VOID(optional_fn_retrieve, (void), ())
191-
192-/****************************************************************
193- *
194- * We begin with the functions which deal with the linked list
195- * of modules which control just about all of the server operation.
196- */
197-
198-/* total_modules is the number of modules that have been linked
199- * into the server.
200- */
201-static int total_modules = 0;
202-
203-/* dynamic_modules is the number of modules that have been added
204- * after the pre-loaded ones have been set up. It shouldn't be larger
205- * than DYNAMIC_MODULE_LIMIT.
206- */
207-static int dynamic_modules = 0;
208-
209-AP_DECLARE_DATA module *ap_top_module = NULL;
210-AP_DECLARE_DATA module **ap_loaded_modules=NULL;
211-
212-static apr_hash_t *ap_config_hash = NULL;
213-
214-typedef int (*handler_func)(request_rec *);
215-typedef void *(*dir_maker_func)(apr_pool_t *, char *);
216-typedef void *(*merger_func)(apr_pool_t *, void *, void *);
217-
218-/* maximum nesting level for config directories */
219-#ifndef AP_MAX_INCLUDE_DIR_DEPTH
220-#define AP_MAX_INCLUDE_DIR_DEPTH (128)
221-#endif
222-
223-/* Dealing with config vectors. These are associated with per-directory,
224- * per-server, and per-request configuration, and have a void* pointer for
225- * each modules. The nature of the structure pointed to is private to the
226- * module in question... the core doesn't (and can't) know. However, there
227- * are defined interfaces which allow it to create instances of its private
228- * per-directory and per-server structures, and to merge the per-directory
229- * structures of a directory and its subdirectory (producing a new one in
230- * which the defaults applying to the base directory have been properly
231- * overridden).
232- */
233-
234-static ap_conf_vector_t *create_empty_config(apr_pool_t *p)
235-{
236- void *conf_vector = apr_pcalloc(p, sizeof(void *) *
237- (total_modules + DYNAMIC_MODULE_LIMIT));
238- return conf_vector;
239-}
240-
241-static ap_conf_vector_t *create_default_per_dir_config(apr_pool_t *p)
242-{
243- void **conf_vector = apr_pcalloc(p, sizeof(void *) *
244- (total_modules + DYNAMIC_MODULE_LIMIT));
245- module *modp;
246-
247- for (modp = ap_top_module; modp; modp = modp->next) {
248- dir_maker_func df = modp->create_dir_config;
249-
250- if (df)
251- conf_vector[modp->module_index] = (*df)(p, NULL);
252- }
253-
254- return (ap_conf_vector_t *)conf_vector;
255-}
256-
257-AP_CORE_DECLARE(ap_conf_vector_t *) ap_merge_per_dir_configs(apr_pool_t *p,
258- ap_conf_vector_t *base,
259- ap_conf_vector_t *new_conf)
260-{
261- void **conf_vector = apr_palloc(p, sizeof(void *) * total_modules);
262- void **base_vector = (void **)base;
263- void **new_vector = (void **)new_conf;
264- module *modp;
265-
266- for (modp = ap_top_module; modp; modp = modp->next) {
267- int i = modp->module_index;
268-
269- if (!new_vector[i]) {
270- conf_vector[i] = base_vector[i];
271- }
272- else {
273- merger_func df = modp->merge_dir_config;
274- if (df && base_vector[i]) {
275- conf_vector[i] = (*df)(p, base_vector[i], new_vector[i]);
276- }
277- else
278- conf_vector[i] = new_vector[i];
279- }
280- }
281-
282- return (ap_conf_vector_t *)conf_vector;
283-}
284-
285-static ap_conf_vector_t *create_server_config(apr_pool_t *p, server_rec *s)
286-{
287- void **conf_vector = apr_pcalloc(p, sizeof(void *) *
288- (total_modules + DYNAMIC_MODULE_LIMIT));
289- module *modp;
290-
291- for (modp = ap_top_module; modp; modp = modp->next) {
292- if (modp->create_server_config)
293- conf_vector[modp->module_index] = (*modp->create_server_config)(p, s);
294- }
295-
296- return (ap_conf_vector_t *)conf_vector;
297-}
298-
299-static void merge_server_configs(apr_pool_t *p, ap_conf_vector_t *base,
300- ap_conf_vector_t *virt)
301-{
302- /* Can reuse the 'virt' vector for the spine of it, since we don't
303- * have to deal with the moral equivalent of .htaccess files here...
304- */
305-
306- void **base_vector = (void **)base;
307- void **virt_vector = (void **)virt;
308- module *modp;
309-
310- for (modp = ap_top_module; modp; modp = modp->next) {
311- merger_func df = modp->merge_server_config;
312- int i = modp->module_index;
313-
314- if (!virt_vector[i])
315- virt_vector[i] = base_vector[i];
316- else if (df)
317- virt_vector[i] = (*df)(p, base_vector[i], virt_vector[i]);
318- }
319-}
320-
321-AP_CORE_DECLARE(ap_conf_vector_t *) ap_create_request_config(apr_pool_t *p)
322-{
323- return create_empty_config(p);
324-}
325-
326-AP_CORE_DECLARE(ap_conf_vector_t *) ap_create_conn_config(apr_pool_t *p)
327-{
328- return create_empty_config(p);
329-}
330-
331-AP_CORE_DECLARE(ap_conf_vector_t *) ap_create_per_dir_config(apr_pool_t *p)
332-{
333- return create_empty_config(p);
334-}
335-
336-/* Invoke the filter_init_func for all filters with FILTERS where f->r
337- * matches R. Restricting to a matching R avoids re-running init
338- * functions for filters configured for r->main where r is a
339- * subrequest. */
340-static int invoke_filter_init(request_rec *r, ap_filter_t *filters)
341-{
342- while (filters) {
343- if (filters->frec->filter_init_func && filters->r == r) {
344- int result = filters->frec->filter_init_func(filters);
345- if (result != OK) {
346- return result;
347- }
348- }
349- filters = filters->next;
350- }
351- return OK;
352-}
353-
354-AP_CORE_DECLARE(int) ap_invoke_handler(request_rec *r)
355-{
356- const char *handler;
357- const char *p;
358- int result;
359- const char *old_handler = r->handler;
360- const char *ignore;
361-
362- /*
363- * The new insert_filter stage makes the most sense here. We only use
364- * it when we are going to run the request, so we must insert filters
365- * if any are available. Since the goal of this phase is to allow all
366- * modules to insert a filter if they want to, this filter returns
367- * void. I just can't see any way that this filter can reasonably
368- * fail, either your modules inserts something or it doesn't. rbb
369- */
370- ap_run_insert_filter(r);
371-
372- /* Before continuing, allow each filter that is in the two chains to
373- * run their init function to let them do any magic before we could
374- * start generating data.
375- */
376- result = invoke_filter_init(r, r->input_filters);
377- if (result != OK) {
378- return result;
379- }
380- result = invoke_filter_init(r, r->output_filters);
381- if (result != OK) {
382- return result;
383- }
384-
385- if (!r->handler) {
386- handler = r->content_type ? r->content_type : ap_default_type(r);
387- if ((p=ap_strchr_c(handler, ';')) != NULL) {
388- char *new_handler = (char *)apr_pmemdup(r->pool, handler,
389- p - handler + 1);
390- char *p2 = new_handler + (p - handler);
391- handler = new_handler;
392-
393- /* MIME type arguments */
394- while (p2 > handler && p2[-1] == ' ')
395- --p2; /* strip trailing spaces */
396-
397- *p2='\0';
398- }
399-
400- r->handler = handler;
401- }
402-
403- result = ap_run_handler(r);
404-
405- r->handler = old_handler;
406-
407- if (result == DECLINED && r->handler && r->filename) {
408- ap_log_rerror(APLOG_MARK, APLOG_WARNING, 0, r,
409- "handler \"%s\" not found for: %s", r->handler, r->filename);
410- }
411- if ((result != OK) && (result != DONE) && (result != DECLINED)
412- && (result != AP_FILTER_ERROR)
413- && !ap_is_HTTP_VALID_RESPONSE(result)) {
414- /* If a module is deliberately returning something else
415- * (request_rec in non-HTTP or proprietary extension?)
416- * let it set a note to allow it explicitly.
417- * Otherwise, a return code that is neither reserved nor HTTP
418- * is a bug, as in PR#31759.
419- */
420- ignore = apr_table_get(r->notes, "HTTP_IGNORE_RANGE");
421- if (!ignore) {
422- ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
423- "Handler for %s returned invalid result code %d",
424- r->handler, result);
425- result = HTTP_INTERNAL_SERVER_ERROR;
426- }
427- }
428-
429- return result == DECLINED ? HTTP_INTERNAL_SERVER_ERROR : result;
430-}
431-
432-AP_DECLARE(int) ap_method_is_limited(cmd_parms *cmd, const char *method)
433-{
434- int methnum;
435-
436- methnum = ap_method_number_of(method);
437-
438- /*
439- * A method number either hardcoded into apache or
440- * added by a module and registered.
441- */
442- if (methnum != M_INVALID) {
443- return (cmd->limited & (AP_METHOD_BIT << methnum)) ? 1 : 0;
444- }
445-
446- return 0; /* not found */
447-}
448-
449-AP_DECLARE(void) ap_register_hooks(module *m, apr_pool_t *p)
450-{
451- if (m->register_hooks) {
452- if (getenv("SHOW_HOOKS")) {
453- printf("Registering hooks for %s\n", m->name);
454- apr_hook_debug_enabled = 1;
455- }
456-
457- apr_hook_debug_current = m->name;
458- m->register_hooks(p);
459- }
460-}
461-
462-static void ap_add_module_commands(module *m, apr_pool_t *p);
463-
464-typedef struct ap_mod_list_struct ap_mod_list;
465-struct ap_mod_list_struct {
466- struct ap_mod_list_struct *next;
467- module *m;
468- const command_rec *cmd;
469-};
470-
471-static apr_status_t reload_conf_hash(void *baton)
472-{
473- ap_config_hash = NULL;
474- return APR_SUCCESS;
475-}
476-
477-static void rebuild_conf_hash(apr_pool_t *p, int add_prelinked)
478-{
479- module **m;
480-
481- ap_config_hash = apr_hash_make(p);
482-
483- apr_pool_cleanup_register(p, NULL, reload_conf_hash,
484- apr_pool_cleanup_null);
485- if (add_prelinked) {
486- for (m = ap_prelinked_modules; *m != NULL; m++) {
487- ap_add_module_commands(*m, p);
488- }
489- }
490-}
491-
492-static void ap_add_module_commands(module *m, apr_pool_t *p)
493-{
494- apr_pool_t *tpool;
495- ap_mod_list *mln;
496- const command_rec *cmd;
497- char *dir;
498-
499- cmd = m->cmds;
500-
501- if (ap_config_hash == NULL) {
502- rebuild_conf_hash(p, 0);
503- }
504-
505- tpool = apr_hash_pool_get(ap_config_hash);
506-
507- while (cmd && cmd->name) {
508- mln = apr_palloc(tpool, sizeof(ap_mod_list));
509- mln->cmd = cmd;
510- mln->m = m;
511- dir = apr_pstrdup(tpool, cmd->name);
512-
513- ap_str_tolower(dir);
514-
515- mln->next = apr_hash_get(ap_config_hash, dir, APR_HASH_KEY_STRING);
516- apr_hash_set(ap_config_hash, dir, APR_HASH_KEY_STRING, mln);
517- ++cmd;
518- }
519-}
520-
521-
522-/* One-time setup for precompiled modules --- NOT to be done on restart */
523-
524-AP_DECLARE(const char *) ap_add_module(module *m, apr_pool_t *p)
525-{
526- /* This could be called from a LoadModule httpd.conf command,
527- * after the file has been linked and the module structure within it
528- * teased out...
529- */
530-
531- if (m->version != MODULE_MAGIC_NUMBER_MAJOR) {
532- return apr_psprintf(p, "Module \"%s\" is not compatible with this "
533- "version of Apache (found %d, need %d). Please "
534- "contact the vendor for the correct version.",
535- m->name, m->version, MODULE_MAGIC_NUMBER_MAJOR);
536- }
537-
538- if (m->next == NULL) {
539- m->next = ap_top_module;
540- ap_top_module = m;
541- }
542-
543- if (m->module_index == -1) {
544- m->module_index = total_modules++;
545- dynamic_modules++;
546-
547- if (dynamic_modules > DYNAMIC_MODULE_LIMIT) {
548- return apr_psprintf(p, "Module \"%s\" could not be loaded, "
549- "because the dynamic module limit was "
550- "reached. Please increase "
551- "DYNAMIC_MODULE_LIMIT and recompile.", m->name);
552- }
553- }
554-
555- /* Some C compilers put a complete path into __FILE__, but we want
556- * only the filename (e.g. mod_includes.c). So check for path
557- * components (Unix and DOS), and remove them.
558- */
559-
560- if (ap_strrchr_c(m->name, '/'))
561- m->name = 1 + ap_strrchr_c(m->name, '/');
562-
563- if (ap_strrchr_c(m->name, '\\'))
564- m->name = 1 + ap_strrchr_c(m->name, '\\');
565-
566-#ifdef _OSD_POSIX
567- /* __FILE__ =
568- * "*POSIX(/home/martin/apache/src/modules/standard/mod_info.c)"
569- */
570-
571- /* We cannot fix the string in-place, because it's const */
572- if (m->name[strlen(m->name)-1] == ')') {
573- char *tmp = strdup(m->name); /* FIXME: memory leak, albeit a small one */
574- tmp[strlen(tmp)-1] = '\0';
575- m->name = tmp;
576- }
577-#endif /*_OSD_POSIX*/
578-
579- ap_add_module_commands(m, p);
580- /* FIXME: is this the right place to call this?
581- * It doesn't appear to be
582- */
583- ap_register_hooks(m, p);
584-
585- return NULL;
586-}
587-
588-/*
589- * remove_module undoes what add_module did. There are some caveats:
590- * when the module is removed, its slot is lost so all the current
591- * per-dir and per-server configurations are invalid. So we should
592- * only ever call this function when you are invalidating almost
593- * all our current data. I.e. when doing a restart.
594- */
595-
596-AP_DECLARE(void) ap_remove_module(module *m)
597-{
598- module *modp;
599-
600- modp = ap_top_module;
601- if (modp == m) {
602- /* We are the top module, special case */
603- ap_top_module = modp->next;
604- m->next = NULL;
605- }
606- else {
607- /* Not the top module, find use. When found modp will
608- * point to the module _before_ us in the list
609- */
610-
611- while (modp && modp->next != m) {
612- modp = modp->next;
613- }
614-
615- if (!modp) {
616- /* Uh-oh, this module doesn't exist */
617- ap_log_error(APLOG_MARK, APLOG_ERR, 0, NULL,
618- "Cannot remove module %s: not found in module list",
619- m->name);
620- return;
621- }
622-
623- /* Eliminate us from the module list */
624- modp->next = modp->next->next;
625- }
626-
627- m->module_index = -1; /* simulate being unloaded, should
628- * be unnecessary */
629- dynamic_modules--;
630- total_modules--;
631-}
632-
633-AP_DECLARE(const char *) ap_add_loaded_module(module *mod, apr_pool_t *p)
634-{
635- module **m;
636- const char *error;
637-
638- /*
639- * Add module pointer to top of chained module list
640- */
641- error = ap_add_module(mod, p);
642- if (error) {
643- return error;
644- }
645-
646- /*
647- * And module pointer to list of loaded modules
648- *
649- * Notes: 1. ap_add_module() would already complain if no more space
650- * exists for adding a dynamically loaded module
651- * 2. ap_add_module() accepts double inclusion, so we have
652- * to accept this, too.
653- */
654- for (m = ap_loaded_modules; *m != NULL; m++)
655- ;
656- *m++ = mod;
657- *m = NULL;
658-
659- return NULL;
660-}
661-
662-AP_DECLARE(void) ap_remove_loaded_module(module *mod)
663-{
664- module **m;
665- module **m2;
666- int done;
667-
668- /*
669- * Remove module pointer from chained module list
670- */
671- ap_remove_module(mod);
672-
673- /*
674- * Remove module pointer from list of loaded modules
675- *
676- * Note: 1. We cannot determine if the module was successfully
677- * removed by ap_remove_module().
678- * 2. We have not to complain explicity when the module
679- * is not found because ap_remove_module() did it
680- * for us already.
681- */
682- for (m = m2 = ap_loaded_modules, done = 0; *m2 != NULL; m2++) {
683- if (*m2 == mod && done == 0)
684- done = 1;
685- else
686- *m++ = *m2;
687- }
688-
689- *m = NULL;
690-}
691-
692-AP_DECLARE(const char *) ap_setup_prelinked_modules(process_rec *process)
693-{
694- module **m;
695- module **m2;
696- const char *error;
697-
698- apr_hook_global_pool=process->pconf;
699-
700- rebuild_conf_hash(process->pconf, 0);
701-
702- /*
703- * Initialise total_modules variable and module indices
704- */
705- total_modules = 0;
706- for (m = ap_preloaded_modules; *m != NULL; m++)
707- (*m)->module_index = total_modules++;
708-
709- /*
710- * Initialise list of loaded modules
711- */
712- ap_loaded_modules = (module **)apr_palloc(process->pool,
713- sizeof(module *) * (total_modules + DYNAMIC_MODULE_LIMIT + 1));
714-
715- if (ap_loaded_modules == NULL) {
716- return "Ouch! Out of memory in ap_setup_prelinked_modules()!";
717- }
718-
719- for (m = ap_preloaded_modules, m2 = ap_loaded_modules; *m != NULL; )
720- *m2++ = *m++;
721-
722- *m2 = NULL;
723-
724- /*
725- * Initialize chain of linked (=activate) modules
726- */
727- for (m = ap_prelinked_modules; *m != NULL; m++) {
728- error = ap_add_module(*m, process->pconf);
729- if (error) {
730- return error;
731- }
732- }
733-
734- apr_hook_sort_all();
735-
736- return NULL;
737-}
738-
739-AP_DECLARE(const char *) ap_find_module_name(module *m)
740-{
741- return m->name;
742-}
743-
744-AP_DECLARE(module *) ap_find_linked_module(const char *name)
745-{
746- module *modp;
747-
748- for (modp = ap_top_module; modp; modp = modp->next) {
749- if (strcmp(modp->name, name) == 0)
750- return modp;
751- }
752-
753- return NULL;
754-}
755-
756-/*****************************************************************
757- *
758- * Resource, access, and .htaccess config files now parsed by a common
759- * command loop.
760- *
761- * Let's begin with the basics; parsing the line and
762- * invoking the function...
763- */
764-
765-#define AP_MAX_ARGC 64
766-
767-static const char *invoke_cmd(const command_rec *cmd, cmd_parms *parms,
768- void *mconfig, const char *args)
769-{
770- char *w, *w2, *w3;
771- const char *errmsg = NULL;
772-
773- if ((parms->override & cmd->req_override) == 0)
774- return apr_pstrcat(parms->pool, cmd->name, " not allowed here", NULL);
775-
776- parms->info = cmd->cmd_data;
777- parms->cmd = cmd;
778-
779- switch (cmd->args_how) {
780- case RAW_ARGS:
781-#ifdef RESOLVE_ENV_PER_TOKEN
782- args = ap_resolve_env(parms->pool,args);
783-#endif
784- return cmd->AP_RAW_ARGS(parms, mconfig, args);
785-
786- case TAKE_ARGV:
787- {
788- char *argv[AP_MAX_ARGC];
789- int argc = 0;
790-
791- do {
792- w = ap_getword_conf(parms->pool, &args);
793- if (*w == '\0' && *args == '\0') {
794- break;
795- }
796- argv[argc] = w;
797- argc++;
798- } while (argc < AP_MAX_ARGC && *args != '\0');
799-
800- return cmd->AP_TAKE_ARGV(parms, mconfig, argc, argv);
801- }
802-
803- case NO_ARGS:
804- if (*args != 0)
805- return apr_pstrcat(parms->pool, cmd->name, " takes no arguments",
806- NULL);
807-
808- return cmd->AP_NO_ARGS(parms, mconfig);
809-
810- case TAKE1:
811- w = ap_getword_conf(parms->pool, &args);
812-
813- if (*w == '\0' || *args != 0)
814- return apr_pstrcat(parms->pool, cmd->name, " takes one argument",
815- cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
816-
817- return cmd->AP_TAKE1(parms, mconfig, w);
818-
819- case TAKE2:
820- w = ap_getword_conf(parms->pool, &args);
821- w2 = ap_getword_conf(parms->pool, &args);
822-
823- if (*w == '\0' || *w2 == '\0' || *args != 0)
824- return apr_pstrcat(parms->pool, cmd->name, " takes two arguments",
825- cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
826-
827- return cmd->AP_TAKE2(parms, mconfig, w, w2);
828-
829- case TAKE12:
830- w = ap_getword_conf(parms->pool, &args);
831- w2 = ap_getword_conf(parms->pool, &args);
832-
833- if (*w == '\0' || *args != 0)
834- return apr_pstrcat(parms->pool, cmd->name, " takes 1-2 arguments",
835- cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
836-
837- return cmd->AP_TAKE2(parms, mconfig, w, *w2 ? w2 : NULL);
838-
839- case TAKE3:
840- w = ap_getword_conf(parms->pool, &args);
841- w2 = ap_getword_conf(parms->pool, &args);
842- w3 = ap_getword_conf(parms->pool, &args);
843-
844- if (*w == '\0' || *w2 == '\0' || *w3 == '\0' || *args != 0)
845- return apr_pstrcat(parms->pool, cmd->name, " takes three arguments",
846- cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
847-
848- return cmd->AP_TAKE3(parms, mconfig, w, w2, w3);
849-
850- case TAKE23:
851- w = ap_getword_conf(parms->pool, &args);
852- w2 = ap_getword_conf(parms->pool, &args);
853- w3 = *args ? ap_getword_conf(parms->pool, &args) : NULL;
854-
855- if (*w == '\0' || *w2 == '\0' || *args != 0)
856- return apr_pstrcat(parms->pool, cmd->name,
857- " takes two or three arguments",
858- cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
859-
860- return cmd->AP_TAKE3(parms, mconfig, w, w2, w3);
861-
862- case TAKE123:
863- w = ap_getword_conf(parms->pool, &args);
864- w2 = *args ? ap_getword_conf(parms->pool, &args) : NULL;
865- w3 = *args ? ap_getword_conf(parms->pool, &args) : NULL;
866-
867- if (*w == '\0' || *args != 0)
868- return apr_pstrcat(parms->pool, cmd->name,
869- " takes one, two or three arguments",
870- cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
871-
872- return cmd->AP_TAKE3(parms, mconfig, w, w2, w3);
873-
874- case TAKE13:
875- w = ap_getword_conf(parms->pool, &args);
876- w2 = *args ? ap_getword_conf(parms->pool, &args) : NULL;
877- w3 = *args ? ap_getword_conf(parms->pool, &args) : NULL;
878-
879- if (*w == '\0' || (w2 && *w2 && !w3) || *args != 0)
880- return apr_pstrcat(parms->pool, cmd->name,
881- " takes one or three arguments",
882- cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
883-
884- return cmd->AP_TAKE3(parms, mconfig, w, w2, w3);
885-
886- case ITERATE:
887- while (*(w = ap_getword_conf(parms->pool, &args)) != '\0') {
888-
889- errmsg = cmd->AP_TAKE1(parms, mconfig, w);
890-
891- if (errmsg && strcmp(errmsg, DECLINE_CMD) != 0)
892- return errmsg;
893- }
894-
895- return errmsg;
896-
897- case ITERATE2:
898- w = ap_getword_conf(parms->pool, &args);
899-
900- if (*w == '\0' || *args == 0)
901- return apr_pstrcat(parms->pool, cmd->name,
902- " requires at least two arguments",
903- cmd->errmsg ? ", " : NULL, cmd->errmsg, NULL);
904-
905- while (*(w2 = ap_getword_conf(parms->pool, &args)) != '\0') {
906-
907- errmsg = cmd->AP_TAKE2(parms, mconfig, w, w2);
908-
909- if (errmsg && strcmp(errmsg, DECLINE_CMD) != 0)
910- return errmsg;
911- }
912-
913- return errmsg;
914-
915- case FLAG:
916- w = ap_getword_conf(parms->pool, &args);
917-
918- if (*w == '\0' || (strcasecmp(w, "on") && strcasecmp(w, "off")))
919- return apr_pstrcat(parms->pool, cmd->name, " must be On or Off",
920- NULL);
921-
922- return cmd->AP_FLAG(parms, mconfig, strcasecmp(w, "off") != 0);
923-
924- default:
925- return apr_pstrcat(parms->pool, cmd->name,
926- " is improperly configured internally (server bug)",
927- NULL);
928- }
929-}
930-
931-AP_CORE_DECLARE(const command_rec *) ap_find_command(const char *name,
932- const command_rec *cmds)
933-{
934- while (cmds->name) {
935- if (!strcasecmp(name, cmds->name))
936- return cmds;
937-
938- ++cmds;
939- }
940-
941- return NULL;
942-}
943-
944-AP_CORE_DECLARE(const command_rec *) ap_find_command_in_modules(
945- const char *cmd_name, module **mod)
946-{
947- const command_rec *cmdp;
948- module *modp;
949-
950- for (modp = *mod; modp; modp = modp->next) {
951- if (modp->cmds && (cmdp = ap_find_command(cmd_name, modp->cmds))) {
952- *mod = modp;
953- return cmdp;
954- }
955- }
956-
957- return NULL;
958-}
959-
960-AP_CORE_DECLARE(void *) ap_set_config_vectors(server_rec *server,
961- ap_conf_vector_t *section_vector,
962- const char *section,
963- module *mod, apr_pool_t *pconf)
964-{
965- void *section_config = ap_get_module_config(section_vector, mod);
966- void *server_config = ap_get_module_config(server->module_config, mod);
967-
968- if (!section_config && mod->create_dir_config) {
969- /* ### need to fix the create_dir_config functions' prototype... */
970- section_config = (*mod->create_dir_config)(pconf, (char *)section);
971- ap_set_module_config(section_vector, mod, section_config);
972- }
973-
974- if (!server_config && mod->create_server_config) {
975- server_config = (*mod->create_server_config)(pconf, server);
976- ap_set_module_config(server->module_config, mod, server_config);
977- }
978-
979- return section_config;
980-}
981-
982-static const char *execute_now(char *cmd_line, const char *args,
983- cmd_parms *parms,
984- apr_pool_t *p, apr_pool_t *ptemp,
985- ap_directive_t **sub_tree,
986- ap_directive_t *parent);
987-
988-static const char *ap_build_config_sub(apr_pool_t *p, apr_pool_t *temp_pool,
989- const char *l, cmd_parms *parms,
990- ap_directive_t **current,
991- ap_directive_t **curr_parent,
992- ap_directive_t **conftree)
993-{
994- const char *retval = NULL;
995- const char *args;
996- char *cmd_name;
997- ap_directive_t *newdir;
998- module *mod = ap_top_module;
999- const command_rec *cmd;
1000-
1001- if (*l == '#' || *l == '\0')
1002- return NULL;
1003-
1004-#if RESOLVE_ENV_PER_TOKEN
1005- args = l;
1006-#else
1007- args = ap_resolve_env(temp_pool, l);
1008-#endif
1009-
1010- cmd_name = ap_getword_conf(p, &args);
1011- if (*cmd_name == '\0') {
1012- /* Note: this branch should not occur. An empty line should have
1013- * triggered the exit further above.
1014- */
1015- return NULL;
1016- }
1017-
1018- if (cmd_name[1] != '/') {
1019- char *lastc = cmd_name + strlen(cmd_name) - 1;
1020- if (*lastc == '>') {
1021- *lastc = '\0' ;
1022- }
1023- if (cmd_name[0] == '<' && *args == '\0') {
1024- args = ">";
1025- }
1026- }
1027-
1028- newdir = apr_pcalloc(p, sizeof(ap_directive_t));
1029- newdir->filename = parms->config_file->name;
1030- newdir->line_num = parms->config_file->line_number;
1031- newdir->directive = cmd_name;
1032- newdir->args = apr_pstrdup(p, args);
1033-
1034- if ((cmd = ap_find_command_in_modules(cmd_name, &mod)) != NULL) {
1035- if (cmd->req_override & EXEC_ON_READ) {
1036- ap_directive_t *sub_tree = NULL;
1037-
1038- parms->err_directive = newdir;
1039- retval = execute_now(cmd_name, args, parms, p, temp_pool,
1040- &sub_tree, *curr_parent);
1041- if (*current) {
1042- (*current)->next = sub_tree;
1043- }
1044- else {
1045- *current = sub_tree;
1046- if (*curr_parent) {
1047- (*curr_parent)->first_child = (*current);
1048- }
1049- if (*current) {
1050- (*current)->parent = (*curr_parent);
1051- }
1052- }
1053- if (*current) {
1054- if (!*conftree) {
1055- /* Before walking *current to the end of the list,
1056- * set the head to *current.
1057- */
1058- *conftree = *current;
1059- }
1060- while ((*current)->next != NULL) {
1061- (*current) = (*current)->next;
1062- (*current)->parent = (*curr_parent);
1063- }
1064- }
1065- return retval;
1066- }
1067- }
1068-
1069- if (cmd_name[0] == '<') {
1070- if (cmd_name[1] != '/') {
1071- (*current) = ap_add_node(curr_parent, *current, newdir, 1);
1072- }
1073- else if (*curr_parent == NULL) {
1074- parms->err_directive = newdir;
1075- return apr_pstrcat(p, cmd_name,
1076- " without matching <", cmd_name + 2,
1077- " section", NULL);
1078- }
1079- else {
1080- char *bracket = cmd_name + strlen(cmd_name) - 1;
1081-
1082- if (*bracket != '>') {
1083- parms->err_directive = newdir;
1084- return apr_pstrcat(p, cmd_name,
1085- "> directive missing closing '>'", NULL);
1086- }
1087-
1088- *bracket = '\0';
1089-
1090- if (strcasecmp(cmd_name + 2,
1091- (*curr_parent)->directive + 1) != 0) {
1092- parms->err_directive = newdir;
1093- return apr_pstrcat(p, "Expected </",
1094- (*curr_parent)->directive + 1, "> but saw ",
1095- cmd_name, ">", NULL);
1096- }
1097-
1098- *bracket = '>';
1099-
1100- /* done with this section; move up a level */
1101- *current = *curr_parent;
1102- *curr_parent = (*current)->parent;
1103- }
1104- }
1105- else {
1106- *current = ap_add_node(curr_parent, *current, newdir, 0);
1107- }
1108-
1109- return retval;
1110-}
1111-
1112-AP_DECLARE(const char *) ap_build_cont_config(apr_pool_t *p,
1113- apr_pool_t *temp_pool,
1114- cmd_parms *parms,
1115- ap_directive_t **current,
1116- ap_directive_t **curr_parent,
1117- char *orig_directive)
1118-{
1119- char *l;
1120- char *bracket;
1121- const char *retval;
1122- ap_directive_t *sub_tree = NULL;
1123-
1124- /* Since this function can be called recursively, allocate
1125- * the temporary 8k string buffer from the temp_pool rather
1126- * than the stack to avoid over-running a fixed length stack.
1127- */
1128- l = apr_palloc(temp_pool, MAX_STRING_LEN);
1129-
1130- bracket = apr_pstrcat(p, orig_directive + 1, ">", NULL);
1131- while (!(ap_cfg_getline(l, MAX_STRING_LEN, parms->config_file))) {
1132- if (!memcmp(l, "</", 2)
1133- && (strcasecmp(l + 2, bracket) == 0)
1134- && (*curr_parent == NULL)) {
1135- break;
1136- }
1137- retval = ap_build_config_sub(p, temp_pool, l, parms, current,
1138- curr_parent, &sub_tree);
1139- if (retval != NULL)
1140- return retval;
1141-
1142- if (sub_tree == NULL) {
1143- sub_tree = *curr_parent;
1144- }
1145-
1146- if (sub_tree == NULL) {
1147- sub_tree = *current;
1148- }
1149- }
1150-
1151- *current = sub_tree;
1152- return NULL;
1153-}
1154-
1155-static const char *ap_walk_config_sub(const ap_directive_t *current,
1156- cmd_parms *parms,
1157- ap_conf_vector_t *section_vector)
1158-{
1159- const command_rec *cmd;
1160- ap_mod_list *ml;
1161- char *dir = apr_pstrdup(parms->pool, current->directive);
1162-
1163- ap_str_tolower(dir);
1164-
1165- ml = apr_hash_get(ap_config_hash, dir, APR_HASH_KEY_STRING);
1166-
1167- if (ml == NULL) {
1168- parms->err_directive = current;
1169- return apr_pstrcat(parms->pool, "Invalid command '",
1170- current->directive,
1171- "', perhaps misspelled or defined by a module "
1172- "not included in the server configuration",
1173- NULL);
1174- }
1175-
1176- for ( ; ml != NULL; ml = ml->next) {
1177- void *dir_config = ap_set_config_vectors(parms->server,
1178- section_vector,
1179- parms->path,
1180- ml->m,
1181- parms->pool);
1182- const char *retval;
1183- cmd = ml->cmd;
1184-
1185- /* Once was enough? */
1186- if (cmd->req_override & EXEC_ON_READ) {
1187- continue;
1188- }
1189-
1190- retval = invoke_cmd(cmd, parms, dir_config, current->args);
1191-
1192- if (retval != NULL && strcmp(retval, DECLINE_CMD) != 0) {
1193- /* If the directive in error has already been set, don't
1194- * replace it. Otherwise, an error inside a container
1195- * will be reported as occuring on the first line of the
1196- * container.
1197- */
1198- if (!parms->err_directive) {
1199- parms->err_directive = current;
1200- }
1201- return retval;
1202- }
1203- }
1204-
1205- return NULL;
1206-}
1207-
1208-AP_DECLARE(const char *) ap_walk_config(ap_directive_t *current,
1209- cmd_parms *parms,
1210- ap_conf_vector_t *section_vector)
1211-{
1212- ap_conf_vector_t *oldconfig = parms->context;
1213-
1214- parms->context = section_vector;
1215-
1216- /* scan through all directives, executing each one */
1217- for (; current != NULL; current = current->next) {
1218- const char *errmsg;
1219-
1220- parms->directive = current;
1221-
1222- /* actually parse the command and execute the correct function */
1223- errmsg = ap_walk_config_sub(current, parms, section_vector);
1224- if (errmsg != NULL) {
1225- /* restore the context (just in case) */
1226- parms->context = oldconfig;
1227- return errmsg;
1228- }
1229- }
1230-
1231- parms->context = oldconfig;
1232- return NULL;
1233-}
1234-
1235-AP_DECLARE(const char *) ap_build_config(cmd_parms *parms,
1236- apr_pool_t *p, apr_pool_t *temp_pool,
1237- ap_directive_t **conftree)
1238-{
1239- ap_directive_t *current = *conftree;
1240- ap_directive_t *curr_parent = NULL;
1241- char *l = apr_palloc (temp_pool, MAX_STRING_LEN);
1242- const char *errmsg;
1243-
1244- if (current != NULL) {
1245- while (current->next) {
1246- current = current->next;
1247- }
1248- }
1249-
1250- while (!(ap_cfg_getline(l, MAX_STRING_LEN, parms->config_file))) {
1251- errmsg = ap_build_config_sub(p, temp_pool, l, parms,
1252- &current, &curr_parent, conftree);
1253- if (errmsg != NULL)
1254- return errmsg;
1255-
1256- if (*conftree == NULL && curr_parent != NULL) {
1257- *conftree = curr_parent;
1258- }
1259-
1260- if (*conftree == NULL && current != NULL) {
1261- *conftree = current;
1262- }
1263- }
1264-
1265- if (curr_parent != NULL) {
1266- errmsg = "";
1267-
1268- while (curr_parent != NULL) {
1269- errmsg = apr_psprintf(p, "%s%s%s:%u: %s> was not closed.",
1270- errmsg,
1271- *errmsg == '\0' ? "" : APR_EOL_STR,
1272- curr_parent->filename,
1273- curr_parent->line_num,
1274- curr_parent->directive);
1275-
1276- parms->err_directive = curr_parent;
1277- curr_parent = curr_parent->parent;
1278- }
1279-
1280- return errmsg;
1281- }
1282-
1283- return NULL;
1284-}
1285-
1286-/*
1287- * Generic command functions...
1288- */
1289-
1290-AP_DECLARE_NONSTD(const char *) ap_set_string_slot(cmd_parms *cmd,
1291- void *struct_ptr,
1292- const char *arg)
1293-{
1294- int offset = (int)(long)cmd->info;
1295-
1296- *(const char **)((char *)struct_ptr + offset) = arg;
1297-
1298- return NULL;
1299-}
1300-
1301-AP_DECLARE_NONSTD(const char *) ap_set_int_slot(cmd_parms *cmd,
1302- void *struct_ptr,
1303- const char *arg)
1304-{
1305- char *endptr;
1306- char *error_str = NULL;
1307- int offset = (int)(long)cmd->info;
1308-
1309- *(int *)((char*)struct_ptr + offset) = strtol(arg, &endptr, 10);
1310-
1311- if ((*arg == '\0') || (*endptr != '\0')) {
1312- error_str = apr_psprintf(cmd->pool,
1313- "Invalid value for directive %s, expected integer",
1314- cmd->directive->directive);
1315- }
1316-
1317- return error_str;
1318-}
1319-
1320-AP_DECLARE_NONSTD(const char *) ap_set_string_slot_lower(cmd_parms *cmd,
1321- void *struct_ptr,
1322- const char *arg_)
1323-{
1324- char *arg = apr_pstrdup(cmd->pool,arg_);
1325- int offset = (int)(long)cmd->info;
1326-
1327- ap_str_tolower(arg);
1328- *(char **)((char *)struct_ptr + offset) = arg;
1329-
1330- return NULL;
1331-}
1332-
1333-AP_DECLARE_NONSTD(const char *) ap_set_flag_slot(cmd_parms *cmd,
1334- void *struct_ptr_v, int arg)
1335-{
1336- int offset = (int)(long)cmd->info;
1337- char *struct_ptr = (char *)struct_ptr_v;
1338-
1339- *(int *)(struct_ptr + offset) = arg ? 1 : 0;
1340-
1341- return NULL;
1342-}
1343-
1344-AP_DECLARE_NONSTD(const char *) ap_set_file_slot(cmd_parms *cmd, void *struct_ptr,
1345- const char *arg)
1346-{
1347- /* Prepend server_root to relative arg.
1348- * This allows most args to be independent of server_root,
1349- * so the server can be moved or mirrored with less pain.
1350- */
1351- const char *path;
1352- int offset = (int)(long)cmd->info;
1353-
1354- path = ap_server_root_relative(cmd->pool, arg);
1355-
1356- if (!path) {
1357- return apr_pstrcat(cmd->pool, "Invalid file path ",
1358- arg, NULL);
1359- }
1360-
1361- *(const char **) ((char*)struct_ptr + offset) = path;
1362-
1363- return NULL;
1364-}
1365-
1366-AP_DECLARE_NONSTD(const char *) ap_set_deprecated(cmd_parms *cmd,
1367- void *struct_ptr,
1368- const char *arg)
1369-{
1370- return cmd->cmd->errmsg;
1371-}
1372-
1373-/*****************************************************************
1374- *
1375- * Reading whole config files...
1376- */
1377-
1378-static cmd_parms default_parms =
1379-{NULL, 0, -1, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL};
1380-
1381-AP_DECLARE(char *) ap_server_root_relative(apr_pool_t *p, const char *file)
1382-{
1383- char *newpath = NULL;
1384- apr_status_t rv;
1385- rv = apr_filepath_merge(&newpath, ap_server_root, file,
1386- APR_FILEPATH_TRUENAME, p);
1387- if (newpath && (rv == APR_SUCCESS || APR_STATUS_IS_EPATHWILD(rv)
1388- || APR_STATUS_IS_ENOENT(rv)
1389- || APR_STATUS_IS_ENOTDIR(rv))) {
1390- return newpath;
1391- }
1392- else {
1393- return NULL;
1394- }
1395-}
1396-
1397-AP_DECLARE(const char *) ap_soak_end_container(cmd_parms *cmd, char *directive)
1398-{
1399- char l[MAX_STRING_LEN];
1400- const char *args;
1401- char *cmd_name;
1402-
1403- while(!(ap_cfg_getline(l, MAX_STRING_LEN, cmd->config_file))) {
1404-#if RESOLVE_ENV_PER_TOKEN
1405- args = l;
1406-#else
1407- args = ap_resolve_env(cmd->temp_pool, l);
1408-#endif
1409-
1410- cmd_name = ap_getword_conf(cmd->pool, &args);
1411- if (cmd_name[0] == '<') {
1412- if (cmd_name[1] == '/') {
1413- cmd_name[strlen(cmd_name) - 1] = '\0';
1414-
1415- if (strcasecmp(cmd_name + 2, directive + 1) != 0) {
1416- return apr_pstrcat(cmd->pool, "Expected </",
1417- directive + 1, "> but saw ",
1418- cmd_name, ">", NULL);
1419- }
1420-
1421- return NULL; /* found end of container */
1422- }
1423- else {
1424- const char *msg;
1425-
1426- if (*args == '\0' && cmd_name[strlen(cmd_name) - 1] == '>') {
1427- cmd_name[strlen(cmd_name) - 1] = '\0';
1428- }
1429-
1430- if ((msg = ap_soak_end_container(cmd, cmd_name)) != NULL) {
1431- return msg;
1432- }
1433- }
1434- }
1435- }
1436-
1437- return apr_pstrcat(cmd->pool, "Expected </",
1438- directive + 1, "> before end of configuration",
1439- NULL);
1440-}
1441-
1442-static const char *execute_now(char *cmd_line, const char *args,
1443- cmd_parms *parms,
1444- apr_pool_t *p, apr_pool_t *ptemp,
1445- ap_directive_t **sub_tree,
1446- ap_directive_t *parent)
1447-{
1448- const command_rec *cmd;
1449- ap_mod_list *ml;
1450- char *dir = apr_pstrdup(parms->pool, cmd_line);
1451-
1452- ap_str_tolower(dir);
1453-
1454- ml = apr_hash_get(ap_config_hash, dir, APR_HASH_KEY_STRING);
1455-
1456- if (ml == NULL) {
1457- return apr_pstrcat(parms->pool, "Invalid command '",
1458- cmd_line,
1459- "', perhaps misspelled or defined by a module "
1460- "not included in the server configuration",
1461- NULL);
1462- }
1463-
1464- for ( ; ml != NULL; ml = ml->next) {
1465- const char *retval;
1466- cmd = ml->cmd;
1467-
1468- retval = invoke_cmd(cmd, parms, sub_tree, args);
1469-
1470- if (retval != NULL) {
1471- return retval;
1472- }
1473- }
1474-
1475- return NULL;
1476-}
1477-
1478-/* This structure and the following functions are needed for the
1479- * table-based config file reading. They are passed to the
1480- * cfg_open_custom() routine.
1481- */
1482-
1483-/* Structure to be passed to cfg_open_custom(): it contains an
1484- * index which is incremented from 0 to nelts on each call to
1485- * cfg_getline() (which in turn calls arr_elts_getstr())
1486- * and an apr_array_header_t pointer for the string array.
1487- */
1488-typedef struct {
1489- apr_array_header_t *array;
1490- int curr_idx;
1491-} arr_elts_param_t;
1492-
1493-
1494-/* arr_elts_getstr() returns the next line from the string array. */
1495-static void *arr_elts_getstr(void *buf, size_t bufsiz, void *param)
1496-{
1497- arr_elts_param_t *arr_param = (arr_elts_param_t *)param;
1498-
1499- /* End of array reached? */
1500- if (++arr_param->curr_idx > arr_param->array->nelts)
1501- return NULL;
1502-
1503- /* return the line */
1504- apr_cpystrn(buf,
1505- ((char **)arr_param->array->elts)[arr_param->curr_idx - 1],
1506- bufsiz);
1507-
1508- return buf;
1509-}
1510-
1511-
1512-/* arr_elts_close(): dummy close routine (makes sure no more lines can be read) */
1513-static int arr_elts_close(void *param)
1514-{
1515- arr_elts_param_t *arr_param = (arr_elts_param_t *)param;
1516-
1517- arr_param->curr_idx = arr_param->array->nelts;
1518-
1519- return 0;
1520-}
1521-
1522-static const char *process_command_config(server_rec *s,
1523- apr_array_header_t *arr,
1524- ap_directive_t **conftree,
1525- apr_pool_t *p,
1526- apr_pool_t *ptemp)
1527-{
1528- const char *errmsg;
1529- cmd_parms parms;
1530- arr_elts_param_t arr_parms;
1531-
1532- arr_parms.curr_idx = 0;
1533- arr_parms.array = arr;
1534-
1535- if (ap_config_hash == NULL) {
1536- rebuild_conf_hash(s->process->pconf, 1);
1537- }
1538-
1539- parms = default_parms;
1540- parms.pool = p;
1541- parms.temp_pool = ptemp;
1542- parms.server = s;
1543- parms.override = (RSRC_CONF | OR_ALL) & ~(OR_AUTHCFG | OR_LIMIT);
1544- parms.override_opts = OPT_ALL | OPT_SYM_OWNER | OPT_MULTI;
1545-
1546- parms.config_file = ap_pcfg_open_custom(p, "-c/-C directives",
1547- &arr_parms, NULL,
1548- arr_elts_getstr, arr_elts_close);
1549-
1550- errmsg = ap_build_config(&parms, p, ptemp, conftree);
1551- ap_cfg_closefile(parms.config_file);
1552-
1553- if (errmsg) {
1554- return apr_pstrcat(p, "Syntax error in -C/-c directive: ", errmsg,
1555- NULL);
1556- }
1557-
1558- return NULL;
1559-}
1560-
1561-typedef struct {
1562- char *fname;
1563-} fnames;
1564-
1565-static int fname_alphasort(const void *fn1, const void *fn2)
1566-{
1567- const fnames *f1 = fn1;
1568- const fnames *f2 = fn2;
1569-
1570- return strcmp(f1->fname,f2->fname);
1571-}
1572-
1573-static const char *process_resource_config_nofnmatch(server_rec *s,
1574- const char *fname,
1575- ap_directive_t **conftree,
1576- apr_pool_t *p,
1577- apr_pool_t *ptemp,
1578- unsigned depth)
1579-{
1580- cmd_parms parms;
1581- ap_configfile_t *cfp;
1582- const char *error;
1583- apr_status_t rv;
1584-
1585- if (ap_is_directory(p, fname)) {
1586- apr_dir_t *dirp;
1587- apr_finfo_t dirent;
1588- int current;
1589- apr_array_header_t *candidates = NULL;
1590- fnames *fnew;
1591- char *path = apr_pstrdup(p, fname);
1592-
1593- if (++depth > AP_MAX_INCLUDE_DIR_DEPTH) {
1594- return apr_psprintf(p, "Directory %s exceeds the maximum include "
1595- "directory nesting level of %u. You have "
1596- "probably a recursion somewhere.", path,
1597- AP_MAX_INCLUDE_DIR_DEPTH);
1598- }
1599-
1600- /*
1601- * first course of business is to grok all the directory
1602- * entries here and store 'em away. Recall we need full pathnames
1603- * for this.
1604- */
1605- rv = apr_dir_open(&dirp, path, p);
1606- if (rv != APR_SUCCESS) {
1607- char errmsg[120];
1608- return apr_psprintf(p, "Could not open config directory %s: %s",
1609- path, apr_strerror(rv, errmsg, sizeof errmsg));
1610- }
1611-
1612- candidates = apr_array_make(p, 1, sizeof(fnames));
1613- while (apr_dir_read(&dirent, APR_FINFO_DIRENT, dirp) == APR_SUCCESS) {
1614- /* strip out '.' and '..' */
1615- if (strcmp(dirent.name, ".")
1616- && strcmp(dirent.name, "..")) {
1617- fnew = (fnames *) apr_array_push(candidates);
1618- fnew->fname = ap_make_full_path(p, path, dirent.name);
1619- }
1620- }
1621-
1622- apr_dir_close(dirp);
1623- if (candidates->nelts != 0) {
1624- qsort((void *) candidates->elts, candidates->nelts,
1625- sizeof(fnames), fname_alphasort);
1626-
1627- /*
1628- * Now recurse these... we handle errors and subdirectories
1629- * via the recursion, which is nice
1630- */
1631- for (current = 0; current < candidates->nelts; ++current) {
1632- fnew = &((fnames *) candidates->elts)[current];
1633- error = process_resource_config_nofnmatch(s, fnew->fname,
1634- conftree, p, ptemp,
1635- depth);
1636- if (error) {
1637- return error;
1638- }
1639- }
1640- }
1641-
1642- return NULL;
1643- }
1644-
1645- /* GCC's initialization extensions are soooo nice here... */
1646- parms = default_parms;
1647- parms.pool = p;
1648- parms.temp_pool = ptemp;
1649- parms.server = s;
1650- parms.override = (RSRC_CONF | OR_ALL) & ~(OR_AUTHCFG | OR_LIMIT);
1651- parms.override_opts = OPT_ALL | OPT_SYM_OWNER | OPT_MULTI;
1652-
1653- rv = ap_pcfg_openfile(&cfp, p, fname);
1654- if (rv != APR_SUCCESS) {
1655- char errmsg[120];
1656- return apr_psprintf(p, "Could not open configuration file %s: %s",
1657- fname, apr_strerror(rv, errmsg, sizeof errmsg));
1658- }
1659-
1660- parms.config_file = cfp;
1661- error = ap_build_config(&parms, p, ptemp, conftree);
1662- ap_cfg_closefile(cfp);
1663-
1664- if (error) {
1665- return apr_psprintf(p, "Syntax error on line %d of %s: %s",
1666- parms.err_directive->line_num,
1667- parms.err_directive->filename, error);
1668- }
1669-
1670- return NULL;
1671-}
1672-
1673-AP_DECLARE(const char *) ap_process_resource_config(server_rec *s,
1674- const char *fname,
1675- ap_directive_t **conftree,
1676- apr_pool_t *p,
1677- apr_pool_t *ptemp)
1678-{
1679- /* XXX: lstat() won't work on the wildcard pattern...
1680- */
1681-
1682- /* don't require conf/httpd.conf if we have a -C or -c switch */
1683- if ((ap_server_pre_read_config->nelts
1684- || ap_server_post_read_config->nelts)
1685- && !(strcmp(fname, ap_server_root_relative(p, SERVER_CONFIG_FILE)))) {
1686- apr_finfo_t finfo;
1687-
1688- if (apr_stat(&finfo, fname, APR_FINFO_LINK | APR_FINFO_TYPE, p) != APR_SUCCESS)
1689- return NULL;
1690- }
1691-
1692- if (!apr_fnmatch_test(fname)) {
1693- return process_resource_config_nofnmatch(s, fname, conftree, p, ptemp,
1694- 0);
1695- }
1696- else {
1697- apr_dir_t *dirp;
1698- apr_finfo_t dirent;
1699- int current;
1700- apr_array_header_t *candidates = NULL;
1701- fnames *fnew;
1702- apr_status_t rv;
1703- char *path = apr_pstrdup(p, fname), *pattern = NULL;
1704-
1705- pattern = ap_strrchr(path, '/');
1706-
1707- AP_DEBUG_ASSERT(pattern != NULL); /* path must be absolute. */
1708-
1709- *pattern++ = '\0';
1710-
1711- if (apr_fnmatch_test(path)) {
1712- return apr_pstrcat(p, "Wildcard patterns not allowed in Include ",
1713- fname, NULL);
1714- }
1715-
1716- if (!ap_is_directory(p, path)){
1717- return apr_pstrcat(p, "Include directory '", path, "' not found",
1718- NULL);
1719- }
1720-
1721- if (!apr_fnmatch_test(pattern)) {
1722- return apr_pstrcat(p, "Must include a wildcard pattern for "
1723- "Include ", fname, NULL);
1724- }
1725-
1726- /*
1727- * first course of business is to grok all the directory
1728- * entries here and store 'em away. Recall we need full pathnames
1729- * for this.
1730- */
1731- rv = apr_dir_open(&dirp, path, p);
1732- if (rv != APR_SUCCESS) {
1733- char errmsg[120];
1734- return apr_psprintf(p, "Could not open config directory %s: %s",
1735- path, apr_strerror(rv, errmsg, sizeof errmsg));
1736- }
1737-
1738- candidates = apr_array_make(p, 1, sizeof(fnames));
1739- while (apr_dir_read(&dirent, APR_FINFO_DIRENT, dirp) == APR_SUCCESS) {
1740- /* strip out '.' and '..' */
1741- if (strcmp(dirent.name, ".")
1742- && strcmp(dirent.name, "..")
1743- && (apr_fnmatch(pattern, dirent.name,
1744- APR_FNM_PERIOD) == APR_SUCCESS)) {
1745- fnew = (fnames *) apr_array_push(candidates);
1746- fnew->fname = ap_make_full_path(p, path, dirent.name);
1747- }
1748- }
1749-
1750- apr_dir_close(dirp);
1751- if (candidates->nelts != 0) {
1752- const char *error;
1753-
1754- qsort((void *) candidates->elts, candidates->nelts,
1755- sizeof(fnames), fname_alphasort);
1756-
1757- /*
1758- * Now recurse these... we handle errors and subdirectories
1759- * via the recursion, which is nice
1760- */
1761- for (current = 0; current < candidates->nelts; ++current) {
1762- fnew = &((fnames *) candidates->elts)[current];
1763- error = process_resource_config_nofnmatch(s, fnew->fname,
1764- conftree, p,
1765- ptemp, 0);
1766- if (error) {
1767- return error;
1768- }
1769- }
1770- }
1771- }
1772-
1773- return NULL;
1774-}
1775-
1776-AP_DECLARE(int) ap_process_config_tree(server_rec *s,
1777- ap_directive_t *conftree,
1778- apr_pool_t *p,
1779- apr_pool_t *ptemp)
1780-{
1781- const char *errmsg;
1782- cmd_parms parms;
1783-
1784- parms = default_parms;
1785- parms.pool = p;
1786- parms.temp_pool = ptemp;
1787- parms.server = s;
1788- parms.override = (RSRC_CONF | OR_ALL) & ~(OR_AUTHCFG | OR_LIMIT);
1789- parms.override_opts = OPT_ALL | OPT_SYM_OWNER | OPT_MULTI;
1790- parms.limited = -1;
1791-
1792- errmsg = ap_walk_config(conftree, &parms, s->lookup_defaults);
1793- if (errmsg) {
1794- ap_log_perror(APLOG_MARK, APLOG_STARTUP, 0, p,
1795- "Syntax error on line %d of %s:",
1796- parms.err_directive->line_num,
1797- parms.err_directive->filename);
1798- ap_log_perror(APLOG_MARK, APLOG_STARTUP, 0, p,
1799- "%s", errmsg);
1800- return HTTP_INTERNAL_SERVER_ERROR;
1801- }
1802-
1803- return OK;
1804-}
1805-
1806-AP_CORE_DECLARE(int) ap_parse_htaccess(ap_conf_vector_t **result,
1807- request_rec *r, int override,
1808- int override_opts,
1809- const char *d, const char *access_name)
1810-{
1811- ap_configfile_t *f = NULL;
1812- cmd_parms parms;
1813- char *filename = NULL;
1814- const struct htaccess_result *cache;
1815- struct htaccess_result *new;
1816- ap_conf_vector_t *dc = NULL;
1817- apr_status_t status;
1818-
1819- /* firstly, search cache */
1820- for (cache = r->htaccess; cache != NULL; cache = cache->next) {
1821- if (cache->override == override && strcmp(cache->dir, d) == 0) {
1822- *result = cache->htaccess;
1823- return OK;
1824- }
1825- }
1826-
1827- parms = default_parms;
1828- parms.override = override;
1829- parms.override_opts = override_opts;
1830- parms.pool = r->pool;
1831- parms.temp_pool = r->pool;
1832- parms.server = r->server;
1833- parms.path = apr_pstrdup(r->pool, d);
1834-
1835- /* loop through the access names and find the first one */
1836- while (access_name[0]) {
1837- /* AFAICT; there is no use of the actual 'filename' against
1838- * any canonicalization, so we will simply take the given
1839- * name, ignoring case sensitivity and aliases
1840- */
1841- filename = ap_make_full_path(r->pool, d,
1842- ap_getword_conf(r->pool, &access_name));
1843- status = ap_pcfg_openfile(&f, r->pool, filename);
1844-
1845- if (status == APR_SUCCESS) {
1846- const char *errmsg;
1847- ap_directive_t *temptree = NULL;
1848-
1849- dc = ap_create_per_dir_config(r->pool);
1850-
1851- parms.config_file = f;
1852- errmsg = ap_build_config(&parms, r->pool, r->pool, &temptree);
1853- if (errmsg == NULL)
1854- errmsg = ap_walk_config(temptree, &parms, dc);
1855-
1856- ap_cfg_closefile(f);
1857-
1858- if (errmsg) {
1859- ap_log_rerror(APLOG_MARK, APLOG_ALERT, 0, r,
1860- "%s: %s", filename, errmsg);
1861- return HTTP_INTERNAL_SERVER_ERROR;
1862- }
1863-
1864- *result = dc;
1865- break;
1866- }
1867- else {
1868- if (!APR_STATUS_IS_ENOENT(status)
1869- && !APR_STATUS_IS_ENOTDIR(status)) {
1870- ap_log_rerror(APLOG_MARK, APLOG_CRIT, status, r,
1871- "%s pcfg_openfile: unable to check htaccess file, "
1872- "ensure it is readable",
1873- filename);
1874- apr_table_setn(r->notes, "error-notes",
1875- "Server unable to read htaccess file, denying "
1876- "access to be safe");
1877- return HTTP_FORBIDDEN;
1878- }
1879- }
1880- }
1881-
1882- /* cache it */
1883- new = apr_palloc(r->pool, sizeof(struct htaccess_result));
1884- new->dir = parms.path;
1885- new->override = override;
1886- new->override_opts = override_opts;
1887- new->htaccess = dc;
1888-
1889- /* add to head of list */
1890- new->next = r->htaccess;
1891- r->htaccess = new;
1892-
1893- return OK;
1894-}
1895-
1896-AP_CORE_DECLARE(const char *) ap_init_virtual_host(apr_pool_t *p,
1897- const char *hostname,
1898- server_rec *main_server,
1899- server_rec **ps)
1900-{
1901- server_rec *s = (server_rec *) apr_pcalloc(p, sizeof(server_rec));
1902-
1903- /* TODO: this crap belongs in http_core */
1904- s->process = main_server->process;
1905- s->server_admin = NULL;
1906- s->server_hostname = NULL;
1907- s->server_scheme = NULL;
1908- s->error_fname = NULL;
1909- s->timeout = 0;
1910- s->keep_alive_timeout = 0;
1911- s->keep_alive = -1;
1912- s->keep_alive_max = -1;
1913- s->error_log = main_server->error_log;
1914- s->loglevel = main_server->loglevel;
1915- /* useful default, otherwise we get a port of 0 on redirects */
1916- s->port = main_server->port;
1917- s->next = NULL;
1918-
1919- s->is_virtual = 1;
1920- s->names = apr_array_make(p, 4, sizeof(char **));
1921- s->wild_names = apr_array_make(p, 4, sizeof(char **));
1922-
1923- s->module_config = create_empty_config(p);
1924- s->lookup_defaults = ap_create_per_dir_config(p);
1925-
1926- s->limit_req_line = main_server->limit_req_line;
1927- s->limit_req_fieldsize = main_server->limit_req_fieldsize;
1928- s->limit_req_fields = main_server->limit_req_fields;
1929-
1930- *ps = s;
1931-
1932- return ap_parse_vhost_addrs(p, hostname, s);
1933-}
1934-
1935-
1936-AP_DECLARE(void) ap_fixup_virtual_hosts(apr_pool_t *p, server_rec *main_server)
1937-{
1938- server_rec *virt;
1939-
1940- for (virt = main_server->next; virt; virt = virt->next) {
1941- merge_server_configs(p, main_server->module_config,
1942- virt->module_config);
1943-
1944- virt->lookup_defaults =
1945- ap_merge_per_dir_configs(p, main_server->lookup_defaults,
1946- virt->lookup_defaults);
1947-
1948- if (virt->server_admin == NULL)
1949- virt->server_admin = main_server->server_admin;
1950-
1951- if (virt->timeout == 0)
1952- virt->timeout = main_server->timeout;
1953-
1954- if (virt->keep_alive_timeout == 0)
1955- virt->keep_alive_timeout = main_server->keep_alive_timeout;
1956-
1957- if (virt->keep_alive == -1)
1958- virt->keep_alive = main_server->keep_alive;
1959-
1960- if (virt->keep_alive_max == -1)
1961- virt->keep_alive_max = main_server->keep_alive_max;
1962-
1963- /* XXX: this is really something that should be dealt with by a
1964- * post-config api phase
1965- */
1966- ap_core_reorder_directories(p, virt);
1967- }
1968-
1969- ap_core_reorder_directories(p, main_server);
1970-}
1971-
1972-/*****************************************************************
1973- *
1974- * Getting *everything* configured...
1975- */
1976-
1977-static void init_config_globals(apr_pool_t *p)
1978-{
1979- /* Global virtual host hash bucket pointers. Init to null. */
1980- ap_init_vhost_config(p);
1981-}
1982-
1983-static server_rec *init_server_config(process_rec *process, apr_pool_t *p)
1984-{
1985- apr_status_t rv;
1986- server_rec *s = (server_rec *) apr_pcalloc(p, sizeof(server_rec));
1987-
1988- apr_file_open_stderr(&s->error_log, p);
1989- s->process = process;
1990- s->port = 0;
1991- s->server_admin = DEFAULT_ADMIN;
1992- s->server_hostname = NULL;
1993- s->server_scheme = NULL;
1994- s->error_fname = DEFAULT_ERRORLOG;
1995- s->loglevel = DEFAULT_LOGLEVEL;
1996- s->limit_req_line = DEFAULT_LIMIT_REQUEST_LINE;
1997- s->limit_req_fieldsize = DEFAULT_LIMIT_REQUEST_FIELDSIZE;
1998- s->limit_req_fields = DEFAULT_LIMIT_REQUEST_FIELDS;
1999- s->timeout = apr_time_from_sec(DEFAULT_TIMEOUT);
2000- s->keep_alive_timeout = apr_time_from_sec(DEFAULT_KEEPALIVE_TIMEOUT);
2001- s->keep_alive_max = DEFAULT_KEEPALIVE;
2002- s->keep_alive = 1;
2003- s->next = NULL;
2004- s->addrs = apr_pcalloc(p, sizeof(server_addr_rec));
2005-
2006- /* NOT virtual host; don't match any real network interface */
2007- rv = apr_sockaddr_info_get(&s->addrs->host_addr,
2008- NULL, APR_INET, 0, 0, p);
2009- ap_assert(rv == APR_SUCCESS); /* otherwise: bug or no storage */
2010-
2011- s->addrs->host_port = 0; /* matches any port */
2012- s->addrs->virthost = ""; /* must be non-NULL */
2013- s->names = s->wild_names = NULL;
2014-
2015- s->module_config = create_server_config(p, s);
2016- s->lookup_defaults = create_default_per_dir_config(p);
2017-
2018- return s;
2019-}
2020-
2021-
2022-AP_DECLARE(server_rec*) ap_read_config(process_rec *process, apr_pool_t *ptemp,
2023- const char *filename,
2024- ap_directive_t **conftree)
2025-{
2026- const char *confname, *error;
2027- apr_pool_t *p = process->pconf;
2028- server_rec *s = init_server_config(process, p);
2029-
2030- init_config_globals(p);
2031-
2032- /* All server-wide config files now have the SAME syntax... */
2033- error = process_command_config(s, ap_server_pre_read_config, conftree,
2034- p, ptemp);
2035- if (error) {
2036- ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_CRIT, 0, NULL, "%s: %s",
2037- ap_server_argv0, error);
2038- return NULL;
2039- }
2040-
2041- /* process_command_config may change the ServerRoot so
2042- * compute this config file name afterwards.
2043- */
2044- confname = ap_server_root_relative(p, filename);
2045-
2046- if (!confname) {
2047- ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_CRIT,
2048- APR_EBADPATH, NULL, "Invalid config file path %s",
2049- filename);
2050- return NULL;
2051- }
2052-
2053- error = ap_process_resource_config(s, confname, conftree, p, ptemp);
2054- if (error) {
2055- ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_CRIT, 0, NULL,
2056- "%s: %s", ap_server_argv0, error);
2057- return NULL;
2058- }
2059-
2060- error = process_command_config(s, ap_server_post_read_config, conftree,
2061- p, ptemp);
2062-
2063- if (error) {
2064- ap_log_error(APLOG_MARK, APLOG_STARTUP|APLOG_CRIT, 0, NULL, "%s: %s",
2065- ap_server_argv0, error);
2066- return NULL;
2067- }
2068-
2069- return s;
2070-}
2071-
2072-AP_DECLARE(void) ap_single_module_configure(apr_pool_t *p, server_rec *s,
2073- module *m)
2074-{
2075- if (m->create_server_config)
2076- ap_set_module_config(s->module_config, m,
2077- (*m->create_server_config)(p, s));
2078-
2079- if (m->create_dir_config)
2080- ap_set_module_config(s->lookup_defaults, m,
2081- (*m->create_dir_config)(p, NULL));
2082-}
2083-
2084-AP_DECLARE(void) ap_run_rewrite_args(process_rec *process)
2085-{
2086- module *m;
2087-
2088- for (m = ap_top_module; m; m = m->next) {
2089- if (m->rewrite_args) {
2090- (*m->rewrite_args)(process);
2091- }
2092- }
2093-}
2094-
2095-/********************************************************************
2096- * Configuration directives are restricted in terms of where they may
2097- * appear in the main configuration files and/or .htaccess files according
2098- * to the bitmask req_override in the command_rec structure.
2099- * If any of the overrides set in req_override are also allowed in the
2100- * context in which the command is read, then the command is allowed.
2101- * The context is determined as follows:
2102- *
2103- * inside *.conf --> override = (RSRC_CONF|OR_ALL)&~(OR_AUTHCFG|OR_LIMIT);
2104- * within <Directory> or <Location> --> override = OR_ALL|ACCESS_CONF;
2105- * within .htaccess --> override = AllowOverride for current directory;
2106- *
2107- * the result is, well, a rather confusing set of possibilities for when
2108- * a particular directive is allowed to be used. This procedure prints
2109- * in English where the given (pc) directive can be used.
2110- */
2111-static void show_overrides(const command_rec *pc, module *pm)
2112-{
2113- int n = 0;
2114-
2115- printf("\tAllowed in *.conf ");
2116- if ((pc->req_override & (OR_OPTIONS | OR_FILEINFO | OR_INDEXES))
2117- || ((pc->req_override & RSRC_CONF)
2118- && ((pc->req_override & (ACCESS_CONF | OR_AUTHCFG | OR_LIMIT))))) {
2119- printf("anywhere");
2120- }
2121- else if (pc->req_override & RSRC_CONF) {
2122- printf("only outside <Directory>, <Files> or <Location>");
2123- }
2124- else {
2125- printf("only inside <Directory>, <Files> or <Location>");
2126- }
2127-
2128- /* Warn if the directive is allowed inside <Directory> or .htaccess
2129- * but module doesn't support per-dir configuration
2130- */
2131- if ((pc->req_override & (OR_ALL | ACCESS_CONF)) && !pm->create_dir_config)
2132- printf(" [no per-dir config]");
2133-
2134- if (pc->req_override & OR_ALL) {
2135- printf(" and in .htaccess\n\twhen AllowOverride");
2136-
2137- if ((pc->req_override & OR_ALL) == OR_ALL) {
2138- printf(" isn't None");
2139- }
2140- else {
2141- printf(" includes ");
2142-
2143- if (pc->req_override & OR_AUTHCFG) {
2144- if (n++)
2145- printf(" or ");
2146-
2147- printf("AuthConfig");
2148- }
2149-
2150- if (pc->req_override & OR_LIMIT) {
2151- if (n++)
2152- printf(" or ");
2153-
2154- printf("Limit");
2155- }
2156-
2157- if (pc->req_override & OR_OPTIONS) {
2158- if (n++)
2159- printf(" or ");
2160-
2161- printf("Options");
2162- }
2163-
2164- if (pc->req_override & OR_FILEINFO) {
2165- if (n++)
2166- printf(" or ");
2167-
2168- printf("FileInfo");
2169- }
2170-
2171- if (pc->req_override & OR_INDEXES) {
2172- if (n++)
2173- printf(" or ");
2174-
2175- printf("Indexes");
2176- }
2177- }
2178- }
2179-
2180- printf("\n");
2181-}
2182-
2183-/* Show the preloaded configuration directives, the help string explaining
2184- * the directive arguments, in what module they are handled, and in
2185- * what parts of the configuration they are allowed. Used for httpd -L.
2186- */
2187-AP_DECLARE(void) ap_show_directives(void)
2188-{
2189- const command_rec *pc;
2190- int n;
2191-
2192- for (n = 0; ap_loaded_modules[n]; ++n) {
2193- for (pc = ap_loaded_modules[n]->cmds; pc && pc->name; ++pc) {
2194- printf("%s (%s)\n", pc->name, ap_loaded_modules[n]->name);
2195-
2196- if (pc->errmsg)
2197- printf("\t%s\n", pc->errmsg);
2198-
2199- show_overrides(pc, ap_loaded_modules[n]);
2200- }
2201- }
2202-}
2203-
2204-/* Show the preloaded module names. Used for httpd -l. */
2205-AP_DECLARE(void) ap_show_modules(void)
2206-{
2207- int n;
2208-
2209- printf("Compiled in modules:\n");
2210- for (n = 0; ap_loaded_modules[n]; ++n)
2211- printf(" %s\n", ap_loaded_modules[n]->name);
2212-}
2213-
2214-AP_DECLARE(const char *) ap_show_mpm(void)
2215-{
2216- return MPM_NAME;
2217-}
2218
2219=== removed directory '.pc/009_apache2_has_dso'
2220=== removed directory '.pc/009_apache2_has_dso/support'
2221=== removed file '.pc/009_apache2_has_dso/support/apxs.in'
2222--- .pc/009_apache2_has_dso/support/apxs.in 2011-12-29 12:09:14 +0000
2223+++ .pc/009_apache2_has_dso/support/apxs.in 1970-01-01 00:00:00 +0000
2224@@ -1,768 +0,0 @@
2225-#!@perlbin@ -w
2226-#
2227-# Licensed to the Apache Software Foundation (ASF) under one or more
2228-# contributor license agreements. See the NOTICE file distributed with
2229-# this work for additional information regarding copyright ownership.
2230-# The ASF licenses this file to You under the Apache License, Version 2.0
2231-# (the "License"); you may not use this file except in compliance with
2232-# the License. You may obtain a copy of the License at
2233-#
2234-# http://www.apache.org/licenses/LICENSE-2.0
2235-#
2236-# Unless required by applicable law or agreed to in writing, software
2237-# distributed under the License is distributed on an "AS IS" BASIS,
2238-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
2239-# See the License for the specific language governing permissions and
2240-# limitations under the License.
2241-
2242-require 5.004;
2243-use strict;
2244-package apxs;
2245-
2246-##
2247-## Configuration
2248-##
2249-
2250-my %config_vars = ();
2251-
2252-my $installbuilddir = "@exp_installbuilddir@";
2253-get_config_vars("$installbuilddir/config_vars.mk",\%config_vars);
2254-
2255-# read the configuration variables once
2256-
2257-my $prefix = get_vars("prefix");
2258-my $CFG_PREFIX = $prefix;
2259-my $exec_prefix = get_vars("exec_prefix");
2260-my $datadir = get_vars("datadir");
2261-my $localstatedir = get_vars("localstatedir");
2262-my $CFG_TARGET = get_vars("progname");
2263-my $CFG_SYSCONFDIR = get_vars("sysconfdir");
2264-my $CFG_CFLAGS = join ' ', map { get_vars($_) }
2265- qw(SHLTCFLAGS CFLAGS NOTEST_CPPFLAGS EXTRA_CPPFLAGS EXTRA_CFLAGS);
2266-my $includedir = get_vars("includedir");
2267-my $CFG_INCLUDEDIR = eval qq("$includedir");
2268-my $CFG_CC = get_vars("CC");
2269-my $libexecdir = get_vars("libexecdir");
2270-my $CFG_LIBEXECDIR = eval qq("$libexecdir");
2271-my $sbindir = get_vars("sbindir");
2272-my $CFG_SBINDIR = eval qq("$sbindir");
2273-my $ltflags = $ENV{'LTFLAGS'};
2274-$ltflags or $ltflags = "--silent";
2275-
2276-my %internal_vars = map {$_ => 1}
2277- qw(TARGET CC CFLAGS CFLAGS_SHLIB LD_SHLIB LDFLAGS_SHLIB LIBS_SHLIB
2278- PREFIX SBINDIR INCLUDEDIR LIBEXECDIR SYSCONFDIR);
2279-
2280-##
2281-## parse argument line
2282-##
2283-
2284-# defaults for parameters
2285-my $opt_n = '';
2286-my $opt_g = '';
2287-my $opt_c = 0;
2288-my $opt_o = '';
2289-my @opt_D = ();
2290-my @opt_I = ();
2291-my @opt_L = ();
2292-my @opt_l = ();
2293-my @opt_W = ();
2294-my @opt_S = ();
2295-my $opt_e = 0;
2296-my $opt_i = 0;
2297-my $opt_a = 0;
2298-my $opt_A = 0;
2299-my $opt_q = 0;
2300-my $opt_h = 0;
2301-my $opt_p = 0;
2302-
2303-# this subroutine is derived from Perl's getopts.pl with the enhancement of
2304-# the "+" metacharacter at the format string to allow a list to be built by
2305-# subsequent occurrences of the same option.
2306-sub Getopts {
2307- my ($argumentative, @ARGV) = @_;
2308- my $errs = 0;
2309- local $_;
2310-
2311- my @args = split / */, $argumentative;
2312- while (@ARGV && ($_ = $ARGV[0]) =~ /^-(.)(.*)/) {
2313- my ($first, $rest) = ($1,$2);
2314- if ($_ =~ m|^--$|) {
2315- shift @ARGV;
2316- last;
2317- }
2318- my $pos = index($argumentative,$first);
2319- if ($pos >= 0) {
2320- if ($pos < $#args && $args[$pos+1] eq ':') {
2321- shift @ARGV;
2322- if ($rest eq '') {
2323- unless (@ARGV) {
2324- error("Incomplete option: $first (needs an argument)");
2325- $errs++;
2326- }
2327- $rest = shift(@ARGV);
2328- }
2329- eval "\$opt_$first = \$rest;";
2330- }
2331- elsif ($pos < $#args && $args[$pos+1] eq '+') {
2332- shift @ARGV;
2333- if ($rest eq '') {
2334- unless (@ARGV) {
2335- error("Incomplete option: $first (needs an argument)");
2336- $errs++;
2337- }
2338- $rest = shift(@ARGV);
2339- }
2340- eval "push(\@opt_$first, \$rest);";
2341- }
2342- else {
2343- eval "\$opt_$first = 1";
2344- if ($rest eq '') {
2345- shift(@ARGV);
2346- }
2347- else {
2348- $ARGV[0] = "-$rest";
2349- }
2350- }
2351- }
2352- else {
2353- error("Unknown option: $first");
2354- $errs++;
2355- if ($rest ne '') {
2356- $ARGV[0] = "-$rest";
2357- }
2358- else {
2359- shift(@ARGV);
2360- }
2361- }
2362- }
2363- return ($errs == 0, @ARGV);
2364-}
2365-
2366-sub usage {
2367- print STDERR "Usage: apxs -g [-S <var>=<val>] -n <modname>\n";
2368- print STDERR " apxs -q [-S <var>=<val>] <query> ...\n";
2369- print STDERR " apxs -c [-S <var>=<val>] [-o <dsofile>] [-D <name>[=<value>]]\n";
2370- print STDERR " [-I <incdir>] [-L <libdir>] [-l <libname>] [-Wc,<flags>]\n";
2371- print STDERR " [-Wl,<flags>] [-p] <files> ...\n";
2372- print STDERR " apxs -i [-S <var>=<val>] [-a] [-A] [-n <modname>] <dsofile> ...\n";
2373- print STDERR " apxs -e [-S <var>=<val>] [-a] [-A] [-n <modname>] <dsofile> ...\n";
2374- exit(1);
2375-}
2376-
2377-# option handling
2378-my $rc;
2379-($rc, @ARGV) = &Getopts("qn:gco:I+D+L+l+W+S+eiaAp", @ARGV);
2380-&usage if ($rc == 0);
2381-&usage if ($#ARGV == -1 and not $opt_g);
2382-&usage if (not $opt_q and not ($opt_g and $opt_n) and not $opt_i and not $opt_c and not $opt_e);
2383-
2384-# argument handling
2385-my @args = @ARGV;
2386-my $name = 'unknown';
2387-$name = $opt_n if ($opt_n ne '');
2388-
2389-if (@opt_S) {
2390- my ($opt_S);
2391- foreach $opt_S (@opt_S) {
2392- if ($opt_S =~ m/^([^=]+)=(.*)$/) {
2393- my ($var) = $1;
2394- my ($val) = $2;
2395- my $oldval = eval "\$CFG_$var";
2396-
2397- unless ($var and $oldval) {
2398- print STDERR "apxs:Error: no config variable $var\n";
2399- &usage;
2400- }
2401-
2402- eval "\$CFG_${var}=\"${val}\"";
2403- } else {
2404- print STDERR "apxs:Error: malformatted -S option\n";
2405- &usage;
2406- }
2407- }
2408-}
2409-
2410-##
2411-## Initial shared object support check
2412-##
2413-my $httpd = get_vars("sbindir") . "/" . get_vars("progname");
2414-$httpd = eval qq("$httpd");
2415-$httpd = eval qq("$httpd");
2416-my $envvars = get_vars("sbindir") . "/envvars";
2417-$envvars = eval qq("$envvars");
2418-$envvars = eval qq("$envvars");
2419-
2420-#allow apxs to be run from the source tree, before installation
2421-if ($0 =~ m:support/apxs$:) {
2422- ($httpd = $0) =~ s:support/apxs$::;
2423-}
2424-
2425-unless (-x "$httpd") {
2426- error("$httpd not found or not executable");
2427- exit 1;
2428-}
2429-
2430-unless (grep /mod_so/, `. $envvars && $httpd -l`) {
2431- error("Sorry, no shared object support for Apache");
2432- error("available under your platform. Make sure");
2433- error("the Apache module mod_so is compiled into");
2434- error("your server binary `$httpd'.");
2435- exit 1;
2436-}
2437-
2438-sub get_config_vars{
2439- my ($file, $rh_config) = @_;
2440-
2441- open IN, $file or die "cannot open $file: $!";
2442- while (<IN>){
2443- if (/^\s*(.*?)\s*=\s*(.*)$/){
2444- $rh_config->{$1} = $2;
2445- }
2446- }
2447- close IN;
2448-}
2449-
2450-sub get_vars {
2451- my $result = '';
2452- my $ok = 0;
2453- my $arg;
2454- foreach $arg (@_) {
2455- if (exists $config_vars{$arg} or exists $config_vars{lc $arg}) {
2456- my $val = exists $config_vars{$arg}
2457- ? $config_vars{$arg}
2458- : $config_vars{lc $arg};
2459- $val =~ s/[()]//g;
2460- $result .= eval "qq($val)" if defined $val;
2461- $result .= ";;";
2462- $ok = 1;
2463- }
2464- if (not $ok) {
2465- if (exists $internal_vars{$arg} or exists $internal_vars{lc $arg}) {
2466- my $val = exists $internal_vars{$arg} ? $arg : lc $arg;
2467- $val = eval "\$CFG_$val";
2468- $result .= eval "qq($val)" if defined $val;
2469- $result .= ";;";
2470- $ok = 1;
2471- }
2472- if (not $ok) {
2473- error("Invalid query string `$arg'");
2474- exit(1);
2475- }
2476- }
2477- }
2478- $result =~ s|;;$||;
2479- $result =~ s|:| |;
2480- return $result;
2481-}
2482-
2483-##
2484-## Operation
2485-##
2486-
2487-# helper function for executing a list of
2488-# system command with return code checks
2489-sub execute_cmds {
2490- my (@cmds) = @_;
2491- my ($cmd, $rc);
2492-
2493- foreach $cmd (@cmds) {
2494- notice($cmd);
2495- $rc = system $cmd;
2496- if ($rc) {
2497- error(sprintf "Command failed with rc=%d\n", $rc << 8);
2498- exit 1 ;
2499- }
2500- }
2501-}
2502-
2503-if ($opt_g) {
2504- ##
2505- ## SAMPLE MODULE SOURCE GENERATION
2506- ##
2507-
2508- if (-d $name) {
2509- error("Directory `$name' already exists. Remove first");
2510- exit(1);
2511- }
2512-
2513- my $data = join('', <DATA>);
2514- $data =~ s|%NAME%|$name|sg;
2515- $data =~ s|%TARGET%|$CFG_TARGET|sg;
2516- $data =~ s|%PREFIX%|$prefix|sg;
2517- $data =~ s|%INSTALLBUILDDIR%|$installbuilddir|sg;
2518-
2519- my ($mkf, $mods, $src) = ($data =~ m|^(.+)-=#=-\n(.+)-=#=-\n(.+)|s);
2520-
2521- notice("Creating [DIR] $name");
2522- system("mkdir $name");
2523- notice("Creating [FILE] $name/Makefile");
2524- open(FP, ">${name}/Makefile") || die;
2525- print FP $mkf;
2526- close(FP);
2527- notice("Creating [FILE] $name/modules.mk");
2528- open(FP, ">${name}/modules.mk") || die;
2529- print FP $mods;
2530- close(FP);
2531- notice("Creating [FILE] $name/mod_$name.c");
2532- open(FP, ">${name}/mod_${name}.c") || die;
2533- print FP $src;
2534- close(FP);
2535- notice("Creating [FILE] $name/.deps");
2536- system("touch ${name}/.deps");
2537-
2538- exit(0);
2539-}
2540-
2541-
2542-if ($opt_q) {
2543- ##
2544- ## QUERY INFORMATION
2545- ##
2546- my $result = get_vars(@args);
2547- print "$result\n";
2548-}
2549-
2550-my $apr_config = get_vars("APR_CONFIG");
2551-
2552-if (! -x "$apr_config") {
2553- error("$apr_config not found!");
2554- exit(1);
2555-}
2556-
2557-my $apu_config = get_vars("APU_CONFIG");
2558-
2559-if (! -x "$apu_config") {
2560- error("$apu_config not found!");
2561- exit(1);
2562-}
2563-
2564-my $libtool = `$apr_config --apr-libtool`;
2565-chomp($libtool);
2566-
2567-my $apr_includedir = `$apr_config --includes`;
2568-chomp($apr_includedir);
2569-my $apu_includedir = `$apu_config --includes`;
2570-chomp($apu_includedir);
2571-
2572-if ($opt_c) {
2573- ##
2574- ## SHARED OBJECT COMPILATION
2575- ##
2576-
2577- # split files into sources and objects
2578- my @srcs = ();
2579- my @objs = ();
2580- my $f;
2581- foreach $f (@args) {
2582- if ($f =~ m|\.c$|) {
2583- push(@srcs, $f);
2584- }
2585- else {
2586- push(@objs, $f);
2587- }
2588- }
2589-
2590- # determine output file
2591- my $dso_file;
2592- if ($opt_o eq '') {
2593- if ($#srcs > -1) {
2594- $dso_file = $srcs[0];
2595- $dso_file =~ s|\.[^.]+$|.la|;
2596- }
2597- elsif ($#objs > -1) {
2598- $dso_file = $objs[0];
2599- $dso_file =~ s|\.[^.]+$|.la|;
2600- }
2601- else {
2602- $dso_file = "mod_unknown.la";
2603- }
2604- }
2605- else {
2606- $dso_file = $opt_o;
2607- $dso_file =~ s|\.[^.]+$|.la|;
2608- }
2609-
2610- # create compilation commands
2611- my @cmds = ();
2612- my $opt = '';
2613- my ($opt_Wc, $opt_I, $opt_D);
2614- foreach $opt_Wc (@opt_W) {
2615- $opt .= "$1 " if ($opt_Wc =~ m|^\s*c,(.*)$|);
2616- }
2617- foreach $opt_I (@opt_I) {
2618- $opt .= "-I$opt_I ";
2619- }
2620- foreach $opt_D (@opt_D) {
2621- $opt .= "-D$opt_D ";
2622- }
2623- my $cflags = "$CFG_CFLAGS";
2624- my $s;
2625- my $mod;
2626- foreach $s (@srcs) {
2627- my $slo = $s;
2628- $slo =~ s|\.c$|.slo|;
2629- my $lo = $s;
2630- $lo =~ s|\.c$|.lo|;
2631- my $la = $s;
2632- $la =~ s|\.c$|.la|;
2633- my $o = $s;
2634- $o =~ s|\.c$|.o|;
2635- push(@cmds, "$libtool $ltflags --mode=compile $CFG_CC $cflags -I$CFG_INCLUDEDIR $apr_includedir $apu_includedir $opt -c -o $lo $s && touch $slo");
2636- unshift(@objs, $lo);
2637- }
2638-
2639- # create link command
2640- my $o;
2641- my $lo;
2642- foreach $o (@objs) {
2643- $lo .= " $o";
2644- }
2645- my ($opt_Wl, $opt_L, $opt_l);
2646- $opt = '';
2647- foreach $opt_Wl (@opt_W) {
2648- $opt .= "$1 " if ($opt_Wl =~ m|^\s*l,(.*)$|);
2649- }
2650- foreach $opt_L (@opt_L) {
2651- $opt .= " -L$opt_L";
2652- }
2653- foreach $opt_l (@opt_l) {
2654- $opt .= " -l$opt_l";
2655- }
2656-
2657- if ($opt_p == 1) {
2658-
2659- my $apr_libs=`$apr_config --cflags --ldflags --link-libtool --libs`;
2660- chomp($apr_libs);
2661- my $apu_libs=`$apu_config --ldflags --link-libtool --libs`;
2662- chomp($apu_libs);
2663-
2664- $opt .= " ".$apu_libs." ".$apr_libs;
2665- }
2666- else {
2667- my $apr_ldflags=`$apr_config --ldflags`;
2668- chomp($apr_ldflags);
2669- $opt .= " -rpath $CFG_LIBEXECDIR -module -avoid-version $apr_ldflags";
2670- }
2671-
2672- push(@cmds, "$libtool $ltflags --mode=link $CFG_CC -o $dso_file $opt $lo");
2673-
2674- # execute the commands
2675- &execute_cmds(@cmds);
2676-
2677- # allow one-step compilation and installation
2678- if ($opt_i or $opt_e) {
2679- @args = ( $dso_file );
2680- }
2681-}
2682-
2683-if ($opt_i or $opt_e) {
2684- ##
2685- ## SHARED OBJECT INSTALLATION
2686- ##
2687-
2688- # determine installation commands
2689- # and corresponding LoadModule directive
2690- my @lmd = ();
2691- my @cmds = ();
2692- my $f;
2693- foreach $f (@args) {
2694- # ack all potential gcc, hp/ux, win32+os2+aix and os/x extensions
2695- if ($f !~ m#(\.so$|\.la$|\.sl$|\.dll$|\.dylib$|)#) {
2696- error("file $f is not a shared object");
2697- exit(1);
2698- }
2699- my $t = $f;
2700- $t =~ s|^.+/([^/]+)$|$1|;
2701- # use .so unambigiously for installed shared library modules
2702- $t =~ s|\.[^./\\]+$|\.so|;
2703- if ($opt_i) {
2704- push(@cmds, "$installbuilddir/instdso.sh SH_LIBTOOL='" .
2705- "$libtool' $f $CFG_LIBEXECDIR");
2706- push(@cmds, "chmod 755 $CFG_LIBEXECDIR/$t");
2707- }
2708-
2709- # determine module symbolname and filename
2710- my $filename = '';
2711- if ($name eq 'unknown') {
2712- $name = '';
2713- my $base = $f;
2714- $base =~ s|\.[^.]+$||;
2715- if (-f "$base.c") {
2716- open(FP, "<$base.c");
2717- my $content = join('', <FP>);
2718- close(FP);
2719- if ($content =~ m|.*module\s+(?:AP_MODULE_DECLARE_DATA\s+)?([a-zA-Z0-9_]+)_module\s*=\s*.*|s) {
2720- $name = "$1";
2721- $filename = "$base.c";
2722- $filename =~ s|^[^/]+/||;
2723- }
2724- }
2725- if ($name eq '') {
2726- if ($base =~ m|.*mod_([a-zA-Z0-9_]+)\..+|) {
2727- $name = "$1";
2728- $filename = $base;
2729- $filename =~ s|^[^/]+/||;
2730- }
2731- }
2732- if ($name eq '') {
2733- error("Sorry, cannot determine bootstrap symbol name");
2734- error("Please specify one with option `-n'");
2735- exit(1);
2736- }
2737- }
2738- if ($filename eq '') {
2739- $filename = "mod_${name}.c";
2740- }
2741- my $dir = $CFG_LIBEXECDIR;
2742- $dir =~ s|^$CFG_PREFIX/?||;
2743- $dir =~ s|(.)$|$1/|;
2744- $t =~ s|\.la$|.so|;
2745- push(@lmd, sprintf("LoadModule %-18s %s", "${name}_module", "$dir$t"));
2746- }
2747-
2748- # execute the commands
2749- &execute_cmds(@cmds);
2750-
2751- # activate module via LoadModule/AddModule directive
2752- if ($opt_a or $opt_A) {
2753- if (not -f "$CFG_SYSCONFDIR/$CFG_TARGET.conf") {
2754- error("Config file $CFG_SYSCONFDIR/$CFG_TARGET.conf not found");
2755- exit(1);
2756- }
2757-
2758- open(FP, "<$CFG_SYSCONFDIR/$CFG_TARGET.conf") || die;
2759- my $content = join('', <FP>);
2760- close(FP);
2761-
2762- if ($content !~ m|\n#?\s*LoadModule\s+|) {
2763- error("Activation failed for custom $CFG_SYSCONFDIR/$CFG_TARGET.conf file.");
2764- error("At least one `LoadModule' directive already has to exist.");
2765- exit(1);
2766- }
2767-
2768- my $lmd;
2769- my $c = '';
2770- $c = '#' if ($opt_A);
2771- foreach $lmd (@lmd) {
2772- my $what = $opt_A ? "preparing" : "activating";
2773- my $lmd_re = $lmd;
2774- $lmd_re =~ s/\s+/\\s+/g;
2775-
2776- if ($content !~ m|\n#?\s*$lmd_re|) {
2777- # check for open <containers>, so that the new LoadModule
2778- # directive always appears *outside* of an <container>.
2779-
2780- my $before = ($content =~ m|^(.*\n)#?\s*LoadModule\s+[^\n]+\n|s)[0];
2781-
2782- # the '()=' trick forces list context and the scalar
2783- # assignment counts the number of list members (aka number
2784- # of matches) then
2785- my $cntopen = () = ($before =~ m|^\s*<[^/].*$|mg);
2786- my $cntclose = () = ($before =~ m|^\s*</.*$|mg);
2787-
2788- if ($cntopen == $cntclose) {
2789- # fine. Last LoadModule is contextless.
2790- $content =~ s|^(.*\n#?\s*LoadModule\s+[^\n]+\n)|$1$c$lmd\n|s;
2791- }
2792- elsif ($cntopen < $cntclose) {
2793- error('Configuration file is not valid. There are sections'
2794- . ' closed before opened.');
2795- exit(1);
2796- }
2797- else {
2798- # put our cmd after the section containing the last
2799- # LoadModule.
2800- my $found =
2801- $content =~ s!\A ( # string and capture start
2802- (?:(?:
2803- ^\s* # start of conf line with a
2804- (?:[^<]|<[^/]) # directive which does not
2805- # start with '</'
2806-
2807- .*(?:$)\n # rest of the line.
2808- # the '$' is in parentheses
2809- # to avoid misinterpreting
2810- # the string "$\" as
2811- # perl variable.
2812-
2813- )* # catch as much as possible
2814- # of such lines. (including
2815- # zero)
2816-
2817- ^\s*</.*(?:$)\n? # after the above, we
2818- # expect a config line with
2819- # a closing container (</)
2820-
2821- ) {$cntopen} # the whole pattern (bunch
2822- # of lines that end up with
2823- # a closing directive) must
2824- # be repeated $cntopen
2825- # times. That's it.
2826- # Simple, eh? ;-)
2827-
2828- ) # capture end
2829- !$1$c$lmd\n!mx;
2830-
2831- unless ($found) {
2832- error('Configuration file is not valid. There are '
2833- . 'sections opened and not closed.');
2834- exit(1);
2835- }
2836- }
2837- } else {
2838- # replace already existing LoadModule line
2839- $content =~ s|^(.*\n)#?\s*$lmd_re[^\n]*\n|$1$c$lmd\n|s;
2840- }
2841- $lmd =~ m|LoadModule\s+(.+?)_module.*|;
2842- notice("[$what module `$1' in $CFG_SYSCONFDIR/$CFG_TARGET.conf]");
2843- }
2844- if (@lmd) {
2845- if (open(FP, ">$CFG_SYSCONFDIR/$CFG_TARGET.conf.new")) {
2846- print FP $content;
2847- close(FP);
2848- system("cp $CFG_SYSCONFDIR/$CFG_TARGET.conf $CFG_SYSCONFDIR/$CFG_TARGET.conf.bak && " .
2849- "cp $CFG_SYSCONFDIR/$CFG_TARGET.conf.new $CFG_SYSCONFDIR/$CFG_TARGET.conf && " .
2850- "rm $CFG_SYSCONFDIR/$CFG_TARGET.conf.new");
2851- } else {
2852- notice("unable to open configuration file");
2853- }
2854- }
2855- }
2856-}
2857-
2858-sub error{
2859- print STDERR "apxs:Error: $_[0].\n";
2860-}
2861-
2862-sub notice{
2863- print STDERR "$_[0]\n";
2864-}
2865-
2866-##EOF##
2867-__DATA__
2868-##
2869-## Makefile -- Build procedure for sample %NAME% Apache module
2870-## Autogenerated via ``apxs -n %NAME% -g''.
2871-##
2872-
2873-builddir=.
2874-top_srcdir=%PREFIX%
2875-top_builddir=%PREFIX%
2876-include %INSTALLBUILDDIR%/special.mk
2877-
2878-# the used tools
2879-APXS=apxs
2880-APACHECTL=apachectl
2881-
2882-# additional defines, includes and libraries
2883-#DEFS=-Dmy_define=my_value
2884-#INCLUDES=-Imy/include/dir
2885-#LIBS=-Lmy/lib/dir -lmylib
2886-
2887-# the default target
2888-all: local-shared-build
2889-
2890-# install the shared object file into Apache
2891-install: install-modules-yes
2892-
2893-# cleanup
2894-clean:
2895- -rm -f mod_%NAME%.o mod_%NAME%.lo mod_%NAME%.slo mod_%NAME%.la
2896-
2897-# simple test
2898-test: reload
2899- lynx -mime_header http://localhost/%NAME%
2900-
2901-# install and activate shared object by reloading Apache to
2902-# force a reload of the shared object file
2903-reload: install restart
2904-
2905-# the general Apache start/restart/stop
2906-# procedures
2907-start:
2908- $(APACHECTL) start
2909-restart:
2910- $(APACHECTL) restart
2911-stop:
2912- $(APACHECTL) stop
2913-
2914--=#=-
2915-mod_%NAME%.la: mod_%NAME%.slo
2916- $(SH_LINK) -rpath $(libexecdir) -module -avoid-version mod_%NAME%.lo
2917-DISTCLEAN_TARGETS = modules.mk
2918-shared = mod_%NAME%.la
2919--=#=-
2920-/*
2921-** mod_%NAME%.c -- Apache sample %NAME% module
2922-** [Autogenerated via ``apxs -n %NAME% -g'']
2923-**
2924-** To play with this sample module first compile it into a
2925-** DSO file and install it into Apache's modules directory
2926-** by running:
2927-**
2928-** $ apxs -c -i mod_%NAME%.c
2929-**
2930-** Then activate it in Apache's %TARGET%.conf file for instance
2931-** for the URL /%NAME% in as follows:
2932-**
2933-** # %TARGET%.conf
2934-** LoadModule %NAME%_module modules/mod_%NAME%.so
2935-** <Location /%NAME%>
2936-** SetHandler %NAME%
2937-** </Location>
2938-**
2939-** Then after restarting Apache via
2940-**
2941-** $ apachectl restart
2942-**
2943-** you immediately can request the URL /%NAME% and watch for the
2944-** output of this module. This can be achieved for instance via:
2945-**
2946-** $ lynx -mime_header http://localhost/%NAME%
2947-**
2948-** The output should be similar to the following one:
2949-**
2950-** HTTP/1.1 200 OK
2951-** Date: Tue, 31 Mar 1998 14:42:22 GMT
2952-** Server: Apache/1.3.4 (Unix)
2953-** Connection: close
2954-** Content-Type: text/html
2955-**
2956-** The sample page from mod_%NAME%.c
2957-*/
2958-
2959-#include "httpd.h"
2960-#include "http_config.h"
2961-#include "http_protocol.h"
2962-#include "ap_config.h"
2963-
2964-/* The sample content handler */
2965-static int %NAME%_handler(request_rec *r)
2966-{
2967- if (strcmp(r->handler, "%NAME%")) {
2968- return DECLINED;
2969- }
2970- r->content_type = "text/html";
2971-
2972- if (!r->header_only)
2973- ap_rputs("The sample page from mod_%NAME%.c\n", r);
2974- return OK;
2975-}
2976-
2977-static void %NAME%_register_hooks(apr_pool_t *p)
2978-{
2979- ap_hook_handler(%NAME%_handler, NULL, NULL, APR_HOOK_MIDDLE);
2980-}
2981-
2982-/* Dispatch list for API hooks */
2983-module AP_MODULE_DECLARE_DATA %NAME%_module = {
2984- STANDARD20_MODULE_STUFF,
2985- NULL, /* create per-dir config structures */
2986- NULL, /* merge per-dir config structures */
2987- NULL, /* create per-server config structures */
2988- NULL, /* merge per-server config structures */
2989- NULL, /* table of config file commands */
2990- %NAME%_register_hooks /* register hooks */
2991-};
2992-
2993
2994=== removed directory '.pc/010_fhs_compliance'
2995=== removed file '.pc/010_fhs_compliance/config.layout'
2996--- .pc/010_fhs_compliance/config.layout 2011-12-29 12:09:14 +0000
2997+++ .pc/010_fhs_compliance/config.layout 1970-01-01 00:00:00 +0000
2998@@ -1,324 +0,0 @@
2999-##
3000-## config.layout -- Pre-defined Installation Path Layouts
3001-##
3002-## Hints:
3003-## - layouts can be loaded with configure's --enable-layout=ID option
3004-## - when no --enable-layout option is given, the default layout is `Apache'
3005-## - a trailing plus character (`+') on paths is replaced with a
3006-## `/<target>' suffix where <target> is currently hardcoded to 'apache2'.
3007-## (This may become a configurable parameter at some point.)
3008-##
3009-
3010-# Classical Apache path layout.
3011-<Layout Apache>
3012- prefix: /usr/local/apache2
3013- exec_prefix: ${prefix}
3014- bindir: ${exec_prefix}/bin
3015- sbindir: ${exec_prefix}/bin
3016- libdir: ${exec_prefix}/lib
3017- libexecdir: ${exec_prefix}/modules
3018- mandir: ${prefix}/man
3019- sysconfdir: ${prefix}/conf
3020- datadir: ${prefix}
3021- installbuilddir: ${datadir}/build
3022- errordir: ${datadir}/error
3023- iconsdir: ${datadir}/icons
3024- htdocsdir: ${datadir}/htdocs
3025- manualdir: ${datadir}/manual
3026- cgidir: ${datadir}/cgi-bin
3027- includedir: ${prefix}/include
3028- localstatedir: ${prefix}
3029- runtimedir: ${localstatedir}/logs
3030- logfiledir: ${localstatedir}/logs
3031- proxycachedir: ${localstatedir}/proxy
3032-</Layout>
3033-
3034-# GNU standards conforming path layout.
3035-# See FSF's GNU project `make-stds' document for details.
3036-<Layout GNU>
3037- prefix: /usr/local
3038- exec_prefix: ${prefix}
3039- bindir: ${exec_prefix}/bin
3040- sbindir: ${exec_prefix}/sbin
3041- libdir: ${exec_prefix}/lib
3042- libexecdir: ${exec_prefix}/libexec
3043- mandir: ${prefix}/man
3044- sysconfdir: ${prefix}/etc+
3045- datadir: ${prefix}/share+
3046- installbuilddir: ${datadir}/build
3047- errordir: ${datadir}/error
3048- iconsdir: ${datadir}/icons
3049- htdocsdir: ${datadir}/htdocs
3050- manualdir: ${datadir}/manual
3051- cgidir: ${datadir}/cgi-bin
3052- includedir: ${prefix}/include+
3053- localstatedir: ${prefix}/var+
3054- runtimedir: ${localstatedir}/run
3055- logfiledir: ${localstatedir}/log
3056- proxycachedir: ${localstatedir}/proxy
3057-</Layout>
3058-
3059-# Mac OS X Server (Rhapsody)
3060-<Layout Mac OS X Server>
3061- prefix: /Local/Library/WebServer
3062- exec_prefix: /usr
3063- bindir: ${exec_prefix}/bin
3064- sbindir: ${exec_prefix}/sbin
3065- libdir: ${exec_prefix}/lib
3066- libexecdir: /System/Library/Apache/Modules
3067- mandir: ${exec_prefix}/share/man
3068- sysconfdir: ${prefix}/Configuration
3069- datadir: ${prefix}
3070- installbuilddir: /System/Library/Apache/Build
3071- errordir: /System/Library/Apache/Error
3072- iconsdir: /System/Library/Apache/Icons
3073- manualdir: /System/Library/Apache/Manual
3074- htdocsdir: ${datadir}/Documents
3075- cgidir: ${datadir}/CGI-Executables
3076- includedir: /System/Library/Frameworks/Apache.framework/Versions/2.0/Headers
3077- localstatedir: /var
3078- runtimedir: ${prefix}/Logs
3079- logfiledir: ${prefix}/Logs
3080- proxycachedir: ${prefix}/ProxyCache
3081-</Layout>
3082-
3083-# Darwin/Mac OS Layout
3084-<Layout Darwin>
3085- prefix: /usr
3086- exec_prefix: ${prefix}
3087- bindir: ${exec_prefix}/bin
3088- sbindir: ${exec_prefix}/sbin
3089- libdir: ${exec_prefix}/lib
3090- libexecdir: ${exec_prefix}/libexec+
3091- mandir: ${prefix}/share/man
3092- datadir: /Library/WebServer
3093- sysconfdir: /etc+
3094- installbuilddir: ${prefix}/share/httpd/build
3095- errordir: ${prefix}/share/httpd/error
3096- iconsdir: ${prefix}/share/httpd/icons
3097- htdocsdir: ${datadir}/Documents
3098- manualdir: ${datadir}/share/httpd/manual
3099- cgidir: ${datadir}/CGI-Executables
3100- includedir: ${prefix}/include+
3101- localstatedir: /var
3102- runtimedir: ${localstatedir}/run
3103- logfiledir: ${localstatedir}/log+
3104- proxycachedir: ${runtimedir}/proxy
3105-</Layout>
3106-
3107-# Red Hat Linux 7.x layout
3108-<Layout RedHat>
3109- prefix: /usr
3110- exec_prefix: ${prefix}
3111- bindir: ${prefix}/bin
3112- sbindir: ${prefix}/sbin
3113- libdir: ${prefix}/lib
3114- libexecdir: ${prefix}/lib/apache
3115- mandir: ${prefix}/man
3116- sysconfdir: /etc/httpd/conf
3117- datadir: /var/www
3118- installbuilddir: ${datadir}/build
3119- errordir: ${datadir}/error
3120- iconsdir: ${datadir}/icons
3121- htdocsdir: ${datadir}/html
3122- manualdir: ${datadir}/manual
3123- cgidir: ${datadir}/cgi-bin
3124- includedir: ${prefix}/include/apache
3125- localstatedir: /var
3126- runtimedir: ${localstatedir}/run
3127- logfiledir: ${localstatedir}/log/httpd
3128- proxycachedir: ${localstatedir}/cache/httpd
3129-</Layout>
3130-
3131-# According to the /opt filesystem conventions
3132-<Layout opt>
3133- prefix: /opt/apache
3134- exec_prefix: ${prefix}
3135- bindir: ${exec_prefix}/bin
3136- sbindir: ${exec_prefix}/sbin
3137- libdir: ${exec_prefix}/lib
3138- libexecdir: ${exec_prefix}/libexec
3139- mandir: ${prefix}/man
3140- sysconfdir: /etc${prefix}
3141- datadir: ${prefix}/share
3142- installbuilddir: ${datadir}/build
3143- errordir: ${datadir}/error
3144- iconsdir: ${datadir}/icons
3145- htdocsdir: ${datadir}/htdocs
3146- manualdir: ${datadir}/manual
3147- cgidir: ${datadir}/cgi-bin
3148- includedir: ${prefix}/include
3149- localstatedir: /var${prefix}
3150- runtimedir: ${localstatedir}/run
3151- logfiledir: ${localstatedir}/logs
3152- proxycachedir: ${localstatedir}/proxy
3153-</Layout>
3154-
3155-# BeOS layout...
3156-<Layout beos>
3157- prefix: /boot/home/apache
3158- exec_prefix: ${prefix}
3159- bindir: ${exec_prefix}/bin
3160- sbindir: ${exec_prefix}/bin
3161- libdir: ${exec_prefix}/lib
3162- libexecdir: ${exec_prefix}/libexec
3163- mandir: ${prefix}/man
3164- sysconfdir: ${prefix}/conf
3165- datadir: ${prefix}
3166- installbuilddir: ${datadir}/build
3167- errordir: ${datadir}/error
3168- iconsdir: ${datadir}/icons
3169- htdocsdir: ${datadir}/htdocs
3170- manualdir: ${datadir}/manual
3171- cgidir: ${datadir}/cgi-bin
3172- includedir: ${prefix}/include
3173- localstatedir: ${prefix}
3174- runtimedir: ${localstatedir}/logs
3175- logfiledir: ${localstatedir}/logs
3176- proxycachedir: ${localstatedir}/proxy
3177-</Layout>
3178-
3179-# SuSE 6.x layout
3180-<Layout SuSE>
3181- prefix: /usr
3182- exec_prefix: ${prefix}
3183- bindir: ${prefix}/bin
3184- sbindir: ${prefix}/sbin
3185- libdir: ${prefix}/lib
3186- libexecdir: ${prefix}/lib/apache
3187- mandir: ${prefix}/share/man
3188- sysconfdir: /etc/httpd
3189- datadir: /usr/local/httpd
3190- installbuilddir: ${datadir}/build
3191- errordir: ${datadir}/error
3192- iconsdir: ${datadir}/icons
3193- htdocsdir: ${datadir}/htdocs
3194- manualdir: ${datadir}/manual
3195- cgidir: ${datadir}/cgi-bin
3196- includedir: ${prefix}/include/apache
3197- localstatedir: /var/lib/httpd
3198- runtimedir: /var/run
3199- logfiledir: /var/log/httpd
3200- proxycachedir: /var/cache/httpd
3201-</Layout>
3202-
3203-# BSD/OS layout
3204-<Layout BSDI>
3205- prefix: /var/www
3206- exec_prefix: /usr/contrib
3207- bindir: ${exec_prefix}/bin
3208- sbindir: ${exec_prefix}/bin
3209- libdir: ${exec_prefix}/lib
3210- libexecdir: ${exec_prefix}/libexec/apache
3211- mandir: ${exec_prefix}/man
3212- sysconfdir: ${prefix}/conf
3213- datadir: ${prefix}
3214- installbuilddir: ${datadir}/build
3215- errordir: ${datadir}/error
3216- iconsdir: ${datadir}/icons
3217- htdocsdir: ${datadir}/htdocs
3218- manualdir: ${datadir}/manual
3219- cgidir: ${datadir}/cgi-bin
3220- includedir: ${exec_prefix}/include/apache
3221- localstatedir: /var
3222- runtimedir: ${localstatedir}/run
3223- logfiledir: ${localstatedir}/log/httpd
3224- proxycachedir: ${localstatedir}/proxy
3225-</Layout>
3226-
3227-# Solaris 8 Layout
3228-<Layout Solaris>
3229- prefix: /usr/apache
3230- exec_prefix: ${prefix}
3231- bindir: ${exec_prefix}/bin
3232- sbindir: ${exec_prefix}/bin
3233- libdir: ${exec_prefix}/lib
3234- libexecdir: ${exec_prefix}/libexec
3235- mandir: ${exec_prefix}/man
3236- sysconfdir: /etc/apache
3237- datadir: /var/apache
3238- installbuilddir: ${datadir}/build
3239- errordir: ${datadir}/error
3240- iconsdir: ${datadir}/icons
3241- htdocsdir: ${datadir}/htdocs
3242- manualdir: ${datadir}/manual
3243- cgidir: ${datadir}/cgi-bin
3244- includedir: ${exec_prefix}/include
3245- localstatedir: ${prefix}
3246- runtimedir: /var/run
3247- logfiledir: ${datadir}/logs
3248- proxycachedir: ${datadir}/proxy
3249-</Layout>
3250-
3251-# OpenBSD Layout
3252-<Layout OpenBSD>
3253- prefix: /var/www
3254- exec_prefix: /usr
3255- bindir: ${exec_prefix}/bin
3256- sbindir: ${exec_prefix}/sbin
3257- libdir: ${exec_prefix}/lib
3258- libexecdir: ${exec_prefix}/lib/apache/modules
3259- mandir: ${exec_prefix}/share/man
3260- sysconfdir: ${prefix}/conf
3261- datadir: ${prefix}
3262- installbuilddir: ${prefix}/build
3263- errordir: ${prefix}/error
3264- iconsdir: ${prefix}/icons
3265- htdocsdir: ${prefix}/htdocs
3266- manualdir: ${datadir}/manual
3267- cgidir: ${prefix}/cgi-bin
3268- includedir: ${exec_prefix}/lib/apache/include
3269- localstatedir: ${prefix}
3270- runtimedir: ${prefix}/logs
3271- logfiledir: ${prefix}/logs
3272- proxycachedir: ${prefix}/proxy
3273-</Layout>
3274-
3275-# FreeBSD Layout
3276-<Layout FreeBSD>
3277- prefix: /usr/local
3278- exec_prefix: ${prefix}
3279- bindir: ${exec_prefix}/bin
3280- sbindir: ${exec_prefix}/sbin
3281- libdir: ${exec_prefix}/lib
3282- libexecdir: ${exec_prefix}/libexec/apache2
3283- mandir: ${prefix}/man
3284- sysconfdir: ${prefix}/etc/apache2
3285- datadir: ${prefix}/www
3286- installbuilddir: ${prefix}/share/apache2/build
3287- errordir: ${datadir}/error
3288- iconsdir: ${datadir}/icons
3289- htdocsdir: ${datadir}/data
3290- manualdir: ${prefix}/share/doc/apache2
3291- cgidir: ${datadir}/cgi-bin
3292- includedir: ${prefix}/include/apache2
3293- localstatedir: /var
3294- runtimedir: ${localstatedir}/run
3295- logfiledir: ${localstatedir}/log
3296- proxycachedir: ${datadir}/proxy
3297-</Layout>
3298-
3299-# Debian layout
3300-<Layout Debian>
3301- prefix:
3302- exec_prefix: ${prefix}/usr
3303- bindir: ${exec_prefix}/bin
3304- sbindir: ${exec_prefix}/sbin
3305- libdir: ${exec_prefix}/lib
3306- libexecdir: ${exec_prefix}/lib/apache2/modules
3307- mandir: ${exec_prefix}/share/man
3308- sysconfdir: ${prefix}/etc/apache2
3309- datadir: ${exec_prefix}/share/apache2
3310- iconsdir: ${datadir}/icons
3311- htdocsdir: ${prefix}/usr/share/apache2/default-site/htdocs
3312- manualdir: ${htdocsdir}/manual
3313- cgidir: ${prefix}/usr/lib/cgi-bin
3314- includedir: ${exec_prefix}/include/apache2
3315- localstatedir: ${prefix}/var/run
3316- runtimedir: ${prefix}/var/run
3317- logfiledir: ${prefix}/var/log/apache2
3318- proxycachedir: ${prefix}/var/cache/apache2/proxy
3319- infodir: ${exec_prefix}/share/info
3320- installbuilddir: ${prefix}/etc/apache2/build
3321- errordir: ${datadir}/error
3322-</Layout>
3323
3324=== removed file '.pc/010_fhs_compliance/configure'
3325--- .pc/010_fhs_compliance/configure 2011-12-29 12:09:14 +0000
3326+++ .pc/010_fhs_compliance/configure 1970-01-01 00:00:00 +0000
3327@@ -1,20482 +0,0 @@
3328-#! /bin/sh
3329-# Guess values for system-dependent variables and create Makefiles.
3330-# Generated by GNU Autoconf 2.64.
3331-#
3332-# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
3333-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software
3334-# Foundation, Inc.
3335-#
3336-# This configure script is free software; the Free Software Foundation
3337-# gives unlimited permission to copy, distribute and modify it.
3338-## -------------------- ##
3339-## M4sh Initialization. ##
3340-## -------------------- ##
3341-
3342-# Be more Bourne compatible
3343-DUALCASE=1; export DUALCASE # for MKS sh
3344-if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then :
3345- emulate sh
3346- NULLCMD=:
3347- # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which
3348- # is contrary to our usage. Disable this feature.
3349- alias -g '${1+"$@"}'='"$@"'
3350- setopt NO_GLOB_SUBST
3351-else
3352- case `(set -o) 2>/dev/null` in #(
3353- *posix*) :
3354- set -o posix ;; #(
3355- *) :
3356- ;;
3357-esac
3358-fi
3359-
3360-
3361-as_nl='
3362-'
3363-export as_nl
3364-# Printing a long string crashes Solaris 7 /usr/bin/printf.
3365-as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\'
3366-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo
3367-as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo
3368-# Prefer a ksh shell builtin over an external printf program on Solaris,
3369-# but without wasting forks for bash or zsh.
3370-if test -z "$BASH_VERSION$ZSH_VERSION" \
3371- && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then
3372- as_echo='print -r --'
3373- as_echo_n='print -rn --'
3374-elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then
3375- as_echo='printf %s\n'
3376- as_echo_n='printf %s'
3377-else
3378- if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then
3379- as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"'
3380- as_echo_n='/usr/ucb/echo -n'
3381- else
3382- as_echo_body='eval expr "X$1" : "X\\(.*\\)"'
3383- as_echo_n_body='eval
3384- arg=$1;
3385- case $arg in #(
3386- *"$as_nl"*)
3387- expr "X$arg" : "X\\(.*\\)$as_nl";
3388- arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;;
3389- esac;
3390- expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl"
3391- '
3392- export as_echo_n_body
3393- as_echo_n='sh -c $as_echo_n_body as_echo'
3394- fi
3395- export as_echo_body
3396- as_echo='sh -c $as_echo_body as_echo'
3397-fi
3398-
3399-# The user is always right.
3400-if test "${PATH_SEPARATOR+set}" != set; then
3401- PATH_SEPARATOR=:
3402- (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && {
3403- (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 ||
3404- PATH_SEPARATOR=';'
3405- }
3406-fi
3407-
3408-
3409-# IFS
3410-# We need space, tab and new line, in precisely that order. Quoting is
3411-# there to prevent editors from complaining about space-tab.
3412-# (If _AS_PATH_WALK were called with IFS unset, it would disable word
3413-# splitting by setting IFS to empty value.)
3414-IFS=" "" $as_nl"
3415-
3416-# Find who we are. Look in the path if we contain no directory separator.
3417-case $0 in #((
3418- *[\\/]* ) as_myself=$0 ;;
3419- *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3420-for as_dir in $PATH
3421-do
3422- IFS=$as_save_IFS
3423- test -z "$as_dir" && as_dir=.
3424- test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
3425- done
3426-IFS=$as_save_IFS
3427-
3428- ;;
3429-esac
3430-# We did not find ourselves, most probably we were run as `sh COMMAND'
3431-# in which case we are not to be found in the path.
3432-if test "x$as_myself" = x; then
3433- as_myself=$0
3434-fi
3435-if test ! -f "$as_myself"; then
3436- $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
3437- exit 1
3438-fi
3439-
3440-# Unset variables that we do not need and which cause bugs (e.g. in
3441-# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1"
3442-# suppresses any "Segmentation fault" message there. '((' could
3443-# trigger a bug in pdksh 5.2.14.
3444-for as_var in BASH_ENV ENV MAIL MAILPATH
3445-do eval test x\${$as_var+set} = xset \
3446- && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || :
3447-done
3448-PS1='$ '
3449-PS2='> '
3450-PS4='+ '
3451-
3452-# NLS nuisances.
3453-LC_ALL=C
3454-export LC_ALL
3455-LANGUAGE=C
3456-export LANGUAGE
3457-
3458-# CDPATH.
3459-(unset CDPATH) >/dev/null 2>&1 && unset CDPATH
3460-
3461-if test "x$CONFIG_SHELL" = x; then
3462- as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then :
3463- emulate sh
3464- NULLCMD=:
3465- # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which
3466- # is contrary to our usage. Disable this feature.
3467- alias -g '\${1+\"\$@\"}'='\"\$@\"'
3468- setopt NO_GLOB_SUBST
3469-else
3470- case \`(set -o) 2>/dev/null\` in #(
3471- *posix*) :
3472- set -o posix ;; #(
3473- *) :
3474- ;;
3475-esac
3476-fi
3477-"
3478- as_required="as_fn_return () { (exit \$1); }
3479-as_fn_success () { as_fn_return 0; }
3480-as_fn_failure () { as_fn_return 1; }
3481-as_fn_ret_success () { return 0; }
3482-as_fn_ret_failure () { return 1; }
3483-
3484-exitcode=0
3485-as_fn_success || { exitcode=1; echo as_fn_success failed.; }
3486-as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; }
3487-as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; }
3488-as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; }
3489-if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then :
3490-
3491-else
3492- exitcode=1; echo positional parameters were not saved.
3493-fi
3494-test x\$exitcode = x0 || exit 1"
3495- as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO
3496- as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO
3497- eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
3498- test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1
3499-test \$(( 1 + 1 )) = 2 || exit 1"
3500- if (eval "$as_required") 2>/dev/null; then :
3501- as_have_required=yes
3502-else
3503- as_have_required=no
3504-fi
3505- if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then :
3506-
3507-else
3508- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
3509-as_found=false
3510-for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
3511-do
3512- IFS=$as_save_IFS
3513- test -z "$as_dir" && as_dir=.
3514- as_found=:
3515- case $as_dir in #(
3516- /*)
3517- for as_base in sh bash ksh sh5; do
3518- # Try only shells that exist, to save several forks.
3519- as_shell=$as_dir/$as_base
3520- if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
3521- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then :
3522- CONFIG_SHELL=$as_shell as_have_required=yes
3523- if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then :
3524- break 2
3525-fi
3526-fi
3527- done;;
3528- esac
3529- as_found=false
3530-done
3531-$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } &&
3532- { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then :
3533- CONFIG_SHELL=$SHELL as_have_required=yes
3534-fi; }
3535-IFS=$as_save_IFS
3536-
3537-
3538- if test "x$CONFIG_SHELL" != x; then :
3539- # We cannot yet assume a decent shell, so we have to provide a
3540- # neutralization value for shells without unset; and this also
3541- # works around shells that cannot unset nonexistent variables.
3542- BASH_ENV=/dev/null
3543- ENV=/dev/null
3544- (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
3545- export CONFIG_SHELL
3546- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
3547-fi
3548-
3549- if test x$as_have_required = xno; then :
3550- $as_echo "$0: This script requires a shell more modern than all"
3551- $as_echo "$0: the shells that I found on your system."
3552- if test x${ZSH_VERSION+set} = xset ; then
3553- $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should"
3554- $as_echo "$0: be upgraded to zsh 4.3.4 or later."
3555- else
3556- $as_echo "$0: Please tell bug-autoconf@gnu.org about your system,
3557-$0: including any error possibly output before this
3558-$0: message. Then install a modern shell, or manually run
3559-$0: the script under such a shell if you do have one."
3560- fi
3561- exit 1
3562-fi
3563-fi
3564-fi
3565-SHELL=${CONFIG_SHELL-/bin/sh}
3566-export SHELL
3567-# Unset more variables known to interfere with behavior of common tools.
3568-CLICOLOR_FORCE= GREP_OPTIONS=
3569-unset CLICOLOR_FORCE GREP_OPTIONS
3570-
3571-## --------------------- ##
3572-## M4sh Shell Functions. ##
3573-## --------------------- ##
3574-# as_fn_unset VAR
3575-# ---------------
3576-# Portably unset VAR.
3577-as_fn_unset ()
3578-{
3579- { eval $1=; unset $1;}
3580-}
3581-as_unset=as_fn_unset
3582-
3583-# as_fn_set_status STATUS
3584-# -----------------------
3585-# Set $? to STATUS, without forking.
3586-as_fn_set_status ()
3587-{
3588- return $1
3589-} # as_fn_set_status
3590-
3591-# as_fn_exit STATUS
3592-# -----------------
3593-# Exit the shell with STATUS, even in a "trap 0" or "set -e" context.
3594-as_fn_exit ()
3595-{
3596- set +e
3597- as_fn_set_status $1
3598- exit $1
3599-} # as_fn_exit
3600-
3601-# as_fn_mkdir_p
3602-# -------------
3603-# Create "$as_dir" as a directory, including parents if necessary.
3604-as_fn_mkdir_p ()
3605-{
3606-
3607- case $as_dir in #(
3608- -*) as_dir=./$as_dir;;
3609- esac
3610- test -d "$as_dir" || eval $as_mkdir_p || {
3611- as_dirs=
3612- while :; do
3613- case $as_dir in #(
3614- *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'(
3615- *) as_qdir=$as_dir;;
3616- esac
3617- as_dirs="'$as_qdir' $as_dirs"
3618- as_dir=`$as_dirname -- "$as_dir" ||
3619-$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
3620- X"$as_dir" : 'X\(//\)[^/]' \| \
3621- X"$as_dir" : 'X\(//\)$' \| \
3622- X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
3623-$as_echo X"$as_dir" |
3624- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
3625- s//\1/
3626- q
3627- }
3628- /^X\(\/\/\)[^/].*/{
3629- s//\1/
3630- q
3631- }
3632- /^X\(\/\/\)$/{
3633- s//\1/
3634- q
3635- }
3636- /^X\(\/\).*/{
3637- s//\1/
3638- q
3639- }
3640- s/.*/./; q'`
3641- test -d "$as_dir" && break
3642- done
3643- test -z "$as_dirs" || eval "mkdir $as_dirs"
3644- } || test -d "$as_dir" || as_fn_error "cannot create directory $as_dir"
3645-
3646-
3647-} # as_fn_mkdir_p
3648-# as_fn_append VAR VALUE
3649-# ----------------------
3650-# Append the text in VALUE to the end of the definition contained in VAR. Take
3651-# advantage of any shell optimizations that allow amortized linear growth over
3652-# repeated appends, instead of the typical quadratic growth present in naive
3653-# implementations.
3654-if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then :
3655- eval 'as_fn_append ()
3656- {
3657- eval $1+=\$2
3658- }'
3659-else
3660- as_fn_append ()
3661- {
3662- eval $1=\$$1\$2
3663- }
3664-fi # as_fn_append
3665-
3666-# as_fn_arith ARG...
3667-# ------------------
3668-# Perform arithmetic evaluation on the ARGs, and store the result in the
3669-# global $as_val. Take advantage of shells that can avoid forks. The arguments
3670-# must be portable across $(()) and expr.
3671-if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then :
3672- eval 'as_fn_arith ()
3673- {
3674- as_val=$(( $* ))
3675- }'
3676-else
3677- as_fn_arith ()
3678- {
3679- as_val=`expr "$@" || test $? -eq 1`
3680- }
3681-fi # as_fn_arith
3682-
3683-
3684-# as_fn_error ERROR [LINENO LOG_FD]
3685-# ---------------------------------
3686-# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are
3687-# provided, also output the error to LOG_FD, referencing LINENO. Then exit the
3688-# script with status $?, using 1 if that was 0.
3689-as_fn_error ()
3690-{
3691- as_status=$?; test $as_status -eq 0 && as_status=1
3692- if test "$3"; then
3693- as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
3694- $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
3695- fi
3696- $as_echo "$as_me: error: $1" >&2
3697- as_fn_exit $as_status
3698-} # as_fn_error
3699-
3700-if expr a : '\(a\)' >/dev/null 2>&1 &&
3701- test "X`expr 00001 : '.*\(...\)'`" = X001; then
3702- as_expr=expr
3703-else
3704- as_expr=false
3705-fi
3706-
3707-if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
3708- as_basename=basename
3709-else
3710- as_basename=false
3711-fi
3712-
3713-if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
3714- as_dirname=dirname
3715-else
3716- as_dirname=false
3717-fi
3718-
3719-as_me=`$as_basename -- "$0" ||
3720-$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
3721- X"$0" : 'X\(//\)$' \| \
3722- X"$0" : 'X\(/\)' \| . 2>/dev/null ||
3723-$as_echo X/"$0" |
3724- sed '/^.*\/\([^/][^/]*\)\/*$/{
3725- s//\1/
3726- q
3727- }
3728- /^X\/\(\/\/\)$/{
3729- s//\1/
3730- q
3731- }
3732- /^X\/\(\/\).*/{
3733- s//\1/
3734- q
3735- }
3736- s/.*/./; q'`
3737-
3738-# Avoid depending upon Character Ranges.
3739-as_cr_letters='abcdefghijklmnopqrstuvwxyz'
3740-as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
3741-as_cr_Letters=$as_cr_letters$as_cr_LETTERS
3742-as_cr_digits='0123456789'
3743-as_cr_alnum=$as_cr_Letters$as_cr_digits
3744-
3745-
3746- as_lineno_1=$LINENO as_lineno_1a=$LINENO
3747- as_lineno_2=$LINENO as_lineno_2a=$LINENO
3748- eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" &&
3749- test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || {
3750- # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-)
3751- sed -n '
3752- p
3753- /[$]LINENO/=
3754- ' <$as_myself |
3755- sed '
3756- s/[$]LINENO.*/&-/
3757- t lineno
3758- b
3759- :lineno
3760- N
3761- :loop
3762- s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
3763- t loop
3764- s/-\n.*//
3765- ' >$as_me.lineno &&
3766- chmod +x "$as_me.lineno" ||
3767- { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; }
3768-
3769- # Don't try to exec as it changes $[0], causing all sort of problems
3770- # (the dirname of $[0] is not the place where we might find the
3771- # original and so on. Autoconf is especially sensitive to this).
3772- . "./$as_me.lineno"
3773- # Exit status is that of the last command.
3774- exit
3775-}
3776-
3777-ECHO_C= ECHO_N= ECHO_T=
3778-case `echo -n x` in #(((((
3779--n*)
3780- case `echo 'xy\c'` in
3781- *c*) ECHO_T=' ';; # ECHO_T is single tab character.
3782- xy) ECHO_C='\c';;
3783- *) echo `echo ksh88 bug on AIX 6.1` > /dev/null
3784- ECHO_T=' ';;
3785- esac;;
3786-*)
3787- ECHO_N='-n';;
3788-esac
3789-
3790-rm -f conf$$ conf$$.exe conf$$.file
3791-if test -d conf$$.dir; then
3792- rm -f conf$$.dir/conf$$.file
3793-else
3794- rm -f conf$$.dir
3795- mkdir conf$$.dir 2>/dev/null
3796-fi
3797-if (echo >conf$$.file) 2>/dev/null; then
3798- if ln -s conf$$.file conf$$ 2>/dev/null; then
3799- as_ln_s='ln -s'
3800- # ... but there are two gotchas:
3801- # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
3802- # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
3803- # In both cases, we have to default to `cp -p'.
3804- ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
3805- as_ln_s='cp -p'
3806- elif ln conf$$.file conf$$ 2>/dev/null; then
3807- as_ln_s=ln
3808- else
3809- as_ln_s='cp -p'
3810- fi
3811-else
3812- as_ln_s='cp -p'
3813-fi
3814-rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
3815-rmdir conf$$.dir 2>/dev/null
3816-
3817-if mkdir -p . 2>/dev/null; then
3818- as_mkdir_p='mkdir -p "$as_dir"'
3819-else
3820- test -d ./-p && rmdir ./-p
3821- as_mkdir_p=false
3822-fi
3823-
3824-if test -x / >/dev/null 2>&1; then
3825- as_test_x='test -x'
3826-else
3827- if ls -dL / >/dev/null 2>&1; then
3828- as_ls_L_option=L
3829- else
3830- as_ls_L_option=
3831- fi
3832- as_test_x='
3833- eval sh -c '\''
3834- if test -d "$1"; then
3835- test -d "$1/.";
3836- else
3837- case $1 in #(
3838- -*)set "./$1";;
3839- esac;
3840- case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #((
3841- ???[sx]*):;;*)false;;esac;fi
3842- '\'' sh
3843- '
3844-fi
3845-as_executable_p=$as_test_x
3846-
3847-# Sed expression to map a string onto a valid CPP name.
3848-as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
3849-
3850-# Sed expression to map a string onto a valid variable name.
3851-as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
3852-
3853-
3854-exec 7<&0 </dev/null 6>&1
3855-
3856-# Name of the host.
3857-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
3858-# so uname gets run too.
3859-ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
3860-
3861-#
3862-# Initializations.
3863-#
3864-ac_default_prefix=/usr/local
3865-ac_clean_files=
3866-ac_config_libobj_dir=.
3867-LIBOBJS=
3868-cross_compiling=no
3869-subdirs=
3870-MFLAGS=
3871-MAKEFLAGS=
3872-
3873-# Identity of this package.
3874-PACKAGE_NAME=
3875-PACKAGE_TARNAME=
3876-PACKAGE_VERSION=
3877-PACKAGE_STRING=
3878-PACKAGE_BUGREPORT=
3879-PACKAGE_URL=
3880-
3881-ac_unique_file="ABOUT_APACHE"
3882-enable_option_checking=no
3883-ac_default_prefix=/usr/local/apache2
3884-# Factoring default headers for most tests.
3885-ac_includes_default="\
3886-#include <stdio.h>
3887-#ifdef HAVE_SYS_TYPES_H
3888-# include <sys/types.h>
3889-#endif
3890-#ifdef HAVE_SYS_STAT_H
3891-# include <sys/stat.h>
3892-#endif
3893-#ifdef STDC_HEADERS
3894-# include <stdlib.h>
3895-# include <stddef.h>
3896-#else
3897-# ifdef HAVE_STDLIB_H
3898-# include <stdlib.h>
3899-# endif
3900-#endif
3901-#ifdef HAVE_STRING_H
3902-# if !defined STDC_HEADERS && defined HAVE_MEMORY_H
3903-# include <memory.h>
3904-# endif
3905-# include <string.h>
3906-#endif
3907-#ifdef HAVE_STRINGS_H
3908-# include <strings.h>
3909-#endif
3910-#ifdef HAVE_INTTYPES_H
3911-# include <inttypes.h>
3912-#endif
3913-#ifdef HAVE_STDINT_H
3914-# include <stdint.h>
3915-#endif
3916-#ifdef HAVE_UNISTD_H
3917-# include <unistd.h>
3918-#endif"
3919-
3920-ac_subst_vars='LTLIBOBJS
3921-LIBOBJS
3922-HTTPD_VERSION
3923-ap_make_delimiter
3924-ap_make_include
3925-perlbin
3926-APU_CONFIG
3927-APU_VERSION
3928-APU_INCLUDEDIR
3929-APU_BINDIR
3930-APR_CONFIG
3931-APR_VERSION
3932-APR_INCLUDEDIR
3933-APR_BINDIR
3934-DSO_MODULES
3935-INSTALL_PROG_FLAGS
3936-MK_IMPLIB
3937-SH_LIBTOOL
3938-SH_LIBS
3939-CORE_IMPLIB
3940-CORE_IMPLIB_FILE
3941-nonssl_listen_stmt_2
3942-nonssl_listen_stmt_1
3943-SSLPORT
3944-PORT
3945-MODULE_CLEANDIRS
3946-MODULE_DIRS
3947-LIBTOOL
3948-NOTEST_LIBS
3949-NOTEST_LDFLAGS
3950-NOTEST_CXXFLAGS
3951-NOTEST_CFLAGS
3952-NOTEST_CPPFLAGS
3953-INCLUDES
3954-UTIL_LDFLAGS
3955-HTTPD_LDFLAGS
3956-SH_LDFLAGS
3957-LT_LDFLAGS
3958-LTFLAGS
3959-CXXFLAGS
3960-CXX
3961-other_targets
3962-proxycachedir
3963-runtimedir
3964-installbuilddir
3965-iconsdir
3966-errordir
3967-manualdir
3968-htdocsdir
3969-logfiledir
3970-cgidir
3971-abs_srcdir
3972-EXTRA_INCLUDES
3973-EXTRA_LIBS
3974-EXTRA_LDFLAGS
3975-EXTRA_CXXFLAGS
3976-EXTRA_CFLAGS
3977-EXTRA_CPPFLAGS
3978-AP_CLEAN_SRCLIB_DIRS
3979-AP_BUILD_SRCLIB_DIRS
3980-AP_LIBS
3981-shared_build
3982-POST_SHARED_CMDS
3983-PRE_SHARED_CMDS
3984-OS_SPECIFIC_VARS
3985-SHLIBPATH_VAR
3986-BUILTIN_LIBS
3987-OS_DIR
3988-OS
3989-MPM_LIB
3990-progname
3991-MOD_SO_LDADD
3992-INSTALL_DSO
3993-MOD_REWRITE_LDADD
3994-MOD_ALIAS_LDADD
3995-MOD_USERDIR_LDADD
3996-MOD_SPELING_LDADD
3997-MOD_ACTIONS_LDADD
3998-MOD_IMAGEMAP_LDADD
3999-MOD_DIR_LDADD
4000-MOD_NEGOTIATION_LDADD
4001-MOD_VHOST_ALIAS_LDADD
4002-MOD_DAV_LOCK_LDADD
4003-MOD_DAV_FS_LDADD
4004-MOD_CGI_LDADD
4005-MOD_CGID_LDADD
4006-MOD_SUEXEC_LDADD
4007-MOD_INFO_LDADD
4008-MOD_ASIS_LDADD
4009-MOD_AUTOINDEX_LDADD
4010-MOD_STATUS_LDADD
4011-MOD_DAV_LDADD
4012-MOD_MIME_LDADD
4013-MOD_HTTP_LDADD
4014-APACHECTL_ULIMIT
4015-NONPORTABLE_SUPPORT
4016-httxt2dbm_LTFLAGS
4017-htcacheclean_LTFLAGS
4018-checkgid_LTFLAGS
4019-ab_LTFLAGS
4020-htdbm_LTFLAGS
4021-logresolve_LTFLAGS
4022-rotatelogs_LTFLAGS
4023-htdigest_LTFLAGS
4024-htpasswd_LTFLAGS
4025-MPM_SUBDIR_NAME
4026-MPM_NAME
4027-MOD_OPTIONAL_FN_EXPORT_LDADD
4028-MOD_OPTIONAL_FN_IMPORT_LDADD
4029-MOD_OPTIONAL_HOOK_IMPORT_LDADD
4030-MOD_OPTIONAL_HOOK_EXPORT_LDADD
4031-MOD_SSL_LDADD
4032-SSL_LIBS
4033-MOD_PROXY_BALANCER_LDADD
4034-MOD_PROXY_AJP_LDADD
4035-MOD_PROXY_SCGI_LDADD
4036-MOD_PROXY_HTTP_LDADD
4037-MOD_PROXY_FTP_LDADD
4038-MOD_PROXY_CONNECT_LDADD
4039-MOD_PROXY_LDADD
4040-MOD_VERSION_LDADD
4041-MOD_SETENVIF_LDADD
4042-MOD_UNIQUE_ID_LDADD
4043-MOD_USERTRACK_LDADD
4044-MOD_IDENT_LDADD
4045-MOD_HEADERS_LDADD
4046-MOD_EXPIRES_LDADD
4047-MOD_CERN_META_LDADD
4048-MOD_MIME_MAGIC_LDADD
4049-MOD_ENV_LDADD
4050-MOD_LOGIO_LDADD
4051-MOD_LOG_FORENSIC_LDADD
4052-MOD_LOG_CONFIG_LDADD
4053-MOD_LDAP_LDADD
4054-MOD_DEFLATE_LDADD
4055-MOD_CHARSET_LITE_LDADD
4056-MOD_SUBSTITUTE_LDADD
4057-MOD_FILTER_LDADD
4058-MOD_INCLUDE_LDADD
4059-MOD_EXT_FILTER_LDADD
4060-MOD_REQTIMEOUT_LDADD
4061-MOD_CASE_FILTER_IN_LDADD
4062-MOD_CASE_FILTER_LDADD
4063-MOD_EXAMPLE_LDADD
4064-MOD_ECHO_LDADD
4065-MOD_DUMPIO_LDADD
4066-MOD_BUCKETEER_LDADD
4067-MOD_DBD_LDADD
4068-MOD_MEM_CACHE_LDADD
4069-MOD_DISK_CACHE_LDADD
4070-MOD_CACHE_LDADD
4071-MOD_FILE_CACHE_LDADD
4072-MOD_ISAPI_LDADD
4073-MOD_AUTH_DIGEST_LDADD
4074-MOD_AUTH_BASIC_LDADD
4075-MOD_AUTHZ_DEFAULT_LDADD
4076-MOD_AUTHNZ_LDAP_LDADD
4077-MOD_AUTHZ_OWNER_LDADD
4078-MOD_AUTHZ_DBM_LDADD
4079-MOD_AUTHZ_USER_LDADD
4080-MOD_AUTHZ_GROUPFILE_LDADD
4081-MOD_AUTHZ_HOST_LDADD
4082-MOD_AUTHN_ALIAS_LDADD
4083-MOD_AUTHN_DEFAULT_LDADD
4084-MOD_AUTHN_DBD_LDADD
4085-MOD_AUTHN_ANON_LDADD
4086-MOD_AUTHN_DBM_LDADD
4087-MOD_AUTHN_FILE_LDADD
4088-PILDFLAGS
4089-PICFLAGS
4090-CRYPT_LIBS
4091-MKDEP
4092-EGREP
4093-GREP
4094-INSTALL
4095-MKINSTALLDIRS
4096-LYNX_PATH
4097-RANLIB
4098-LN_S
4099-AWK
4100-RSYNC
4101-PKGCONFIG
4102-RM
4103-LTCFLAGS
4104-SHLTCFLAGS
4105-PCRE_CONFIG
4106-CPP
4107-OBJEXT
4108-EXEEXT
4109-ac_ct_CC
4110-CPPFLAGS
4111-LDFLAGS
4112-CFLAGS
4113-CC
4114-target_os
4115-target_vendor
4116-target_cpu
4117-target
4118-host_os
4119-host_vendor
4120-host_cpu
4121-host
4122-build_os
4123-build_vendor
4124-build_cpu
4125-build
4126-rel_proxycachedir
4127-exp_proxycachedir
4128-rel_logfiledir
4129-exp_logfiledir
4130-rel_runtimedir
4131-exp_runtimedir
4132-rel_localstatedir
4133-exp_localstatedir
4134-rel_includedir
4135-exp_includedir
4136-rel_cgidir
4137-exp_cgidir
4138-rel_manualdir
4139-exp_manualdir
4140-rel_htdocsdir
4141-exp_htdocsdir
4142-rel_iconsdir
4143-exp_iconsdir
4144-rel_errordir
4145-exp_errordir
4146-rel_installbuilddir
4147-exp_installbuilddir
4148-rel_datadir
4149-exp_datadir
4150-rel_sysconfdir
4151-exp_sysconfdir
4152-rel_mandir
4153-exp_mandir
4154-rel_libexecdir
4155-exp_libexecdir
4156-rel_libdir
4157-exp_libdir
4158-rel_sbindir
4159-exp_sbindir
4160-rel_bindir
4161-exp_bindir
4162-rel_exec_prefix
4163-exp_exec_prefix
4164-target_alias
4165-host_alias
4166-build_alias
4167-LIBS
4168-ECHO_T
4169-ECHO_N
4170-ECHO_C
4171-DEFS
4172-mandir
4173-localedir
4174-libdir
4175-psdir
4176-pdfdir
4177-dvidir
4178-htmldir
4179-infodir
4180-docdir
4181-oldincludedir
4182-includedir
4183-localstatedir
4184-sharedstatedir
4185-sysconfdir
4186-datadir
4187-datarootdir
4188-libexecdir
4189-sbindir
4190-bindir
4191-program_transform_name
4192-prefix
4193-exec_prefix
4194-PACKAGE_URL
4195-PACKAGE_BUGREPORT
4196-PACKAGE_STRING
4197-PACKAGE_VERSION
4198-PACKAGE_TARNAME
4199-PACKAGE_NAME
4200-PATH_SEPARATOR
4201-SHELL'
4202-ac_subst_files=''
4203-ac_user_opts='
4204-enable_option_checking
4205-enable_layout
4206-with_included_apr
4207-with_apr
4208-with_apr_util
4209-with_pcre
4210-with_port
4211-with_sslport
4212-enable_v4_mapped
4213-enable_exception_hook
4214-enable_maintainer_mode
4215-enable_pie
4216-enable_modules
4217-enable_mods_shared
4218-enable_authn_file
4219-enable_authn_dbm
4220-enable_authn_anon
4221-enable_authn_dbd
4222-enable_authn_default
4223-enable_authn_alias
4224-enable_authz_host
4225-enable_authz_groupfile
4226-enable_authz_user
4227-enable_authz_dbm
4228-enable_authz_owner
4229-enable_authnz_ldap
4230-enable_authz_default
4231-enable_auth_basic
4232-enable_auth_digest
4233-enable_isapi
4234-enable_file_cache
4235-enable_cache
4236-enable_disk_cache
4237-enable_mem_cache
4238-enable_dbd
4239-enable_bucketeer
4240-enable_dumpio
4241-enable_echo
4242-enable_example
4243-enable_case_filter
4244-enable_case_filter_in
4245-enable_reqtimeout
4246-enable_ext_filter
4247-enable_include
4248-enable_filter
4249-enable_substitute
4250-enable_charset_lite
4251-enable_deflate
4252-with_z
4253-enable_ldap
4254-enable_log_config
4255-enable_log_forensic
4256-enable_logio
4257-enable_env
4258-enable_mime_magic
4259-enable_cern_meta
4260-enable_expires
4261-enable_headers
4262-enable_ident
4263-enable_usertrack
4264-enable_unique_id
4265-enable_setenvif
4266-enable_version
4267-enable_proxy
4268-enable_proxy_connect
4269-enable_proxy_ftp
4270-enable_proxy_http
4271-enable_proxy_scgi
4272-enable_proxy_ajp
4273-enable_proxy_balancer
4274-enable_ssl
4275-with_sslc
4276-with_ssl
4277-enable_distcache
4278-enable_optional_hook_export
4279-enable_optional_hook_import
4280-enable_optional_fn_import
4281-enable_optional_fn_export
4282-with_mpm
4283-enable_static_support
4284-enable_static_htpasswd
4285-enable_static_htdigest
4286-enable_static_rotatelogs
4287-enable_static_logresolve
4288-enable_static_htdbm
4289-enable_static_ab
4290-enable_static_checkgid
4291-enable_static_htcacheclean
4292-enable_static_httxt2dbm
4293-enable_http
4294-enable_mime
4295-with_module
4296-enable_dav
4297-enable_status
4298-enable_autoindex
4299-enable_asis
4300-enable_info
4301-enable_suexec
4302-enable_cgid
4303-enable_cgi
4304-enable_dav_fs
4305-enable_dav_lock
4306-enable_vhost_alias
4307-enable_negotiation
4308-enable_dir
4309-enable_imagemap
4310-enable_actions
4311-enable_speling
4312-enable_userdir
4313-enable_alias
4314-enable_rewrite
4315-enable_so
4316-with_program_name
4317-with_suexec_bin
4318-with_suexec_caller
4319-with_suexec_userdir
4320-with_suexec_docroot
4321-with_suexec_uidmin
4322-with_suexec_gidmin
4323-with_suexec_logfile
4324-with_suexec_safepath
4325-with_suexec_umask
4326-'
4327- ac_precious_vars='build_alias
4328-host_alias
4329-target_alias
4330-CC
4331-CFLAGS
4332-LDFLAGS
4333-LIBS
4334-CPPFLAGS
4335-CPP'
4336-
4337-
4338-# Initialize some variables set by options.
4339-ac_init_help=
4340-ac_init_version=false
4341-ac_unrecognized_opts=
4342-ac_unrecognized_sep=
4343-# The variables have the same names as the options, with
4344-# dashes changed to underlines.
4345-cache_file=/dev/null
4346-exec_prefix=NONE
4347-no_create=
4348-no_recursion=
4349-prefix=NONE
4350-program_prefix=NONE
4351-program_suffix=NONE
4352-program_transform_name=s,x,x,
4353-silent=
4354-site=
4355-srcdir=
4356-verbose=
4357-x_includes=NONE
4358-x_libraries=NONE
4359-
4360-# Installation directory options.
4361-# These are left unexpanded so users can "make install exec_prefix=/foo"
4362-# and all the variables that are supposed to be based on exec_prefix
4363-# by default will actually change.
4364-# Use braces instead of parens because sh, perl, etc. also accept them.
4365-# (The list follows the same order as the GNU Coding Standards.)
4366-bindir='${exec_prefix}/bin'
4367-sbindir='${exec_prefix}/sbin'
4368-libexecdir='${exec_prefix}/libexec'
4369-datarootdir='${prefix}/share'
4370-datadir='${datarootdir}'
4371-sysconfdir='${prefix}/etc'
4372-sharedstatedir='${prefix}/com'
4373-localstatedir='${prefix}/var'
4374-includedir='${prefix}/include'
4375-oldincludedir='/usr/include'
4376-docdir='${datarootdir}/doc/${PACKAGE}'
4377-infodir='${datarootdir}/info'
4378-htmldir='${docdir}'
4379-dvidir='${docdir}'
4380-pdfdir='${docdir}'
4381-psdir='${docdir}'
4382-libdir='${exec_prefix}/lib'
4383-localedir='${datarootdir}/locale'
4384-mandir='${datarootdir}/man'
4385-
4386-ac_prev=
4387-ac_dashdash=
4388-for ac_option
4389-do
4390- # If the previous option needs an argument, assign it.
4391- if test -n "$ac_prev"; then
4392- eval $ac_prev=\$ac_option
4393- ac_prev=
4394- continue
4395- fi
4396-
4397- case $ac_option in
4398- *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
4399- *) ac_optarg=yes ;;
4400- esac
4401-
4402- # Accept the important Cygnus configure options, so we can diagnose typos.
4403-
4404- case $ac_dashdash$ac_option in
4405- --)
4406- ac_dashdash=yes ;;
4407-
4408- -bindir | --bindir | --bindi | --bind | --bin | --bi)
4409- ac_prev=bindir ;;
4410- -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
4411- bindir=$ac_optarg ;;
4412-
4413- -build | --build | --buil | --bui | --bu)
4414- ac_prev=build_alias ;;
4415- -build=* | --build=* | --buil=* | --bui=* | --bu=*)
4416- build_alias=$ac_optarg ;;
4417-
4418- -cache-file | --cache-file | --cache-fil | --cache-fi \
4419- | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
4420- ac_prev=cache_file ;;
4421- -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
4422- | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
4423- cache_file=$ac_optarg ;;
4424-
4425- --config-cache | -C)
4426- cache_file=config.cache ;;
4427-
4428- -datadir | --datadir | --datadi | --datad)
4429- ac_prev=datadir ;;
4430- -datadir=* | --datadir=* | --datadi=* | --datad=*)
4431- datadir=$ac_optarg ;;
4432-
4433- -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
4434- | --dataroo | --dataro | --datar)
4435- ac_prev=datarootdir ;;
4436- -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
4437- | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
4438- datarootdir=$ac_optarg ;;
4439-
4440- -disable-* | --disable-*)
4441- ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
4442- # Reject names that are not valid shell variable names.
4443- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
4444- as_fn_error "invalid feature name: $ac_useropt"
4445- ac_useropt_orig=$ac_useropt
4446- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
4447- case $ac_user_opts in
4448- *"
4449-"enable_$ac_useropt"
4450-"*) ;;
4451- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig"
4452- ac_unrecognized_sep=', ';;
4453- esac
4454- eval enable_$ac_useropt=no ;;
4455-
4456- -docdir | --docdir | --docdi | --doc | --do)
4457- ac_prev=docdir ;;
4458- -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
4459- docdir=$ac_optarg ;;
4460-
4461- -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
4462- ac_prev=dvidir ;;
4463- -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
4464- dvidir=$ac_optarg ;;
4465-
4466- -enable-* | --enable-*)
4467- ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
4468- # Reject names that are not valid shell variable names.
4469- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
4470- as_fn_error "invalid feature name: $ac_useropt"
4471- ac_useropt_orig=$ac_useropt
4472- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
4473- case $ac_user_opts in
4474- *"
4475-"enable_$ac_useropt"
4476-"*) ;;
4477- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig"
4478- ac_unrecognized_sep=', ';;
4479- esac
4480- eval enable_$ac_useropt=\$ac_optarg ;;
4481-
4482- -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
4483- | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
4484- | --exec | --exe | --ex)
4485- ac_prev=exec_prefix ;;
4486- -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
4487- | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
4488- | --exec=* | --exe=* | --ex=*)
4489- exec_prefix=$ac_optarg ;;
4490-
4491- -gas | --gas | --ga | --g)
4492- # Obsolete; use --with-gas.
4493- with_gas=yes ;;
4494-
4495- -help | --help | --hel | --he | -h)
4496- ac_init_help=long ;;
4497- -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
4498- ac_init_help=recursive ;;
4499- -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
4500- ac_init_help=short ;;
4501-
4502- -host | --host | --hos | --ho)
4503- ac_prev=host_alias ;;
4504- -host=* | --host=* | --hos=* | --ho=*)
4505- host_alias=$ac_optarg ;;
4506-
4507- -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
4508- ac_prev=htmldir ;;
4509- -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
4510- | --ht=*)
4511- htmldir=$ac_optarg ;;
4512-
4513- -includedir | --includedir | --includedi | --included | --include \
4514- | --includ | --inclu | --incl | --inc)
4515- ac_prev=includedir ;;
4516- -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
4517- | --includ=* | --inclu=* | --incl=* | --inc=*)
4518- includedir=$ac_optarg ;;
4519-
4520- -infodir | --infodir | --infodi | --infod | --info | --inf)
4521- ac_prev=infodir ;;
4522- -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
4523- infodir=$ac_optarg ;;
4524-
4525- -libdir | --libdir | --libdi | --libd)
4526- ac_prev=libdir ;;
4527- -libdir=* | --libdir=* | --libdi=* | --libd=*)
4528- libdir=$ac_optarg ;;
4529-
4530- -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
4531- | --libexe | --libex | --libe)
4532- ac_prev=libexecdir ;;
4533- -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
4534- | --libexe=* | --libex=* | --libe=*)
4535- libexecdir=$ac_optarg ;;
4536-
4537- -localedir | --localedir | --localedi | --localed | --locale)
4538- ac_prev=localedir ;;
4539- -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
4540- localedir=$ac_optarg ;;
4541-
4542- -localstatedir | --localstatedir | --localstatedi | --localstated \
4543- | --localstate | --localstat | --localsta | --localst | --locals)
4544- ac_prev=localstatedir ;;
4545- -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
4546- | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
4547- localstatedir=$ac_optarg ;;
4548-
4549- -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
4550- ac_prev=mandir ;;
4551- -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
4552- mandir=$ac_optarg ;;
4553-
4554- -nfp | --nfp | --nf)
4555- # Obsolete; use --without-fp.
4556- with_fp=no ;;
4557-
4558- -no-create | --no-create | --no-creat | --no-crea | --no-cre \
4559- | --no-cr | --no-c | -n)
4560- no_create=yes ;;
4561-
4562- -no-recursion | --no-recursion | --no-recursio | --no-recursi \
4563- | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
4564- no_recursion=yes ;;
4565-
4566- -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
4567- | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
4568- | --oldin | --oldi | --old | --ol | --o)
4569- ac_prev=oldincludedir ;;
4570- -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
4571- | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
4572- | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
4573- oldincludedir=$ac_optarg ;;
4574-
4575- -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
4576- ac_prev=prefix ;;
4577- -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
4578- prefix=$ac_optarg ;;
4579-
4580- -program-prefix | --program-prefix | --program-prefi | --program-pref \
4581- | --program-pre | --program-pr | --program-p)
4582- ac_prev=program_prefix ;;
4583- -program-prefix=* | --program-prefix=* | --program-prefi=* \
4584- | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
4585- program_prefix=$ac_optarg ;;
4586-
4587- -program-suffix | --program-suffix | --program-suffi | --program-suff \
4588- | --program-suf | --program-su | --program-s)
4589- ac_prev=program_suffix ;;
4590- -program-suffix=* | --program-suffix=* | --program-suffi=* \
4591- | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
4592- program_suffix=$ac_optarg ;;
4593-
4594- -program-transform-name | --program-transform-name \
4595- | --program-transform-nam | --program-transform-na \
4596- | --program-transform-n | --program-transform- \
4597- | --program-transform | --program-transfor \
4598- | --program-transfo | --program-transf \
4599- | --program-trans | --program-tran \
4600- | --progr-tra | --program-tr | --program-t)
4601- ac_prev=program_transform_name ;;
4602- -program-transform-name=* | --program-transform-name=* \
4603- | --program-transform-nam=* | --program-transform-na=* \
4604- | --program-transform-n=* | --program-transform-=* \
4605- | --program-transform=* | --program-transfor=* \
4606- | --program-transfo=* | --program-transf=* \
4607- | --program-trans=* | --program-tran=* \
4608- | --progr-tra=* | --program-tr=* | --program-t=*)
4609- program_transform_name=$ac_optarg ;;
4610-
4611- -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
4612- ac_prev=pdfdir ;;
4613- -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
4614- pdfdir=$ac_optarg ;;
4615-
4616- -psdir | --psdir | --psdi | --psd | --ps)
4617- ac_prev=psdir ;;
4618- -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
4619- psdir=$ac_optarg ;;
4620-
4621- -q | -quiet | --quiet | --quie | --qui | --qu | --q \
4622- | -silent | --silent | --silen | --sile | --sil)
4623- silent=yes ;;
4624-
4625- -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
4626- ac_prev=sbindir ;;
4627- -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
4628- | --sbi=* | --sb=*)
4629- sbindir=$ac_optarg ;;
4630-
4631- -sharedstatedir | --sharedstatedir | --sharedstatedi \
4632- | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
4633- | --sharedst | --shareds | --shared | --share | --shar \
4634- | --sha | --sh)
4635- ac_prev=sharedstatedir ;;
4636- -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
4637- | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
4638- | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
4639- | --sha=* | --sh=*)
4640- sharedstatedir=$ac_optarg ;;
4641-
4642- -site | --site | --sit)
4643- ac_prev=site ;;
4644- -site=* | --site=* | --sit=*)
4645- site=$ac_optarg ;;
4646-
4647- -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
4648- ac_prev=srcdir ;;
4649- -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
4650- srcdir=$ac_optarg ;;
4651-
4652- -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
4653- | --syscon | --sysco | --sysc | --sys | --sy)
4654- ac_prev=sysconfdir ;;
4655- -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
4656- | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
4657- sysconfdir=$ac_optarg ;;
4658-
4659- -target | --target | --targe | --targ | --tar | --ta | --t)
4660- ac_prev=target_alias ;;
4661- -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
4662- target_alias=$ac_optarg ;;
4663-
4664- -v | -verbose | --verbose | --verbos | --verbo | --verb)
4665- verbose=yes ;;
4666-
4667- -version | --version | --versio | --versi | --vers | -V)
4668- ac_init_version=: ;;
4669-
4670- -with-* | --with-*)
4671- ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
4672- # Reject names that are not valid shell variable names.
4673- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
4674- as_fn_error "invalid package name: $ac_useropt"
4675- ac_useropt_orig=$ac_useropt
4676- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
4677- case $ac_user_opts in
4678- *"
4679-"with_$ac_useropt"
4680-"*) ;;
4681- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig"
4682- ac_unrecognized_sep=', ';;
4683- esac
4684- eval with_$ac_useropt=\$ac_optarg ;;
4685-
4686- -without-* | --without-*)
4687- ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'`
4688- # Reject names that are not valid shell variable names.
4689- expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null &&
4690- as_fn_error "invalid package name: $ac_useropt"
4691- ac_useropt_orig=$ac_useropt
4692- ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'`
4693- case $ac_user_opts in
4694- *"
4695-"with_$ac_useropt"
4696-"*) ;;
4697- *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig"
4698- ac_unrecognized_sep=', ';;
4699- esac
4700- eval with_$ac_useropt=no ;;
4701-
4702- --x)
4703- # Obsolete; use --with-x.
4704- with_x=yes ;;
4705-
4706- -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
4707- | --x-incl | --x-inc | --x-in | --x-i)
4708- ac_prev=x_includes ;;
4709- -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
4710- | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
4711- x_includes=$ac_optarg ;;
4712-
4713- -x-libraries | --x-libraries | --x-librarie | --x-librari \
4714- | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
4715- ac_prev=x_libraries ;;
4716- -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
4717- | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
4718- x_libraries=$ac_optarg ;;
4719-
4720- -*) as_fn_error "unrecognized option: \`$ac_option'
4721-Try \`$0 --help' for more information."
4722- ;;
4723-
4724- *=*)
4725- ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
4726- # Reject names that are not valid shell variable names.
4727- case $ac_envvar in #(
4728- '' | [0-9]* | *[!_$as_cr_alnum]* )
4729- as_fn_error "invalid variable name: \`$ac_envvar'" ;;
4730- esac
4731- eval $ac_envvar=\$ac_optarg
4732- export $ac_envvar ;;
4733-
4734- *)
4735- # FIXME: should be removed in autoconf 3.0.
4736- $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
4737- expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
4738- $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
4739- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
4740- ;;
4741-
4742- esac
4743-done
4744-
4745-if test -n "$ac_prev"; then
4746- ac_option=--`echo $ac_prev | sed 's/_/-/g'`
4747- as_fn_error "missing argument to $ac_option"
4748-fi
4749-
4750-if test -n "$ac_unrecognized_opts"; then
4751- case $enable_option_checking in
4752- no) ;;
4753- fatal) as_fn_error "unrecognized options: $ac_unrecognized_opts" ;;
4754- *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
4755- esac
4756-fi
4757-
4758-# Check all directory arguments for consistency.
4759-for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
4760- datadir sysconfdir sharedstatedir localstatedir includedir \
4761- oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
4762- libdir localedir mandir
4763-do
4764- eval ac_val=\$$ac_var
4765- # Remove trailing slashes.
4766- case $ac_val in
4767- */ )
4768- ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'`
4769- eval $ac_var=\$ac_val;;
4770- esac
4771- # Be sure to have absolute directory names.
4772- case $ac_val in
4773- [\\/$]* | ?:[\\/]* ) continue;;
4774- NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
4775- esac
4776- as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
4777-done
4778-
4779-# There might be people who depend on the old broken behavior: `$host'
4780-# used to hold the argument of --host etc.
4781-# FIXME: To remove some day.
4782-build=$build_alias
4783-host=$host_alias
4784-target=$target_alias
4785-
4786-# FIXME: To remove some day.
4787-if test "x$host_alias" != x; then
4788- if test "x$build_alias" = x; then
4789- cross_compiling=maybe
4790- $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
4791- If a cross compiler is detected then cross compile mode will be used." >&2
4792- elif test "x$build_alias" != "x$host_alias"; then
4793- cross_compiling=yes
4794- fi
4795-fi
4796-
4797-ac_tool_prefix=
4798-test -n "$host_alias" && ac_tool_prefix=$host_alias-
4799-
4800-test "$silent" = yes && exec 6>/dev/null
4801-
4802-
4803-ac_pwd=`pwd` && test -n "$ac_pwd" &&
4804-ac_ls_di=`ls -di .` &&
4805-ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
4806- as_fn_error "working directory cannot be determined"
4807-test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
4808- as_fn_error "pwd does not report name of working directory"
4809-
4810-
4811-# Find the source files, if location was not specified.
4812-if test -z "$srcdir"; then
4813- ac_srcdir_defaulted=yes
4814- # Try the directory containing this script, then the parent directory.
4815- ac_confdir=`$as_dirname -- "$as_myself" ||
4816-$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
4817- X"$as_myself" : 'X\(//\)[^/]' \| \
4818- X"$as_myself" : 'X\(//\)$' \| \
4819- X"$as_myself" : 'X\(/\)' \| . 2>/dev/null ||
4820-$as_echo X"$as_myself" |
4821- sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
4822- s//\1/
4823- q
4824- }
4825- /^X\(\/\/\)[^/].*/{
4826- s//\1/
4827- q
4828- }
4829- /^X\(\/\/\)$/{
4830- s//\1/
4831- q
4832- }
4833- /^X\(\/\).*/{
4834- s//\1/
4835- q
4836- }
4837- s/.*/./; q'`
4838- srcdir=$ac_confdir
4839- if test ! -r "$srcdir/$ac_unique_file"; then
4840- srcdir=..
4841- fi
4842-else
4843- ac_srcdir_defaulted=no
4844-fi
4845-if test ! -r "$srcdir/$ac_unique_file"; then
4846- test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
4847- as_fn_error "cannot find sources ($ac_unique_file) in $srcdir"
4848-fi
4849-ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
4850-ac_abs_confdir=`(
4851- cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error "$ac_msg"
4852- pwd)`
4853-# When building in place, set srcdir=.
4854-if test "$ac_abs_confdir" = "$ac_pwd"; then
4855- srcdir=.
4856-fi
4857-# Remove unnecessary trailing slashes from srcdir.
4858-# Double slashes in file names in object file debugging info
4859-# mess up M-x gdb in Emacs.
4860-case $srcdir in
4861-*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
4862-esac
4863-for ac_var in $ac_precious_vars; do
4864- eval ac_env_${ac_var}_set=\${${ac_var}+set}
4865- eval ac_env_${ac_var}_value=\$${ac_var}
4866- eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
4867- eval ac_cv_env_${ac_var}_value=\$${ac_var}
4868-done
4869-
4870-#
4871-# Report the --help message.
4872-#
4873-if test "$ac_init_help" = "long"; then
4874- # Omit some internal or obsolete options to make the list less imposing.
4875- # This message is too long to be a string in the A/UX 3.1 sh.
4876- cat <<_ACEOF
4877-\`configure' configures this package to adapt to many kinds of systems.
4878-
4879-Usage: $0 [OPTION]... [VAR=VALUE]...
4880-
4881-To assign environment variables (e.g., CC, CFLAGS...), specify them as
4882-VAR=VALUE. See below for descriptions of some of the useful variables.
4883-
4884-Defaults for the options are specified in brackets.
4885-
4886-Configuration:
4887- -h, --help display this help and exit
4888- --help=short display options specific to this package
4889- --help=recursive display the short help of all the included packages
4890- -V, --version display version information and exit
4891- -q, --quiet, --silent do not print \`checking...' messages
4892- --cache-file=FILE cache test results in FILE [disabled]
4893- -C, --config-cache alias for \`--cache-file=config.cache'
4894- -n, --no-create do not create output files
4895- --srcdir=DIR find the sources in DIR [configure dir or \`..']
4896-
4897-Installation directories:
4898- --prefix=PREFIX install architecture-independent files in PREFIX
4899- [$ac_default_prefix]
4900- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
4901- [PREFIX]
4902-
4903-By default, \`make install' will install all the files in
4904-\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
4905-an installation prefix other than \`$ac_default_prefix' using \`--prefix',
4906-for instance \`--prefix=\$HOME'.
4907-
4908-For better control, use the options below.
4909-
4910-Fine tuning of the installation directories:
4911- --bindir=DIR user executables [EPREFIX/bin]
4912- --sbindir=DIR system admin executables [EPREFIX/sbin]
4913- --libexecdir=DIR program executables [EPREFIX/libexec]
4914- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
4915- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
4916- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
4917- --libdir=DIR object code libraries [EPREFIX/lib]
4918- --includedir=DIR C header files [PREFIX/include]
4919- --oldincludedir=DIR C header files for non-gcc [/usr/include]
4920- --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
4921- --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
4922- --infodir=DIR info documentation [DATAROOTDIR/info]
4923- --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
4924- --mandir=DIR man documentation [DATAROOTDIR/man]
4925- --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
4926- --htmldir=DIR html documentation [DOCDIR]
4927- --dvidir=DIR dvi documentation [DOCDIR]
4928- --pdfdir=DIR pdf documentation [DOCDIR]
4929- --psdir=DIR ps documentation [DOCDIR]
4930-_ACEOF
4931-
4932- cat <<\_ACEOF
4933-
4934-System types:
4935- --build=BUILD configure for building on BUILD [guessed]
4936- --host=HOST cross-compile to build programs to run on HOST [BUILD]
4937- --target=TARGET configure for building compilers for TARGET [HOST]
4938-_ACEOF
4939-fi
4940-
4941-if test -n "$ac_init_help"; then
4942-
4943- cat <<\_ACEOF
4944-
4945-Optional Features:
4946- --disable-option-checking ignore unrecognized --enable/--with options
4947- --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
4948- --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
4949- --enable-layout=LAYOUT
4950- --enable-v4-mapped Allow IPv6 sockets to handle IPv4 connections
4951- --enable-exception-hook Enable fatal exception hook
4952- --enable-maintainer-mode
4953- Turn on debugging and compile time warnings
4954- --enable-pie Build httpd as a Position Independent Executable
4955- --enable-modules=MODULE-LIST
4956- Space-separated list of modules to enable | "all" |
4957- "most"
4958- --enable-mods-shared=MODULE-LIST
4959- Space-separated list of shared modules to enable |
4960- "all" | "most"
4961- --disable-authn-file file-based authentication control
4962- --enable-authn-dbm DBM-based authentication control
4963- --enable-authn-anon anonymous user authentication control
4964- --enable-authn-dbd SQL-based authentication control
4965- --disable-authn-default authentication backstopper
4966- --enable-authn-alias auth provider alias
4967- --disable-authz-host host-based authorization control
4968- --disable-authz-groupfile
4969- 'require group' authorization control
4970- --disable-authz-user 'require user' authorization control
4971- --enable-authz-dbm DBM-based authorization control
4972- --enable-authz-owner 'require file-owner' authorization control
4973- --enable-authnz-ldap LDAP based authentication
4974- --disable-authz-default authorization control backstopper
4975- --disable-auth-basic basic authentication
4976- --enable-auth-digest RFC2617 Digest authentication
4977- --enable-isapi isapi extension support
4978- --enable-file-cache File cache
4979- --enable-cache dynamic file caching
4980- --enable-disk-cache disk caching module
4981- --enable-mem-cache memory caching module
4982- --enable-dbd Apache DBD Framework
4983- --enable-bucketeer buckets manipulation filter
4984- --enable-dumpio I/O dump filter
4985- --enable-echo ECHO server
4986- --enable-example example and demo module
4987- --enable-case-filter example uppercase conversion filter
4988- --enable-case-filter-in example uppercase conversion input filter
4989- --enable-reqtimeout Limit time waiting for request from client
4990- --enable-ext-filter external filter module
4991- --disable-include Server Side Includes
4992- --disable-filter Smart Filtering
4993- --enable-substitute response content rewrite-like filtering
4994- --disable-charset-lite character set translation
4995- --enable-charset-lite character set translation
4996- --enable-deflate Deflate transfer encoding support
4997- --enable-ldap LDAP caching and connection pooling services
4998- --disable-log-config logging configuration
4999- --enable-log-forensic forensic logging
5000- --enable-logio input and output logging
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: