Petr Sumbera
2011-06-02 312c037faac4fb76503851b8671ab1907bf6e58d
7045614 Move Apache Web server to userland
6844584 mod_perl packaging improvements
81 files added
4 files modified
11855 ■■■■■ changed files
components/apache2-modules/mod_dtrace/Makefile 57 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_dtrace/apache-dtrace.p5m 57 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_dtrace/apache.license 201 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_dtrace/dtrace.conf 8 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_dtrace/src/Makefile 44 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_dtrace/src/apache.d 10 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_dtrace/src/mapfile 13 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_dtrace/src/mod_dtrace.c 208 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_fcgid/Makefile 55 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_fcgid/apache-fcgid.p5m 64 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_fcgid/apache.license 611 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_fcgid/fcgid.conf 19 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_fcgid/patches/fcgid.badspawnctl-r1037727.patch 17 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_fcgid/patches/fcgid.configure.apxs.patch 14 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_jk/Makefile 60 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_jk/apache-jk.p5m 62 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_jk/apache.license 202 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_jk/jk.conf 24 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_jk/workers.properties 6 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_perl/Makefile 71 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_perl/apache-perl.p5m 496 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_perl/patches/CVE-2009-0796.patch 47 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_perl/patches/Reload.patch 571 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_perl/patches/TestConfigParse.patch 14 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_perl/patches/bug38084.patch 12 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_perl/perl.conf 34 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_proxy_html/Makefile 51 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_proxy_html/apache-proxy_html.license 350 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_proxy_html/apache-proxy_html.p5m 58 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_proxy_html/apache-xml2enc.license 42 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_proxy_html/apache-xml2enc.p5m 51 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_proxy_html/patches/conf.patch 56 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_proxy_html/patches/makefile.patch 18 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_security2/Makefile 63 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_security2/apache-security.p5m 59 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_security2/patches/configure.in.patch 28 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_security2/security2.conf 59 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_security2/security2.license 291 ●●●●● patch | view | raw | blame | history
components/apache2/Makefile 117 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/apache2.1m.sunman 403 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/customization.sh 110 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/disabled-module.list 38 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/favicon.gif patch | view | raw | blame | history
components/apache2/Solaris/favicon.ico patch | view | raw | blame | history
components/apache2/Solaris/http-apache22 166 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/http-apache22.xml 135 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/loadmodules.sed 33 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/modules-32.load 38 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/modules-64.load 38 ●●●●● patch | view | raw | blame | history
components/apache2/Solaris/sample-module.tmpl 31 ●●●●● patch | view | raw | blame | history
components/apache2/apache-22.p5m 621 ●●●●● patch | view | raw | blame | history
components/apache2/apache-sed.p5m 58 ●●●●● patch | view | raw | blame | history
components/apache2/documentation.p5m 857 ●●●●● patch | view | raw | blame | history
components/apache2/mod_auth_gss/README 122 ●●●●● patch | view | raw | blame | history
components/apache2/mod_auth_gss/mod_auth_gss.c 605 ●●●●● patch | view | raw | blame | history
components/apache2/mod_auth_gss/mod_auth_gss.html 174 ●●●●● patch | view | raw | blame | history
components/apache2/mod_sed/libsed.h 175 ●●●●● patch | view | raw | blame | history
components/apache2/mod_sed/mod_sed.c 537 ●●●●● patch | view | raw | blame | history
components/apache2/mod_sed/regexp.c 601 ●●●●● patch | view | raw | blame | history
components/apache2/mod_sed/regexp.h 111 ●●●●● patch | view | raw | blame | history
components/apache2/mod_sed/sed.h 61 ●●●●● patch | view | raw | blame | history
components/apache2/mod_sed/sed0.c 1026 ●●●●● patch | view | raw | blame | history
components/apache2/mod_sed/sed1.c 1018 ●●●●● patch | view | raw | blame | history
components/apache2/patches/Makefile.in.patch 33 ●●●●● patch | view | raw | blame | history
components/apache2/patches/apachectl.patch 15 ●●●●● patch | view | raw | blame | history
components/apache2/patches/apr_common.m4.patch 12 ●●●●● patch | view | raw | blame | history
components/apache2/patches/config.layout.patch 76 ●●●●● patch | view | raw | blame | history
components/apache2/patches/dav.conf.in.patch 28 ●●●●● patch | view | raw | blame | history
components/apache2/patches/extra-modules.patch 24 ●●●●● patch | view | raw | blame | history
components/apache2/patches/httpd.conf.patch 138 ●●●●● patch | view | raw | blame | history
components/apache2/patches/info.conf.in.patch 42 ●●●●● patch | view | raw | blame | history
components/apache2/patches/ssl.conf.patch 38 ●●●●● patch | view | raw | blame | history
components/apr-util/Makefile 2 ●●●●● patch | view | raw | blame | history
components/apr/Makefile 2 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22d.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22m-dtrace.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22m-fcgid.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22m-jk.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22m-proxy-html.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22m-security.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22m-sed.p5m 29 ●●●●● patch | view | raw | blame | history
components/meta-packages/history/SUNWapch22m-xml2enc.p5m 29 ●●●●● patch | view | raw | blame | history
make-rules/configure.mk 4 ●●●● patch | view | raw | blame | history
make-rules/justmake.mk 2 ●●●●● patch | view | raw | blame | history
components/apache2-modules/mod_dtrace/Makefile
New file
@@ -0,0 +1,57 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME=        mod_dtrace
COMPONENT_VERSION=    0.3.1
COMPONENT_SRC=        src
include ../../../make-rules/justmake.mk
include ../../../make-rules/ips.mk
APACHE_USR_PREFIX=/usr/apache2/2.2
$(BUILD_DIR_32)/.built:    COMPONENT_BUILD_ARGS +=    APXS=$(APACHE_USR_PREFIX)/bin/apxs
$(BUILD_DIR_64)/.built:    COMPONENT_BUILD_ARGS +=    APXS=$(APACHE_USR_PREFIX)/bin/$(MACH64)/apxs
$(BUILD_DIR_32)/.built:    COMPONENT_BUILD_ARGS +=    DTRACE="/usr/sbin/dtrace -32"
$(BUILD_DIR_64)/.built:    COMPONENT_BUILD_ARGS +=    DTRACE="/usr/sbin/dtrace -64"
PATH=$(SPRO_VROOT)/bin:/usr/bin:/usr/gnu/bin
download:
clobber: clean
$(SOURCE_DIR)/.prep:
    $(TOUCH) $@
clean::
    $(RM) $(SOURCE_DIR)/.prep
build: $(BUILD_32_and_64)
test: $(NO_TESTS)
BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
include ../../../make-rules/depend.mk
components/apache2-modules/mod_dtrace/apache-dtrace.p5m
New file
@@ -0,0 +1,57 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/module/apache-dtrace@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="DTrace plugin for Apache Web Server V2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://prefetch.net/projects/apache_modtrace/"
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/PSARC/2008/090
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license apache.license license="Apache v2.0"
dir path=etc
dir path=etc/apache2
dir path=etc/apache2/2.2
dir path=etc/apache2/2.2/conf.d
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/libexec/$(MACH64)
file dtrace.conf path=etc/apache2/2.2/conf.d/dtrace.conf mode=0644 preserve=renamenew \
    original_name=SUNWapch22m-dtrace:etc/apache2/2.2/conf.d/dtrace.conf
file build/$(MACH32)/.libs/mod_dtrace.so path=usr/apache2/2.2/libexec/mod_dtrace.so
file build/$(MACH64)/.libs/mod_dtrace.so path=usr/apache2/2.2/libexec/$(MACH64)/mod_dtrace.so
legacy    pkg=SUNWapch22m-dtrace \
    name="DTrace plugin for Apache Web Server V2.2" \
    desc="Dtrace plugin for Apache Web Server Version 2.2"
legacy    pkg=SUNWapch22r-dtrace \
    name="DTrace plugin for Apache Web Server V2.2" \
    desc="Dtrace plugin for Apache Web Server Version 2.2"
components/apache2-modules/mod_dtrace/apache.license
New file
@@ -0,0 +1,201 @@
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/
   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
   1. Definitions.
      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.
      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.
      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.
      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.
      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.
      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.
      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).
      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.
      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."
      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.
   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.
   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.
   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:
      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and
      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and
      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and
      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.
      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.
   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.
   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.
   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.
   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.
   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.
   END OF TERMS AND CONDITIONS
   APPENDIX: How to apply the Apache License to your work.
      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.
   Copyright [yyyy] [name of copyright owner]
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at
       http://www.apache.org/licenses/LICENSE-2.0
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
components/apache2-modules/mod_dtrace/dtrace.conf
New file
@@ -0,0 +1,8 @@
<IfDefine 64bit>
LoadModule dtrace_module libexec/64/mod_dtrace.so
</IfDefine>
<IfDefine !64bit>
LoadModule dtrace_module libexec/mod_dtrace.so
</IfDefine>
components/apache2-modules/mod_dtrace/src/Makefile
New file
@@ -0,0 +1,44 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
APXS=apxs
DTRACE=/usr/sbin/dtrace
CC=`$(APXS) -q CC`
CFLAGS=`$(APXS) -q CFLAGS`
LDFLAGS_SHLIB=`$(APXS) -q LDFLAGS_SHLIB`
all: .libs/mod_dtrace.so
.libs/mod_dtrace.o: mod_dtrace.c
    $(APXS) -c -o mod_dtrace.so mod_dtrace.c && rm .libs/mod_dtrace.so
apache.o: .libs/mod_dtrace.o apache.d
    $(DTRACE) -G -o apache.o -s apache.d .libs/mod_dtrace.o
.libs/mod_dtrace.so: apache.o mapfile .libs/mod_dtrace.o
    $(CC) -M mapfile $(CFLAGS) -KPIC -G $(LDFLAGS_SHLIB) -o .libs/mod_dtrace.so .libs/mod_dtrace.o apache.o
clean:
    -rm -f *.o *.so *.lo *.la *.slo
    -rm -rf .libs
components/apache2-modules/mod_dtrace/src/apache.d
New file
@@ -0,0 +1,10 @@
provider apache {
    probe receive__request(uintptr_t);
    probe log__request(uintptr_t,string,string);
    probe create__child();
    probe accept__connection(uintptr_t);
    probe check__user__credentials(uintptr_t);
    probe check__access(uintptr_t);
    probe check__authorization(uintptr_t);
};
components/apache2-modules/mod_dtrace/src/mapfile
New file
@@ -0,0 +1,13 @@
data = R0x1000000;
{
    local:
        apache_receive_request;
        apache_log_request;
        apache_create_child;
        apache_accept_connection;
        apache_check_user;
        apache_check_access;
        apache_check_authorization;
        dtrace_register_hooks;
};
components/apache2-modules/mod_dtrace/src/mod_dtrace.c
New file
@@ -0,0 +1,208 @@
/*
* License:
* Copyright 2004 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Module Name: mod_dtrace
*
* Purpose: Apache implements a set of hooks and filters to allow
*          modules to view and modify requests sent to the server.
*          This module takes advantage of this architecture to
*          implement several DTrace hooks.
*
* Notes: To get the most use out of the mod_dtrace Apache module, it will
*        be useful to familiarize yourself with the Apache request_rec,
*        server_rec and conn_rec structures. These can be viewed on the
*        docx website:
*
*        http://docx.webperf.org/httpd_8h-source.html
*
*        A basic overview of each structure is included below:
*
*           request_rec : Contains all of the attributes (URI, filename,
*                         method, bytes_sent) needed to describe an
*                         HTTP request
*
*           conn_rec    : Stores the connection attributes including
*                         IP addresses and ports
*
*           server_rec  : Stores information to describe each virtual server
*
* Last Modified: 02-08-2007
*
* Author: Matty < matty91 at gmail dot com >
*
* Version: 0.3a
*
* Release history:
*
*    0.3a: Fixed bug due to NULL values -- Sebastien Bouchex Bellomie
*
*    0.2a: Initial release
*
* Build instructions are available at the following site:
*    http://prefetch.net/projects/apache_modtrace/build.txt
*
*/
#include "ap_config.h"
#include "httpd.h"
#include "http_config.h"
#include "http_connection.h"
#include "http_protocol.h"
#include "http_request.h"
#include <sys/sdt.h>
module AP_MODULE_DECLARE_DATA dtrace_module;
/*
*   Probe Function Purpoose:
*   This probe will fire each time a request is send to the server.
*
*   arg0 -> address of the request_rec structure
*/
int apache_receive_request(request_rec *r)
{
    DTRACE_PROBE1(apache,
                  receive__request,
                  r);
    return DECLINED;
}
/*
*   This probe will fire each time the web server invokes the logging handlers.
*   Since the request_rec, server_rec and conn_rec should be completely filled
*   in when this probe fires -- this will be a useful probe.
*
*   arg0 -> The address of the request_rec structure
*/
int apache_log_request(request_rec *r)
{
    /* apr_table_get will return the value of User-Agent or NULL */
    const char *userAgent = NULL;
    if (r->headers_in != NULL)
    {
        userAgent = apr_table_get(r->headers_in, "User-Agent");
    }
    /* apr_table_get will return the value of Location or NULL */
    const char *redirectLocation = NULL;
    if (r->headers_out) {
        redirectLocation = apr_table_get(r->headers_out, "Location");
    }
    DTRACE_PROBE3(apache,
                  log__request,
                  r,
                  userAgent,
                  redirectLocation);
    return DECLINED;
}
/*
*  This probe will fire each time an httpd child process is created
*/
void apache_create_child(apr_pool_t *p, server_rec *s)
{
    DTRACE_PROBE(apache,
                 create__child);
}
/*
*   This probe will fire each time a new TCP connection is created
*
*   arg0 -> Client's IP address
*/
int apache_accept_connection(conn_rec *c, void *csd)
{
    DTRACE_PROBE1(apache,
                  accept__connection,
                  c);
    return DECLINED;
}
/*
*   This probe will fire when the authentication stage is encountered
*
*   arg0 -> The address of the request_rec structure
*
*/
int apache_check_user(request_rec *r)
{
    DTRACE_PROBE1(apache,
                  check__user__credentials,
                  r);
    return DECLINED;
}
/*
*   This probe will fire when the access checking stage is encountered
*
*   arg0 -> The address of the request_rec structure
*
*/
int apache_check_access(request_rec *r)
{
    DTRACE_PROBE1(apache,
                  check__access,
                  r);
    return DECLINED;
}
/*
*   This probe will fire when the authorization checking stage is encountered
*
*   arg0 -> The address of the request_rec structure
*
*/
int apache_check_authorization(request_rec *r)
{
    DTRACE_PROBE1(apache,
                  check__authorization,
                  r);
    return DECLINED;
}
/*
*    Define the hooks and the functions registered to those hooks
*/
void dtrace_register_hooks(apr_pool_t *p)
{
    ap_hook_post_read_request(apache_receive_request,NULL,NULL,APR_HOOK_MIDDLE);
    ap_hook_child_init(apache_create_child,NULL, NULL, APR_HOOK_MIDDLE);
    ap_hook_pre_connection(apache_accept_connection,NULL, NULL, APR_HOOK_MIDDLE);
    ap_hook_check_user_id(apache_check_user,NULL,NULL,APR_HOOK_MIDDLE);
    ap_hook_access_checker(apache_check_access,NULL,NULL,APR_HOOK_MIDDLE);
    ap_hook_auth_checker(apache_check_authorization,NULL,NULL,APR_HOOK_MIDDLE);
    ap_hook_log_transaction(apache_log_request,NULL,NULL,APR_HOOK_MIDDLE);
}
module AP_MODULE_DECLARE_DATA dtrace_module =
{
    STANDARD20_MODULE_STUFF,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    dtrace_register_hooks
};
components/apache2-modules/mod_fcgid/Makefile
New file
@@ -0,0 +1,55 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME=        mod_fcgid
COMPONENT_VERSION=    2.3.6
COMPONENT_SRC=        $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH=    sha1:018245896f331909e896685ab3ca86b163846e4d
COMPONENT_ARCHIVE_URL=    http://archive.apache.org/dist/httpd/mod_fcgid/$(COMPONENT_ARCHIVE)
include ../../../make-rules/prep.mk
include ../../../make-rules/justmake.mk
include ../../../make-rules/ips.mk
PATCH_LEVEL=0
APACHE_USR_PREFIX=/usr/apache2/2.2
$(BUILD_DIR_32)/.built:    APXS=$(APACHE_USR_PREFIX)/bin/apxs
$(BUILD_DIR_64)/.built:    APXS=$(APACHE_USR_PREFIX)/bin/$(MACH64)/apxs
COMPONENT_PRE_BUILD_ACTION= ( cd $(@D); APXS=$(APXS) ./configure.apxs )
PATH=$(SPRO_VROOT)/bin:/usr/bin:/usr/gnu/bin
build: $(BUILD_32_and_64)
install: $(INSTALL_32_and_64)
test: $(NO_TESTS)
BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
include ../../../make-rules/depend.mk
components/apache2-modules/mod_fcgid/apache-fcgid.p5m
New file
@@ -0,0 +1,64 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/module/apache-fcgid@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="FastCGI plugin for Apache Web Server V2.2"
set name=pkg.description \
    value="FastCGI plugin for Apache Web Server Version 2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://httpd.apache.org/mod_fcgid/"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/LSARC/2009/600
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license apache.license license="Apache v2.0"
dir path=etc
dir path=etc/apache2
dir path=etc/apache2/2.2
dir path=etc/apache2/2.2/conf.d
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/libexec/$(MACH64)
dir path=usr/apache2/2.2/manual
dir path=usr/apache2/2.2/manual/mod
file fcgid.conf path=etc/apache2/2.2/conf.d/fcgid.conf mode=0644 preserve=renamenew \
    original_name=SUNWapch22m-fcgid:etc/apache2/2.2/conf.d/fcgid.conf
file path=usr/apache2/2.2/libexec/mod_fcgid.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_fcgid.so
file path=usr/apache2/2.2/manual/mod/mod_fcgid.html.en
file path=usr/apache2/2.2/manual/mod/mod_fcgid.html
legacy    pkg=SUNWapch22m-fcgid \
    name="FastCGI plugin for Apache Web Server V2.2" \
    desc="FastCGI plugin for Apache Web Server Version 2.2 (2.3.6)"
legacy    pkg=SUNWapch22r-fcgid \
    name="FastCGI plugin for Apache Web Server V2.2" \
    desc="FastCGI plugin for Apache Web Server Version 2.2 (2.3.6)"
components/apache2-modules/mod_fcgid/apache.license
New file
@@ -0,0 +1,611 @@
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/
   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
   1. Definitions.
      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.
      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.
      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.
      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.
      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.
      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.
      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).
      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.
      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."
      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.
   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.
   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.
   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:
      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and
      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and
      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and
      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.
      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.
   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.
   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.
   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.
   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.
   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.
   END OF TERMS AND CONDITIONS
   APPENDIX: How to apply the Apache License to your work.
      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.
   Copyright [yyyy] [name of copyright owner]
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at
       http://www.apache.org/licenses/LICENSE-2.0
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
APACHE HTTP SERVER SUBCOMPONENTS:
The Apache HTTP Server includes a number of subcomponents with
separate copyright notices and license terms. Your use of the source
code for the these subcomponents is subject to the terms and
conditions of the following licenses.
For the mod_mime_magic component:
/*
 * mod_mime_magic: MIME type lookup via file magic numbers
 * Copyright (c) 1996-1997 Cisco Systems, Inc.
 *
 * This software was submitted by Cisco Systems to the Apache Group in July
 * 1997.  Future revisions and derivatives of this source code must
 * acknowledge Cisco Systems as the original contributor of this module.
 * All other licensing and usage conditions are those of the Apache Group.
 *
 * Some of this code is derived from the free version of the file command
 * originally posted to comp.sources.unix.  Copyright info for that program
 * is included below as required.
 * ---------------------------------------------------------------------------
 * - Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.
 *
 * This software is not subject to any license of the American Telephone and
 * Telegraph Company or of the Regents of the University of California.
 *
 * Permission is granted to anyone to use this software for any purpose on any
 * computer system, and to alter it and redistribute it freely, subject to
 * the following restrictions:
 *
 * 1. The author is not responsible for the consequences of use of this
 * software, no matter how awful, even if they arise from flaws in it.
 *
 * 2. The origin of this software must not be misrepresented, either by
 * explicit claim or by omission.  Since few users ever read sources, credits
 * must appear in the documentation.
 *
 * 3. Altered versions must be plainly marked as such, and must not be
 * misrepresented as being the original software.  Since few users ever read
 * sources, credits must appear in the documentation.
 *
 * 4. This notice may not be removed or altered.
 * -------------------------------------------------------------------------
 *
 */
For the  modules\mappers\mod_imagemap.c component:
  "macmartinized" polygon code copyright 1992 by Eric Haines, erich@eye.com
For the  server\util_md5.c component:
/************************************************************************
 * NCSA HTTPd Server
 * Software Development Group
 * National Center for Supercomputing Applications
 * University of Illinois at Urbana-Champaign
 * 605 E. Springfield, Champaign, IL 61820
 * httpd@ncsa.uiuc.edu
 *
 * Copyright  (C)  1995, Board of Trustees of the University of Illinois
 *
 ************************************************************************
 *
 * md5.c: NCSA HTTPd code which uses the md5c.c RSA Code
 *
 *  Original Code Copyright (C) 1994, Jeff Hostetler, Spyglass, Inc.
 *  Portions of Content-MD5 code Copyright (C) 1993, 1994 by Carnegie Mellon
 *     University (see Copyright below).
 *  Portions of Content-MD5 code Copyright (C) 1991 Bell Communications
 *     Research, Inc. (Bellcore) (see Copyright below).
 *  Portions extracted from mpack, John G. Myers - jgm+@cmu.edu
 *  Content-MD5 Code contributed by Martin Hamilton (martin@net.lut.ac.uk)
 *
 */
/* these portions extracted from mpack, John G. Myers - jgm+@cmu.edu */
/* (C) Copyright 1993,1994 by Carnegie Mellon University
 * All Rights Reserved.
 *
 * Permission to use, copy, modify, distribute, and sell this software
 * and its documentation for any purpose is hereby granted without
 * fee, provided that the above copyright notice appear in all copies
 * and that both that copyright notice and this permission notice
 * appear in supporting documentation, and that the name of Carnegie
 * Mellon University not be used in advertising or publicity
 * pertaining to distribution of the software without specific,
 * written prior permission.  Carnegie Mellon University makes no
 * representations about the suitability of this software for any
 * purpose.  It is provided "as is" without express or implied
 * warranty.
 *
 * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
 * SOFTWARE.
 */
/*
 * Copyright (c) 1991 Bell Communications Research, Inc. (Bellcore)
 *
 * Permission to use, copy, modify, and distribute this material
 * for any purpose and without fee is hereby granted, provided
 * that the above copyright notice and this permission notice
 * appear in all copies, and that the name of Bellcore not be
 * used in advertising or publicity pertaining to this
 * material without the specific, prior written permission
 * of an authorized representative of Bellcore.  BELLCORE
 * MAKES NO REPRESENTATIONS ABOUT THE ACCURACY OR SUITABILITY
 * OF THIS MATERIAL FOR ANY PURPOSE.  IT IS PROVIDED "AS IS",
 * WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES.
 */
For the  srclib\apr\include\apr_md5.h component:
/*
 * This is work is derived from material Copyright RSA Data Security, Inc.
 *
 * The RSA copyright statement and Licence for that original material is
 * included below. This is followed by the Apache copyright statement and
 * licence for the modifications made to that material.
 */
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
   rights reserved.
   License to copy and use this software is granted provided that it
   is identified as the "RSA Data Security, Inc. MD5 Message-Digest
   Algorithm" in all material mentioning or referencing this software
   or this function.
   License is also granted to make and use derivative works provided
   that such works are identified as "derived from the RSA Data
   Security, Inc. MD5 Message-Digest Algorithm" in all material
   mentioning or referencing the derived work.
   RSA Data Security, Inc. makes no representations concerning either
   the merchantability of this software or the suitability of this
   software for any particular purpose. It is provided "as is"
   without express or implied warranty of any kind.
   These notices must be retained in any copies of any part of this
   documentation and/or software.
 */
For the  srclib\apr\passwd\apr_md5.c component:
/*
 * This is work is derived from material Copyright RSA Data Security, Inc.
 *
 * The RSA copyright statement and Licence for that original material is
 * included below. This is followed by the Apache copyright statement and
 * licence for the modifications made to that material.
 */
/* MD5C.C - RSA Data Security, Inc., MD5 message-digest algorithm
 */
/* Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
   rights reserved.
   License to copy and use this software is granted provided that it
   is identified as the "RSA Data Security, Inc. MD5 Message-Digest
   Algorithm" in all material mentioning or referencing this software
   or this function.
   License is also granted to make and use derivative works provided
   that such works are identified as "derived from the RSA Data
   Security, Inc. MD5 Message-Digest Algorithm" in all material
   mentioning or referencing the derived work.
   RSA Data Security, Inc. makes no representations concerning either
   the merchantability of this software or the suitability of this
   software for any particular purpose. It is provided "as is"
   without express or implied warranty of any kind.
   These notices must be retained in any copies of any part of this
   documentation and/or software.
 */
/*
 * The apr_md5_encode() routine uses much code obtained from the FreeBSD 3.0
 * MD5 crypt() function, which is licenced as follows:
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <phk@login.dknet.dk> wrote this file.  As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return.  Poul-Henning Kamp
 * ----------------------------------------------------------------------------
 */
For the srclib\apr-util\crypto\apr_md4.c component:
 * This is derived from material copyright RSA Data Security, Inc.
 * Their notice is reproduced below in its entirety.
 *
 * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
 * rights reserved.
 *
 * License to copy and use this software is granted provided that it
 * is identified as the "RSA Data Security, Inc. MD4 Message-Digest
 * Algorithm" in all material mentioning or referencing this software
 * or this function.
 *
 * License is also granted to make and use derivative works provided
 * that such works are identified as "derived from the RSA Data
 * Security, Inc. MD4 Message-Digest Algorithm" in all material
 * mentioning or referencing the derived work.
 *
 * RSA Data Security, Inc. makes no representations concerning either
 * the merchantability of this software or the suitability of this
 * software for any particular purpose. It is provided "as is"
 * without express or implied warranty of any kind.
 *
 * These notices must be retained in any copies of any part of this
 * documentation and/or software.
 */
For the srclib\apr-util\include\apr_md4.h component:
 *
 * This is derived from material copyright RSA Data Security, Inc.
 * Their notice is reproduced below in its entirety.
 *
 * Copyright (C) 1991-2, RSA Data Security, Inc. Created 1991. All
 * rights reserved.
 *
 * License to copy and use this software is granted provided that it
 * is identified as the "RSA Data Security, Inc. MD4 Message-Digest
 * Algorithm" in all material mentioning or referencing this software
 * or this function.
 *
 * License is also granted to make and use derivative works provided
 * that such works are identified as "derived from the RSA Data
 * Security, Inc. MD4 Message-Digest Algorithm" in all material
 * mentioning or referencing the derived work.
 *
 * RSA Data Security, Inc. makes no representations concerning either
 * the merchantability of this software or the suitability of this
 * software for any particular purpose. It is provided "as is"
 * without express or implied warranty of any kind.
 *
 * These notices must be retained in any copies of any part of this
 * documentation and/or software.
 */
For the srclib\apr-util\test\testmd4.c component:
 *
 * This is derived from material copyright RSA Data Security, Inc.
 * Their notice is reproduced below in its entirety.
 *
 * Copyright (C) 1990-2, RSA Data Security, Inc. Created 1990. All
 * rights reserved.
 *
 * RSA Data Security, Inc. makes no representations concerning either
 * the merchantability of this software or the suitability of this
 * software for any particular purpose. It is provided "as is"
 * without express or implied warranty of any kind.
 *
 * These notices must be retained in any copies of any part of this
 * documentation and/or software.
 */
For the srclib\apr-util\xml\expat\conftools\install-sh component:
#
# install - install a program, script, or datafile
# This comes from X11R5 (mit/util/scripts/install.sh).
#
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission.  M.I.T. makes no representations about the
# suitability of this software for any purpose.  It is provided "as is"
# without express or implied warranty.
#
For the srclib\pcre\install-sh component:
#
# Copyright 1991 by the Massachusetts Institute of Technology
#
# Permission to use, copy, modify, distribute, and sell this software and its
# documentation for any purpose is hereby granted without fee, provided that
# the above copyright notice appear in all copies and that both that
# copyright notice and this permission notice appear in supporting
# documentation, and that the name of M.I.T. not be used in advertising or
# publicity pertaining to distribution of the software without specific,
# written prior permission.  M.I.T. makes no representations about the
# suitability of this software for any purpose.  It is provided "as is"
# without express or implied warranty.
For the pcre component:
PCRE LICENCE
------------
PCRE is a library of functions to support regular expressions whose syntax
and semantics are as close as possible to those of the Perl 5 language.
Release 5 of PCRE is distributed under the terms of the "BSD" licence, as
specified below. The documentation for PCRE, supplied in the "doc"
directory, is distributed under the same terms as the software itself.
Written by: Philip Hazel <ph10@cam.ac.uk>
University of Cambridge Computing Service,
Cambridge, England. Phone: +44 1223 334714.
Copyright (c) 1997-2004 University of Cambridge
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright notice,
      this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the University of Cambridge nor the names of its
      contributors may be used to endorse or promote products derived from
      this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
End PCRE LICENCE
For the test\zb.c component:
/*                          ZeusBench V1.01
                ===============
This program is Copyright (C) Zeus Technology Limited 1996.
This program may be used and copied freely providing this copyright notice
is not removed.
This software is provided "as is" and any express or implied waranties,
including but not limited to, the implied warranties of merchantability and
fitness for a particular purpose are disclaimed.  In no event shall
Zeus Technology Ltd. be liable for any direct, indirect, incidental, special,
exemplary, or consequential damaged (including, but not limited to,
procurement of substitute good or services; loss of use, data, or profits;
or business interruption) however caused and on theory of liability.  Whether
in contract, strict liability or tort (including negligence or otherwise)
arising in any way out of the use of this software, even if advised of the
possibility of such damage.
     Written by Adam Twiss (adam@zeus.co.uk).  March 1996
Thanks to the following people for their input:
  Mike Belshe (mbelshe@netscape.com)
  Michael Campanella (campanella@stevms.enet.dec.com)
*/
For the expat xml parser component:
Copyright (c) 1998, 1999, 2000 Thai Open Source Software Center Ltd
                               and Clark Cooper
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====================================================================
components/apache2-modules/mod_fcgid/fcgid.conf
New file
@@ -0,0 +1,19 @@
<IfDefine 64bit>
LoadModule fcgid_module libexec/64/mod_fcgid.so
</IfDefine>
<IfDefine !64bit>
LoadModule fcgid_module libexec/mod_fcgid.so
</IfDefine>
<IfModule mod_fcgid.c>
FcgidProcessTableFile /var/run/apache2/2.2/fcgid_shm
FcgidIPCDir /var/run/apache2/2.2/fcgid.sock
AddHandler fcgid-script .fcgi
<Location /fcgid>
    SetHandler fcgid-script
    Options ExecCGI
    allow from all
</Location>
</IfModule>
components/apache2-modules/mod_fcgid/patches/fcgid.badspawnctl-r1037727.patch
New file
@@ -0,0 +1,17 @@
#
#  Fix regression in 2.3.6 which broke process controls when using vhost-
#  specific configuration.
#
Index: modules/fcgid/fcgid_spawn_ctl.c
===================================================================
--- modules/fcgid/fcgid_spawn_ctl.c    (revision 1037726)
+++ modules/fcgid/fcgid_spawn_ctl.c    (revision 1037727)
@@ -178,7 +178,7 @@
         if (current_node->inode == command->inode
             && current_node->deviceid == command->deviceid
             && !strcmp(current_node->cmdline, command->cmdline)
-            && current_node->vhost_id == sconf->vhost_id
+            && current_node->vhost_id == command->vhost_id
             && current_node->uid == command->uid
             && current_node->gid == command->gid)
             break;
components/apache2-modules/mod_fcgid/patches/fcgid.configure.apxs.patch
New file
@@ -0,0 +1,14 @@
--- configure.apxs.orig    Wed Jun  2 10:55:51 2010
+++ configure.apxs    Tue May 10 09:48:15 2011
@@ -24,8 +24,9 @@
 # scripts expect them to be the parent of the build directory
 # they fail to use the $installbuilddir path.
 exp_installbuilddir=`$APXS -q exp_installbuilddir`
-top_installbuilddir=`cd $exp_installbuilddir/..; pwd`
-top_installbuilddir=`echo $exp_installbuilddir | sed -e "s#/[^/]*\\\$##;"`
+# Better to set top_builddir and top_srcdir to Apache prefix in order 64
+# bits module is built (to avoid problem with $(MACH64) directory in path).
+top_installbuilddir=`$APXS -q prefix`
 builddir=`pwd`
 srcdir=$builddir
components/apache2-modules/mod_jk/Makefile
New file
@@ -0,0 +1,60 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME=        tomcat-connectors
COMPONENT_VERSION=    1.2.28
COMPONENT_SRC=        $(COMPONENT_NAME)-$(COMPONENT_VERSION)-src
COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH=    sha1:0e022e242d88f4d42cbbfa42883d02e14ad16929
COMPONENT_ARCHIVE_URL=    http://archive.apache.org/dist/tomcat/tomcat-connectors/jk/source/jk-$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
include ../../../make-rules/prep.mk
include ../../../make-rules/configure.mk
include ../../../make-rules/ips.mk
PATCH_LEVEL=0
APACHE_USR_PREFIX=/usr/apache2/2.2
CONFIGURE_SCRIPT = $(SOURCE_DIR)/native/configure
# Forcing CC from environment instead. Using one provided by apxs doesn't
# make mod_jk build.
CC=
CONFIGURE_OPTIONS.32 += --with-apxs=$(APACHE_USR_PREFIX)/bin/apxs
CONFIGURE_OPTIONS.64 += --with-apxs=$(APACHE_USR_PREFIX)/bin/$(MACH64)/apxs
# Header files are missing during build without cloning.
COMPONENT_PRE_CONFIGURE_ACTION += ($(CLONEY) $(SOURCE_DIR)/native $(@D));
PATH=$(SPRO_VROOT)/bin:/usr/bin:/usr/gnu/bin
build: $(BUILD_32_and_64)
test: $(NO_TESTS)
BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
include ../../../make-rules/depend.mk
components/apache2-modules/mod_jk/apache-jk.p5m
New file
@@ -0,0 +1,62 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/module/apache-jk@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="Tomcat Connector plugin for Apache Web Server V2.2"
set name=pkg.description \
    value="Tomcat Connector plugin for Apache Web Server Version 2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://tomcat.apache.org/connectors-doc/"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/PSARC/2008/090
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license apache.license license="Apache v2.0"
dir path=etc
dir path=etc/apache2
dir path=etc/apache2/2.2
dir path=etc/apache2/2.2/conf.d
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/libexec/$(MACH64)
file jk.conf path=etc/apache2/2.2/conf.d/jk.conf mode=0644 preserve=renamenew \
    original_name=SUNWapch22m-jk:etc/apache2/2.2/conf.d/jk.conf
file workers.properties path=etc/apache2/2.2/conf.d/workers.properties mode=0644 preserve=renamenew \
    original_name=SUNWapch22m-jk:etc/apache2/2.2/conf.d/workers.properties
file build/$(MACH32)/apache-2.0/mod_jk.so path=usr/apache2/2.2/libexec/mod_jk.so
file build/$(MACH64)/apache-2.0/mod_jk.so path=usr/apache2/2.2/libexec/$(MACH64)/mod_jk.so
legacy    pkg=SUNWapch22m-jk \
    name="Tomcat Connector plugin for Apache Web Server Version 2.2 (1.2.28)" \
    desc="Tomcat Connector plugin for Apache Web Server Version 2.2 (1.2.28)"
legacy    pkg=SUNWapch22r-jk \
    name="Tomcat Connector plugin for Apache Web Server Version 2.2 (1.2.28)" \
    desc="Tomcat Connector plugin for Apache Web Server Version 2.2 (1.2.28)"
components/apache2-modules/mod_jk/apache.license
New file
@@ -0,0 +1,202 @@
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/
   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
   1. Definitions.
      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.
      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.
      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.
      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.
      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.
      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.
      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).
      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.
      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."
      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.
   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.
   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.
   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:
      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and
      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and
      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and
      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.
      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.
   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.
   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.
   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.
   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.
   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.
   END OF TERMS AND CONDITIONS
   APPENDIX: How to apply the Apache License to your work.
      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.
   Copyright [yyyy] [name of copyright owner]
   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at
       http://www.apache.org/licenses/LICENSE-2.0
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
components/apache2-modules/mod_jk/jk.conf
New file
@@ -0,0 +1,24 @@
<IfDefine 64bit>
LoadModule jk_module libexec/64/mod_jk.so
</IfDefine>
<IfDefine !64bit>
LoadModule jk_module libexec/mod_jk.so
</IfDefine>
<IfModule mod_jk.c>
   JkWorkersFile /etc/apache2/2.2/conf.d/workers.properties
   # Where to put jk shared memory
   # Update this path to match your local state directory or logs directory
   JkShmFile     /var/apache2/2.2/logs/mod_jk.shm
   # Where to put jk logs
   # Update this path to match your logs directory location (put mod_jk.log next to access_log)
   JkLogFile     /var/apache2/2.2/logs/mod_jk.log
   # Set the jk log level [debug/error/info]
   JkLogLevel    info
   # Select the timestamp log format
   JkLogStampFormat "[%a %b %d %H:%M:%S %Y] "
   # Send everything for context /examples to worker named worker1 (ajp13)
   JkMount  /examples/* worker1
</IfModule>
components/apache2-modules/mod_jk/workers.properties
New file
@@ -0,0 +1,6 @@
# Define 1 real worker using ajp13
worker.list=worker1
# Set properties for worker1 (ajp13)
worker.worker1.type=ajp13
worker.worker1.host=localhost
worker.worker1.port=8009
components/apache2-modules/mod_perl/Makefile
New file
@@ -0,0 +1,71 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME=        mod_perl
COMPONENT_VERSION=    2.0.4
COMPONENT_SRC=        $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH=    sha1:65299a16ec414a690a48a2bbe63acaa3c6bb897b
COMPONENT_ARCHIVE_URL=    http://perl.apache.org/dist/$(COMPONENT_ARCHIVE)
CONFIGURE_DEFAULT_DIRS=no
include ../../../make-rules/prep.mk
include ../../../make-rules/justmake.mk
include ../../../make-rules/ips.mk
APACHE_USR_PREFIX=/usr/apache2/2.2
AP_PERL5LIB=$(APACHE_USR_PREFIX)/lib/perl
AP_PERL5BIN=$(APACHE_USR_PREFIX)/bin
PERLMAN=$(APACHE_USR_PREFIX)/man
COMPONENT_PRE_BUILD_ACTION= ( \
    cd $(@D); $(PERL) Makefile.PL \
    INSTALLDIRS=perl \
    INSTALLSITELIB=$(AP_PERL5LIB) \
    INSTALLARCHLIB=$(AP_PERL5LIB) \
    INSTALLSITEARCH=$(AP_PERL5LIB) \
    INSTALLPRIVLIB=$(AP_PERL5LIB) \
    SITEARCHEXP=$(AP_PERL5LIB) \
    SITELIBEXP=$(AP_PERL5LIB) \
    INSTALLMAN1DIR=$(PERLMAN)/man1 \
    INSTALLMAN3DIR=$(PERLMAN)/man3 \
    INSTALLSCRIPT=$(AP_PERL5BIN) \
    MP_APXS=$(APACHE_USR_PREFIX)/bin/apxs)
COMPONENT_TEST_TARGETS=    test
PATH=$(SPRO_VROOT)/bin:/usr/bin:/usr/gnu/bin
build: $(BUILD_32)
install: $(INSTALL_32)
# Won't start (maybe because of mod_dtrace.so on system).
#test: $(TEST_32)
test: $(NO_TESTS)
BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
include ../../../make-rules/depend.mk
components/apache2-modules/mod_perl/apache-perl.p5m
New file
@@ -0,0 +1,496 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/module/apache-perl@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="Perl plugin for Apache Web Server V2.2"
set name=pkg.description \
    value="Perl plugin for Apache Web Server Version 2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://perl.apache.org/"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/PSARC/2007/586
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license LICENSE license="Apache v2.0"
dir path=etc
dir path=etc/apache2
dir path=etc/apache2/2.2
dir path=etc/apache2/2.2/conf.d
file perl.conf path=etc/apache2/2.2/conf.d/perl.conf mode=0644 preserve=renamenew
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/bin
dir path=usr/apache2/2.2/include
dir path=usr/apache2/2.2/lib
dir path=usr/apache2/2.2/lib/perl
dir path=usr/apache2/2.2/lib/perl/APR
dir path=usr/apache2/2.2/lib/perl/Apache
dir path=usr/apache2/2.2/lib/perl/Apache2
dir path=usr/apache2/2.2/lib/perl/Apache2/PerlSections
dir path=usr/apache2/2.2/lib/perl/Bundle
dir path=usr/apache2/2.2/lib/perl/ModPerl
dir path=usr/apache2/2.2/lib/perl/auto
dir path=usr/apache2/2.2/lib/perl/auto/APR
dir path=usr/apache2/2.2/lib/perl/auto/APR/Base64
dir path=usr/apache2/2.2/lib/perl/auto/APR/Brigade
dir path=usr/apache2/2.2/lib/perl/auto/APR/Bucket
dir path=usr/apache2/2.2/lib/perl/auto/APR/BucketAlloc
dir path=usr/apache2/2.2/lib/perl/auto/APR/BucketType
dir path=usr/apache2/2.2/lib/perl/auto/APR/Const
dir path=usr/apache2/2.2/lib/perl/auto/APR/Date
dir path=usr/apache2/2.2/lib/perl/auto/APR/Error
dir path=usr/apache2/2.2/lib/perl/auto/APR/Finfo
dir path=usr/apache2/2.2/lib/perl/auto/APR/IpSubnet
dir path=usr/apache2/2.2/lib/perl/auto/APR/OS
dir path=usr/apache2/2.2/lib/perl/auto/APR/PerlIO
dir path=usr/apache2/2.2/lib/perl/auto/APR/Pool
dir path=usr/apache2/2.2/lib/perl/auto/APR/SockAddr
dir path=usr/apache2/2.2/lib/perl/auto/APR/Socket
dir path=usr/apache2/2.2/lib/perl/auto/APR/Status
dir path=usr/apache2/2.2/lib/perl/auto/APR/String
dir path=usr/apache2/2.2/lib/perl/auto/APR/Table
dir path=usr/apache2/2.2/lib/perl/auto/APR/ThreadMutex
dir path=usr/apache2/2.2/lib/perl/auto/APR/ThreadRWLock
dir path=usr/apache2/2.2/lib/perl/auto/APR/URI
dir path=usr/apache2/2.2/lib/perl/auto/APR/UUID
dir path=usr/apache2/2.2/lib/perl/auto/APR/Util
dir path=usr/apache2/2.2/lib/perl/auto/Apache2
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Access
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Build
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/CmdParms
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Command
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Connection
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/ConnectionUtil
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Const
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Directive
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Filter
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/FilterRec
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/HookRun
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Log
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/MPM
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Module
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Process
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestIO
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestRec
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestUtil
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Response
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/ServerRec
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/ServerUtil
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/SubProcess
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/SubRequest
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/URI
dir path=usr/apache2/2.2/lib/perl/auto/Apache2/Util
dir path=usr/apache2/2.2/lib/perl/auto/ModPerl
dir path=usr/apache2/2.2/lib/perl/auto/ModPerl/Const
dir path=usr/apache2/2.2/lib/perl/auto/ModPerl/Global
dir path=usr/apache2/2.2/lib/perl/auto/ModPerl/Util
dir path=usr/apache2/2.2/lib/perl/auto/mod_perl2
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/man
dir path=usr/apache2/2.2/man/man3
dir path=usr/bin
file path=usr/apache2/2.2/bin/mp2bug
file path=usr/apache2/2.2/include/mod_perl.h
file path=usr/apache2/2.2/include/modperl_apache_compat.h
file path=usr/apache2/2.2/include/modperl_apache_includes.h
file path=usr/apache2/2.2/include/modperl_apr_compat.h
file path=usr/apache2/2.2/include/modperl_apr_includes.h
file path=usr/apache2/2.2/include/modperl_apr_perlio.h
file path=usr/apache2/2.2/include/modperl_bucket.h
file path=usr/apache2/2.2/include/modperl_callback.h
file path=usr/apache2/2.2/include/modperl_cgi.h
file path=usr/apache2/2.2/include/modperl_cmd.h
file path=usr/apache2/2.2/include/modperl_common_includes.h
file path=usr/apache2/2.2/include/modperl_common_log.h
file path=usr/apache2/2.2/include/modperl_common_types.h
file path=usr/apache2/2.2/include/modperl_common_util.h
file path=usr/apache2/2.2/include/modperl_config.h
file path=usr/apache2/2.2/include/modperl_const.h
file path=usr/apache2/2.2/include/modperl_constants.h
file path=usr/apache2/2.2/include/modperl_debug.h
file path=usr/apache2/2.2/include/modperl_directives.h
file path=usr/apache2/2.2/include/modperl_env.h
file path=usr/apache2/2.2/include/modperl_error.h
file path=usr/apache2/2.2/include/modperl_filter.h
file path=usr/apache2/2.2/include/modperl_flags.h
file path=usr/apache2/2.2/include/modperl_global.h
file path=usr/apache2/2.2/include/modperl_gtop.h
file path=usr/apache2/2.2/include/modperl_handler.h
file path=usr/apache2/2.2/include/modperl_hooks.h
file path=usr/apache2/2.2/include/modperl_interp.h
file path=usr/apache2/2.2/include/modperl_io.h
file path=usr/apache2/2.2/include/modperl_io_apache.h
file path=usr/apache2/2.2/include/modperl_largefiles.h
file path=usr/apache2/2.2/include/modperl_log.h
file path=usr/apache2/2.2/include/modperl_mgv.h
file path=usr/apache2/2.2/include/modperl_module.h
file path=usr/apache2/2.2/include/modperl_options.h
file path=usr/apache2/2.2/include/modperl_pcw.h
file path=usr/apache2/2.2/include/modperl_perl.h
file path=usr/apache2/2.2/include/modperl_perl_global.h
file path=usr/apache2/2.2/include/modperl_perl_includes.h
file path=usr/apache2/2.2/include/modperl_perl_pp.h
file path=usr/apache2/2.2/include/modperl_perl_unembed.h
file path=usr/apache2/2.2/include/modperl_svptr_table.h
file path=usr/apache2/2.2/include/modperl_sys.h
file path=usr/apache2/2.2/include/modperl_time.h
file path=usr/apache2/2.2/include/modperl_tipool.h
file path=usr/apache2/2.2/include/modperl_trace.h
file path=usr/apache2/2.2/include/modperl_types.h
file path=usr/apache2/2.2/include/modperl_util.h
file path=usr/apache2/2.2/include/modperl_xs_sv_convert.h
file path=usr/apache2/2.2/include/modperl_xs_typedefs.h
file path=usr/apache2/2.2/include/modperl_xs_util.h
file path=usr/apache2/2.2/lib/perl/APR.pm
file path=usr/apache2/2.2/lib/perl/APR/Base64.pm
file path=usr/apache2/2.2/lib/perl/APR/Brigade.pm
file path=usr/apache2/2.2/lib/perl/APR/Bucket.pm
file path=usr/apache2/2.2/lib/perl/APR/BucketAlloc.pm
file path=usr/apache2/2.2/lib/perl/APR/BucketType.pm
file path=usr/apache2/2.2/lib/perl/APR/Const.pm
file path=usr/apache2/2.2/lib/perl/APR/Date.pm
file path=usr/apache2/2.2/lib/perl/APR/Error.pm
file path=usr/apache2/2.2/lib/perl/APR/Finfo.pm
file path=usr/apache2/2.2/lib/perl/APR/IpSubnet.pm
file path=usr/apache2/2.2/lib/perl/APR/OS.pm
file path=usr/apache2/2.2/lib/perl/APR/PerlIO.pm
file path=usr/apache2/2.2/lib/perl/APR/Pool.pm
file path=usr/apache2/2.2/lib/perl/APR/SockAddr.pm
file path=usr/apache2/2.2/lib/perl/APR/Socket.pm
file path=usr/apache2/2.2/lib/perl/APR/Status.pm
file path=usr/apache2/2.2/lib/perl/APR/String.pm
file path=usr/apache2/2.2/lib/perl/APR/Table.pm
file path=usr/apache2/2.2/lib/perl/APR/ThreadMutex.pm
file path=usr/apache2/2.2/lib/perl/APR/ThreadRWLock.pm
file path=usr/apache2/2.2/lib/perl/APR/URI.pm
file path=usr/apache2/2.2/lib/perl/APR/UUID.pm
file path=usr/apache2/2.2/lib/perl/APR/Util.pm
file path=usr/apache2/2.2/lib/perl/APR/XSLoader.pm
file path=usr/apache2/2.2/lib/perl/Apache/Test.pm
file path=usr/apache2/2.2/lib/perl/Apache/Test5005compat.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestBuild.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestClient.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestCommon.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestCommonPost.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestConfig.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestConfigC.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestConfigPHP.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestConfigParrot.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestConfigParse.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestConfigPerl.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestHandler.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestHarness.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestHarnessPHP.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestMB.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestMM.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestPerlDB.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestReport.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestReportPerl.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestRequest.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestRun.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestRunPHP.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestRunParrot.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestRunPerl.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestSSLCA.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestServer.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestSmoke.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestSmokePerl.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestSort.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestTrace.pm
file path=usr/apache2/2.2/lib/perl/Apache/TestUtil.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Access.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Build.pm
file path=usr/apache2/2.2/lib/perl/Apache2/BuildConfig.pm
file path=usr/apache2/2.2/lib/perl/Apache2/CmdParms.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Command.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Connection.pm
file path=usr/apache2/2.2/lib/perl/Apache2/ConnectionUtil.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Const.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Directive.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Filter.pm
file path=usr/apache2/2.2/lib/perl/Apache2/FilterRec.pm
file path=usr/apache2/2.2/lib/perl/Apache2/HookRun.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Log.pm
file path=usr/apache2/2.2/lib/perl/Apache2/MPM.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Module.pm
file path=usr/apache2/2.2/lib/perl/Apache2/ParseSource.pm
file path=usr/apache2/2.2/lib/perl/Apache2/PerlSections.pm
file path=usr/apache2/2.2/lib/perl/Apache2/PerlSections/Dump.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Process.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Reload.pm
file path=usr/apache2/2.2/lib/perl/Apache2/RequestIO.pm
file path=usr/apache2/2.2/lib/perl/Apache2/RequestRec.pm
file path=usr/apache2/2.2/lib/perl/Apache2/RequestUtil.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Resource.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Response.pm
file path=usr/apache2/2.2/lib/perl/Apache2/ServerRec.pm
file path=usr/apache2/2.2/lib/perl/Apache2/ServerUtil.pm
file path=usr/apache2/2.2/lib/perl/Apache2/SizeLimit.pm
file path=usr/apache2/2.2/lib/perl/Apache2/SourceTables.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Status.pm
file path=usr/apache2/2.2/lib/perl/Apache2/SubProcess.pm
file path=usr/apache2/2.2/lib/perl/Apache2/SubRequest.pm
file path=usr/apache2/2.2/lib/perl/Apache2/URI.pm
file path=usr/apache2/2.2/lib/perl/Apache2/Util.pm
file path=usr/apache2/2.2/lib/perl/Apache2/XSLoader.pm
file path=usr/apache2/2.2/lib/perl/Apache2/compat.pm
file path=usr/apache2/2.2/lib/perl/Apache2/porting.pm
file path=usr/apache2/2.2/lib/perl/Bundle/Apache2.pm
file path=usr/apache2/2.2/lib/perl/Bundle/ApacheTest.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/BuildMM.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/BuildOptions.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/CScan.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/Code.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/Config.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/Const.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/FunctionMap.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/Global.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/MM.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/Manifest.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/MapUtil.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/MethodLookup.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/ParseSource.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/PerlRun.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/PerlRunPrefork.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/Registry.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/RegistryBB.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/RegistryCooker.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/RegistryLoader.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/RegistryPrefork.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/StructureMap.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/TestReport.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/TestRun.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/TypeMap.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/Util.pm
file path=usr/apache2/2.2/lib/perl/ModPerl/WrapXS.pm
file path=usr/apache2/2.2/lib/perl/auto/APR/APR.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/APR.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Base64/Base64.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Base64/Base64.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Brigade/Brigade.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Brigade/Brigade.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Bucket/Bucket.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Bucket/Bucket.so
file path=usr/apache2/2.2/lib/perl/auto/APR/BucketAlloc/BucketAlloc.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/BucketAlloc/BucketAlloc.so
file path=usr/apache2/2.2/lib/perl/auto/APR/BucketType/BucketType.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/BucketType/BucketType.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Const/Const.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Const/Const.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Date/Date.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Date/Date.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Error/Error.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Error/Error.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Finfo/Finfo.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Finfo/Finfo.so
file path=usr/apache2/2.2/lib/perl/auto/APR/IpSubnet/IpSubnet.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/IpSubnet/IpSubnet.so
file path=usr/apache2/2.2/lib/perl/auto/APR/OS/OS.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/OS/OS.so
file path=usr/apache2/2.2/lib/perl/auto/APR/PerlIO/PerlIO.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/PerlIO/PerlIO.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Pool/Pool.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Pool/Pool.so
file path=usr/apache2/2.2/lib/perl/auto/APR/SockAddr/SockAddr.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/SockAddr/SockAddr.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Socket/Socket.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Socket/Socket.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Status/Status.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Status/Status.so
file path=usr/apache2/2.2/lib/perl/auto/APR/String/String.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/String/String.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Table/Table.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Table/Table.so
file path=usr/apache2/2.2/lib/perl/auto/APR/ThreadMutex/ThreadMutex.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/ThreadMutex/ThreadMutex.so
file path=usr/apache2/2.2/lib/perl/auto/APR/ThreadRWLock/ThreadRWLock.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/ThreadRWLock/ThreadRWLock.so
file path=usr/apache2/2.2/lib/perl/auto/APR/URI/URI.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/URI/URI.so
file path=usr/apache2/2.2/lib/perl/auto/APR/UUID/UUID.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/UUID/UUID.so
file path=usr/apache2/2.2/lib/perl/auto/APR/Util/Util.bs
file path=usr/apache2/2.2/lib/perl/auto/APR/Util/Util.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Access/Access.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Access/Access.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Build/autosplit.ix
file path=usr/apache2/2.2/lib/perl/auto/Apache2/CmdParms/CmdParms.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/CmdParms/CmdParms.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Command/Command.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Command/Command.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Connection/Connection.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Connection/Connection.so
file \
    path=usr/apache2/2.2/lib/perl/auto/Apache2/ConnectionUtil/ConnectionUtil.bs
file \
    path=usr/apache2/2.2/lib/perl/auto/Apache2/ConnectionUtil/ConnectionUtil.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Const/Const.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Const/Const.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Directive/Directive.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Directive/Directive.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Filter/Filter.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Filter/Filter.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/FilterRec/FilterRec.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/FilterRec/FilterRec.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/HookRun/HookRun.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/HookRun/HookRun.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Log/Log.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Log/Log.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/MPM/MPM.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/MPM/MPM.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Module/Module.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Module/Module.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Process/Process.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Process/Process.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestIO/RequestIO.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestIO/RequestIO.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestRec/RequestRec.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestRec/RequestRec.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestUtil/RequestUtil.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/RequestUtil/RequestUtil.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Response/Response.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Response/Response.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/ServerRec/ServerRec.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/ServerRec/ServerRec.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/ServerUtil/ServerUtil.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/ServerUtil/ServerUtil.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/SubProcess/SubProcess.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/SubProcess/SubProcess.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/SubRequest/SubRequest.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/SubRequest/SubRequest.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/URI/URI.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/URI/URI.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Util/Util.bs
file path=usr/apache2/2.2/lib/perl/auto/Apache2/Util/Util.so
file path=usr/apache2/2.2/lib/perl/auto/Apache2/typemap
file path=usr/apache2/2.2/lib/perl/auto/ModPerl/Const/Const.bs
file path=usr/apache2/2.2/lib/perl/auto/ModPerl/Const/Const.so
file path=usr/apache2/2.2/lib/perl/auto/ModPerl/Global/Global.bs
file path=usr/apache2/2.2/lib/perl/auto/ModPerl/Global/Global.so
file path=usr/apache2/2.2/lib/perl/auto/ModPerl/Util/Util.bs
file path=usr/apache2/2.2/lib/perl/auto/ModPerl/Util/Util.so
file path=usr/apache2/2.2/lib/perl/auto/mod_perl2/.packlist
file path=usr/apache2/2.2/lib/perl/mod_perl2.pm
file path=usr/apache2/2.2/lib/perl/perllocal.pod
file path=usr/apache2/2.2/libexec/mod_perl.so
file path=usr/apache2/2.2/man/man3/APR.3
file path=usr/apache2/2.2/man/man3/APR::Base64.3
file path=usr/apache2/2.2/man/man3/APR::Brigade.3
file path=usr/apache2/2.2/man/man3/APR::Bucket.3
file path=usr/apache2/2.2/man/man3/APR::BucketAlloc.3
file path=usr/apache2/2.2/man/man3/APR::BucketType.3
file path=usr/apache2/2.2/man/man3/APR::Const.3
file path=usr/apache2/2.2/man/man3/APR::Date.3
file path=usr/apache2/2.2/man/man3/APR::Error.3
file path=usr/apache2/2.2/man/man3/APR::Finfo.3
file path=usr/apache2/2.2/man/man3/APR::IpSubnet.3
file path=usr/apache2/2.2/man/man3/APR::OS.3
file path=usr/apache2/2.2/man/man3/APR::PerlIO.3
file path=usr/apache2/2.2/man/man3/APR::Pool.3
file path=usr/apache2/2.2/man/man3/APR::SockAddr.3
file path=usr/apache2/2.2/man/man3/APR::Socket.3
file path=usr/apache2/2.2/man/man3/APR::Status.3
file path=usr/apache2/2.2/man/man3/APR::String.3
file path=usr/apache2/2.2/man/man3/APR::Table.3
file path=usr/apache2/2.2/man/man3/APR::ThreadMutex.3
file path=usr/apache2/2.2/man/man3/APR::ThreadRWLock.3
file path=usr/apache2/2.2/man/man3/APR::URI.3
file path=usr/apache2/2.2/man/man3/APR::UUID.3
file path=usr/apache2/2.2/man/man3/APR::Util.3
file path=usr/apache2/2.2/man/man3/Apache2::Access.3
file path=usr/apache2/2.2/man/man3/Apache2::Build.3
file path=usr/apache2/2.2/man/man3/Apache2::CmdParms.3
file path=usr/apache2/2.2/man/man3/Apache2::Command.3
file path=usr/apache2/2.2/man/man3/Apache2::Connection.3
file path=usr/apache2/2.2/man/man3/Apache2::ConnectionUtil.3
file path=usr/apache2/2.2/man/man3/Apache2::Const.3
file path=usr/apache2/2.2/man/man3/Apache2::Directive.3
file path=usr/apache2/2.2/man/man3/Apache2::Filter.3
file path=usr/apache2/2.2/man/man3/Apache2::FilterRec.3
file path=usr/apache2/2.2/man/man3/Apache2::HookRun.3
file path=usr/apache2/2.2/man/man3/Apache2::Log.3
file path=usr/apache2/2.2/man/man3/Apache2::MPM.3
file path=usr/apache2/2.2/man/man3/Apache2::Module.3
file path=usr/apache2/2.2/man/man3/Apache2::PerlSections.3
file path=usr/apache2/2.2/man/man3/Apache2::Process.3
file path=usr/apache2/2.2/man/man3/Apache2::Reload.3
file path=usr/apache2/2.2/man/man3/Apache2::RequestIO.3
file path=usr/apache2/2.2/man/man3/Apache2::RequestRec.3
file path=usr/apache2/2.2/man/man3/Apache2::RequestUtil.3
file path=usr/apache2/2.2/man/man3/Apache2::Resource.3
file path=usr/apache2/2.2/man/man3/Apache2::Response.3
file path=usr/apache2/2.2/man/man3/Apache2::ServerRec.3
file path=usr/apache2/2.2/man/man3/Apache2::ServerUtil.3
file path=usr/apache2/2.2/man/man3/Apache2::SizeLimit.3
file path=usr/apache2/2.2/man/man3/Apache2::Status.3
file path=usr/apache2/2.2/man/man3/Apache2::SubProcess.3
file path=usr/apache2/2.2/man/man3/Apache2::SubRequest.3
file path=usr/apache2/2.2/man/man3/Apache2::URI.3
file path=usr/apache2/2.2/man/man3/Apache2::Util.3
file path=usr/apache2/2.2/man/man3/Apache2::compat.3
file path=usr/apache2/2.2/man/man3/Apache2::porting.3
file path=usr/apache2/2.2/man/man3/Apache::Test.3
file path=usr/apache2/2.2/man/man3/Apache::TestConfig.3
file path=usr/apache2/2.2/man/man3/Apache::TestMB.3
file path=usr/apache2/2.2/man/man3/Apache::TestMM.3
file path=usr/apache2/2.2/man/man3/Apache::TestReport.3
file path=usr/apache2/2.2/man/man3/Apache::TestRequest.3
file path=usr/apache2/2.2/man/man3/Apache::TestRun.3
file path=usr/apache2/2.2/man/man3/Apache::TestRunPHP.3
file path=usr/apache2/2.2/man/man3/Apache::TestRunPerl.3
file path=usr/apache2/2.2/man/man3/Apache::TestSmoke.3
file path=usr/apache2/2.2/man/man3/Apache::TestTrace.3
file path=usr/apache2/2.2/man/man3/Apache::TestUtil.3
file path=usr/apache2/2.2/man/man3/Bundle::Apache2.3
file path=usr/apache2/2.2/man/man3/Bundle::ApacheTest.3
file path=usr/apache2/2.2/man/man3/ModPerl::BuildMM.3
file path=usr/apache2/2.2/man/man3/ModPerl::CScan.3
file path=usr/apache2/2.2/man/man3/ModPerl::Code.3
file path=usr/apache2/2.2/man/man3/ModPerl::Config.3
file path=usr/apache2/2.2/man/man3/ModPerl::Const.3
file path=usr/apache2/2.2/man/man3/ModPerl::Global.3
file path=usr/apache2/2.2/man/man3/ModPerl::MM.3
file path=usr/apache2/2.2/man/man3/ModPerl::MethodLookup.3
file path=usr/apache2/2.2/man/man3/ModPerl::PerlRun.3
file path=usr/apache2/2.2/man/man3/ModPerl::PerlRunPrefork.3
file path=usr/apache2/2.2/man/man3/ModPerl::Registry.3
file path=usr/apache2/2.2/man/man3/ModPerl::RegistryBB.3
file path=usr/apache2/2.2/man/man3/ModPerl::RegistryCooker.3
file path=usr/apache2/2.2/man/man3/ModPerl::RegistryLoader.3
file path=usr/apache2/2.2/man/man3/ModPerl::RegistryPrefork.3
file path=usr/apache2/2.2/man/man3/ModPerl::Util.3
file path=usr/apache2/2.2/man/man3/mod_perl2.3
link path=usr/bin/mp2bug target=../apache2/2.2/bin/mp2bug
legacy    pkg=SUNWapch22u \
    name="Apache Web Server V2.2 (usr)" \
    desc="The Apache HTTP Server Version 2.2 (usr components)"
components/apache2-modules/mod_perl/patches/CVE-2009-0796.patch
New file
@@ -0,0 +1,47 @@
--- mod_perl-2.0.2/lib/Apache2/Status.pm.orig    Thu Oct 20 17:04:43 2005
+++ mod_perl-2.0.2/lib/Apache2/Status.pm    Thu Aug 20 11:38:03 2009
@@ -28,7 +28,7 @@
 use Apache2::Const -compile => qw(OK);
-$Apache2::Status::VERSION = '4.00'; # mod_perl 2.0
+$Apache2::Status::VERSION = '4.01'; # mod_perl 2.0
 use constant IS_WIN32 => ($^O eq "MSWin32");
@@ -125,7 +125,7 @@
         $r->print(symdump($r, $qs));
     }
     else {
-        my $uri = $r->uri;
+        my $uri = $r->location;
         $r->print('<p>');
         $r->print(
             map { qq[<a href="$uri?$_">$status{$_}</a><br />\n] } sort { lc $a cmp lc $b } keys %status
@@ -197,7 +197,7 @@
 sub status_inc {
     my ($r) = @_;
-    my $uri = $r->uri;
+    my $uri = $r->location;
     my @retval = (
         '<table border="1">',
         "<tr>",
@@ -285,7 +285,7 @@
     my ($r) = @_;
     local $_;
-    my $uri = $r->uri;
+    my $uri = $r->location;
     my $cache = __PACKAGE__->registry_cache;
     my @retval = "<h2>Compiled registry scripts grouped by their handler</h2>";
@@ -760,7 +760,7 @@
     my ($self, $package, $r) = @_;
     my @m = qw(<table>);
-    my $uri = $r->uri;
+    my $uri = $r->location;
     my $is_main = $package eq "main";
     my $do_dump = has($r, "dumper");
components/apache2-modules/mod_perl/patches/Reload.patch
New file
@@ -0,0 +1,571 @@
--- /dev/null    Fri Oct 16 06:02:02 2009
+++ mod_perl-2.0.4/lib/Apache2/Reload.pm    Sun Nov 19 15:31:40 2006
@@ -0,0 +1,185 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+package Apache2::Reload;
+
+use strict;
+use warnings FATAL => 'all';
+
+use mod_perl2;
+
+our $VERSION = '0.09';
+
+use Apache2::Const -compile => qw(OK);
+
+use Apache2::Connection;
+use Apache2::ServerUtil;
+use Apache2::RequestUtil;
+
+use ModPerl::Util ();
+
+use vars qw(%INCS %Stat $TouchTime);
+
+%Stat = ($INC{"Apache2/Reload.pm"} => time);
+
+$TouchTime = time;
+
+sub import {
+    my $class = shift;
+    my ($package, $file) = (caller)[0,1];
+
+    $class->register_module($package, $file);
+}
+
+sub package_to_module {
+    my $package = shift;
+    $package =~ s/::/\//g;
+    $package .= ".pm";
+    return $package;
+}
+
+sub module_to_package {
+    my $module = shift;
+    $module =~ s/\//::/g;
+    $module =~ s/\.pm$//g;
+    return $module;
+}
+
+sub register_module {
+    my ($class, $package, $file) = @_;
+    my $module = package_to_module($package);
+
+    if ($file) {
+        $INCS{$module} = $file;
+    }
+    else {
+        $file = $INC{$module};
+        return unless $file;
+        $INCS{$module} = $file;
+    }
+}
+
+sub unregister_module {
+    my ($class, $package) = @_;
+    my $module = package_to_module($package);
+    delete $INCS{$module};
+}
+
+# the first argument is:
+# $c if invoked as 'PerlPreConnectionHandler'
+# $r if invoked as 'PerlInitHandler'
+sub handler {
+    my $o = shift;
+    $o = $o->base_server if ref($o) eq 'Apache2::Connection';
+
+    my $DEBUG = ref($o) && (lc($o->dir_config("ReloadDebug") || '') eq 'on');
+
+    my $TouchFile = ref($o) && $o->dir_config("ReloadTouchFile");
+
+    my $ConstantRedefineWarnings = ref($o) &&
+        (lc($o->dir_config("ReloadConstantRedefineWarnings") || '') eq 'off')
+            ? 0 : 1;
+
+    my $TouchModules;
+
+    if ($TouchFile) {
+        warn "Checking mtime of $TouchFile\n" if $DEBUG;
+        my $touch_mtime = (stat $TouchFile)[9] || return Apache2::Const::OK;
+        return Apache2::Const::OK unless $touch_mtime > $TouchTime;
+        $TouchTime = $touch_mtime;
+        open my $fh, $TouchFile or die "Can't open '$TouchFile': $!";
+        $TouchModules = <$fh>;
+        chomp $TouchModules if $TouchModules;
+    }
+
+    if (ref($o) && (lc($o->dir_config("ReloadAll") || 'on') eq 'on')) {
+        *Apache2::Reload::INCS = \%INC;
+    }
+    else {
+        *Apache2::Reload::INCS = \%INCS;
+        my $ExtraList =
+                $TouchModules ||
+                (ref($o) && $o->dir_config("ReloadModules")) ||
+                '';
+        my @extra = split /\s+/, $ExtraList;
+        foreach (@extra) {
+            if (/(.*)::\*$/) {
+                my $prefix = $1;
+                $prefix =~ s/::/\//g;
+                foreach my $match (keys %INC) {
+                    if ($match =~ /^\Q$prefix\E/) {
+                        $Apache2::Reload::INCS{$match} = $INC{$match};
+                    }
+                }
+            }
+            else {
+                Apache2::Reload->register_module($_);
+            }
+        }
+    }
+
+    my $ReloadDirs = ref($o) && $o->dir_config("ReloadDirectories");
+    my @watch_dirs = split(/\s+/, $ReloadDirs||'');
+
+    my @changed;
+    foreach my $key (sort { $a cmp $b } keys %Apache2::Reload::INCS) {
+        my $file = $Apache2::Reload::INCS{$key};
+
+        next unless defined $file;
+        next if @watch_dirs && !grep { $file =~ /^$_/ } @watch_dirs;
+        warn "Apache2::Reload: Checking mtime of $key\n" if $DEBUG;
+
+        my $mtime = (stat $file)[9];
+
+        unless (defined($mtime) && $mtime) {
+            for (@INC) {
+                $mtime = (stat "$_/$file")[9];
+                last if defined($mtime) && $mtime;
+            }
+        }
+
+        warn("Apache2::Reload: Can't locate $file\n"), next
+            unless defined $mtime and $mtime;
+
+        unless (defined $Stat{$file}) {
+            $Stat{$file} = $^T;
+        }
+
+        if ($mtime > $Stat{$file}) {
+            push @changed, $key;
+        }
+        $Stat{$file} = $mtime;
+    }
+
+    #First, let's unload all changed modules
+    foreach my $module (@changed) {
+        my $package = module_to_package($module);
+        ModPerl::Util::unload_package($package);
+    }
+
+    #Then, let's reload them all, so that module dependencies can satisfy
+    #themselves in the correct order.
+    foreach my $module (@changed) {
+        my $package = module_to_package($module);
+        require $module;
+        warn("Apache2::Reload: process $$ reloading $package from $module\n")
+            if $DEBUG;
+    }
+
+    return Apache2::Const::OK;
+}
+
+1;
+__END__
--- /dev/null    Fri Oct 16 06:02:02 2009
+++ mod_perl-2.0.4/docs/api/Apache2/Reload.pod    Sun Nov 19 15:32:13 2006
@@ -1,0 +1,380 @@
+=head1 NAME
+
+Apache2::Reload - Reload Perl Modules when Changed on Disk
+
+=head1 Synopsis
+
+  # Monitor and reload all modules in %INC:
+  # httpd.conf:
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+
+  # when working with protocols and connection filters
+  # PerlPreConnectionHandler Apache2::Reload
+
+  # Reload groups of modules:
+  # httpd.conf:
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadAll Off
+  PerlSetVar ReloadModules "ModPerl::* Apache2::*"
+  #PerlSetVar ReloadDebug On
+
+  # Reload a single module from within itself:
+  package My::Apache2::Module;
+  use Apache2::Reload;
+  sub handler { ... }
+  1;
+
+=head1 Description
+
+C<Apache2::Reload> reloads modules that change on the disk.
+
+When Perl pulls a file via C<require>, it stores the filename in the
+global hash C<%INC>.  The next time Perl tries to C<require> the same
+file, it sees the file in C<%INC> and does not reload from disk.  This
+module's handler can be configured to iterate over the modules in
+C<%INC> and reload those that have changed on disk or only specific
+modules that have registered themselves with C<Apache2::Reload>. It can
+also do the check for modified modules, when a special touch-file has
+been modified.
+
+Note that C<Apache2::Reload> operates on the current context of
+C<@INC>.  Which means, when called as a C<Perl*Handler> it will not
+see C<@INC> paths added or removed by C<ModPerl::Registry> scripts, as
+the value of C<@INC> is saved on server startup and restored to that
+value after each request.  In other words, if you want
+C<Apache2::Reload> to work with modules that live in custom C<@INC>
+paths, you should modify C<@INC> when the server is started.  Besides,
+C<'use lib'> in the startup script, you can also set the C<PERL5LIB>
+variable in the httpd's environment to include any non-standard 'lib'
+directories that you choose.  For example, to accomplish that you can
+include a line:
+
+  PERL5LIB=/home/httpd/perl/extra; export PERL5LIB
+
+in the script that starts Apache. Alternatively, you can set this
+environment variable in I<httpd.conf>:
+
+  PerlSetEnv PERL5LIB /home/httpd/perl/extra
+
+=head2 Monitor All Modules in C<%INC>
+
+To monitor and reload all modules in C<%INC> at the beginning of
+request's processing, simply add the following configuration to your
+I<httpd.conf>:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+
+When working with connection filters and protocol modules
+C<Apache2::Reload> should be invoked in the pre_connection stage:
+
+  PerlPreConnectionHandler Apache2::Reload
+
+See also the discussion on
+C<L<PerlPreConnectionHandler|docs::2.0::user::handlers::protocols/PerlPreConnectionHandler>>.
+
+=head2 Register Modules Implicitly
+
+To only reload modules that have registered with C<Apache2::Reload>,
+add the following to the I<httpd.conf>:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadAll Off
+  # ReloadAll defaults to On
+
+Then any modules with the line:
+
+  use Apache2::Reload;
+
+Will be reloaded when they change.
+
+=head2 Register Modules Explicitly
+
+You can also register modules explicitly in your I<httpd.conf> file
+that you want to be reloaded on change:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadAll Off
+  PerlSetVar ReloadModules "My::Foo My::Bar Foo::Bar::Test"
+
+Note that these are split on whitespace, but the module list B<must>
+be in quotes, otherwise Apache tries to parse the parameter list.
+
+The C<*> wild character can be used to register groups of files under
+the same namespace. For example the setting:
+
+  PerlSetVar ReloadModules "ModPerl::* Apache2::*"
+
+will monitor all modules under the namespaces C<ModPerl::> and
+C<Apache2::>.
+
+=head2 Monitor Only Certain Sub Directories
+
+To reload modules only in certain directories (and their
+subdirectories) add the following to the I<httpd.conf>:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadDirectories "/tmp/project1 /tmp/project2"
+
+You can further narrow the list of modules to be reloaded from the
+chosen directories with C<ReloadModules> as in:
+
+  PerlModule Apache2::Reload
+  PerlInitHandler Apache2::Reload
+  PerlSetVar ReloadDirectories "/tmp/project1 /tmp/project2"
+  PerlSetVar ReloadAll Off
+  PerlSetVar ReloadModules "MyApache2::*"
+
+In this configuration example only modules from the namespace
+C<MyApache2::> found in the directories I</tmp/project1/> and
+I</tmp/project2/> (and their subdirectories) will be reloaded.
+
+=head2 Special "Touch" File
+
+You can also declare a file, which when gets C<touch(1)>ed, causes the
+reloads to be performed. For example if you set:
+
+  PerlSetVar ReloadTouchFile /tmp/reload_modules
+
+and don't C<touch(1)> the file I</tmp/reload_modules>, the reloads
+won't happen until you go to the command line and type:
+
+  % touch /tmp/reload_modules
+
+When you do that, the modules that have been changed, will be
+magically reloaded on the next request. This option works with any
+mode described before.
+
+=head2 Unregistering a module
+
+In some cases, it might be necessary to explicitely stop reloading
+a module.
+
+  Apache2::Reload->unregister_module('Some::Module');
+
+But be carefull, since unregistering a module in this way will only
+do so for the current interpreter. This feature should be used with
+care.
+
+=head1 Performance Issues
+
+This module is perfectly suited for a development environment. Though
+it's possible that you would like to use it in a production
+environment, since with C<Apache2::Reload> you don't have to restart
+the server in order to reload changed modules during software
+updates. Though this convenience comes at a price:
+
+=over
+
+=item *
+
+If the "touch" file feature is used, C<Apache2::Reload> has to stat(2)
+the touch file on each request, which adds a slight but most likely
+insignificant overhead to response times. Otherwise C<Apache2::Reload>
+will stat(2) each registered module or even worse--all modules in
+C<%INC>, which will significantly slow everything down.
+
+=item *
+
+Once the child process reloads the modules, the memory used by these
+modules is not shared with the parent process anymore. Therefore the
+memory consumption may grow significantly.
+
+=back
+
+Therefore doing a full server stop and restart is probably a better
+solution.
+
+=head1 Debug
+
+If you aren't sure whether the modules that are supposed to be
+reloaded, are actually getting reloaded, turn the debug mode on:
+
+  PerlSetVar ReloadDebug On
+
+=head1 Caveats
+
+=head2 Problems With Reloading Modules Which Do Not Declare Their Package Name
+
+If you modify modules, which don't declare their C<package>, and rely on
+C<Apache2::Reload> to reload them, you may encounter problems: i.e.,
+it'll appear as if the module wasn't reloaded when in fact it
+was. This happens because when C<Apache2::Reload> C<require()>s such a
+module all the global symbols end up in the C<Apache2::Reload>
+namespace!  So the module does get reloaded and you see the compile
+time errors if there are any, but the symbols don't get imported to
+the right namespace. Therefore the old version of the code is running.
+
+
+=head2 Failing to Find a File to Reload
+
+C<Apache2::Reload> uses C<%INC> to find the files on the filesystem. If
+an entry for a certain filepath in C<%INC> is relative,
+C<Apache2::Reload> will use C<@INC> to try to resolve that relative
+path. Now remember that mod_perl freezes the value of C<@INC> at the
+server startup, and you can modify it only for the duration of one
+request when you need to load some module which is not in on of the
+C<@INC> directories. So a module gets loaded, and registered in
+C<%INC> with a relative path. Now when C<Apache2::Reload> tries to find
+that module to check whether it has been modified, it can't find since
+its directory is not in C<@INC>. So C<Apache2::Reload> will silently
+skip that module.
+
+You can enable the C<Debug|/Debug> mode to see what C<Apache2::Reload>
+does behind the scenes.
+
+
+
+=head2 Problems with Scripts Running with Registry Handlers that Cache the Code
+
+The following problem is relevant only to registry handlers that cache
+the compiled script. For example it concerns
+C<L<ModPerl::Registry|docs::2.0::api::ModPerl::Registry>> but not
+C<L<ModPerl::PerlRun|docs::2.0::api::ModPerl::PerlRun>>.
+
+=head3 The Problem
+
+Let's say that there is a module C<My::Utils>:
+
+  #file:My/Utils.pm
+  #----------------
+  package My::Utils;
+  BEGIN { warn __PACKAGE__ , " was reloaded\n" }
+  use base qw(Exporter);
+  @EXPORT = qw(colour);
+  sub colour { "white" }
+  1;
+
+And a registry script F<test.pl>:
+
+  #file:test.pl
+  #------------
+  use My::Utils;
+  print "Content-type: text/plain\n\n";
+  print "the color is " . colour();
+
+Assuming that the server is running in a single mode, we request the
+script for the first time and we get the response:
+
+  the color is white
+
+Now we change F<My/Utils.pm>:
+
+  -  sub colour { "white" }
+  +  sub colour { "red" }
+
+And issue the request again. C<Apache2::Reload> does its job and we can
+see that C<My::Utils> was reloaded (look in the I<error_log>
+file). However the script still returns:
+
+  the color is white
+
+=head3 The Explanation
+
+Even though F<My/Utils.pm> was reloaded, C<ModPerl::Registry>'s cached
+code won't run 'C<use My::Utils;>' again (since it happens only once,
+i.e. during the compile time). Therefore the script doesn't know that
+the subroutine reference has been changed.
+
+This is easy to verify. Let's change the script to be:
+
+  #file:test.pl
+  #------------
+  use My::Utils;
+  print "Content-type: text/plain\n\n";
+  my $sub_int = \&colour;
+  my $sub_ext = \&My::Utils::colour;
+  print "int $sub_int\n";
+  print "ext $sub_ext\n";
+
+Issue a request, you will see something similar to:
+
+  int CODE(0x8510af8)
+  ext CODE(0x8510af8)
+
+As you can see both point to the same CODE reference (meaning that
+it's the same symbol). After modifying F<My/Utils.pm> again:
+
+  -  sub colour { "red" }
+  +  sub colour { "blue" }
+
+and calling the script on the secondnd time, we get:
+
+  int CODE(0x8510af8)
+  ext CODE(0x851112c)
+
+You can see that the internal CODE reference is not the same as the
+external one.
+
+=head3 The Solution
+
+There are two solutions to this problem:
+
+Solution 1: replace C<use()> with an explicit C<require()> +
+C<import()>.
+
+ - use My::Utils;
+ + require My::Utils; My::Utils->import();
+
+now the changed functions will be reimported on every request.
+
+Solution 2: remember to touch the script itself every time you change
+the module that it requires.
+
+=head1 Threaded MPM and Multiple Perl Interpreters
+
+If you use C<Apache2::Reload> with a threaded MPM and multiple Perl
+interpreters, the modules will be reloaded by each interpreter as they
+are used, not every interpreters at once.  Similar to mod_perl 1.0
+where each child has its own Perl interpreter, the modules are
+reloaded as each child is hit with a request.
+
+If a module is loaded at startup, the syntax tree of each subroutine
+is shared between interpreters (big win), but each subroutine has its
+own padlist (where lexical my variables are stored).  Once
+C<Apache2::Reload> reloads a module, this sharing goes away and each
+Perl interpreter will have its own copy of the syntax tree for the
+reloaded subroutines.
+
+
+=head1 Pseudo-hashes
+
+The short summary of this is: Don't use pseudo-hashes. They are
+deprecated since Perl 5.8 and are removed in 5.9.
+
+Use an array with constant indexes. Its faster in the general case,
+its more guaranteed, and generally, it works.
+
+The long summary is that some work has been done to get this module
+working with modules that use pseudo-hashes, but it's still broken in
+the case of a single module that contains multiple packages that all
+use pseudo-hashes.
+
+So don't do that.
+
+
+
+
+=head1 Copyright
+
+mod_perl 2.0 and its core modules are copyrighted under
+The Apache Software License, Version 2.0.
+
+
+=head1 Authors
+
+Matt Sergeant, matt@sergeant.org
+
+Stas Bekman (porting to mod_perl 2.0)
+
+A few concepts borrowed from C<Stonehenge::Reload> by Randal Schwartz
+and C<Apache::StatINC> (mod_perl 1.x) by Doug MacEachern and Ask
+Bjoern Hansen.
+
+=cut
+
components/apache2-modules/mod_perl/patches/TestConfigParse.patch
New file
@@ -0,0 +1,14 @@
--- mod_perl-2.0.4/Apache-Test/lib/Apache/TestConfigParse.pm    Sun Nov 11 21:34:46 2007
+++ mod_perl-2.0.4/Apache-Test/lib/Apache/TestConfigParse.pm    Thu May 19 05:35:01 2011
@@ -211,6 +211,11 @@
     for my $args (@{ $c->{$directive} }) {
         my $modname = $args->[0];
         my $file = $self->server_file_rel2abs($args->[1]);
+
+       unless ($file !~ m/\/64\//) {
+            debug "$file is 64 bit module (we don't want it)";
+            next;
+        }
         unless (-e $file) {
             debug "$file does not exist, skipping LoadModule";
components/apache2-modules/mod_perl/patches/bug38084.patch
New file
@@ -0,0 +1,12 @@
--- mod_perl-2.0.4/lib/Apache2/SizeLimit.pm.orig    Mon Nov 23 02:17:25 2009
+++ mod_perl-2.0.4/lib/Apache2/SizeLimit.pm    Mon Nov 23 02:21:39 2009
@@ -52,7 +52,8 @@
         if Apache2::MPM->is_threaded();
     # decide at compile time how to check for a process' memory size.
-    if (SOLARIS && $Config{'osvers'} >= 2.6) {
+    my ($major,$minor) = split(/\./, $Config{'osvers'});
+    if (SOLARIS && (($major > 2) || ($major == 2 && $minor >= 6))) {
         $HOW_BIG_IS_IT = \&solaris_2_6_size_check;
components/apache2-modules/mod_perl/perl.conf
New file
@@ -0,0 +1,34 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
#
# Cause Perl to work with Apache pre-fork MPM(32-bit) only.
# Load this module only if not loaded already
#
<IfDefine !64bit>
<IfModule prefork.c>
<IfModule !mod_perl.c>
LoadModule perl_module libexec/mod_perl.so
</IfModule>
</IfModule>
</IfDefine>
components/apache2-modules/mod_proxy_html/Makefile
New file
@@ -0,0 +1,51 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME=        mod_proxy_html
COMPONENT_VERSION=    3.1.1
COMPONENT_SRC=        $(COMPONENT_NAME)
COMPONENT_ARCHIVE=    $(COMPONENT_SRC)-$(COMPONENT_VERSION).tar.bz2
COMPONENT_ARCHIVE_HASH=    sha1:d36398151994f308ce36bacab09beb8165bf01a7
# Original archive from community didn't contain name in its version.
# Therefore we created special Userland copy with version info.
COMPONENT_ARCHIVE_URL=    http://apache.webthing.com/mod_proxy_html/$(COMPONENT_ARCHIVE)
include ../../../make-rules/prep.mk
include ../../../make-rules/justmake.mk
include ../../../make-rules/ips.mk
APACHE_USR_PREFIX=/usr/apache2/2.2
$(BUILD_DIR_32)/.built: COMPONENT_BUILD_ARGS +=    APXS=$(APACHE_USR_PREFIX)/bin/apxs
$(BUILD_DIR_64)/.built: COMPONENT_BUILD_ARGS +=    APXS=$(APACHE_USR_PREFIX)/bin/$(MACH64)/apxs
PATH=$(SPRO_VROOT)/bin:/usr/bin:/usr/gnu/bin
build: $(BUILD_32_and_64)
test: $(NO_TESTS)
BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
include ../../../make-rules/depend.mk
components/apache2-modules/mod_proxy_html/apache-proxy_html.license
New file
@@ -0,0 +1,350 @@
Oracle elects to use only the GNU Lesser General Public License version
2.1 (LGPL)/GNU General Public License version 2 (GPL) for any software
where a choice of LGPL/GPL license versions are made available with the
language indicating that LGPLv2.1/GPLv2 or any later version may be
used, or where a choice of which version of the LGPL/GPL is applied is
unspecified.  Unless specifically stated otherwise, where a choice
exists between another license and either the GPL or the LGPL, Oracle
chooses the other license.
====================================================================
            GNU GENERAL PUBLIC LICENSE
               Version 2, June 1991
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
                          59 Temple Place - Suite 330, Boston, MA
                          02111-1307, USA.
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
                Preamble
  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.
  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.
  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
  The precise terms and conditions for copying, distribution and
modification follow.
            GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.
    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.
    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,
    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,
    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.
  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
                NO WARRANTY
  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
             END OF TERMS AND CONDITIONS
    Appendix: How to Apply These Terms to Your New Programs
  If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
  To do so, attach the following notices to the program.  It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) 19yy  <name of author>
    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
    Gnomovision version 69, Copyright (C) 19yy name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License.  Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary.  Here is a sample; alter the names:
  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.
  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs.  If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library.  If this is what you want to do, use the GNU Library General
Public License instead of this License.
components/apache2-modules/mod_proxy_html/apache-proxy_html.p5m
New file
@@ -0,0 +1,58 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/module/apache-proxy_html@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="Proxy HTML plugin for Apache Web Server V2.2"
set name=pkg.description \
    value="Proxy HTML plugin for Apache Web Server Version 2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://apache.webthing.com/mod_proxy_html/"
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/LSARC/2009/553
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license apache-proxy_html.license license="GPLv2"
dir path=etc
dir path=etc/apache2
dir path=etc/apache2/2.2
dir path=etc/apache2/2.2/samples-conf.d
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/libexec/$(MACH64)
file proxy_html.conf path=etc/apache2/2.2/samples-conf.d/proxy_html.conf
file build/$(MACH32)/.libs/mod_proxy_html.so path=usr/apache2/2.2/libexec/mod_proxy_html.so
file build/$(MACH64)/.libs/mod_proxy_html.so path=usr/apache2/2.2/libexec/$(MACH64)/mod_proxy_html.so
legacy    pkg=SUNWapch22m-proxy-html \
    name="Proxy HTML plugin for Apache Web Server V2.2" \
    desc="Proxy HTML plugin for Apache Web Server Version 2.2 (3.1.1)"
legacy    pkg=SUNWapch22r-proxy-html \
    name="Proxy HTML plugin for Apache Web Server V2.2" \
    desc="Proxy HTML plugin for Apache Web Server Version 2.2 (3.1.1)"
components/apache2-modules/mod_proxy_html/apache-xml2enc.license
New file
@@ -0,0 +1,42 @@
Oracle elects to use only the the Apache License Version 2.0 for this
component.
====================================================
       Copyright (c) 2007-8, WebThing Ltd
       Author: Nick Kew <nick@webthing.com>
This work is available to you under EITHER the Apache License Version 2.0
OR the GNU General Poblic License Version 2.  It is your choice which
of these licenses you accept, but if you wish to copy or use this
work, you MUST accept one of these licenses and abide by its terms.
OPTION 1: Apache License
WebThing licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License.  You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
OPTION 2: GNU General Public License
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License  Version 2,
as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You can obtain a copy of the GNU General Poblic License Version 2
from http://www.gnu.org/licenses/old-licenses/gpl-2.0.html or
http://apache.webthing.com/COPYING.txt
components/apache2-modules/mod_proxy_html/apache-xml2enc.p5m
New file
@@ -0,0 +1,51 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/module/apache-xml2enc@1.0.1,$(BUILD_VERSION)
set name=pkg.summary \
    value="xml2nec plugin for Apache Web Server V2.2"
set name=pkg.description \
    value="xml2enc plugin for Apache Web Server Version 2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://apache.webthing.com/mod_xml2enc/"
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/LSARC/2009/553
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license apache-xml2enc.license license="Apache v2.0"
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/include
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/libexec/$(MACH64)
file mod_xml2enc.h path=usr/apache2/2.2/include/mod_xml2enc.h
file build/$(MACH32)/.libs/mod_xml2enc.so path=usr/apache2/2.2/libexec/mod_xml2enc.so
file build/$(MACH64)/.libs/mod_xml2enc.so path=usr/apache2/2.2/libexec/$(MACH64)/mod_xml2enc.so
legacy    pkg=SUNWapch22m-xml2enc \
    name="xml2nec plugin for Apache Web Server V2.2" \
    desc="xml2enc plugin for Apache Web Server Version 2.2 (1.0)"
components/apache2-modules/mod_proxy_html/patches/conf.patch
New file
@@ -0,0 +1,56 @@
--- mod_proxy_html/proxy_html.conf    Mon Oct  5 15:50:28 2009
+++ mod_proxy_html/proxy_html.conf    Tue Mar 30 11:49:53 2010
@@ -1,21 +1,21 @@
-# Configuration example.
-#
-# First, to load the module with its prerequisites.  Note: mod_xml2enc
-# is not always necessary, but without it mod_proxy_html is likely to
-# mangle pages in encodings other than ASCII or Unicode (utf-8).
-#
-# For Unix-family systems:
-# LoadFile    /usr/lib/libxml2.so
-# LoadModule    proxy_html_module    modules/mod_proxy_html.so
-# LoadModule    xml2enc_module        modules/mod_xml2enc.so
-#
-# For Windows (I don't know if there's a standard path for the libraries)
-# LoadFile    C:/path/zlib.dll
-# LoadFile    C:/path/iconv.dll
-# LoadFile    C:/path/libxml2.dll
-# LoadModule    proxy_html_module    modules/mod_proxy_html.so
-# LoadModule    xml2enc_module        modules/mod_xml2enc.so
-#
+
+<IfDefine 64bit>
+LoadFile    /usr/lib/64/libxml2.so.2
+
+LoadModule xml2enc_module libexec/64/mod_xml2enc.so
+LoadModule proxy_html_module libexec/64/mod_proxy_html.so
+
+</IfDefine>
+<IfDefine !64bit>
+LoadFile    /usr/lib/libxml2.so.2
+
+LoadModule xml2enc_module libexec/mod_xml2enc.so
+LoadModule proxy_html_module libexec/mod_proxy_html.so
+</IfDefine>
+
+<IfModule mod_proxy_html.c>
+
+
 # All knowledge of HTML links has been removed from the mod_proxy_html
 # code itself, and is instead read from httpd.conf (or included file)
 # at server startup.  So you MUST declare it.  This will normally be
@@ -60,7 +60,10 @@
 #
 # ProxyHTMLLinks    myelement    myattr otherattr
 #
-# See the documentation at
+# Also at top level in httpd.conf, you can declare charset aliases.
+# This is the most efficient way to support encodings that libxml2
+# doesn't natively support.  See the documentation at
 # http://apache.webthing.com/mod_proxy_html/
-# and the tutorial at
-# http://www.apachetutor.org/admin/reverseproxies
+
+</IfModule>
+
components/apache2-modules/mod_proxy_html/patches/makefile.patch
New file
@@ -0,0 +1,18 @@
--- /dev/null    2011-05-10 16:41:00.000000000 -0700
+++ mod_proxy_html/Makefile    2011-05-10 16:39:23.932152964 -0700
@@ -0,0 +1,15 @@
+APXS=apxs
+
+INCLUDES="-I/usr/include/libxml2 -I."
+
+all: .libs/mod_proxy_html.so .libs/mod_xml2enc.so
+
+.libs/mod_proxy_html.so: mod_proxy_html.c
+    $(APXS) -c -o mod_proxy_html.so $(INCLUDES) mod_proxy_html.c
+
+.libs/mod_xml2enc.so: mod_xml2enc.c
+    $(APXS) -c -o mod_xml2enc.so $(INCLUDES) mod_xml2enc.c
+
+clean:
+    -rm -f *.o *.so *.lo *.la *.slo
+    -rm -rf .libs
components/apache2-modules/mod_security2/Makefile
New file
@@ -0,0 +1,63 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
include ../../../make-rules/shared-macros.mk
COMPONENT_NAME=        modsecurity-apache
COMPONENT_VERSION=    2.5.9
COMPONENT_SRC=        $(COMPONENT_NAME)_$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH=    sha1:875919332a918956371fe8e2f7e46d88081857cf
COMPONENT_ARCHIVE_URL=    http://www.modsecurity.org/download/$(COMPONENT_ARCHIVE)
include ../../../make-rules/prep.mk
include ../../../make-rules/configure.mk
include ../../../make-rules/ips.mk
APACHE_USR_PREFIX=/usr/apache2/2.2
APXS.32=    $(APACHE_USR_PREFIX)/bin/apxs
APXS.64=    $(APACHE_USR_PREFIX)/bin/$(MACH64)/apxs
CONFIGURE_OPTIONS +=    LTFLAGS="--silent --tag=CC"
CONFIGURE_OPTIONS += --with-apxs=$(APXS.$(BITS))
CONFIGURE_OPTIONS += --with-apr=`$(APXS.$(BITS)) -q APR_CONFIG`
CONFIGURE_OPTIONS += --with-apu=`$(APXS.$(BITS)) -q APU_CONFIG`
# Need to get right version of C compiler and GNU sed first.
PATH=$(SPRO_VROOT)/bin:/usr/gnu/bin:/usr/bin
# Some patches need configure script re-creation.
COMPONENT_PREP_ACTION = (cd $(@D)/apache2; autoconf)
CONFIGURE_SCRIPT = $(SOURCE_DIR)/apache2/configure
# Header files are missing during build without cloning.
COMPONENT_PRE_BUILD_ACTION += ($(CLONEY) $(SOURCE_DIR)/apache2 $(@D));
build: $(BUILD_32_and_64)
test: $(NO_TESTS)
BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
include ../../../make-rules/depend.mk
components/apache2-modules/mod_security2/apache-security.p5m
New file
@@ -0,0 +1,59 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/module/apache-security@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="Mod Security plugin for Apache Web Server V2.2"
set name=pkg.description \
    value="Mod Security plugin for Apache Web Server Version 2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://www.modsecurity.org/"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/PSARC/2008/090
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license security2.license license="GPLv2"
dir path=etc
dir path=etc/apache2
dir path=etc/apache2/2.2
dir path=etc/apache2/2.2/samples-conf.d
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/libexec/$(MACH64)
file security2.conf path=etc/apache2/2.2/samples-conf.d/security2.conf
file build/$(MACH32)/.libs/mod_security2.so path=usr/apache2/2.2/libexec/mod_security2.so
file build/$(MACH64)/.libs/mod_security2.so path=usr/apache2/2.2/libexec/$(MACH64)/mod_security2.so
legacy    pkg=SUNWapch22m-security \
    name="Mod Security plugin (2.5.9) for Apache Web Server Version 2.2" \
    desc="Mod Security plugin (2.5.9) for Apache Web Server Version 2.2"
legacy    pkg=SUNWapch22r-security \
    name="Mod Security plugin (2.5.9) for Apache Web Server Version 2.2" \
    desc="Mod Security plugin (2.5.9) for Apache Web Server Version 2.2"
components/apache2-modules/mod_security2/patches/configure.in.patch
New file
@@ -0,0 +1,28 @@
--- modsecurity-apache_2.5.9/apache2/configure.in.orig    Fri May  6 03:57:25 2011
+++ modsecurity-apache_2.5.9/apache2/configure.in    Fri May  6 03:59:43 2011
@@ -302,9 +302,9 @@
 ### Build *EXTRA_CFLAGS vars
 if test -n "$debug_mem"; then
-  EXTRA_CFLAGS="-O0 -g -Wall"
+  EXTRA_CFLAGS="-O0 -g"
 else
-  EXTRA_CFLAGS="-O2 -g -Wall $strict_compile"
+  EXTRA_CFLAGS="-O2 -g $strict_compile"
 fi
 MODSEC_EXTRA_CFLAGS="$debug_conf $debug_cache $debug_acmp $debug_mem $perf_meas $modsec_api"
@@ -311,11 +311,11 @@
 APXS_WRAPPER=build/apxs-wrapper
 APXS_EXTRA_CFLAGS=""
 for f in $EXTRA_CFLAGS; do
-    APXS_EXTRA_CFLAGS="$APXS_EXTRA_CFLAGS -Wc,$f"
+    APXS_EXTRA_CFLAGS="$APXS_EXTRA_CFLAGS"
 done;
 MODSEC_APXS_EXTRA_CFLAGS=""
 for f in $MODSEC_EXTRA_CFLAGS; do
-    MODSEC_APXS_EXTRA_CFLAGS="$MODSEC_APXS_EXTRA_CFLAGS -Wc,$f"
+    MODSEC_APXS_EXTRA_CFLAGS="$MODSEC_APXS_EXTRA_CFLAGS"
 done;
 ### Substitute the vars
components/apache2-modules/mod_security2/security2.conf
New file
@@ -0,0 +1,59 @@
<IfDefine 64bit>
LoadModule security2_module libexec/64/mod_security2.so
</IfDefine>
<IfDefine !64bit>
LoadModule security2_module libexec/mod_security2.so
</IfDefine>
<IfModule mod_security2.c>
# Basic configuration options
SecRuleEngine On
SecRequestBodyAccess On
SecResponseBodyAccess Off
# Handling of file uploads
# TODO Choose a folder private to Apache.
# SecUploadDir /opt/apache-frontend/tmp/
SecUploadKeepFiles Off
# Debug log
SecDebugLog /var/apache2/2.2/logs/modsec_debug.log
SecDebugLogLevel 0
# Serial audit log
SecAuditEngine RelevantOnly
SecAuditLogRelevantStatus ^5
SecAuditLogParts ABIFHZ
SecAuditLogType Serial
SecAuditLog /var/apache2/2.2/logs/modsec_audit.log
# Maximum request body size we will
# accept for buffering
SecRequestBodyLimit 131072
# Store up to 128 KB in memory
SecRequestBodyInMemoryLimit 131072
# Buffer response bodies of up to
# 512 KB in length
SecResponseBodyLimit 524288
# Verify that we've correctly processed the request body.
# As a rule of thumb, when failing to process a request body
# you should reject the request when deployed in blocking mode
# or log a high-severity alert when deployed in detection-only mode.
SecRule REQBODY_PROCESSOR_ERROR "!@eq 0" "phase:2,t:none,log,deny,msg:'Failed to parse request body.',severity:2"
# By default be strict with what we accept in the multipart/form-data
# request body. If the rule below proves to be too strict for your
# environment consider changing it to detection-only. You are encouraged
# _not_ to remove it altogether.
SecRule MULTIPART_STRICT_ERROR "!@eq 0" "phase:2,t:none,log,deny,msg:'Multipart request body failed strict validation: PE %{REQBODY_PROCESSOR_ERROR}, BQ %{MULTIPART_BOUNDARY_QUOTED}, BW %{MULTIPART_BOUNDARY_WHITESPACE}, DB %{MULTIPART_DATA_BEFORE}, DA %{MULTIPART_DATA_AFTER}, HF %{MULTIPART_HEADER_FOLDING}, LF %{MULTIPART_LF_LINE}, SM %{MULTIPART_SEMICOLON_MISSING}'"
# Did we see anything that might be a boundary?
SecRule MULTIPART_UNMATCHED_BOUNDARY "!@eq 0" "phase:2,t:none,log,deny,msg:'Multipart parser detected a possible unmatched boundary.'"
SecRule REQUEST_URI "sfw" "deny"
</IfModule>
components/apache2-modules/mod_security2/security2.license
New file
@@ -0,0 +1,291 @@
Oracle elects to use only the GNU Lesser General Public License version
2.1 (LGPL)/GNU General Public License version 2 (GPL) for any software
where a choice of LGPL/GPL license versions are made available with the
language indicating that LGPLv2.1/GPLv2 or any later version may be
used, or where a choice of which version of the LGPL/GPL is applied is
unspecified.  Unless specifically stated otherwise, where a choice
exists between another license and either the GPL or the LGPL, Oracle
chooses the other license.
====================================================================
            GNU GENERAL PUBLIC LICENSE
               Version 2, June 1991
 Copyright (C) 1989, 1991 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.
                Preamble
  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.)  You can apply it to
your programs, too.
  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.
  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
  The precise terms and conditions for copying, distribution and
modification follow.
            GNU GENERAL PUBLIC LICENSE
   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.
    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.
    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,
    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,
    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.
  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
                NO WARRANTY
  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
             END OF TERMS AND CONDITIONS
components/apache2/Makefile
New file
@@ -0,0 +1,117 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
include ../../make-rules/shared-macros.mk
COMPONENT_NAME=        httpd
COMPONENT_VERSION=    2.2.16
COMPONENT_SRC=        $(COMPONENT_NAME)-$(COMPONENT_VERSION)
COMPONENT_ARCHIVE=    $(COMPONENT_SRC).tar.gz
COMPONENT_ARCHIVE_HASH=    sha1:6937bd8b127541d6700b870681120b2b4cc79ba9
COMPONENT_ARCHIVE_URL=    http://archive.apache.org/dist/httpd/$(COMPONENT_ARCHIVE)
CONFIGURE_DEFAULT_DIRS=no
include ../../make-rules/prep.mk
include ../../make-rules/configure.mk
include ../../make-rules/ips.mk
PATCH_LEVEL=0
# Some patches need configure script re-creation.
COMPONENT_PREP_ACTION +=($(CP) mod_sed/* $(@D)/modules/filters);
COMPONENT_PREP_ACTION +=($(CP) mod_auth_gss/mod_auth_gss.c $(@D)/modules/aaa);
COMPONENT_PREP_ACTION +=($(CP) mod_auth_gss/mod_auth_gss.html $(@D)/docs/manual/mod);
COMPONENT_PREP_ACTION +=(cd $(@D); autoreconf);
VARIANT_PREFORK =    $(BUILD_DIR)/prefork
VARIANT_WORKER =    $(BUILD_DIR)/worker
VARIANTS = $(VARIANT_WORKER) $(VARIANT_PREFORK)
BUILD_32 = $(VARIANTS:%=%/$(MACH32)/.built)
BUILD_64 = $(VARIANTS:%=%/$(MACH64)/.built)
INSTALL_32 = $(VARIANTS:%=%/$(MACH32)/.installed)
INSTALL_64 = $(VARIANTS:%=%/$(MACH64)/.installed)
$(VARIANT_PREFORK)/$(MACH64)/.configured: BITS=64
$(VARIANT_WORKER)/$(MACH64)/.configured:  BITS=64
$(VARIANT_PREFORK)/%/.configured: CONFIGURE_OPTIONS += --with-mpm=prefork
$(VARIANT_WORKER)/%/.configured:  CONFIGURE_OPTIONS += --with-mpm=worker
# pipefail wouldn't allow APR-util version check
CONFIGURE_ENV += SHELLOPTS=
CONFIGURE_PREFIX =    /usr/apache2/2.2
CONFIGURE_OPTIONS +=    --enable-mods-shared=all
CONFIGURE_OPTIONS +=    --enable-so
CONFIGURE_OPTIONS +=    --enable-suexec
CONFIGURE_OPTIONS +=    --with-suexec-caller=webservd
CONFIGURE_OPTIONS +=    --enable-proxy
CONFIGURE_OPTIONS +=    --enable-proxy-connect
CONFIGURE_OPTIONS +=    --enable-proxy-ftp
CONFIGURE_OPTIONS +=    --enable-proxy-http
CONFIGURE_OPTIONS +=    --enable-proxy-ajp
CONFIGURE_OPTIONS +=    --enable-proxy-balancer
CONFIGURE_OPTIONS +=    --enable-cache
CONFIGURE_OPTIONS +=    --enable-file-cache
CONFIGURE_OPTIONS +=    --enable-disk-cache
CONFIGURE_OPTIONS +=    --enable-mem-cache
CONFIGURE_OPTIONS +=    --enable-deflate
CONFIGURE_OPTIONS +=    --enable-cgid
CONFIGURE_OPTIONS +=    --enable-cgi
CONFIGURE_OPTIONS +=    --enable-authnz-ldap
CONFIGURE_OPTIONS +=    --enable-ldap
CONFIGURE_OPTIONS +=    --enable-ssl
CONFIGURE_OPTIONS +=    --enable-exception-hook
CONFIGURE_OPTIONS +=    CFLAGS="$(CFLAGS) -DSSL_EXPERIMENTAL -DSSL_ENGINE"
CONFIGURE_OPTIONS +=    LTFLAGS="--silent --tag=CC"
CONFIGURE_OPTIONS.32 +=    --enable-layout=Solaris-Apache2
CONFIGURE_OPTIONS.64 +=    --enable-layout=Solaris-Apache2-$(MACH64)
CONFIGURE_OPTIONS.32 +=    --with-apr=/usr/apr/1.3/bin/apr-1-config
CONFIGURE_OPTIONS.64 +=    --with-apr=/usr/apr/1.3/bin/$(MACH64)/apr-1-config
CONFIGURE_OPTIONS.32 +=    --with-apr-util=/usr/apr-util/1.3/bin/apu-1-config
CONFIGURE_OPTIONS.64 +=    --with-apr-util=/usr/apr-util/1.3/bin/$(MACH64)/apu-1-config
PATH=$(SPRO_VROOT)/bin:/usr/bin:/usr/gnu/bin
build: $(BUILD_32_and_64)
AP_CONFIG_LAYOUT_H=include/ap_config_layout.h
install: $(INSTALL_32_and_64)
    # Some files installed in proto area need to be fixed.
    $(KSH93) Solaris/customization.sh $(PROTO_DIR) $(MACH64)
    # Common header files for 32 and 64 bit variants are needed.
    /usr/bin/diff -D __$(MACH64) \
      $(VARIANT_PREFORK)/$(MACH32)/$(AP_CONFIG_LAYOUT_H) \
      $(VARIANT_PREFORK)/$(MACH64)/$(AP_CONFIG_LAYOUT_H) \
      > $(PROTO_DIR)$(CONFIGURE_PREFIX)/$(AP_CONFIG_LAYOUT_H) ; true
test: $(NO_TESTS)
BUILD_PKG_DEPENDENCIES =    $(BUILD_TOOLS)
include ../../make-rules/depend.mk
components/apache2/Solaris/apache2.1m.sunman
New file
@@ -0,0 +1,403 @@
'\" te
.\" Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
.TH apache2 1M "May 2011" "SunOS 5.11" "System Administration Commands"
.SH NAME
apache2 \- Apache HTTP Server Version 2 overview
.SH SYNOPSIS
.LP
.nf
\fBapache2\fR
.fi
.SH DESCRIPTION
.sp
.LP
Apache HTTP Server Version 2 (Apache 2) consists of a main  server daemon,
loadable server modules,  some additional  support utilities, configuration
files, and documentation.
.sp
.LP
Both 32-bit and 64-bit versions of the servers are installed. It also
includes two of the most popular MPMs - Prefork and Worker.
.SH FILES
.sp
.LP
The following files specify the installation locations for Apache 2:
.LP
Note :
.RS +4
.TP
.ie t \(bu
.el o
The string \fB[version]\fR should be expanded
to \fB"MAJOR.MINOR"\fR. For example, \fB/usr/apache2/2.2/*\fR.
.RE
.RS +4
.TP
.ie t \(bu
.el o
\fB[isainfo]\fR represents the output of \fBisainfo
-n\fR on 64-bit platform.
.RE
.RS +4
.TP
.ie t \(bu
.el o
To find the current version of Apache 2 installed on your
machine, type the following command:
.sp
.in +2
.nf
$ /usr/apache2/[version]/bin/apachectl -v
.fi
.in -2
.sp
.RE
.RE
.sp
.ne 2
.mk
.na
\fB\fB/etc/apache2/[version]/\fR\fR
.ad
.sp .6
.RS 4n
Contains server configuration files. A newly-installed server
contains a default \fBhttpd.conf\fR file. This is the main configuration file.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/etc/apache2/[version]/conf.d/\fR\fR
.ad
.sp .6
.RS 4n
Contains additional server configuration files.
.sp
By default, server will load all the \fB\&.conf\fR files
placed under this directory. It also has 2 additional \fB\&.load\fR configuration
files-\fBmodules-32.load\fR and \fBmodules-64.load\fR which
contain \fBLoadModule\fR directives for loading the 32 and 64-bit
bundled Apache 2 modules respectively.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/etc/apache2/[version]/envvars\fR\fR
.ad
.sp .6
.RS 4n
File for specifying the environment settings which the server uses at
startup. This is the user-editable version of the
/usr/apache2/[version]/bin/envvars file.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/etc/apache2/[version]/magic\fR\fR
.ad
.sp .6
.RS 4n
Magic data for \fBmod_mime_magic\fR Apache module as documented in the
.nf
\fB/usr/apache2/2.2/manual/mod/mod_mime_magic.html\fR file.
.fi
.nf
Editing this file is not recommended.
.fi
.RE
.sp
.ne 2
.mk
.na
\fB\fB/etc/apache2/[version]/mime.types\fR\fR
.ad
.sp .6
.RS 4n
Default MIME types file. This file sets the default list of
mappings from filename extensions to content types, changing this file is
not recommended. Use the \fBAddType\fR directive instead.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/etc/apache2/[version]/original/\fR\fR
.ad
.sp .6
.RS 4n
Contents under this directory are delivered as-is from the
apache distribution and these files are not meant to be read by the server.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/etc/apache2/[version]/sample-conf.d/\fR\fR
.ad
.sp .6
.RS 4n
Contains sample \fB\&.conf\fR files. These are
not included in the main configuration file. To use the sample file, copy
the file to \fBconf.d\fR directory and modify as per the need.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/bin/\fR\fR
.ad
.sp .6
.RS 4n
Contains the 32-bit httpd (Prefork MPM) and httpd.worker (Worker
MPM) executable as well as other utility programs.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/bin/[isainfo]/\fR\fR
.ad
.sp .6
.RS 4n
Contains the 64-bit httpd (Prefork MPM) and httpd.worker (Worker
MPM) executables as well as other utility programs.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/bin/envvars\fR\fR
\fB\fB/usr/apache2/[version]/bin/[isainfo]/envvars\fR\fR
.ad
.sp .6
.RS 4n
Contains the default environment settings that the server uses at startup.
.nf
Editing this file is not recommended.
.fi
Instead, user should use /etc/apache2/[version]/envvars file.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/manual/\fR\fR
.ad
.sp .6
.RS 4n
Contains the Apache 2 manual in HTML format.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/include/\fR\fR
.ad
.sp .6
.RS 4n
Contains the Apache 2 header files, which are needed for building
various optional server extensions with \fBapxs(8)\fR.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/libexec/\fR\fR
.ad
.sp .6
.RS 4n
Contains 32-bit loadable modules (DSOs) supplied with the
server.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/libexec/[isainfo]/\fR\fR
.ad
.sp .6
.RS 4n
Contains 64-bit loadable modules (DSOs) supplied with the
server.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/man/\fR\fR
.ad
.sp .6
.RS 4n
Contains man pages for the server, utility programs, and \fBmod_perl\fR.
.sp
Add this directory to your MANPATH to read the Apache 2 man pages. See
Notes.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/lib/\fR\fR
.ad
.sp .6
.RS 4n
Contains the 32-bit Apache 2 core libraries.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/lib/[isainfo]/\fR\fR
.ad
.sp .6
.RS 4n
Contains the 64-bit Apache 2 core libraries.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/usr/apache2/[version]/lib/perl/\fR\fR
.ad
.sp .6
.RS 4n
Contains the 32-bit modules and library files used by the \fBmod_perl\fR extension to Apache 2.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/apache2/[version]/cgi-bin/\fR\fR
.ad
.sp .6
.RS 4n
Default location for the CGI scripts.
.sp
This can be changed by altering the \fBhttpd.conf\fR file
and restarting the server.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/apache2/[version]/htdocs/\fR\fR
.ad
.sp .6
.RS 4n
Default document root.
.sp
This can be changed by altering the \fBhttpd.conf\fR file
and restarting the server.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/apache2/[version]/icons/\fR\fR
.ad
.sp .6
.RS 4n
Icons used by the server.
.sp
This should not be changed.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/apache2/[version]/libexec/\fR\fR
.ad
.sp .6
.RS 4n
Place holder for 32-bit user Apache 2 modules.
.sp
Any 32-bit modules which are added using \fBapxs(8)\fR are
copied into this directory.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/apache2/[version]/libexec/[isainfo]/\fR\fR
.ad
.sp .6
.RS 4n
Place holder for 64-bit user Apache 2 modules.
.sp
Any 64-bit modules which are added using \fBapxs(8)\fR are
copied into this directory.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/apache2/[version]/logs/\fR\fR
.ad
.sp .6
.RS 4n
Contains server log files.
.sp
The formats, names, and locations of the files in this directory can
be altered by various configuration directives in the \fBhttpd.conf\fR file.
.RE
.sp
.ne 2
.mk
.na
\fB\fB/var/apache2/[version]/proxy/\fR\fR
.ad
.sp .6
.RS 4n
Directory used to cache pages if  the caching feature of \fBmod_proxy\fR is enabled in the \fBhttpd.conf\fR file.
.sp
The location of the cache can also be changed by changing the proxy
configuration in the \fBhttpd.conf\fR file.
.RE
.SH SEE ALSO
.sp
.LP
\fBattributes(5)\fR, \fBhttpd(8)\fR, apachectl(8)
.sp
.LP
http://www.apache.org
.SH NOTES
.sp
.LP
In addition to the documentation and man pages included with Solaris,
more information is available at http://www.apache.org\&.
.sp
.LP
The Apache 2 man pages are provided with the programming modules. To
view the manual pages for the Apache 2 modules with the man command, add \fB/usr/apache2/[version]/man\fR to the MANPATH environment variable.
See \fBman(1)\fR for more information. Running \fBcatman(1M)\fR on
the Apache 2 manual pages is not supported.
components/apache2/Solaris/customization.sh
New file
@@ -0,0 +1,110 @@
#!/usr/bin/ksh93
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set -o errexit
PROTO=$1
MACH64=$2
CONFDIR=${PROTO}/etc/apache2/2.2
MODULES_32_CONF=${CONFDIR}/conf.d/modules-32.load
MODULES_64_CONF=${CONFDIR}/conf.d/modules-64.load
APACHECTL64=${PROTO}/usr/apache2/2.2/bin/${MACH64}/apachectl
APACHE_BUILD_DIR32=${PROTO}/usr/apache2/2.2/build
APACHE_BUILD_DIR64=${PROTO}/usr/apache2/2.2/build/${MACH64}
mkdir -p ${CONFDIR}/conf.d
mkdir -p ${CONFDIR}/samples-conf.d
mkdir -p ${PROTO}/lib/svc/method
cp Solaris/modules-32.load Solaris/modules-64.load ${CONFDIR}/conf.d
# Strip LoadModule directives from httpd.conf.
grep -v "^LoadModule " ${CONFDIR}/httpd.conf > ${CONFDIR}/original/httpd.conf
# Strip the 32-bit LoadModule directives from httpd.conf and put them in a
# separate file.
grep "^LoadModule " ${CONFDIR}/httpd.conf >> ${MODULES_32_CONF}
sed -f Solaris/loadmodules.sed ${MODULES_32_CONF} > ${MODULES_32_CONF}.new
mv ${MODULES_32_CONF}.new ${MODULES_32_CONF}
# Strip the 64-bit LoadModule directives from httpd.conf and put them in a
# separate file.
grep "^LoadModule " ${CONFDIR}/httpd.conf | sed -e "s;/;/64/;g" >> ${MODULES_64_CONF}
sed -f Solaris/loadmodules.sed ${MODULES_64_CONF} > ${MODULES_64_CONF}.new
mv ${MODULES_64_CONF}.new ${MODULES_64_CONF}
# Remove the bundled but disabled (by default) modules from modules-32.load,
# modules-64.load and create a sample .conf file for each of them.
for i in `sed -e 's/#.*//' -e '/^$/ d' Solaris/disabled-module.list`; do
  sed -e '/LoadModule.*'${i}'.so/ d' ${MODULES_32_CONF} > ${MODULES_32_CONF}.new
  mv ${MODULES_32_CONF}.new  ${MODULES_32_CONF}
  sed -e '/LoadModule.*'${i}'.so/ d' ${MODULES_64_CONF} > ${MODULES_64_CONF}.new
  mv ${MODULES_64_CONF}.new  ${MODULES_64_CONF}
  module_name=`echo ${i} | sed -e 's/^mod_//'`
  sed -e 's/::MODULE_NAME::/'${module_name}'/g' Solaris/sample-module.tmpl \
     > ${CONFDIR}/samples-conf.d/${module_name}.conf
done
# Add MACH64 specific dir info into SMF method.
sed "s/::ISAINFO::/\/${MACH64}/" Solaris/http-apache22 > ${PROTO}/lib/svc/method/http-apache22
# Add "-D 64" argument into 64 bit apachectl (if it's not there yet).
grep OPTS_64 ${APACHECTL64} > /dev/null || ( sed -e '/^case $ARGV in/i\
OPTS_64="-D 64bit"\
HTTPD="$HTTPD $OPTS_64"\
' ${APACHECTL64} > ${APACHECTL64}.new && mv ${APACHECTL64}.new ${APACHECTL64} )
# Since we are delivering mod_sed in separate package we don't want it in
# original httpd.conf file.
grep sed_module ${CONFDIR}/httpd.conf > /dev/null && \
grep -v sed_module ${CONFDIR}/httpd.conf > ${CONFDIR}/httpd.conf.new && \
mv ${CONFDIR}/httpd.conf.new ${CONFDIR}/httpd.conf
# Remove CBE specific paths for C compiler.
for i in ${APACHE_BUILD_DIR32}/config.nice \
     ${APACHE_BUILD_DIR64}/config.nice \
     ${APACHE_BUILD_DIR32}/config_vars.mk \
     ${APACHE_BUILD_DIR64}/config_vars.mk;
do
  sed -e '/^.*CC *=/s,/.*/,,' \
      -e '/^.*CXX *=/s,/.*/,,' \
      -e '/MKDEP *=/s,/.*/,,' \
      -e '/\/configure/s,/.*/,.\/,' < ${i} > ${i}.new
  mv ${i}.new ${i}
done
# 64 bit rules.mk and special.mk should refer also to 64 bit build files.
for i in ${APACHE_BUILD_DIR64}/rules.mk \
     ${APACHE_BUILD_DIR64}/special.mk
do
  sed -e "s/build\/config_vars/build\/${MACH64}\/config_vars/" \
      -e "s/build\/rules/build\/${MACH64}\/rules/" \
      -e "s/build\/instdso/build\/${MACH64}\/instdso/" < ${i} > ${i}.new
  mv ${i}.new ${i}
done
exit 0
components/apache2/Solaris/disabled-module.list
New file
@@ -0,0 +1,38 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
#
#
# This is the list of apache modules which are bundled but disabled by default.
# i.e. modules not loaded at startup.
# There will be one sample .conf file (with a name '<module-name>.conf')
# for every module listed below. These config files will be placed in
# $(ETC_ROOT)/apache2/2.2/samples-conf.d/ directory.
# Each config file will have the "LoadModule" directive for the corresponding
# apache module
#
mod_proxy_scgi
mod_reqtimeout
mod_sed
components/apache2/Solaris/favicon.gif
components/apache2/Solaris/favicon.ico
components/apache2/Solaris/http-apache22
New file
@@ -0,0 +1,166 @@
#!/sbin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
#
. /lib/svc/share/smf_include.sh
APACHE_VERSION=
APACHE_USR_ROOT=/usr/apache2
APACHE_ETC_ROOT=/etc/apache2
APACHE_VAR_ROOT=/var/apache2
#if startup options contain multiple arguments separated by a blank,
#then they should be specified as below
#e.g., %> svccfg -s apache22 setprop 'httpd/startup_options=("-f" "/etc/apache2/2.2/new.conf")'
#
STARTUP_OPTIONS=
SERVER_TYPE=prefork
PLATFORM_DIR=
getprop() {
    PROPVAL=""
    svcprop -q -p $1 ${SMF_FMRI}
    if [ $? -eq 0 ] ; then
        PROPVAL=`svcprop -p $1 ${SMF_FMRI}`
        if [ "${PROPVAL}" = "\"\"" ] ; then
            PROPVAL=""
        fi
        return
    fi
    return
}
APACHE_VERSION=`echo ${SMF_FMRI} | sed 's/[^0-9]//g;s/./\.&/g;s/^\.//'`
if [ "x${APACHE_VERSION}" != "x" ]; then
    echo "Apache version is ${APACHE_VERSION}"
    APACHE_USR_ROOT=${APACHE_USR_ROOT}/${APACHE_VERSION}
    APACHE_ETC_ROOT=${APACHE_ETC_ROOT}/${APACHE_VERSION}
    APACHE_VAR_ROOT=${APACHE_VAR_ROOT}/${APACHE_VERSION}
fi
getprop httpd/enable_64bit
if [ "${PROPVAL}" != "" ] ; then
    case ${PROPVAL} in
    true|1)
        # Check if the system architecture supports 64-bit applications
        PLATFORM=`isainfo -b`
        if [ "${PLATFORM}" != "64" ]; then
            echo "This system is not capable of supporting 64-bit applications."
            echo "Set \"enable_64bit\" property value to \"false\" to start the 32-bit server."
            exit $SMF_EXIT_ERR_CONFIG
        fi
    # 64 bit Apache
    PLATFORM_DIR=::ISAINFO::
    ;;
    false|0)
    # 32 bit Apache
    PLATFORM_DIR=
    ;;
    *)
    # Invalid value for "bitness"
    echo "\"bitness\" property value is invalid. Starting the server in 32-bit mode"
    PLATFORM_DIR=
    ;;
    esac
fi
APACHE_HOME=${APACHE_USR_ROOT}
APACHE_BIN=${APACHE_HOME}/bin${PLATFORM_DIR}
getprop httpd/startup_options
if [ "${PROPVAL}" != "" ] ; then
    echo startupoptions set
    echo val=${PROPVAL}
    STARTUP_OPTIONS="${PROPVAL} -k"
fi
getprop httpd/server_type
if [ "${PROPVAL}" != "" ] ; then
    SERVER_TYPE=${PROPVAL}
fi
case ${SERVER_TYPE} in
prefork)
    # If HTTPD value is set in
    # /etc/apache2/<version>/envvars file
    # delete the line so that it defaults to prefork
    # type
    ALREADY_SET=`grep "HTTPD=" ${APACHE_ETC_ROOT}/envvars`
    if [ "${ALREADY_SET}" != "" ]; then
        sed -e '/^HTTPD=/ d' ${APACHE_ETC_ROOT}/envvars > ${APACHE_ETC_ROOT}/envvars.new
        cp ${APACHE_ETC_ROOT}/envvars.new ${APACHE_ETC_ROOT}/envvars
        rm ${APACHE_ETC_ROOT}/envvars.new
    fi
    ;;
worker)
    # set HTTPD value to httpd.worker within
    # /etc/apache2/<version>/envvars file
    ALREADY_SET=`grep "HTTPD=" ${APACHE_ETC_ROOT}/envvars`
    if [ "${ALREADY_SET}" != "" ]; then
        sed -e '/^HTTPD=/c\
HTTPD='${APACHE_BIN}'/httpd.worker' ${APACHE_ETC_ROOT}/envvars > ${APACHE_ETC_ROOT}/envvars.new
    else
        sed -e '$a\
HTTPD='${APACHE_BIN}'/httpd.worker' ${APACHE_ETC_ROOT}/envvars > ${APACHE_ETC_ROOT}/envvars.new
    fi
    cp ${APACHE_ETC_ROOT}/envvars.new ${APACHE_ETC_ROOT}/envvars
    rm ${APACHE_ETC_ROOT}/envvars.new
    ;;
*)
        if [ "x${APACHE_VERSION}" != "x" ]; then
            echo "Unknown server_type"
            exit $SMF_EXIT_ERR_CONFIG
        fi
    ;;
esac
case "$1" in
start)
    cmd="start"
    ;;
refresh)
    cmd="graceful"
    ;;
stop)
    cmd="stop"
    ;;
*)
    echo "Usage: $0 {start|stop|refresh}"
    exit $SMF_EXIT_ERR_CONFIG
    ;;
esac
${APACHE_BIN}/apachectl ${STARTUP_OPTIONS} ${cmd} 2>&1
if [ $? -ne 0 ]; then
    echo "Server failed to start. Check the error log (defaults to ${APACHE_VAR_ROOT}/logs/error_log) for more information, if any."
    exit $SMF_EXIT_ERR_FATAL
fi
exit $SMF_EXIT_OK
components/apache2/Solaris/http-apache22.xml
New file
@@ -0,0 +1,135 @@
<?xml version="1.0"?>
<!--
CDDL HEADER START
The contents of this file are subject to the terms of the
Common Development and Distribution License (the "License").
You may not use this file except in compliance with the License.
You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
or http://www.opensolaris.org/os/licensing.
See the License for the specific language governing permissions
and limitations under the License.
When distributing Covered Code, include this CDDL HEADER in each
file and include the License file at usr/src/OPENSOLARIS.LICENSE.
If applicable, add the following below this CDDL HEADER, with the
fields enclosed by brackets "[]" replaced with your own identifying
information: Portions Copyright [yyyy] [name of copyright owner]
CDDL HEADER END
-->
<!DOCTYPE service_bundle SYSTEM "/usr/share/lib/xml/dtd/service_bundle.dtd.1">
<!--
    Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
-->
<service_bundle type='manifest' name='SUNWapch22r:apache'>
<service
    name='network/http'
    type='service'
    version='1'>
    <!--
      Because we may have multiple instances of network/http
      provided by different implementations, we keep dependencies
      and methods within the instance.
    -->
    <instance name='apache22' enabled='false'>
        <!--
          Wait for network interfaces to be initialized.
        -->
        <dependency name='network'
            grouping='require_all'
            restart_on='error'
            type='service'>
            <service_fmri value='svc:/milestone/network:default'/>
        </dependency>
        <!--
          Wait for all local filesystems to be mounted.
        -->
        <dependency name='filesystem-local'
            grouping='require_all'
            restart_on='none'
            type='service'>
            <service_fmri
            value='svc:/system/filesystem/local:default'/>
        </dependency>
        <!--
          Wait for automounting to be available, as we may be
          serving data from home directories or other remote
          filesystems.
        -->
        <dependency name='autofs'
            grouping='optional_all'
            restart_on='error'
            type='service'>
            <service_fmri
            value='svc:/system/filesystem/autofs:default'/>
        </dependency>
        <exec_method
            type='method'
            name='start'
            exec='/lib/svc/method/http-apache22 start'
            timeout_seconds='60' />
        <exec_method
            type='method'
            name='stop'
            exec='/lib/svc/method/http-apache22 stop'
            timeout_seconds='60' />
        <exec_method
            type='method'
            name='refresh'
            exec='/lib/svc/method/http-apache22 refresh'
            timeout_seconds='60' />
        <property_group name='httpd' type='application'>
            <stability value='Evolving' />
            <propval name='startup_options' type='astring' value='' />
            <propval name='server_type' type='astring' value='prefork' />
            <propval name='enable_64bit' type='boolean' value='false' />
            <propval name='value_authorization' type='astring' value='solaris.smf.value.http/apache22' />
        </property_group>
        <property_group name='general' type='framework'>
            <propval name='action_authorization' type='astring' value='solaris.smf.manage.http/apache22' />
            <propval name='value_authorization' type='astring' value='solaris.smf.value.http/apache22' />
        </property_group>
        <property_group name='startd' type='framework'>
            <!-- sub-process core dumps shouldn't restart
                session -->
            <propval name='ignore_error' type='astring'
                value='core,signal' />
        </property_group>
        <template>
            <common_name>
                <loctext xml:lang='C'>
                    Apache 2.2 HTTP server
                </loctext>
            </common_name>
            <documentation>
                <manpage title='httpd' section='8'
                    manpath='/usr/apache2/2.2/man' />
                <doc_link name='apache.org'
                    uri='http://httpd.apache.org' />
            </documentation>
        </template>
    </instance>
    <stability value='Evolving' />
</service>
</service_bundle>
components/apache2/Solaris/loadmodules.sed
New file
@@ -0,0 +1,33 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
#
/IfModule/d
/LoadModule cgi_module /i\
<IfModule prefork.c>
/LoadModule cgi_module /a\
</IfModule>
/LoadModule cgid_module /i\
<IfModule worker.c>
/LoadModule cgid_module /a\
</IfModule>
components/apache2/Solaris/modules-32.load
New file
@@ -0,0 +1,38 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
#
#
# 32-bit Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a
# 32-bit DSO you have to place corresponding `LoadModule' lines at this
# location so the directives contained in it are actually available
# _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module libexec/mod_foo.so
#
components/apache2/Solaris/modules-64.load
New file
@@ -0,0 +1,38 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
#
#
# 64-bit Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a
# 64-bit DSO you have to place corresponding `LoadModule' lines at this
# location so the directives contained in it are actually available
# _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module libexec/64/mod_foo.so
#
components/apache2/Solaris/sample-module.tmpl
New file
@@ -0,0 +1,31 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
#
<IfDefine 64bit>
LoadModule ::MODULE_NAME::_module libexec/64/mod_::MODULE_NAME::.so
</IfDefine>
<IfDefine !64bit>
LoadModule ::MODULE_NAME::_module libexec/mod_::MODULE_NAME::.so
</IfDefine>
components/apache2/apache-22.p5m
New file
@@ -0,0 +1,621 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri \
    value=pkg:/web/server/apache-22@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="Apache Web Server V2.2"
set name=pkg.description \
    value="The Apache HTTP Server Version 2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://httpd.apache.org/"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/LSARC/2009/565
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license LICENSE license="Apache v2.0"
dir path=etc
dir path=etc/apache2
dir path=etc/apache2/2.2
dir path=etc/apache2/2.2/conf.d
dir path=etc/apache2/2.2/original
dir path=etc/apache2/2.2/samples-conf.d
dir path=lib
dir path=lib/svc
dir path=lib/svc/manifest
dir path=lib/svc/manifest/network
dir path=lib/svc/method
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/bin
dir path=usr/apache2/2.2/bin/$(MACH64)
dir path=usr/apache2/2.2/build
dir path=usr/apache2/2.2/build/$(MACH64)
dir path=usr/apache2/2.2/include
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/libexec/$(MACH64)
dir path=usr/bin
dir path=usr/bin/$(MACH64)
dir path=var
dir path=var/apache2
dir path=var/apache2/2.2
dir path=var/apache2/2.2/cgi-bin
dir path=var/apache2/2.2/error
dir path=var/apache2/2.2/error/include
dir path=var/apache2/2.2/htdocs
dir path=var/apache2/2.2/icons
dir path=var/apache2/2.2/icons/small
dir path=var/apache2/2.2/libexec
dir path=var/apache2/2.2/libexec/$(MACH64)
dir path=var/apache2/2.2/logs
dir path=var/apache2/2.2/proxy group=webservd owner=webservd
file path=etc/apache2/2.2/conf.d/modules-32.load mode=0644 preserve=renamenew \
    original_name=SUNWapch22:etc/apache2/2.2/conf.d/modules-32.load
file path=etc/apache2/2.2/conf.d/modules-64.load mode=0644 preserve=renamenew \
    original_name=SUNWapch22:etc/apache2/2.2/conf.d/modules-64.load
file path=etc/apache2/2.2/envvars mode=0644 preserve=renamenew \
    original_name=SUNWapch22:etc/apache2/2.2/envvars
file etc/apache2/2.2/original/httpd.conf path=etc/apache2/2.2/httpd.conf mode=0644 preserve=renamenew \
    original_name=SUNWapch22:etc/apache2/2.2/httpd.conf
file path=etc/apache2/2.2/magic mode=0644 preserve=renamenew \
    original_name=SUNWapch22:etc/apache2/2.2/magic
file path=etc/apache2/2.2/mime.types mode=0644 preserve=renamenew \
    original_name=SUNWapch22:etc/apache2/2.2/mime.types
file etc/apache2/2.2/httpd.conf path=etc/apache2/2.2/original/httpd.conf
file etc/apache2/2.2/extra/httpd-autoindex.conf path=etc/apache2/2.2/samples-conf.d/autoindex.conf
file etc/apache2/2.2/extra/httpd-dav.conf path=etc/apache2/2.2/samples-conf.d/dav.conf
file etc/apache2/2.2/extra/httpd-default.conf path=etc/apache2/2.2/samples-conf.d/default.conf
file etc/apache2/2.2/extra/httpd-info.conf path=etc/apache2/2.2/samples-conf.d/info.conf
file etc/apache2/2.2/extra/httpd-languages.conf path=etc/apache2/2.2/samples-conf.d/languages.conf
file etc/apache2/2.2/extra/httpd-manual.conf path=etc/apache2/2.2/samples-conf.d/manual.conf
file etc/apache2/2.2/extra/httpd-mpm.conf path=etc/apache2/2.2/samples-conf.d/mpm.conf
file etc/apache2/2.2/extra/httpd-multilang-errordoc.conf path=etc/apache2/2.2/samples-conf.d/multilang-errordoc.conf
file path=etc/apache2/2.2/samples-conf.d/proxy_scgi.conf
file path=etc/apache2/2.2/samples-conf.d/reqtimeout.conf
file etc/apache2/2.2/extra/httpd-ssl.conf path=etc/apache2/2.2/samples-conf.d/ssl.conf
file etc/apache2/2.2/extra/httpd-userdir.conf path=etc/apache2/2.2/samples-conf.d/userdir.conf
file etc/apache2/2.2/extra/httpd-vhosts.conf path=etc/apache2/2.2/samples-conf.d/vhosts.conf
file Solaris/http-apache22.xml path=lib/svc/manifest/network/http-apache22.xml
file path=lib/svc/method/http-apache22
file path=usr/apache2/2.2/bin/$(MACH64)/ab
file path=usr/apache2/2.2/bin/$(MACH64)/apachectl
file path=usr/apache2/2.2/bin/$(MACH64)/apxs
file path=usr/apache2/2.2/bin/$(MACH64)/checkgid
file path=usr/apache2/2.2/bin/$(MACH64)/dbmmanage
file path=usr/apache2/2.2/bin/$(MACH64)/envvars
file path=usr/apache2/2.2/bin/$(MACH64)/envvars-std
file path=usr/apache2/2.2/bin/$(MACH64)/htcacheclean
file path=usr/apache2/2.2/bin/$(MACH64)/htdbm
file path=usr/apache2/2.2/bin/$(MACH64)/htdigest
file path=usr/apache2/2.2/bin/$(MACH64)/htpasswd
file path=usr/apache2/2.2/bin/$(MACH64)/httpd
file build/worker/$(MACH64)/httpd path=usr/apache2/2.2/bin/$(MACH64)/httpd.worker
file path=usr/apache2/2.2/bin/$(MACH64)/httxt2dbm
file path=usr/apache2/2.2/bin/$(MACH64)/logresolve
file path=usr/apache2/2.2/bin/$(MACH64)/rotatelogs
file usr/apache2/2.2/bin/$(MACH64)/suexec path=usr/apache2/2.2/bin/$(MACH64)/suexec.disabled mode=0500
file path=usr/apache2/2.2/bin/ab
file path=usr/apache2/2.2/bin/apachectl
file path=usr/apache2/2.2/bin/apxs
file path=usr/apache2/2.2/bin/checkgid
file path=usr/apache2/2.2/bin/dbmmanage
file path=usr/apache2/2.2/bin/envvars
file path=usr/apache2/2.2/bin/envvars-std
file path=usr/apache2/2.2/bin/htcacheclean
file path=usr/apache2/2.2/bin/htdbm
file path=usr/apache2/2.2/bin/htdigest
file path=usr/apache2/2.2/bin/htpasswd
file path=usr/apache2/2.2/bin/httpd
file build/worker/$(MACH32)/httpd path=usr/apache2/2.2/bin/httpd.worker
file path=usr/apache2/2.2/bin/httxt2dbm
file path=usr/apache2/2.2/bin/logresolve
file path=usr/apache2/2.2/bin/rotatelogs
file usr/apache2/2.2/bin/suexec path=usr/apache2/2.2/bin/suexec.disabled mode=0500
file path=usr/apache2/2.2/build/$(MACH64)/config.nice
file path=usr/apache2/2.2/build/$(MACH64)/config_vars.mk
file path=usr/apache2/2.2/build/$(MACH64)/instdso.sh
file path=usr/apache2/2.2/build/$(MACH64)/library.mk
file path=usr/apache2/2.2/build/$(MACH64)/ltlib.mk
file path=usr/apache2/2.2/build/$(MACH64)/mkdir.sh
file path=usr/apache2/2.2/build/$(MACH64)/program.mk
file path=usr/apache2/2.2/build/$(MACH64)/rules.mk
file path=usr/apache2/2.2/build/$(MACH64)/special.mk
file path=usr/apache2/2.2/build/config.nice
file path=usr/apache2/2.2/build/config_vars.mk
file path=usr/apache2/2.2/build/instdso.sh
file path=usr/apache2/2.2/build/library.mk
file path=usr/apache2/2.2/build/ltlib.mk
file path=usr/apache2/2.2/build/mkdir.sh
file path=usr/apache2/2.2/build/program.mk
file path=usr/apache2/2.2/build/rules.mk
file path=usr/apache2/2.2/build/special.mk
file path=usr/apache2/2.2/include/ap_compat.h
file path=usr/apache2/2.2/include/ap_config.h
file path=usr/apache2/2.2/include/ap_config_auto.h
file path=usr/apache2/2.2/include/ap_config_layout.h
file path=usr/apache2/2.2/include/ap_listen.h
file path=usr/apache2/2.2/include/ap_mmn.h
file path=usr/apache2/2.2/include/ap_mpm.h
file path=usr/apache2/2.2/include/ap_provider.h
file path=usr/apache2/2.2/include/ap_regex.h
file path=usr/apache2/2.2/include/ap_regkey.h
file path=usr/apache2/2.2/include/ap_release.h
file path=usr/apache2/2.2/include/fdqueue.h
file path=usr/apache2/2.2/include/http_config.h
file path=usr/apache2/2.2/include/http_connection.h
file path=usr/apache2/2.2/include/http_core.h
file path=usr/apache2/2.2/include/http_log.h
file path=usr/apache2/2.2/include/http_main.h
file path=usr/apache2/2.2/include/http_protocol.h
file path=usr/apache2/2.2/include/http_request.h
file path=usr/apache2/2.2/include/http_vhost.h
file path=usr/apache2/2.2/include/httpd.h
file path=usr/apache2/2.2/include/mod_auth.h
file path=usr/apache2/2.2/include/mod_cgi.h
file path=usr/apache2/2.2/include/mod_core.h
file path=usr/apache2/2.2/include/mod_dav.h
file path=usr/apache2/2.2/include/mod_dbd.h
file path=usr/apache2/2.2/include/mod_include.h
file path=usr/apache2/2.2/include/mod_log_config.h
file path=usr/apache2/2.2/include/mod_proxy.h
file path=usr/apache2/2.2/include/mod_rewrite.h
file path=usr/apache2/2.2/include/mod_ssl.h
file path=usr/apache2/2.2/include/mod_status.h
file path=usr/apache2/2.2/include/mpm.h
file path=usr/apache2/2.2/include/mpm_common.h
file path=usr/apache2/2.2/include/mpm_default.h
file path=usr/apache2/2.2/include/os.h
file path=usr/apache2/2.2/include/pod.h
file path=usr/apache2/2.2/include/scoreboard.h
file path=usr/apache2/2.2/include/unixd.h
file path=usr/apache2/2.2/include/util_cfgtree.h
file path=usr/apache2/2.2/include/util_charset.h
file path=usr/apache2/2.2/include/util_ebcdic.h
file path=usr/apache2/2.2/include/util_filter.h
file path=usr/apache2/2.2/include/util_ldap.h
file path=usr/apache2/2.2/include/util_md5.h
file path=usr/apache2/2.2/include/util_script.h
file path=usr/apache2/2.2/include/util_time.h
file path=usr/apache2/2.2/include/util_xml.h
file path=usr/apache2/2.2/libexec/$(MACH64)/httpd.exp
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_actions.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_alias.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_asis.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_auth_basic.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_auth_digest.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_auth_gss.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authn_anon.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authn_dbd.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authn_dbm.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authn_default.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authn_file.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authnz_ldap.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authz_dbm.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authz_default.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authz_groupfile.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authz_host.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authz_owner.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_authz_user.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_autoindex.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_cache.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_cern_meta.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_cgi.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_cgid.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_dav.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_dav_fs.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_dbd.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_deflate.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_dir.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_disk_cache.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_dumpio.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_env.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_expires.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_ext_filter.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_file_cache.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_filter.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_headers.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_ident.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_imagemap.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_include.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_info.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_ldap.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_log_config.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_log_forensic.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_logio.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_mem_cache.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_mime.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_mime_magic.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_negotiation.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_proxy.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_proxy_ajp.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_proxy_balancer.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_proxy_connect.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_proxy_ftp.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_proxy_http.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_proxy_scgi.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_reqtimeout.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_rewrite.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_setenvif.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_speling.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_ssl.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_status.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_substitute.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_suexec.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_unique_id.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_userdir.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_usertrack.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_version.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_vhost_alias.so
file path=usr/apache2/2.2/libexec/httpd.exp
file path=usr/apache2/2.2/libexec/mod_actions.so
file path=usr/apache2/2.2/libexec/mod_alias.so
file path=usr/apache2/2.2/libexec/mod_asis.so
file path=usr/apache2/2.2/libexec/mod_auth_basic.so
file path=usr/apache2/2.2/libexec/mod_auth_digest.so
file path=usr/apache2/2.2/libexec/mod_auth_gss.so
file path=usr/apache2/2.2/libexec/mod_authn_anon.so
file path=usr/apache2/2.2/libexec/mod_authn_dbd.so
file path=usr/apache2/2.2/libexec/mod_authn_dbm.so
file path=usr/apache2/2.2/libexec/mod_authn_default.so
file path=usr/apache2/2.2/libexec/mod_authn_file.so
file path=usr/apache2/2.2/libexec/mod_authnz_ldap.so
file path=usr/apache2/2.2/libexec/mod_authz_dbm.so
file path=usr/apache2/2.2/libexec/mod_authz_default.so
file path=usr/apache2/2.2/libexec/mod_authz_groupfile.so
file path=usr/apache2/2.2/libexec/mod_authz_host.so
file path=usr/apache2/2.2/libexec/mod_authz_owner.so
file path=usr/apache2/2.2/libexec/mod_authz_user.so
file path=usr/apache2/2.2/libexec/mod_autoindex.so
file path=usr/apache2/2.2/libexec/mod_cache.so
file path=usr/apache2/2.2/libexec/mod_cern_meta.so
file path=usr/apache2/2.2/libexec/mod_cgi.so
file path=usr/apache2/2.2/libexec/mod_cgid.so
file path=usr/apache2/2.2/libexec/mod_dav.so
file path=usr/apache2/2.2/libexec/mod_dav_fs.so
file path=usr/apache2/2.2/libexec/mod_dbd.so
file path=usr/apache2/2.2/libexec/mod_deflate.so
file path=usr/apache2/2.2/libexec/mod_dir.so
file path=usr/apache2/2.2/libexec/mod_disk_cache.so
file path=usr/apache2/2.2/libexec/mod_dumpio.so
file path=usr/apache2/2.2/libexec/mod_env.so
file path=usr/apache2/2.2/libexec/mod_expires.so
file path=usr/apache2/2.2/libexec/mod_ext_filter.so
file path=usr/apache2/2.2/libexec/mod_file_cache.so
file path=usr/apache2/2.2/libexec/mod_filter.so
file path=usr/apache2/2.2/libexec/mod_headers.so
file path=usr/apache2/2.2/libexec/mod_ident.so
file path=usr/apache2/2.2/libexec/mod_imagemap.so
file path=usr/apache2/2.2/libexec/mod_include.so
file path=usr/apache2/2.2/libexec/mod_info.so
file path=usr/apache2/2.2/libexec/mod_ldap.so
file path=usr/apache2/2.2/libexec/mod_log_config.so
file path=usr/apache2/2.2/libexec/mod_log_forensic.so
file path=usr/apache2/2.2/libexec/mod_logio.so
file path=usr/apache2/2.2/libexec/mod_mem_cache.so
file path=usr/apache2/2.2/libexec/mod_mime.so
file path=usr/apache2/2.2/libexec/mod_mime_magic.so
file path=usr/apache2/2.2/libexec/mod_negotiation.so
file path=usr/apache2/2.2/libexec/mod_proxy.so
file path=usr/apache2/2.2/libexec/mod_proxy_ajp.so
file path=usr/apache2/2.2/libexec/mod_proxy_balancer.so
file path=usr/apache2/2.2/libexec/mod_proxy_connect.so
file path=usr/apache2/2.2/libexec/mod_proxy_ftp.so
file path=usr/apache2/2.2/libexec/mod_proxy_http.so
file path=usr/apache2/2.2/libexec/mod_proxy_scgi.so
file path=usr/apache2/2.2/libexec/mod_reqtimeout.so
file path=usr/apache2/2.2/libexec/mod_rewrite.so
file path=usr/apache2/2.2/libexec/mod_setenvif.so
file path=usr/apache2/2.2/libexec/mod_speling.so
file path=usr/apache2/2.2/libexec/mod_ssl.so
file path=usr/apache2/2.2/libexec/mod_status.so
file path=usr/apache2/2.2/libexec/mod_substitute.so
file path=usr/apache2/2.2/libexec/mod_suexec.so
file path=usr/apache2/2.2/libexec/mod_unique_id.so
file path=usr/apache2/2.2/libexec/mod_userdir.so
file path=usr/apache2/2.2/libexec/mod_usertrack.so
file path=usr/apache2/2.2/libexec/mod_version.so
file path=usr/apache2/2.2/libexec/mod_vhost_alias.so
file path=var/apache2/2.2/cgi-bin/printenv pkg.depend.bypass-generate=.*
file path=var/apache2/2.2/cgi-bin/test-cgi
file path=var/apache2/2.2/error/HTTP_BAD_GATEWAY.html.var
file path=var/apache2/2.2/error/HTTP_BAD_REQUEST.html.var
file path=var/apache2/2.2/error/HTTP_FORBIDDEN.html.var
file path=var/apache2/2.2/error/HTTP_GONE.html.var
file path=var/apache2/2.2/error/HTTP_INTERNAL_SERVER_ERROR.html.var
file path=var/apache2/2.2/error/HTTP_LENGTH_REQUIRED.html.var
file path=var/apache2/2.2/error/HTTP_METHOD_NOT_ALLOWED.html.var
file path=var/apache2/2.2/error/HTTP_NOT_FOUND.html.var
file path=var/apache2/2.2/error/HTTP_NOT_IMPLEMENTED.html.var
file path=var/apache2/2.2/error/HTTP_PRECONDITION_FAILED.html.var
file path=var/apache2/2.2/error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
file path=var/apache2/2.2/error/HTTP_REQUEST_TIME_OUT.html.var
file path=var/apache2/2.2/error/HTTP_REQUEST_URI_TOO_LARGE.html.var
file path=var/apache2/2.2/error/HTTP_SERVICE_UNAVAILABLE.html.var
file path=var/apache2/2.2/error/HTTP_UNAUTHORIZED.html.var
file path=var/apache2/2.2/error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
file path=var/apache2/2.2/error/HTTP_VARIANT_ALSO_VARIES.html.var
file path=var/apache2/2.2/error/README
file path=var/apache2/2.2/error/contact.html.var
file path=var/apache2/2.2/error/include/bottom.html
file path=var/apache2/2.2/error/include/spacer.html
file path=var/apache2/2.2/error/include/top.html
file Solaris/favicon.gif path=var/apache2/2.2/htdocs/favicon.gif
file Solaris/favicon.ico path=var/apache2/2.2/htdocs/favicon.ico
file path=var/apache2/2.2/htdocs/index.html
file path=var/apache2/2.2/icons/README
file path=var/apache2/2.2/icons/README.html
file path=var/apache2/2.2/icons/a.gif
file path=var/apache2/2.2/icons/a.png
file path=var/apache2/2.2/icons/alert.black.gif
file path=var/apache2/2.2/icons/alert.black.png
file path=var/apache2/2.2/icons/alert.red.gif
file path=var/apache2/2.2/icons/alert.red.png
file path=var/apache2/2.2/icons/apache_pb.gif
file path=var/apache2/2.2/icons/apache_pb.png
file path=var/apache2/2.2/icons/apache_pb2.gif
file path=var/apache2/2.2/icons/apache_pb2.png
file path=var/apache2/2.2/icons/apache_pb2_ani.gif
file path=var/apache2/2.2/icons/back.gif
file path=var/apache2/2.2/icons/back.png
file path=var/apache2/2.2/icons/ball.gray.gif
file path=var/apache2/2.2/icons/ball.gray.png
file path=var/apache2/2.2/icons/ball.red.gif
file path=var/apache2/2.2/icons/ball.red.png
file path=var/apache2/2.2/icons/binary.gif
file path=var/apache2/2.2/icons/binary.png
file path=var/apache2/2.2/icons/binhex.gif
file path=var/apache2/2.2/icons/binhex.png
file path=var/apache2/2.2/icons/blank.gif
file path=var/apache2/2.2/icons/blank.png
file path=var/apache2/2.2/icons/bomb.gif
file path=var/apache2/2.2/icons/bomb.png
file path=var/apache2/2.2/icons/box1.gif
file path=var/apache2/2.2/icons/box1.png
file path=var/apache2/2.2/icons/box2.gif
file path=var/apache2/2.2/icons/box2.png
file path=var/apache2/2.2/icons/broken.gif
file path=var/apache2/2.2/icons/broken.png
file path=var/apache2/2.2/icons/burst.gif
file path=var/apache2/2.2/icons/burst.png
file path=var/apache2/2.2/icons/c.gif
file path=var/apache2/2.2/icons/c.png
file path=var/apache2/2.2/icons/comp.blue.gif
file path=var/apache2/2.2/icons/comp.blue.png
file path=var/apache2/2.2/icons/comp.gray.gif
file path=var/apache2/2.2/icons/comp.gray.png
file path=var/apache2/2.2/icons/compressed.gif
file path=var/apache2/2.2/icons/compressed.png
file path=var/apache2/2.2/icons/continued.gif
file path=var/apache2/2.2/icons/continued.png
file path=var/apache2/2.2/icons/dir.gif
file path=var/apache2/2.2/icons/dir.png
file path=var/apache2/2.2/icons/diskimg.gif
file path=var/apache2/2.2/icons/diskimg.png
file path=var/apache2/2.2/icons/down.gif
file path=var/apache2/2.2/icons/down.png
file path=var/apache2/2.2/icons/dvi.gif
file path=var/apache2/2.2/icons/dvi.png
file path=var/apache2/2.2/icons/f.gif
file path=var/apache2/2.2/icons/f.png
file path=var/apache2/2.2/icons/folder.gif
file path=var/apache2/2.2/icons/folder.open.gif
file path=var/apache2/2.2/icons/folder.open.png
file path=var/apache2/2.2/icons/folder.png
file path=var/apache2/2.2/icons/folder.sec.gif
file path=var/apache2/2.2/icons/folder.sec.png
file path=var/apache2/2.2/icons/forward.gif
file path=var/apache2/2.2/icons/forward.png
file path=var/apache2/2.2/icons/generic.gif
file path=var/apache2/2.2/icons/generic.png
file path=var/apache2/2.2/icons/generic.red.gif
file path=var/apache2/2.2/icons/generic.red.png
file path=var/apache2/2.2/icons/generic.sec.gif
file path=var/apache2/2.2/icons/generic.sec.png
file path=var/apache2/2.2/icons/hand.right.gif
file path=var/apache2/2.2/icons/hand.right.png
file path=var/apache2/2.2/icons/hand.up.gif
file path=var/apache2/2.2/icons/hand.up.png
file path=var/apache2/2.2/icons/icon.sheet.gif
file path=var/apache2/2.2/icons/icon.sheet.png
file path=var/apache2/2.2/icons/image1.gif
file path=var/apache2/2.2/icons/image1.png
file path=var/apache2/2.2/icons/image2.gif
file path=var/apache2/2.2/icons/image2.png
file path=var/apache2/2.2/icons/image3.gif
file path=var/apache2/2.2/icons/image3.png
file path=var/apache2/2.2/icons/index.gif
file path=var/apache2/2.2/icons/index.png
file path=var/apache2/2.2/icons/layout.gif
file path=var/apache2/2.2/icons/layout.png
file path=var/apache2/2.2/icons/left.gif
file path=var/apache2/2.2/icons/left.png
file path=var/apache2/2.2/icons/link.gif
file path=var/apache2/2.2/icons/link.png
file path=var/apache2/2.2/icons/movie.gif
file path=var/apache2/2.2/icons/movie.png
file path=var/apache2/2.2/icons/p.gif
file path=var/apache2/2.2/icons/p.png
file path=var/apache2/2.2/icons/patch.gif
file path=var/apache2/2.2/icons/patch.png
file path=var/apache2/2.2/icons/pdf.gif
file path=var/apache2/2.2/icons/pdf.png
file path=var/apache2/2.2/icons/pie0.gif
file path=var/apache2/2.2/icons/pie0.png
file path=var/apache2/2.2/icons/pie1.gif
file path=var/apache2/2.2/icons/pie1.png
file path=var/apache2/2.2/icons/pie2.gif
file path=var/apache2/2.2/icons/pie2.png
file path=var/apache2/2.2/icons/pie3.gif
file path=var/apache2/2.2/icons/pie3.png
file path=var/apache2/2.2/icons/pie4.gif
file path=var/apache2/2.2/icons/pie4.png
file path=var/apache2/2.2/icons/pie5.gif
file path=var/apache2/2.2/icons/pie5.png
file path=var/apache2/2.2/icons/pie6.gif
file path=var/apache2/2.2/icons/pie6.png
file path=var/apache2/2.2/icons/pie7.gif
file path=var/apache2/2.2/icons/pie7.png
file path=var/apache2/2.2/icons/pie8.gif
file path=var/apache2/2.2/icons/pie8.png
file path=var/apache2/2.2/icons/portal.gif
file path=var/apache2/2.2/icons/portal.png
file path=var/apache2/2.2/icons/ps.gif
file path=var/apache2/2.2/icons/ps.png
file path=var/apache2/2.2/icons/quill.gif
file path=var/apache2/2.2/icons/quill.png
file path=var/apache2/2.2/icons/right.gif
file path=var/apache2/2.2/icons/right.png
file path=var/apache2/2.2/icons/screw1.gif
file path=var/apache2/2.2/icons/screw1.png
file path=var/apache2/2.2/icons/screw2.gif
file path=var/apache2/2.2/icons/screw2.png
file path=var/apache2/2.2/icons/script.gif
file path=var/apache2/2.2/icons/script.png
file path=var/apache2/2.2/icons/small/back.gif
file path=var/apache2/2.2/icons/small/back.png
file path=var/apache2/2.2/icons/small/binary.gif
file path=var/apache2/2.2/icons/small/binary.png
file path=var/apache2/2.2/icons/small/binhex.gif
file path=var/apache2/2.2/icons/small/binhex.png
file path=var/apache2/2.2/icons/small/blank.gif
file path=var/apache2/2.2/icons/small/blank.png
file path=var/apache2/2.2/icons/small/broken.gif
file path=var/apache2/2.2/icons/small/broken.png
file path=var/apache2/2.2/icons/small/burst.gif
file path=var/apache2/2.2/icons/small/burst.png
file path=var/apache2/2.2/icons/small/comp1.gif
file path=var/apache2/2.2/icons/small/comp1.png
file path=var/apache2/2.2/icons/small/comp2.gif
file path=var/apache2/2.2/icons/small/comp2.png
file path=var/apache2/2.2/icons/small/compressed.gif
file path=var/apache2/2.2/icons/small/compressed.png
file path=var/apache2/2.2/icons/small/continued.gif
file path=var/apache2/2.2/icons/small/continued.png
file path=var/apache2/2.2/icons/small/dir.gif
file path=var/apache2/2.2/icons/small/dir.png
file path=var/apache2/2.2/icons/small/dir2.gif
file path=var/apache2/2.2/icons/small/dir2.png
file path=var/apache2/2.2/icons/small/doc.gif
file path=var/apache2/2.2/icons/small/doc.png
file path=var/apache2/2.2/icons/small/forward.gif
file path=var/apache2/2.2/icons/small/forward.png
file path=var/apache2/2.2/icons/small/generic.gif
file path=var/apache2/2.2/icons/small/generic.png
file path=var/apache2/2.2/icons/small/generic2.gif
file path=var/apache2/2.2/icons/small/generic2.png
file path=var/apache2/2.2/icons/small/generic3.gif
file path=var/apache2/2.2/icons/small/generic3.png
file path=var/apache2/2.2/icons/small/image.gif
file path=var/apache2/2.2/icons/small/image.png
file path=var/apache2/2.2/icons/small/image2.gif
file path=var/apache2/2.2/icons/small/image2.png
file path=var/apache2/2.2/icons/small/index.gif
file path=var/apache2/2.2/icons/small/index.png
file path=var/apache2/2.2/icons/small/key.gif
file path=var/apache2/2.2/icons/small/key.png
file path=var/apache2/2.2/icons/small/movie.gif
file path=var/apache2/2.2/icons/small/movie.png
file path=var/apache2/2.2/icons/small/patch.gif
file path=var/apache2/2.2/icons/small/patch.png
file path=var/apache2/2.2/icons/small/ps.gif
file path=var/apache2/2.2/icons/small/ps.png
file path=var/apache2/2.2/icons/small/rainbow.gif
file path=var/apache2/2.2/icons/small/rainbow.png
file path=var/apache2/2.2/icons/small/sound.gif
file path=var/apache2/2.2/icons/small/sound.png
file path=var/apache2/2.2/icons/small/sound2.gif
file path=var/apache2/2.2/icons/small/sound2.png
file path=var/apache2/2.2/icons/small/tar.gif
file path=var/apache2/2.2/icons/small/tar.png
file path=var/apache2/2.2/icons/small/text.gif
file path=var/apache2/2.2/icons/small/text.png
file path=var/apache2/2.2/icons/small/transfer.gif
file path=var/apache2/2.2/icons/small/transfer.png
file path=var/apache2/2.2/icons/small/unknown.gif
file path=var/apache2/2.2/icons/small/unknown.png
file path=var/apache2/2.2/icons/small/uu.gif
file path=var/apache2/2.2/icons/small/uu.png
file path=var/apache2/2.2/icons/sound1.gif
file path=var/apache2/2.2/icons/sound1.png
file path=var/apache2/2.2/icons/sound2.gif
file path=var/apache2/2.2/icons/sound2.png
file path=var/apache2/2.2/icons/sphere1.gif
file path=var/apache2/2.2/icons/sphere1.png
file path=var/apache2/2.2/icons/sphere2.gif
file path=var/apache2/2.2/icons/sphere2.png
file path=var/apache2/2.2/icons/tar.gif
file path=var/apache2/2.2/icons/tar.png
file path=var/apache2/2.2/icons/tex.gif
file path=var/apache2/2.2/icons/tex.png
file path=var/apache2/2.2/icons/text.gif
file path=var/apache2/2.2/icons/text.png
file path=var/apache2/2.2/icons/transfer.gif
file path=var/apache2/2.2/icons/transfer.png
file path=var/apache2/2.2/icons/unknown.gif
file path=var/apache2/2.2/icons/unknown.png
file path=var/apache2/2.2/icons/up.gif
file path=var/apache2/2.2/icons/up.png
file path=var/apache2/2.2/icons/uu.gif
file path=var/apache2/2.2/icons/uu.png
file path=var/apache2/2.2/icons/uuencoded.gif
file path=var/apache2/2.2/icons/uuencoded.png
file path=var/apache2/2.2/icons/world1.gif
file path=var/apache2/2.2/icons/world1.png
file path=var/apache2/2.2/icons/world2.gif
file path=var/apache2/2.2/icons/world2.png
link path=usr/apache2/2.2/bin/64 target=$(MACH64)
link path=usr/apache2/2.2/build/64 target=$(MACH64)
link path=usr/apache2/2.2/libexec/64 target=$(MACH64)
link path=usr/bin/$(MACH64)/ab target=../../apache2/2.2/bin/$(MACH64)/ab
link path=usr/bin/$(MACH64)/apxs target=../../apache2/2.2/bin/$(MACH64)/apxs
link path=usr/bin/$(MACH64)/dbmmanage target=../../apache2/2.2/bin/$(MACH64)/dbmmanage
link path=usr/bin/$(MACH64)/htcacheclean target=../../apache2/2.2/bin/$(MACH64)/htcacheclean
link path=usr/bin/$(MACH64)/htdbm target=../../apache2/2.2/bin/$(MACH64)/htdbm
link path=usr/bin/$(MACH64)/htdigest target=../../apache2/2.2/bin/$(MACH64)/htdigest
link path=usr/bin/$(MACH64)/htpasswd target=../../apache2/2.2/bin/$(MACH64)/htpasswd
link path=usr/bin/$(MACH64)/httxt2dbm target=../../apache2/2.2/bin/$(MACH64)/httxt2dbm
link path=usr/bin/$(MACH64)/logresolve target=../../apache2/2.2/bin/$(MACH64)/logresolve
link path=usr/bin/$(MACH64)/rotatelogs target=../../apache2/2.2/bin/$(MACH64)/rotatelogs
link path=usr/bin/ab target=../apache2/2.2/bin/ab
link path=usr/bin/apxs target=../apache2/2.2/bin/apxs
link path=usr/bin/dbmmanage target=../apache2/2.2/bin/dbmmanage
link path=usr/bin/htcacheclean target=../apache2/2.2/bin/htcacheclean
link path=usr/bin/htdbm target=../apache2/2.2/bin/htdbm
link path=usr/bin/htdigest target=../apache2/2.2/bin/htdigest
link path=usr/bin/htpasswd target=../apache2/2.2/bin/htpasswd
link path=usr/bin/httxt2dbm target=../apache2/2.2/bin/httxt2dbm
link path=usr/bin/logresolve target=../apache2/2.2/bin/logresolve
link path=usr/bin/rotatelogs target=../apache2/2.2/bin/rotatelogs
link path=var/apache2/2.2/libexec/64 target=$(MACH64)
legacy    pkg=SUNWapch22u \
    name="Apache Web Server V2.2 (usr)" \
    desc="The Apache HTTP Server Version 2.2 (usr components)"
legacy    pkg=SUNWapch22r \
    name="Apache Web Server V2.2 (root)" \
    desc="The Apache HTTP server Version 2.2 (root components)"
components/apache2/apache-sed.p5m
New file
@@ -0,0 +1,58 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/module/apache-sed@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="mod_sed plugin for Apache Web Server V2.2"
set name=pkg.description \
    value="mod_sed plugin for Apache Web Server Version 2.2"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://httpd.apache.org/docs/2.3/mod/mod_sed.html"
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/LSARC/2009/122
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license LICENSE license="Apache v2.0"
dir path=etc
dir path=etc/apache2
dir path=etc/apache2/2.2
dir path=etc/apache2/2.2/samples-conf.d
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/libexec
dir path=usr/apache2/2.2/libexec/$(MACH64)
file path=etc/apache2/2.2/samples-conf.d/sed.conf
file path=usr/apache2/2.2/libexec/mod_sed.so
file path=usr/apache2/2.2/libexec/$(MACH64)/mod_sed.so
legacy    pkg=SUNWapch22m-sed \
    name="mod_sed plugin for Apache Web Server V2.2" \
    desc="mod_sed plugin for Apache Web Server Version 2.2"
legacy    pkg=SUNWapch22r-sed \
    name="mod_sed plugin for Apache Web Server V2.2 (root)" \
    desc="mod_sed plugin for Apache Web Server Version 2.2 (root component)"
components/apache2/documentation.p5m
New file
@@ -0,0 +1,857 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
<transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
set name=pkg.fmri \
    value=pkg:/web/server/apache-22/documentation@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
set name=pkg.summary \
    value="Apache Web Server V2.2 Documentation"
set name=pkg.description \
    value="The Apache HTTP Server Version 2.2 (documentation)"
set name=info.classification \
    value="org.opensolaris.category.2008:Web Services/Application and Web Servers"
set name=info.upstream_url value="http://httpd.apache.org/"
set name=info.source_url value=$(COMPONENT_ARCHIVE_URL)
set name=opensolaris.arc_url \
    value=http://arc.opensolaris.org/caselog/LSARC/2009/565
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
license LICENSE license="Apache v2.0"
dir path=usr
dir path=usr/apache2
dir path=usr/apache2/2.2
dir path=usr/apache2/2.2/man
dir path=usr/apache2/2.2/man/man1
dir path=usr/apache2/2.2/man/man8
dir path=usr/apache2/2.2/manual
dir path=usr/apache2/2.2/manual/developer
dir path=usr/apache2/2.2/manual/faq
dir path=usr/apache2/2.2/manual/howto
dir path=usr/apache2/2.2/manual/images
dir path=usr/apache2/2.2/manual/misc
dir path=usr/apache2/2.2/manual/mod
dir path=usr/apache2/2.2/manual/platform
dir path=usr/apache2/2.2/manual/programs
dir path=usr/apache2/2.2/manual/rewrite
dir path=usr/apache2/2.2/manual/ssl
dir path=usr/apache2/2.2/manual/style
dir path=usr/apache2/2.2/manual/style/css
dir path=usr/apache2/2.2/manual/style/lang
dir path=usr/apache2/2.2/manual/style/latex
dir path=usr/apache2/2.2/manual/style/xsl
dir path=usr/apache2/2.2/manual/style/xsl/util
dir path=usr/apache2/2.2/manual/vhosts
dir path=usr/share
dir path=usr/share/man
dir path=usr/share/man/man1m
dir path=usr/share/man/man8
file path=usr/apache2/2.2/man/man8/ab.8
file path=usr/apache2/2.2/man/man8/apachectl.8
file path=usr/apache2/2.2/man/man8/apxs.8
file path=usr/apache2/2.2/man/man8/htcacheclean.8
file path=usr/apache2/2.2/man/man8/httpd.8
file path=usr/apache2/2.2/man/man8/logresolve.8
file path=usr/apache2/2.2/man/man8/rotatelogs.8
file path=usr/apache2/2.2/man/man8/suexec.8
file path=usr/apache2/2.2/man/man1/htdigest.1
file path=usr/apache2/2.2/man/man1/htpasswd.1
file path=usr/apache2/2.2/man/man1/dbmmanage.1
file path=usr/apache2/2.2/man/man1/htdbm.1
file path=usr/apache2/2.2/manual/LICENSE
file path=usr/apache2/2.2/manual/bind.html
file path=usr/apache2/2.2/manual/bind.html.de
file path=usr/apache2/2.2/manual/bind.html.en
file path=usr/apache2/2.2/manual/bind.html.fr
file path=usr/apache2/2.2/manual/bind.html.ja.utf8
file path=usr/apache2/2.2/manual/bind.html.ko.euc-kr
file path=usr/apache2/2.2/manual/bind.html.tr.utf8
file path=usr/apache2/2.2/manual/caching.html
file path=usr/apache2/2.2/manual/caching.html.en
file path=usr/apache2/2.2/manual/caching.html.fr
file path=usr/apache2/2.2/manual/caching.html.tr.utf8
file path=usr/apache2/2.2/manual/configuring.html
file path=usr/apache2/2.2/manual/configuring.html.de
file path=usr/apache2/2.2/manual/configuring.html.en
file path=usr/apache2/2.2/manual/configuring.html.fr
file path=usr/apache2/2.2/manual/configuring.html.ja.utf8
file path=usr/apache2/2.2/manual/configuring.html.ko.euc-kr
file path=usr/apache2/2.2/manual/configuring.html.tr.utf8
file path=usr/apache2/2.2/manual/content-negotiation.html
file path=usr/apache2/2.2/manual/content-negotiation.html.en
file path=usr/apache2/2.2/manual/content-negotiation.html.fr
file path=usr/apache2/2.2/manual/content-negotiation.html.ja.utf8
file path=usr/apache2/2.2/manual/content-negotiation.html.ko.euc-kr
file path=usr/apache2/2.2/manual/content-negotiation.html.tr.utf8
file path=usr/apache2/2.2/manual/convenience.map
file path=usr/apache2/2.2/manual/mod/mod_charset_lite.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_dav.html
file path=usr/apache2/2.2/manual/mod/mod_dav.html.en
file path=usr/apache2/2.2/manual/mod/mod_dav.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_dav.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_dav_fs.html
file path=usr/apache2/2.2/manual/mod/mod_dav_fs.html.en
file path=usr/apache2/2.2/manual/mod/mod_dav_fs.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_dav_fs.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_dav_lock.html
file path=usr/apache2/2.2/manual/mod/mod_dav_lock.html.en
file path=usr/apache2/2.2/manual/mod/mod_dav_lock.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_dbd.html
file path=usr/apache2/2.2/manual/mod/mod_dbd.html.en
file path=usr/apache2/2.2/manual/mod/mod_deflate.html
file path=usr/apache2/2.2/manual/mod/mod_deflate.html.en
file path=usr/apache2/2.2/manual/mod/mod_deflate.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_deflate.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_dir.html
file path=usr/apache2/2.2/manual/mod/mod_dir.html.en
file path=usr/apache2/2.2/manual/mod/mod_dir.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_dir.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_dir.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_disk_cache.html
file path=usr/apache2/2.2/manual/mod/mod_disk_cache.html.en
file path=usr/apache2/2.2/manual/mod/mod_disk_cache.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_disk_cache.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_dumpio.html
file path=usr/apache2/2.2/manual/mod/mod_dumpio.html.en
file path=usr/apache2/2.2/manual/mod/mod_dumpio.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_echo.html
file path=usr/apache2/2.2/manual/mod/mod_echo.html.en
file path=usr/apache2/2.2/manual/mod/mod_echo.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_echo.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_env.html
file path=usr/apache2/2.2/manual/mod/mod_env.html.en
file path=usr/apache2/2.2/manual/mod/mod_env.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_env.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_env.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_example.html
file path=usr/apache2/2.2/manual/mod/mod_example.html.en
file path=usr/apache2/2.2/manual/mod/mod_example.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_expires.html
file path=usr/apache2/2.2/manual/mod/mod_expires.html.en
file path=usr/apache2/2.2/manual/mod/mod_expires.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_expires.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_ext_filter.html
file path=usr/apache2/2.2/manual/mod/mod_ext_filter.html.en
file path=usr/apache2/2.2/manual/mod/mod_ext_filter.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_ext_filter.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_file_cache.html
file path=usr/apache2/2.2/manual/mod/mod_file_cache.html.en
file path=usr/apache2/2.2/manual/mod/mod_file_cache.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_filter.html
file path=usr/apache2/2.2/manual/mod/mod_filter.html.en
file path=usr/apache2/2.2/manual/mod/mod_headers.html
file path=usr/apache2/2.2/manual/mod/mod_headers.html.en
file path=usr/apache2/2.2/manual/mod/mod_headers.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_headers.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_ident.html
file path=usr/apache2/2.2/manual/mod/mod_ident.html.en
file path=usr/apache2/2.2/manual/mod/mod_ident.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_ident.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_imagemap.html
file path=usr/apache2/2.2/manual/mod/mod_imagemap.html.en
file path=usr/apache2/2.2/manual/mod/mod_imagemap.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_include.html
file path=usr/apache2/2.2/manual/mod/mod_include.html.en
file path=usr/apache2/2.2/manual/mod/mod_include.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_info.html
file path=usr/apache2/2.2/manual/mod/mod_info.html.en
file path=usr/apache2/2.2/manual/mod/mod_info.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_info.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_isapi.html
file path=usr/apache2/2.2/manual/mod/mod_isapi.html.en
file path=usr/apache2/2.2/manual/mod/mod_isapi.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_ldap.html
file path=usr/apache2/2.2/manual/mod/mod_ldap.html.en
file path=usr/apache2/2.2/manual/mod/mod_log_config.html
file path=usr/apache2/2.2/manual/mod/mod_log_config.html.en
file path=usr/apache2/2.2/manual/mod/mod_log_config.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_log_config.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_log_config.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_log_forensic.html
file path=usr/apache2/2.2/manual/mod/mod_log_forensic.html.en
file path=usr/apache2/2.2/manual/mod/mod_log_forensic.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_log_forensic.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_logio.html
file path=usr/apache2/2.2/manual/mod/mod_logio.html.en
file path=usr/apache2/2.2/manual/mod/mod_logio.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_logio.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_logio.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_mem_cache.html
file path=usr/apache2/2.2/manual/mod/mod_mem_cache.html.en
file path=usr/apache2/2.2/manual/mod/mod_mem_cache.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_mem_cache.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_mime.html
file path=usr/apache2/2.2/manual/mod/mod_mime.html.en
file path=usr/apache2/2.2/manual/mod/mod_mime.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_mime_magic.html
file path=usr/apache2/2.2/manual/mod/mod_mime_magic.html.en
file path=usr/apache2/2.2/manual/mod/directives.html.en
file path=usr/apache2/2.2/manual/mod/directives.html.es
file path=usr/apache2/2.2/manual/mod/directives.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/directives.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/directives.html.ru.koi8-r
file path=usr/apache2/2.2/manual/mod/directives.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/event.html
file path=usr/apache2/2.2/manual/mod/event.html.en
file path=usr/apache2/2.2/manual/mod/index.html
file path=usr/apache2/2.2/manual/mod/index.html.de
file path=usr/apache2/2.2/manual/mod/index.html.en
file path=usr/apache2/2.2/manual/mod/index.html.es
file path=usr/apache2/2.2/manual/mod/index.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/index.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/index.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_actions.html
file path=usr/apache2/2.2/manual/mod/mod_actions.html.de
file path=usr/apache2/2.2/manual/mod/mod_actions.html.en
file path=usr/apache2/2.2/manual/mod/mod_alias.html
file path=usr/apache2/2.2/manual/mod/mod_alias.html.en
file path=usr/apache2/2.2/manual/mod/mod_alias.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_alias.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_alias.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_asis.html
file path=usr/apache2/2.2/manual/mod/mod_asis.html.en
file path=usr/apache2/2.2/manual/mod/mod_asis.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_asis.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_auth_basic.html
file path=usr/apache2/2.2/manual/mod/mod_auth_basic.html.en
file path=usr/apache2/2.2/manual/mod/mod_auth_basic.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_auth_basic.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_auth_digest.html
file path=usr/apache2/2.2/manual/mod/mod_auth_digest.html.en
file path=usr/apache2/2.2/manual/mod/mod_auth_digest.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authn_alias.html
file path=usr/apache2/2.2/manual/mod/mod_authn_alias.html.en
file path=usr/apache2/2.2/manual/mod/mod_authn_anon.html
file path=usr/apache2/2.2/manual/mod/mod_authn_anon.html.en
file path=usr/apache2/2.2/manual/mod/mod_authn_anon.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authn_anon.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authn_dbd.html
file path=usr/apache2/2.2/manual/mod/mod_authn_dbd.html.en
file path=usr/apache2/2.2/manual/mod/mod_authn_dbm.html
file path=usr/apache2/2.2/manual/mod/mod_authn_dbm.html.en
file path=usr/apache2/2.2/manual/mod/mod_authn_dbm.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authn_dbm.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authn_default.html
file path=usr/apache2/2.2/manual/mod/mod_authn_default.html.en
file path=usr/apache2/2.2/manual/mod/mod_authn_default.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authn_default.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authn_file.html
file path=usr/apache2/2.2/manual/mod/mod_authn_file.html.en
file path=usr/apache2/2.2/manual/mod/mod_authn_file.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authn_file.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authnz_ldap.html
file path=usr/apache2/2.2/manual/mod/mod_authnz_ldap.html.en
file path=usr/apache2/2.2/manual/mod/mod_authz_dbm.html
file path=usr/apache2/2.2/manual/mod/mod_authz_dbm.html.en
file path=usr/apache2/2.2/manual/mod/mod_authz_dbm.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authz_default.html
file path=usr/apache2/2.2/manual/mod/mod_authz_default.html.en
file path=usr/apache2/2.2/manual/mod/mod_authz_default.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authz_default.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authz_groupfile.html
file path=usr/apache2/2.2/manual/mod/mod_authz_groupfile.html.en
file path=usr/apache2/2.2/manual/mod/mod_authz_groupfile.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authz_groupfile.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authz_host.html
file path=usr/apache2/2.2/manual/mod/mod_authz_host.html.en
file path=usr/apache2/2.2/manual/mod/mod_authz_host.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authz_host.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authz_owner.html
file path=usr/apache2/2.2/manual/mod/mod_authz_owner.html.en
file path=usr/apache2/2.2/manual/mod/mod_authz_owner.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authz_owner.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_authz_user.html
file path=usr/apache2/2.2/manual/mod/mod_authz_user.html.en
file path=usr/apache2/2.2/manual/mod/mod_authz_user.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_authz_user.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_autoindex.html
file path=usr/apache2/2.2/manual/mod/mod_autoindex.html.en
file path=usr/apache2/2.2/manual/mod/mod_autoindex.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_autoindex.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_autoindex.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_cache.html
file path=usr/apache2/2.2/manual/mod/mod_cache.html.en
file path=usr/apache2/2.2/manual/mod/mod_cache.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_cache.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_cern_meta.html
file path=usr/apache2/2.2/manual/mod/mod_cern_meta.html.en
file path=usr/apache2/2.2/manual/mod/mod_cern_meta.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_cgi.html
file path=usr/apache2/2.2/manual/mod/mod_cgi.html.en
file path=usr/apache2/2.2/manual/mod/mod_cgi.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_cgi.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_cgid.html
file path=usr/apache2/2.2/manual/mod/mod_cgid.html.en
file path=usr/apache2/2.2/manual/mod/mod_cgid.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_cgid.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_charset_lite.html
file path=usr/apache2/2.2/manual/mod/mod_charset_lite.html.en
file path=usr/apache2/2.2/manual/images/caching_fig1.gif
file path=usr/apache2/2.2/manual/images/caching_fig1.png
file path=usr/apache2/2.2/manual/images/caching_fig1.tr.png
file path=usr/apache2/2.2/manual/images/custom_errordocs.png
file path=usr/apache2/2.2/manual/images/down.gif
file path=usr/apache2/2.2/manual/images/favicon.ico
file path=usr/apache2/2.2/manual/images/feather.gif
file path=usr/apache2/2.2/manual/images/feather.png
file path=usr/apache2/2.2/manual/images/filter_arch.png
file path=usr/apache2/2.2/manual/images/filter_arch.tr.png
file path=usr/apache2/2.2/manual/images/home.gif
file path=usr/apache2/2.2/manual/images/index.gif
file path=usr/apache2/2.2/manual/images/left.gif
file path=usr/apache2/2.2/manual/images/mod_filter_new.gif
file path=usr/apache2/2.2/manual/images/mod_filter_new.png
file path=usr/apache2/2.2/manual/images/mod_filter_new.tr.png
file path=usr/apache2/2.2/manual/images/mod_filter_old.gif
file path=usr/apache2/2.2/manual/images/mod_rewrite_fig1.gif
file path=usr/apache2/2.2/manual/images/mod_rewrite_fig1.png
file path=usr/apache2/2.2/manual/images/mod_rewrite_fig2.gif
file path=usr/apache2/2.2/manual/images/mod_rewrite_fig2.png
file path=usr/apache2/2.2/manual/images/pixel.gif
file path=usr/apache2/2.2/manual/images/right.gif
file path=usr/apache2/2.2/manual/images/ssl_intro_fig1.gif
file path=usr/apache2/2.2/manual/images/ssl_intro_fig1.png
file path=usr/apache2/2.2/manual/images/ssl_intro_fig2.gif
file path=usr/apache2/2.2/manual/images/ssl_intro_fig2.png
file path=usr/apache2/2.2/manual/images/ssl_intro_fig3.gif
file path=usr/apache2/2.2/manual/images/ssl_intro_fig3.png
file path=usr/apache2/2.2/manual/images/sub.gif
file path=usr/apache2/2.2/manual/images/up.gif
file path=usr/apache2/2.2/manual/index.html
file path=usr/apache2/2.2/manual/index.html.de
file path=usr/apache2/2.2/manual/index.html.en
file path=usr/apache2/2.2/manual/index.html.es
file path=usr/apache2/2.2/manual/index.html.fr
file path=usr/apache2/2.2/manual/index.html.ja.utf8
file path=usr/apache2/2.2/manual/index.html.ko.euc-kr
file path=usr/apache2/2.2/manual/index.html.pt-br
file path=usr/apache2/2.2/manual/index.html.tr.utf8
file path=usr/apache2/2.2/manual/install.html
file path=usr/apache2/2.2/manual/install.html.de
file path=usr/apache2/2.2/manual/install.html.en
file path=usr/apache2/2.2/manual/install.html.es
file path=usr/apache2/2.2/manual/install.html.fr
file path=usr/apache2/2.2/manual/install.html.ja.utf8
file path=usr/apache2/2.2/manual/install.html.ko.euc-kr
file path=usr/apache2/2.2/manual/install.html.tr.utf8
file path=usr/apache2/2.2/manual/invoking.html
file path=usr/apache2/2.2/manual/invoking.html.de
file path=usr/apache2/2.2/manual/invoking.html.en
file path=usr/apache2/2.2/manual/invoking.html.es
file path=usr/apache2/2.2/manual/invoking.html.fr
file path=usr/apache2/2.2/manual/invoking.html.ja.utf8
file path=usr/apache2/2.2/manual/invoking.html.ko.euc-kr
file path=usr/apache2/2.2/manual/invoking.html.ru.koi8-r
file path=usr/apache2/2.2/manual/invoking.html.tr.utf8
file path=usr/apache2/2.2/manual/license.html
file path=usr/apache2/2.2/manual/license.html.en
file path=usr/apache2/2.2/manual/logs.html
file path=usr/apache2/2.2/manual/logs.html.en
file path=usr/apache2/2.2/manual/logs.html.ja.utf8
file path=usr/apache2/2.2/manual/logs.html.ko.euc-kr
file path=usr/apache2/2.2/manual/logs.html.tr.utf8
file path=usr/apache2/2.2/manual/misc/index.html
file path=usr/apache2/2.2/manual/misc/index.html.en
file path=usr/apache2/2.2/manual/misc/index.html.ko.euc-kr
file path=usr/apache2/2.2/manual/misc/index.html.tr.utf8
file path=usr/apache2/2.2/manual/misc/password_encryptions.html
file path=usr/apache2/2.2/manual/misc/password_encryptions.html.en
file path=usr/apache2/2.2/manual/misc/perf-tuning.html
file path=usr/apache2/2.2/manual/misc/perf-tuning.html.en
file path=usr/apache2/2.2/manual/misc/perf-tuning.html.ko.euc-kr
file path=usr/apache2/2.2/manual/misc/perf-tuning.html.tr.utf8
file path=usr/apache2/2.2/manual/misc/relevant_standards.html
file path=usr/apache2/2.2/manual/misc/relevant_standards.html.en
file path=usr/apache2/2.2/manual/misc/relevant_standards.html.ko.euc-kr
file path=usr/apache2/2.2/manual/misc/rewriteguide.html
file path=usr/apache2/2.2/manual/misc/rewriteguide.html.en
file path=usr/apache2/2.2/manual/misc/rewriteguide.html.ko.euc-kr
file path=usr/apache2/2.2/manual/misc/security_tips.html
file path=usr/apache2/2.2/manual/misc/security_tips.html.en
file path=usr/apache2/2.2/manual/misc/security_tips.html.ko.euc-kr
file path=usr/apache2/2.2/manual/misc/security_tips.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/beos.html
file path=usr/apache2/2.2/manual/mod/beos.html.de
file path=usr/apache2/2.2/manual/mod/beos.html.en
file path=usr/apache2/2.2/manual/mod/beos.html.es
file path=usr/apache2/2.2/manual/mod/beos.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/core.html
file path=usr/apache2/2.2/manual/mod/core.html.de
file path=usr/apache2/2.2/manual/mod/core.html.en
file path=usr/apache2/2.2/manual/mod/core.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/core.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/directive-dict.html
file path=usr/apache2/2.2/manual/mod/directive-dict.html.en
file path=usr/apache2/2.2/manual/mod/directive-dict.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/directive-dict.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/directive-dict.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/directives.html
file path=usr/apache2/2.2/manual/mod/directives.html.de
file path=usr/apache2/2.2/manual/developer/documenting.html
file path=usr/apache2/2.2/manual/developer/API.html.en
file path=usr/apache2/2.2/manual/developer/documenting.html.en
file path=usr/apache2/2.2/manual/developer/filters.html.en
file path=usr/apache2/2.2/manual/custom-error.html
file path=usr/apache2/2.2/manual/custom-error.html.ja.utf8
file path=usr/apache2/2.2/manual/developer/debugging.html.en
file path=usr/apache2/2.2/manual/developer/filters.html
file path=usr/apache2/2.2/manual/developer/hooks.html
file path=usr/apache2/2.2/manual/custom-error.html.es
file path=usr/apache2/2.2/manual/custom-error.html.ko.euc-kr
file path=usr/apache2/2.2/manual/custom-error.html.en
file path=usr/apache2/2.2/manual/developer/API.html
file path=usr/apache2/2.2/manual/custom-error.html.tr.utf8
file path=usr/apache2/2.2/manual/developer/debugging.html
file path=usr/apache2/2.2/manual/developer/hooks.html.en
file path=usr/apache2/2.2/manual/developer/index.html
file path=usr/apache2/2.2/manual/developer/index.html.en
file path=usr/apache2/2.2/manual/developer/modules.html
file path=usr/apache2/2.2/manual/developer/modules.html.en
file path=usr/apache2/2.2/manual/developer/modules.html.ja.utf8
file path=usr/apache2/2.2/manual/developer/request.html
file path=usr/apache2/2.2/manual/developer/request.html.en
file path=usr/apache2/2.2/manual/developer/thread_safety.html
file path=usr/apache2/2.2/manual/developer/thread_safety.html.en
file path=usr/apache2/2.2/manual/dns-caveats.html
file path=usr/apache2/2.2/manual/dns-caveats.html.en
file path=usr/apache2/2.2/manual/dns-caveats.html.ja.utf8
file path=usr/apache2/2.2/manual/dns-caveats.html.ko.euc-kr
file path=usr/apache2/2.2/manual/dns-caveats.html.tr.utf8
file path=usr/apache2/2.2/manual/dso.html
file path=usr/apache2/2.2/manual/dso.html.en
file path=usr/apache2/2.2/manual/dso.html.ja.utf8
file path=usr/apache2/2.2/manual/dso.html.ko.euc-kr
file path=usr/apache2/2.2/manual/dso.html.tr.utf8
file path=usr/apache2/2.2/manual/env.html
file path=usr/apache2/2.2/manual/env.html.en
file path=usr/apache2/2.2/manual/env.html.ja.utf8
file path=usr/apache2/2.2/manual/env.html.ko.euc-kr
file path=usr/apache2/2.2/manual/env.html.tr.utf8
file path=usr/apache2/2.2/manual/faq/index.html
file path=usr/apache2/2.2/manual/faq/index.html.en
file path=usr/apache2/2.2/manual/faq/index.html.tr.utf8
file path=usr/apache2/2.2/manual/filter.html
file path=usr/apache2/2.2/manual/filter.html.en
file path=usr/apache2/2.2/manual/filter.html.es
file path=usr/apache2/2.2/manual/filter.html.fr
file path=usr/apache2/2.2/manual/filter.html.ja.utf8
file path=usr/apache2/2.2/manual/filter.html.ko.euc-kr
file path=usr/apache2/2.2/manual/filter.html.tr.utf8
file path=usr/apache2/2.2/manual/glossary.html
file path=usr/apache2/2.2/manual/glossary.html.de
file path=usr/apache2/2.2/manual/glossary.html.en
file path=usr/apache2/2.2/manual/glossary.html.es
file path=usr/apache2/2.2/manual/glossary.html.fr
file path=usr/apache2/2.2/manual/glossary.html.ja.utf8
file path=usr/apache2/2.2/manual/glossary.html.ko.euc-kr
file path=usr/apache2/2.2/manual/glossary.html.tr.utf8
file path=usr/apache2/2.2/manual/handler.html
file path=usr/apache2/2.2/manual/handler.html.en
file path=usr/apache2/2.2/manual/handler.html.es
file path=usr/apache2/2.2/manual/handler.html.fr
file path=usr/apache2/2.2/manual/handler.html.ja.utf8
file path=usr/apache2/2.2/manual/handler.html.ko.euc-kr
file path=usr/apache2/2.2/manual/handler.html.ru.koi8-r
file path=usr/apache2/2.2/manual/handler.html.tr.utf8
file path=usr/apache2/2.2/manual/howto/access.html
file path=usr/apache2/2.2/manual/howto/access.html.en
file path=usr/apache2/2.2/manual/howto/auth.html
file path=usr/apache2/2.2/manual/howto/auth.html.en
file path=usr/apache2/2.2/manual/howto/auth.html.ja.utf8
file path=usr/apache2/2.2/manual/howto/auth.html.ko.euc-kr
file path=usr/apache2/2.2/manual/howto/auth.html.tr.utf8
file path=usr/apache2/2.2/manual/howto/cgi.html
file path=usr/apache2/2.2/manual/howto/cgi.html.en
file path=usr/apache2/2.2/manual/howto/cgi.html.ja.utf8
file path=usr/apache2/2.2/manual/howto/cgi.html.ko.euc-kr
file path=usr/apache2/2.2/manual/howto/htaccess.html
file path=usr/apache2/2.2/manual/howto/htaccess.html.en
file path=usr/apache2/2.2/manual/howto/htaccess.html.ja.utf8
file path=usr/apache2/2.2/manual/howto/htaccess.html.ko.euc-kr
file path=usr/apache2/2.2/manual/howto/htaccess.html.pt-br
file path=usr/apache2/2.2/manual/howto/index.html
file path=usr/apache2/2.2/manual/howto/index.html.en
file path=usr/apache2/2.2/manual/howto/index.html.ja.utf8
file path=usr/apache2/2.2/manual/howto/index.html.ko.euc-kr
file path=usr/apache2/2.2/manual/howto/public_html.html
file path=usr/apache2/2.2/manual/howto/public_html.html.en
file path=usr/apache2/2.2/manual/howto/public_html.html.ja.utf8
file path=usr/apache2/2.2/manual/howto/public_html.html.ko.euc-kr
file path=usr/apache2/2.2/manual/howto/public_html.html.tr.utf8
file path=usr/apache2/2.2/manual/howto/ssi.html
file path=usr/apache2/2.2/manual/howto/ssi.html.en
file path=usr/apache2/2.2/manual/howto/ssi.html.ja.utf8
file path=usr/apache2/2.2/manual/howto/ssi.html.ko.euc-kr
file path=usr/apache2/2.2/manual/images/apache_header.gif
file path=usr/apache2/2.2/manual/mod/mod_actions.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_actions.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_negotiation.html
file path=usr/apache2/2.2/manual/mod/mod_negotiation.html.en
file path=usr/apache2/2.2/manual/mod/mod_negotiation.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_nw_ssl.html
file path=usr/apache2/2.2/manual/mod/mod_nw_ssl.html.en
file path=usr/apache2/2.2/manual/mod/mod_proxy.html
file path=usr/apache2/2.2/manual/mod/mod_proxy.html.en
file path=usr/apache2/2.2/manual/mod/mod_proxy.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_proxy_ajp.html
file path=usr/apache2/2.2/manual/mod/mod_proxy_ajp.html.en
file path=usr/apache2/2.2/manual/mod/mod_proxy_ajp.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_proxy_balancer.html
file path=usr/apache2/2.2/manual/mod/mod_proxy_balancer.html.en
file path=usr/apache2/2.2/manual/mod/mod_proxy_balancer.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_proxy_connect.html
file path=usr/apache2/2.2/manual/mod/mod_proxy_connect.html.en
file path=usr/apache2/2.2/manual/mod/mod_proxy_connect.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_proxy_ftp.html
file path=usr/apache2/2.2/manual/mod/mod_proxy_ftp.html.en
file path=usr/apache2/2.2/manual/mod/mod_proxy_http.html
file path=usr/apache2/2.2/manual/mod/mod_proxy_http.html.en
file path=usr/apache2/2.2/manual/mod/mod_proxy_scgi.html
file path=usr/apache2/2.2/manual/mod/mod_proxy_scgi.html.en
file path=usr/apache2/2.2/manual/mod/mod_reqtimeout.html
file path=usr/apache2/2.2/manual/mod/mod_reqtimeout.html.en
file path=usr/apache2/2.2/manual/mod/mod_rewrite.html
file path=usr/apache2/2.2/manual/mod/mod_rewrite.html.en
file path=usr/apache2/2.2/manual/mod/mod_setenvif.html
file path=usr/apache2/2.2/manual/mod/mod_setenvif.html.en
file path=usr/apache2/2.2/manual/mod/mod_setenvif.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_setenvif.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_setenvif.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_so.html
file path=usr/apache2/2.2/manual/mod/mod_so.html.en
file path=usr/apache2/2.2/manual/mod/mod_so.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_so.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_so.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_speling.html
file path=usr/apache2/2.2/manual/mod/mod_speling.html.en
file path=usr/apache2/2.2/manual/mod/mod_speling.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_speling.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_ssl.html
file path=usr/apache2/2.2/manual/mod/mod_ssl.html.en
file path=usr/apache2/2.2/manual/mod/mod_status.html
file path=usr/apache2/2.2/manual/mod/mod_status.html.en
file path=usr/apache2/2.2/manual/mod/mod_status.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_status.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_status.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_substitute.html
file path=usr/apache2/2.2/manual/mod/mod_substitute.html.en
file path=usr/apache2/2.2/manual/mod/mod_suexec.html
file path=usr/apache2/2.2/manual/mod/mod_suexec.html.en
file path=usr/apache2/2.2/manual/mod/mod_suexec.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_suexec.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_suexec.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_unique_id.html
file path=usr/apache2/2.2/manual/mod/mod_unique_id.html.en
file path=usr/apache2/2.2/manual/mod/mod_unique_id.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_unique_id.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_userdir.html
file path=usr/apache2/2.2/manual/mod/mod_userdir.html.en
file path=usr/apache2/2.2/manual/mod/mod_userdir.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_userdir.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_userdir.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mod_usertrack.html
file path=usr/apache2/2.2/manual/mod/mod_usertrack.html.en
file path=usr/apache2/2.2/manual/mod/mod_version.html
file path=usr/apache2/2.2/manual/mod/mod_version.html.en
file path=usr/apache2/2.2/manual/mod/mod_version.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mod_version.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/mod_vhost_alias.html
file path=usr/apache2/2.2/manual/mod/mod_vhost_alias.html.en
file path=usr/apache2/2.2/manual/mod/mod_vhost_alias.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/module-dict.html
file path=usr/apache2/2.2/manual/mod/module-dict.html.en
file path=usr/apache2/2.2/manual/mod/module-dict.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/module-dict.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/module-dict.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mpm_common.html
file path=usr/apache2/2.2/manual/mod/mpm_common.html.de
file path=usr/apache2/2.2/manual/mod/mpm_common.html.en
file path=usr/apache2/2.2/manual/mod/mpm_common.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mpm_common.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/mpm_netware.html
file path=usr/apache2/2.2/manual/mod/mpm_netware.html.en
file path=usr/apache2/2.2/manual/mod/mpm_winnt.html
file path=usr/apache2/2.2/manual/mod/mpm_winnt.html.de
file path=usr/apache2/2.2/manual/mod/mpm_winnt.html.en
file path=usr/apache2/2.2/manual/mod/mpm_winnt.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/mpmt_os2.html
file path=usr/apache2/2.2/manual/mod/mpmt_os2.html.en
file path=usr/apache2/2.2/manual/mod/prefork.html
file path=usr/apache2/2.2/manual/mod/prefork.html.de
file path=usr/apache2/2.2/manual/mod/prefork.html.en
file path=usr/apache2/2.2/manual/mod/prefork.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/prefork.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/quickreference.html
file path=usr/apache2/2.2/manual/mod/quickreference.html.de
file path=usr/apache2/2.2/manual/mod/quickreference.html.en
file path=usr/apache2/2.2/manual/mod/quickreference.html.es
file path=usr/apache2/2.2/manual/mod/quickreference.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/quickreference.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mod/quickreference.html.ru.koi8-r
file path=usr/apache2/2.2/manual/mod/quickreference.html.tr.utf8
file path=usr/apache2/2.2/manual/mod/worker.html
file path=usr/apache2/2.2/manual/mod/worker.html.de
file path=usr/apache2/2.2/manual/mod/worker.html.en
file path=usr/apache2/2.2/manual/mod/worker.html.ja.utf8
file path=usr/apache2/2.2/manual/mod/worker.html.tr.utf8
file path=usr/apache2/2.2/manual/mpm.html
file path=usr/apache2/2.2/manual/mpm.html.de
file path=usr/apache2/2.2/manual/mpm.html.en
file path=usr/apache2/2.2/manual/mpm.html.es
file path=usr/apache2/2.2/manual/mpm.html.fr
file path=usr/apache2/2.2/manual/mpm.html.ja.utf8
file path=usr/apache2/2.2/manual/mpm.html.ko.euc-kr
file path=usr/apache2/2.2/manual/mpm.html.tr.utf8
file path=usr/apache2/2.2/manual/new_features_2_0.html
file path=usr/apache2/2.2/manual/new_features_2_0.html.de
file path=usr/apache2/2.2/manual/new_features_2_0.html.en
file path=usr/apache2/2.2/manual/new_features_2_0.html.fr
file path=usr/apache2/2.2/manual/new_features_2_0.html.ja.utf8
file path=usr/apache2/2.2/manual/new_features_2_0.html.ko.euc-kr
file path=usr/apache2/2.2/manual/new_features_2_0.html.pt-br
file path=usr/apache2/2.2/manual/new_features_2_0.html.ru.koi8-r
file path=usr/apache2/2.2/manual/new_features_2_0.html.tr.utf8
file path=usr/apache2/2.2/manual/new_features_2_2.html
file path=usr/apache2/2.2/manual/new_features_2_2.html.en
file path=usr/apache2/2.2/manual/new_features_2_2.html.fr
file path=usr/apache2/2.2/manual/new_features_2_2.html.ko.euc-kr
file path=usr/apache2/2.2/manual/new_features_2_2.html.pt-br
file path=usr/apache2/2.2/manual/new_features_2_2.html.tr.utf8
file path=usr/apache2/2.2/manual/platform/ebcdic.html
file path=usr/apache2/2.2/manual/platform/ebcdic.html.en
file path=usr/apache2/2.2/manual/platform/ebcdic.html.ko.euc-kr
file path=usr/apache2/2.2/manual/platform/index.html
file path=usr/apache2/2.2/manual/platform/index.html.en
file path=usr/apache2/2.2/manual/platform/index.html.ko.euc-kr
file path=usr/apache2/2.2/manual/platform/netware.html
file path=usr/apache2/2.2/manual/platform/netware.html.en
file path=usr/apache2/2.2/manual/platform/netware.html.ko.euc-kr
file path=usr/apache2/2.2/manual/platform/perf-hp.html
file path=usr/apache2/2.2/manual/platform/perf-hp.html.en
file path=usr/apache2/2.2/manual/platform/perf-hp.html.ko.euc-kr
file path=usr/apache2/2.2/manual/platform/win_compiling.html
file path=usr/apache2/2.2/manual/platform/win_compiling.html.en
file path=usr/apache2/2.2/manual/platform/win_compiling.html.ko.euc-kr
file path=usr/apache2/2.2/manual/platform/windows.html
file path=usr/apache2/2.2/manual/platform/windows.html.en
file path=usr/apache2/2.2/manual/platform/windows.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/ab.html
file path=usr/apache2/2.2/manual/programs/ab.html.en
file path=usr/apache2/2.2/manual/programs/ab.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/ab.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/apachectl.html
file path=usr/apache2/2.2/manual/programs/apachectl.html.en
file path=usr/apache2/2.2/manual/programs/apachectl.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/apachectl.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/apxs.html
file path=usr/apache2/2.2/manual/programs/apxs.html.en
file path=usr/apache2/2.2/manual/programs/apxs.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/apxs.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/configure.html
file path=usr/apache2/2.2/manual/programs/configure.html.en
file path=usr/apache2/2.2/manual/programs/configure.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/configure.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/dbmmanage.html
file path=usr/apache2/2.2/manual/programs/dbmmanage.html.en
file path=usr/apache2/2.2/manual/programs/dbmmanage.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/dbmmanage.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/htcacheclean.html
file path=usr/apache2/2.2/manual/programs/htcacheclean.html.en
file path=usr/apache2/2.2/manual/programs/htcacheclean.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/htcacheclean.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/htdbm.html
file path=usr/apache2/2.2/manual/programs/htdbm.html.en
file path=usr/apache2/2.2/manual/programs/htdbm.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/htdigest.html
file path=usr/apache2/2.2/manual/programs/htdigest.html.en
file path=usr/apache2/2.2/manual/programs/htdigest.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/htdigest.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/htpasswd.html
file path=usr/apache2/2.2/manual/programs/htpasswd.html.en
file path=usr/apache2/2.2/manual/programs/htpasswd.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/htpasswd.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/httpd.html
file path=usr/apache2/2.2/manual/programs/httpd.html.en
file path=usr/apache2/2.2/manual/programs/httpd.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/httpd.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/httxt2dbm.html
file path=usr/apache2/2.2/manual/programs/httxt2dbm.html.en
file path=usr/apache2/2.2/manual/programs/httxt2dbm.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/index.html
file path=usr/apache2/2.2/manual/programs/index.html.en
file path=usr/apache2/2.2/manual/programs/index.html.es
file path=usr/apache2/2.2/manual/programs/index.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/index.html.ru.koi8-r
file path=usr/apache2/2.2/manual/programs/index.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/logresolve.html
file path=usr/apache2/2.2/manual/programs/logresolve.html.en
file path=usr/apache2/2.2/manual/programs/logresolve.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/logresolve.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/other.html
file path=usr/apache2/2.2/manual/programs/other.html.en
file path=usr/apache2/2.2/manual/programs/other.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/other.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/rotatelogs.html
file path=usr/apache2/2.2/manual/programs/rotatelogs.html.en
file path=usr/apache2/2.2/manual/programs/rotatelogs.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/rotatelogs.html.tr.utf8
file path=usr/apache2/2.2/manual/programs/suexec.html
file path=usr/apache2/2.2/manual/programs/suexec.html.en
file path=usr/apache2/2.2/manual/programs/suexec.html.ko.euc-kr
file path=usr/apache2/2.2/manual/programs/suexec.html.tr.utf8
file path=usr/apache2/2.2/manual/rewrite/index.html
file path=usr/apache2/2.2/manual/rewrite/index.html.en
file path=usr/apache2/2.2/manual/rewrite/index.html.tr.utf8
file path=usr/apache2/2.2/manual/rewrite/rewrite_flags.html
file path=usr/apache2/2.2/manual/rewrite/rewrite_flags.html.en
file path=usr/apache2/2.2/manual/rewrite/rewrite_guide.html
file path=usr/apache2/2.2/manual/rewrite/rewrite_guide.html.en
file path=usr/apache2/2.2/manual/rewrite/rewrite_guide_advanced.html
file path=usr/apache2/2.2/manual/rewrite/rewrite_guide_advanced.html.en
file path=usr/apache2/2.2/manual/rewrite/rewrite_intro.html
file path=usr/apache2/2.2/manual/rewrite/rewrite_intro.html.en
file path=usr/apache2/2.2/manual/rewrite/rewrite_tech.html
file path=usr/apache2/2.2/manual/rewrite/rewrite_tech.html.en
file path=usr/apache2/2.2/manual/sections.html
file path=usr/apache2/2.2/manual/sections.html.en
file path=usr/apache2/2.2/manual/sections.html.fr
file path=usr/apache2/2.2/manual/sections.html.ja.utf8
file path=usr/apache2/2.2/manual/sections.html.ko.euc-kr
file path=usr/apache2/2.2/manual/sections.html.tr.utf8
file path=usr/apache2/2.2/manual/server-wide.html
file path=usr/apache2/2.2/manual/server-wide.html.en
file path=usr/apache2/2.2/manual/server-wide.html.ja.utf8
file path=usr/apache2/2.2/manual/server-wide.html.ko.euc-kr
file path=usr/apache2/2.2/manual/server-wide.html.tr.utf8
file path=usr/apache2/2.2/manual/sitemap.html
file path=usr/apache2/2.2/manual/sitemap.html.de
file path=usr/apache2/2.2/manual/sitemap.html.en
file path=usr/apache2/2.2/manual/sitemap.html.es
file path=usr/apache2/2.2/manual/sitemap.html.ja.utf8
file path=usr/apache2/2.2/manual/sitemap.html.ko.euc-kr
file path=usr/apache2/2.2/manual/sitemap.html.tr.utf8
file path=usr/apache2/2.2/manual/ssl/index.html
file path=usr/apache2/2.2/manual/ssl/index.html.en
file path=usr/apache2/2.2/manual/ssl/index.html.ja.utf8
file path=usr/apache2/2.2/manual/ssl/index.html.tr.utf8
file path=usr/apache2/2.2/manual/ssl/ssl_compat.html
file path=usr/apache2/2.2/manual/ssl/ssl_compat.html.en
file path=usr/apache2/2.2/manual/ssl/ssl_faq.html
file path=usr/apache2/2.2/manual/ssl/ssl_faq.html.en
file path=usr/apache2/2.2/manual/ssl/ssl_howto.html
file path=usr/apache2/2.2/manual/ssl/ssl_howto.html.en
file path=usr/apache2/2.2/manual/ssl/ssl_intro.html
file path=usr/apache2/2.2/manual/ssl/ssl_intro.html.en
file path=usr/apache2/2.2/manual/ssl/ssl_intro.html.ja.utf8
file path=usr/apache2/2.2/manual/stopping.html
file path=usr/apache2/2.2/manual/stopping.html.de
file path=usr/apache2/2.2/manual/stopping.html.en
file path=usr/apache2/2.2/manual/stopping.html.es
file path=usr/apache2/2.2/manual/stopping.html.fr
file path=usr/apache2/2.2/manual/stopping.html.ja.utf8
file path=usr/apache2/2.2/manual/stopping.html.ko.euc-kr
file path=usr/apache2/2.2/manual/stopping.html.tr.utf8
file path=usr/apache2/2.2/manual/style/build.properties
file path=usr/apache2/2.2/manual/style/common.dtd
file path=usr/apache2/2.2/manual/style/css/manual-chm.css
file path=usr/apache2/2.2/manual/style/css/manual-loose-100pc.css
file path=usr/apache2/2.2/manual/style/css/manual-print.css
file path=usr/apache2/2.2/manual/style/css/manual-zip-100pc.css
file path=usr/apache2/2.2/manual/style/css/manual-zip.css
file path=usr/apache2/2.2/manual/style/css/manual.css
file path=usr/apache2/2.2/manual/style/faq.dtd
file path=usr/apache2/2.2/manual/style/lang.dtd
file path=usr/apache2/2.2/manual/style/latex/atbeginend.sty
file path=usr/apache2/2.2/manual/style/manualpage.dtd
file path=usr/apache2/2.2/manual/style/modulesynopsis.dtd
file path=usr/apache2/2.2/manual/style/sitemap.dtd
file path=usr/apache2/2.2/manual/style/version.ent
file path=usr/apache2/2.2/manual/suexec.html
file path=usr/apache2/2.2/manual/suexec.html.en
file path=usr/apache2/2.2/manual/suexec.html.ja.utf8
file path=usr/apache2/2.2/manual/suexec.html.ko.euc-kr
file path=usr/apache2/2.2/manual/suexec.html.tr.utf8
file path=usr/apache2/2.2/manual/upgrading.html
file path=usr/apache2/2.2/manual/upgrading.html.de
file path=usr/apache2/2.2/manual/upgrading.html.en
file path=usr/apache2/2.2/manual/upgrading.html.fr
file path=usr/apache2/2.2/manual/urlmapping.html
file path=usr/apache2/2.2/manual/urlmapping.html.en
file path=usr/apache2/2.2/manual/urlmapping.html.ja.utf8
file path=usr/apache2/2.2/manual/urlmapping.html.ko.euc-kr
file path=usr/apache2/2.2/manual/urlmapping.html.tr.utf8
file path=usr/apache2/2.2/manual/vhosts/details.html
file path=usr/apache2/2.2/manual/vhosts/details.html.en
file path=usr/apache2/2.2/manual/vhosts/details.html.fr
file path=usr/apache2/2.2/manual/vhosts/details.html.ko.euc-kr
file path=usr/apache2/2.2/manual/vhosts/details.html.tr.utf8
file path=usr/apache2/2.2/manual/vhosts/examples.html
file path=usr/apache2/2.2/manual/vhosts/examples.html.en
file path=usr/apache2/2.2/manual/vhosts/examples.html.fr
file path=usr/apache2/2.2/manual/vhosts/examples.html.ja.utf8
file path=usr/apache2/2.2/manual/vhosts/examples.html.ko.euc-kr
file path=usr/apache2/2.2/manual/vhosts/examples.html.tr.utf8
file path=usr/apache2/2.2/manual/vhosts/fd-limits.html
file path=usr/apache2/2.2/manual/vhosts/fd-limits.html.en
file path=usr/apache2/2.2/manual/vhosts/fd-limits.html.fr
file path=usr/apache2/2.2/manual/vhosts/fd-limits.html.ja.utf8
file path=usr/apache2/2.2/manual/vhosts/fd-limits.html.ko.euc-kr
file path=usr/apache2/2.2/manual/vhosts/fd-limits.html.tr.utf8
file path=usr/apache2/2.2/manual/vhosts/index.html
file path=usr/apache2/2.2/manual/vhosts/index.html.de
file path=usr/apache2/2.2/manual/vhosts/index.html.en
file path=usr/apache2/2.2/manual/vhosts/index.html.fr
file path=usr/apache2/2.2/manual/vhosts/index.html.ja.utf8
file path=usr/apache2/2.2/manual/vhosts/index.html.ko.euc-kr
file path=usr/apache2/2.2/manual/vhosts/index.html.ru.koi8-r
file path=usr/apache2/2.2/manual/vhosts/index.html.tr.utf8
file path=usr/apache2/2.2/manual/vhosts/ip-based.html
file path=usr/apache2/2.2/manual/vhosts/ip-based.html.en
file path=usr/apache2/2.2/manual/vhosts/ip-based.html.fr
file path=usr/apache2/2.2/manual/vhosts/ip-based.html.ja.utf8
file path=usr/apache2/2.2/manual/vhosts/ip-based.html.ko.euc-kr
file path=usr/apache2/2.2/manual/vhosts/ip-based.html.tr.utf8
file path=usr/apache2/2.2/manual/vhosts/mass.html
file path=usr/apache2/2.2/manual/vhosts/mass.html.en
file path=usr/apache2/2.2/manual/vhosts/mass.html.ko.euc-kr
file path=usr/apache2/2.2/manual/vhosts/mass.html.tr.utf8
file path=usr/apache2/2.2/manual/vhosts/name-based.html
file path=usr/apache2/2.2/manual/vhosts/name-based.html.de
file path=usr/apache2/2.2/manual/vhosts/name-based.html.en
file path=usr/apache2/2.2/manual/vhosts/name-based.html.fr
file path=usr/apache2/2.2/manual/vhosts/name-based.html.ja.utf8
file path=usr/apache2/2.2/manual/vhosts/name-based.html.ko.euc-kr
file path=usr/apache2/2.2/manual/vhosts/name-based.html.tr.utf8
file Solaris/apache2.1m.sunman path=usr/share/man/man1m/apache2.1m
file usr/apache2/2.2/man/man8/ab.8 path=usr/share/man/man8/ab.8
file usr/apache2/2.2/man/man8/apachectl.8 path=usr/share/man/man8/apachectl.8
file usr/apache2/2.2/man/man8/apxs.8 path=usr/share/man/man8/apxs.8
file usr/apache2/2.2/man/man8/htcacheclean.8 path=usr/share/man/man8/htcacheclean.8
file usr/apache2/2.2/man/man8/httpd.8 path=usr/share/man/man8/httpd.8
file usr/apache2/2.2/man/man8/logresolve.8 path=usr/share/man/man8/logresolve.8
file usr/apache2/2.2/man/man8/rotatelogs.8 path=usr/share/man/man8/rotatelogs.8
file usr/apache2/2.2/man/man8/suexec.8 path=usr/share/man/man8/suexec.8
legacy    pkg=SUNWapch22d \
    name="Apache Web Server V2.2 Documentation" \
    desc="The Apache HTTP Server Version 2.2 (documentation)"
components/apache2/mod_auth_gss/README
New file
@@ -0,0 +1,122 @@
Instructions on testing the negotiateauth
mozilla extension with Apache.
Introduction
-----------------
mod_auth_gss (originally from http://modauthkerb.sourceforge.net/) is an
Apache module designed to provide GSSAPI authentication to the Apache
web server. Using the "Negotiate" Auth mechanism, which performs full
Kerberos authentication based on ticket exchanges and does not require
users to insert their passwords to the browser.  In order to use the
Negotiate method you need a browser supporting it (currently standard IE6.0 or
Mozilla with the negotiateauth extension).
The Negotiate mechanism can be only used with Kerberos v5. The module supports
both 1.x and 2.x versions of Apache.
The use of SSL encryption is also recommended (but not required) if you are
using the Negotiate method.
Installing mod_auth_gss
------------------------
Prerequisites
* Apache server installed.
  Both 1.x and 2.x series of Apache are supported (make sure the apache
  installation contains the apxs command)
  In Solaris - the necessary Apache 2.X libraries and headers are
  usually found in /usr/apache2.
* Working C compiler.
* GSSAPI library (Solaris - /usr/lib/libgss.so.1)
1. Building the Apache module is simple.
   Find the directory with the source code and Makefile for
   mod_auth_gss.so.
   $ make
2. Installing the Apache module requires 'root' privilege.
   # cp mod_auth_gss.so /usr/apache2/libexec
3. Configure apache to use the new module.
   Add following line to /etc/apache2/httpd.conf:
   LoadModule    auth_gss_module    libexec/mod_auth_gss.so
4. Set permissions on the newly created keytab file so that only the
   apache owner can read the file.  For example, if the apache server
   is configured to run as user "nobody":
   $ chown nobody /var/apache2/http.keytab
   $ chmod 400 /var/apache2/http.keytab
5. Create a directory in the apache 'htdocs' tree that will be used
   to test the GSSAPI/KerberosV5 authentication.
   $ mkdir /var/apache2/htdocs/krb5
6. Create a ".htaccess" file for the Kerberos directory (step 4),
   it should contain the following entries:
    AuthType GSSAPI
    AuthGSSServiceName HTTP
        AuthGSSKeytabFile /var/apache2/http.keytab
        AuthGssDebug 1
   * AuthGssDebug is only needed for testing purposes, it causes extra
     DEBUG level messages to be displayed in the Apache error_log file
     (/var/apache2/logs/error_log).
7. Put some content in the Kerberos web directory so the tester can
   verify that they accessed the page correctly.
8. Set the "AllowOverride" parameter in /etc/apache2/httpd.conf
   to "All" for the Kerberos directory created in step 5.
Ex:
<Location "/var/apache2/htdocs/krb5">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Require valid-user
</Location>
Configurating Kerberos
-----------------------
1. Set up Kerberos Server (if you don't already have one).
   Follow basic instructions given at docs.sun.com.  Search for
   "Configuring Kerberos" in the
   "Solaris Administration Guide: Security Services" book.
   - The KDC should be a protected, standalone system.  But for
     internal testing purposes it may be hosted on the same system
     as the Apache web server.
2. Create a Kerberos service key for the Apache server to use for
   authenticating the clients.  Also create a user principal testing
   the browser later.
   The "Negotiate" method used by IIS and IE is "HTTP/<hostname>@REALM".
   To create this principal for use with the Apache module do the following:
   [ As 'root', on the Apache server ]
   a.  /usr/sbin/kadmin
      - this assumes the KDC setup procedure was followed (step 1).
   b. kadmin: addprinc -randkey HTTP/<fully_qualified_host_name>
   c. kadmin: ktadd -k /var/apache2/http.keytab HTTP/<fully_qualified_host_name>
   d. kadmin: addprinc tester
   e. kadmin: quit
Testing the 'Negotiate' plugin with mozilla:
--------------------------------------------
1.  The client system must be configured to use Kerberos.
    Setup /etc/krb5/krb5.conf to use the KDC created earlier
2.  'kinit'  to get a TGT as the "tester" principal created
    above in step 2d.
    $ kinit tester
         ( enter password )
3.  Use mozilla (with 'negotiateauth' extension installed)
    to access the Kerberos protected page (created above
    in steps 4-6).
    If the pages do not show up, its probably due to
    a misconfigured Kerberos configuration on the client
    or the server (or both).  There is very little that
    needs to be done for Mozilla or apache.
components/apache2/mod_auth_gss/mod_auth_gss.c
New file
@@ -0,0 +1,605 @@
/*
 * Wyllys Ingersoll <wyllys.ingersoll@sun.com>
 *
 * Based on work by
 *   Daniel Kouril <kouril@users.sourceforge.net>
 *   James E. Robinson, III <james@ncstate.net>
 *   Daniel Henninger <daniel@ncsu.edu>
 *   Ludek Sulak <xsulak@fi.muni.cz>
 */
/* ====================================================================
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Apache" and "Apache Software Foundation" must
 *    not be used to endorse or promote products derived from this
 *    software without prior written permission. For written
 *    permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache",
 *    nor may "Apache" appear in their name, without prior written
 *    permission of the Apache Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 *
 * Portions of this software are based upon public domain software
 * originally written at the National Center for Supercomputing Applications,
 * University of Illinois, Urbana-Champaign.
 */
/*
 * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
 */
#include <sys/types.h>
#include <strings.h>
#include "httpd.h"
#include "http_config.h"
#include "http_core.h"
#include "http_log.h"
#include "http_protocol.h"
#include "http_request.h"
#include "ap_config.h"
#include "apr_base64.h"
#include "apr_lib.h"
#include "apr_time.h"
#include "apr_errno.h"
#include "apr_global_mutex.h"
#include "apr_strings.h"
#include "ap_compat.h"
#include <gssapi/gssapi.h>
#include <gssapi/gssapi_ext.h>
module auth_gss_module;
static void *gss_create_dir_config(apr_pool_t *, char *);
int gss_authenticate(request_rec *);
typedef struct {
    char *gss_service_name;
    char *keytab_file;
    int gss_debug;
} gss_auth_config;
static const char *set_service_name(cmd_parms *cmd, void *config,
    const char *name)
{
    ((gss_auth_config *) config)->gss_service_name = (char *)name;
    return NULL;
}
static const char *set_keytab_file(cmd_parms *cmd, void *config,
    const char *file)
{
    ((gss_auth_config *) config)->keytab_file = (char *)file;
    return NULL;
}
static const char *set_gss_debug(cmd_parms *cmd, void *config,
    const char *debugflag)
{
    ((gss_auth_config *) config)->gss_debug = atoi(debugflag);
    return NULL;
}
static const command_rec gss_auth_cmds[] = {
    AP_INIT_TAKE1("AuthGSSServiceName", set_service_name, NULL,
        OR_AUTHCFG, "Service name used for authentication."),
    AP_INIT_TAKE1("AuthGSSKeytabFile", set_keytab_file, NULL,
        OR_AUTHCFG,
        "Location of Kerberos V5 keytab file."),
    AP_INIT_TAKE1("AuthGssDebug", set_gss_debug, NULL,
        OR_AUTHCFG,
        "Enable debug logging in error_log"),
    { NULL }
};
static void
gss_register_hooks(apr_pool_t *p)
{
    ap_hook_check_user_id(gss_authenticate,NULL,NULL,APR_HOOK_MIDDLE);
}
module AP_MODULE_DECLARE_DATA auth_gss_module = {
    STANDARD20_MODULE_STUFF,
    gss_create_dir_config,    /* dir config creater */
    NULL,            /* dir merger --- default is to override */
    NULL,            /* server config */
    NULL,            /* merge server config */
    gss_auth_cmds,        /* command apr_table_t */
    gss_register_hooks        /* register hooks */
};
typedef struct {
    gss_ctx_id_t context;
    gss_cred_id_t server_creds;
} gss_connection_t;
static gss_connection_t *gss_connection = NULL;
static void *
gss_create_dir_config(apr_pool_t *p, char *d)
{
    gss_auth_config *rec =
        (gss_auth_config *) apr_pcalloc(p, sizeof(gss_auth_config));
    ((gss_auth_config *)rec)->gss_service_name = "HTTP";
    ((gss_auth_config *)rec)->keytab_file = "/var/apache2/http.keytab";
    ((gss_auth_config *)rec)->gss_debug = 0;
    return rec;
}
void log_rerror(const char *file, int line, int level, int status,
                const request_rec *r, const char *fmt, ...)
{
    char errstr[1024];
    va_list ap;
    va_start(ap, fmt);
    vsnprintf(errstr, sizeof(errstr), fmt, ap);
    va_end(ap);
    ap_log_rerror(file, line, level | APLOG_NOERRNO, NULL, r, "%s", errstr);
}
/*********************************************************************
 * GSSAPI Authentication
 ********************************************************************/
static const char *
gss_error_msg(apr_pool_t *p, OM_uint32 maj, OM_uint32 min, char *prefix)
{
    OM_uint32 maj_stat, min_stat;
    OM_uint32 msg_ctx = 0;
    gss_buffer_desc msg;
    char *err_msg = (char *)apr_pstrdup(p, prefix);
    do {
        maj_stat = gss_display_status (&min_stat,
            maj, GSS_C_GSS_CODE,
            GSS_C_NO_OID, &msg_ctx,
            &msg);
        if (GSS_ERROR(maj_stat))
            break;
        err_msg = apr_pstrcat(p, err_msg, ": ", (char*) msg.value,
            NULL);
        (void) gss_release_buffer(&min_stat, &msg);
        maj_stat = gss_display_status (&min_stat,
            min, GSS_C_MECH_CODE,
            GSS_C_NULL_OID, &msg_ctx,
            &msg);
        if (!GSS_ERROR(maj_stat)) {
            err_msg = apr_pstrcat(p, err_msg,
                " (", (char*) msg.value, ")", NULL);
            (void) gss_release_buffer(&min_stat, &msg);
        }
    } while (!GSS_ERROR(maj_stat) && msg_ctx != 0);
    return (err_msg);
}
static int
cleanup_gss_connection(void *data)
{
    OM_uint32 ret;
    OM_uint32 minor_status;
    gss_connection_t *gss_conn = (gss_connection_t *)data;
    if (data == NULL)
        return 0;
    if (gss_conn->context != GSS_C_NO_CONTEXT) {
        (void) gss_delete_sec_context(&minor_status,
            &gss_conn->context,
            GSS_C_NO_BUFFER);
    }
    if (gss_conn->server_creds != GSS_C_NO_CREDENTIAL) {
        (void) gss_release_cred(&minor_status, &gss_conn->server_creds);
    }
    gss_connection = NULL;
    return 0;
}
static int
acquire_server_creds(request_rec *r,
    gss_auth_config *conf,
    gss_OID_set mechset,
    gss_cred_id_t *server_creds)
{
    int ret = 0;
    gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
    OM_uint32 major_status, minor_status, minor_status2;
    gss_name_t server_name = GSS_C_NO_NAME;
    char buf[1024];
    snprintf(buf, sizeof(buf), "%s@%s",
        conf->gss_service_name, r->hostname);
    if (conf->gss_debug)
           log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
            "acquire_server_creds for %s", buf);
    input_token.value = buf;
    input_token.length = strlen(buf) + 1;
    major_status = gss_import_name(&minor_status, &input_token,
               GSS_C_NT_HOSTBASED_SERVICE,
              &server_name);
    if (GSS_ERROR(major_status)) {
        log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
            "%s", gss_error_msg(r->pool, major_status, minor_status,
            "gss_import_name() failed"));
        return (HTTP_INTERNAL_SERVER_ERROR);
    }
    major_status = gss_acquire_cred(&minor_status, server_name,
        GSS_C_INDEFINITE,
        mechset, GSS_C_ACCEPT,
        server_creds, NULL, NULL);
    if (GSS_ERROR(major_status)) {
        log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
            "%s", gss_error_msg(r->pool, major_status, minor_status,
              "gss_acquire_cred() failed"));
        ret = HTTP_INTERNAL_SERVER_ERROR;
    }
    (void) gss_release_name(&minor_status2, &server_name);
    return (ret);
}
static int
authenticate_user_gss(request_rec *r, gss_auth_config *conf,
    const char *auth_line, char **negotiate_ret_value)
{
    int ret = 0;
    OM_uint32 major_status, minor_status, minor_status2;
    gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER;
    gss_buffer_desc output_token = GSS_C_EMPTY_BUFFER;
    const char *auth_param = NULL;
    gss_name_t client_name = GSS_C_NO_NAME;
    gss_cred_id_t delegated_cred = GSS_C_NO_CREDENTIAL;
    if (conf->gss_debug)
        log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
        "authenticate_user_gss called");
    *negotiate_ret_value = (char *)"";
    if (gss_connection == NULL) {
        gss_connection = apr_pcalloc(r->connection->pool, sizeof(*gss_connection));
        if (gss_connection == NULL) {
            log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
                   "apr_pcalloc() failed (not enough memory)");
            ret = HTTP_INTERNAL_SERVER_ERROR;
            goto end;
        }
        (void) memset(gss_connection, 0, sizeof(*gss_connection));
        apr_pool_cleanup_register(r->connection->pool, gss_connection,
            cleanup_gss_connection, apr_pool_cleanup_null);
    }
    if (conf->keytab_file) {
        char *ktname;
        /*
         * We don't use the ap_* calls here, since the string
         * passed to putenv() will become part of the enviroment
         * and shouldn't be free()ed by apache.
         */
        ktname = malloc(strlen("KRB5_KTNAME=") + strlen(conf->keytab_file) + 1);
        if (ktname == NULL) {
            log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
                "malloc() failed: not enough memory");
            ret = HTTP_INTERNAL_SERVER_ERROR;
            goto end;
        }
        /*
         * Put the keytab name in the environment so that Kerberos
         * knows where to look later.
         */
        sprintf(ktname, "KRB5_KTNAME=%s", conf->keytab_file);
        putenv(ktname);
        if (conf->gss_debug)
            log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "Using keytab: %s", ktname);
    }
    /* ap_getword() shifts parameter */
    auth_param = ap_getword_white(r->pool, &auth_line);
    if (auth_param == NULL) {
        log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
            "No Authorization parameter in request from client");
        ret = HTTP_UNAUTHORIZED;
        goto end;
    }
    input_token.length = apr_base64_decode_len(auth_param) + 1;
    input_token.value = apr_pcalloc(r->connection->pool, input_token.length);
    if (input_token.value == NULL) {
        log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
           "apr_pcalloc() failed (not enough memory)");
        ret = HTTP_INTERNAL_SERVER_ERROR;
        goto end;
    }
    input_token.length = apr_base64_decode(input_token.value, auth_param);
    if (gss_connection->server_creds == GSS_C_NO_CREDENTIAL) {
        gss_OID_set_desc desiredMechs;
        gss_OID_desc client_mech_desc;
        gss_OID client_mechoid = &client_mech_desc;
        char *mechstr = NULL;
        if (!__gss_get_mech_type(client_mechoid, &input_token)) {
            mechstr = (char *)__gss_oid_to_mech(client_mechoid);
        }
        if (mechstr == NULL) {
            client_mechoid = GSS_C_NULL_OID;
            mechstr = "<unknown>";
        }
        if (conf->gss_debug)
            log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
                "Client wants GSS mech: %s", mechstr);
        desiredMechs.count = 1;
        desiredMechs.elements = client_mechoid;
        /* Get creds using the mechanism that the client requested */
        ret = acquire_server_creds(r, conf, &desiredMechs,
            &gss_connection->server_creds);
        if (ret)
            goto end;
    }
    /*
     * Try to display the server creds information.
     */
    if (conf->gss_debug) {
        gss_name_t sname;
        gss_buffer_desc dname;
        major_status = gss_inquire_cred(&minor_status,
            gss_connection->server_creds,
            &sname, NULL, NULL, NULL);
        if (major_status == GSS_S_COMPLETE) {
            major_status = gss_display_name(&minor_status,
                sname, &dname, NULL);
        }
        if (major_status == GSS_S_COMPLETE) {
            log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
                "got server creds for: %.*s",
                (int)dname.length,
                (char *)dname.value);
            (void) gss_release_name(&minor_status, &sname);
            (void) gss_release_buffer(&minor_status, &dname);
        }
    }
    major_status = gss_accept_sec_context(&minor_status,
              &gss_connection->context,
              gss_connection->server_creds,
              &input_token,
              GSS_C_NO_CHANNEL_BINDINGS,
              &client_name,
              NULL,
              &output_token,
              NULL,
              NULL,
              &delegated_cred);
    if (output_token.length) {
        char *token = NULL;
        size_t len;
        len = apr_base64_encode_len(output_token.length) + 1;
        token = apr_pcalloc(r->connection->pool, len + 1);
        if (token == NULL) {
            log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
            "apr_pcalloc() failed (not enough memory)");
            ret = HTTP_INTERNAL_SERVER_ERROR;
            gss_release_buffer(&minor_status2, &output_token);
            goto end;
        }
        apr_base64_encode(token, output_token.value, output_token.length);
        token[len] = '\0';
        *negotiate_ret_value = token;
    }
    if (GSS_ERROR(major_status)) {
        log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
            "%s", gss_error_msg(r->pool, major_status, minor_status,
            "gss_accept_sec_context() failed"));
        /* Don't offer the Negotiate method again if call to GSS layer failed */
        *negotiate_ret_value = NULL;
        ret = HTTP_UNAUTHORIZED;
        goto end;
    }
    if (major_status == GSS_S_CONTINUE_NEEDED) {
        /*
         * Some GSSAPI mechanisms may require multiple iterations to
         * establish authentication.  Most notably, when MUTUAL_AUTHENTICATION
         * flag is used, multiple round trips are needed.
         */
        ret = HTTP_UNAUTHORIZED;
        goto end;
    }
    if (client_name != GSS_C_NO_NAME) {
        gss_buffer_desc name_token = GSS_C_EMPTY_BUFFER;
        major_status = gss_display_name(&minor_status, client_name,
            &name_token, NULL);
        if (GSS_ERROR(major_status)) {
            log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
                "%s", gss_error_msg(r->pool, major_status,
                minor_status,
                "gss_export_name() failed"));
            ret = HTTP_INTERNAL_SERVER_ERROR;
            goto end;
        }
        if (name_token.length)  {
            r->user = apr_pstrdup(r->pool, name_token.value);
            gss_release_buffer(&minor_status, &name_token);
        }
        if (conf->gss_debug)
            log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
                "Authenticated user: %s",
            r->user ?  r->user : "<unknown>");
    }
    r->ap_auth_type = "Negotiate";
    ret = OK;
end:
    if (delegated_cred)
        gss_release_cred(&minor_status, &delegated_cred);
    if (output_token.length)
        gss_release_buffer(&minor_status, &output_token);
    if (client_name != GSS_C_NO_NAME)
        gss_release_name(&minor_status, &client_name);
    cleanup_gss_connection(gss_connection);
    return ret;
}
static int
already_succeeded(request_rec *r)
{
    if (ap_is_initial_req(r) || r->ap_auth_type == NULL)
        return 0;
    return (strcmp(r->ap_auth_type, "Negotiate") ||
        (strcmp(r->ap_auth_type, "Basic") && strchr(r->user, '@')));
}
static void
note_gss_auth_failure(request_rec *r, const gss_auth_config *conf,
    char *negotiate_ret_value)
{
    const char *auth_name = NULL;
    int set_basic = 0;
    char *negoauth_param;
    /* get the user realm specified in .htaccess */
    auth_name = ap_auth_name(r);
    if (conf->gss_debug)
           log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
            "note_gss_auth_failure: auth_name = %s",
            auth_name ? auth_name : "<undefined>");
    if (negotiate_ret_value != NULL) {
        negoauth_param = (*negotiate_ret_value == '\0') ? "Negotiate" :
            apr_pstrcat(r->pool, "Negotiate ", negotiate_ret_value, NULL);
        apr_table_add(r->err_headers_out, "WWW-Authenticate", negoauth_param);
    }
}
int
gss_authenticate(request_rec *r)
{
    int ret;
    gss_auth_config *conf =
        (gss_auth_config *) ap_get_module_config(r->per_dir_config,
            &auth_gss_module);
    const char *auth_type = NULL;
    const char *auth_line = NULL;
    const char *type = NULL;
    char *negotiate_ret_value;
    static int last_return = HTTP_UNAUTHORIZED;
    /* get the type specified in .htaccess */
    type = ap_auth_type(r);
    if (conf->gss_debug)
        log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
        "gss_authenticate: type = %s", type);
    if (type == NULL || (strcasecmp(type, "GSSAPI") != 0)) {
        return DECLINED;
    }
    /* get what the user sent us in the HTTP header */
    auth_line = apr_table_get(r->headers_in, "Authorization");
    if (!auth_line) {
        if (conf->gss_debug)
            log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
                "No authentication data found");
        note_gss_auth_failure(r, conf, "\0");
        return HTTP_UNAUTHORIZED;
    }
    auth_type = ap_getword_white(r->pool, &auth_line);
    if (already_succeeded(r))
        return last_return;
    if (strcasecmp(auth_type, "Negotiate") == 0) {
        ret = authenticate_user_gss(r, conf, auth_line, &negotiate_ret_value);
    } else {
        ret = HTTP_UNAUTHORIZED;
    }
    if (ret == HTTP_UNAUTHORIZED) {
        if (conf->gss_debug)
            log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
                "Authentication failed.");
        note_gss_auth_failure(r, conf, negotiate_ret_value);
    }
    last_return = ret;
    return ret;
}
components/apache2/mod_auth_gss/mod_auth_gss.html
New file
@@ -0,0 +1,174 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta name="generator" content="HTML Tidy, see www.w3.org" />
    <title>Apache module mod_auth_gss</title>
  </head>
  <!-- Background white, links blue (unvisited), navy (visited), red (active) -->
  <body bgcolor="#FFFFFF" text="#000000" link="#0000FF"
  vlink="#000080" alink="#FF0000">
        <div align="CENTER">
      <img src="../images/sub.gif" alt="[APACHE DOCUMENTATION]" />
      <h3>Apache HTTP Server Version 1.3</h3>
    </div>
    <h1 align="CENTER">Module mod_auth_gss</h1>
    <p>This module provides for user authentication using GSSAPI Authentication.</p>
    <p><a href="module-dict.html#Status"
    rel="Help"><strong>Status:</strong></a> Extension<br />
     <a href="module-dict.html#SourceFile"
    rel="Help"><strong>Source File:</strong></a> mod_auth_gss.c<br />
     <a href="module-dict.html#ModuleIdentifier"
    rel="Help"><strong>Module Identifier:</strong></a>
    auth_gss_module<br />
    <h2>Summary</h2>
    <p>This module implements GSSAPI authentication using the
    "WWW-Authenticate: Negotiate" protocol.   This typically
    requires the client and the server systems to have support for
    GSSAPI and a properly configured security mechanism (usually
    Kerberos V5) to be used by GSSAPI.
    <h2>Directives</h2>
    <ul>
      <li><a href="#authgssservicename">AuthGSSServiceName</a></li>
      <li><a href="#authgsskeytabfile">AuthGSSKeytabFile</a></li>
      <li><a href="#aughgssdebug">AuthGSSDebug</a></li>
    </ul>
    <h2>Using GSSAPI Authentication</h2>
    <p>Before using GSSAPI authentication with Apache, the
    system must already have been configured to use Kerberos V5
    authentication.   All of the major Kerberos V5
    implementation (MIT KRB5, Heimdal, Sun, IBM, HP, Microsoft)
    currently support Kerberos V5 GSSAPI mechanisms.
    Configuring Kerberos is beyond the scope of this document.
    Adding GSSAPI authentication support to the web extends
    Single sign on capabilities to the intranet and reduces
    the risks involved in having users constantly entering
    username/password combinations when accessing websites.
    <p>
    <h3>Configure a Service Principal</h3>
    <p>The default service principal that mod_auth_gss will
    try to use is "HTTP/f.q.d.n".  The key for this principal
    must be stored in a keytab file that is readable by the
    Apache server, but it should be protected from access
    by anyone else, and should <b>definitely not</b> be
    stored in an area that can be browsed by clients.
    <p>
    Example:  the Apache server is on host "www.foo.com".
    Create a principal called "HTTP/www.foo.com".
    Store the key for this principal in a protected keytab
    file.   Using MIT Kerberos V5:
    <br>
    <pre>
    $ kadmin
    $ kadmin> ktadd -k /var/apache/http.keytab  HTTP/www.foo.com
    $ kadmin> quit
    </pre>
    <p>Once the keys are created and stored, using GSSAPI
    authentication is very simple.  Set up the authentication
    type for the directories being protected to be "GSSAPI".
    If the keytab or service name chosen is not the defaults
    ("HTTP" and "/var/apache/http.keytab", respectively), then
    you may use the above mentioned directives to override
    the default values. Example:
<br>
<pre>
&lt;Directory /var/apache/htdocs/krb5&gt;
    AuthType    GSSAPI
    ServiceName HTTP
    KeytabFile  /var/apache/http.keytab
    GssDebug    0
    Require valid-user
    AllowOverride All
&lt;/Directory&gt;
</pre>
    <p>GSSAPI authentication provides a more secure authentication
    system, but only works with supporting browsers. As of this writing
    (April 2004), the only major browsers which support digest
    authentication are <a href="http://www.mozilla.org">Mozilla 1.7
    (and later)</a>, and <a href="http://www.microsoft.com/windows/ie/">MS Internet
    Explorer 5.0</a>.
    <p>It is recommended that this authentication method be combined
    with TLS security (mod_ssl, for example) to further secure the
    authentication data being exchanged.
    <h2><a id="authgssservicename"
    name="authgssservicename">AuthGSSServiceName</a> directive</h2>
    <a href="directive-dict.html#Syntax"
    rel="Help"><strong>Syntax:</strong></a> AuthGSSServiceName
    <em>name</em><br />
     <a href="directive-dict.html#Context"
    rel="Help"><strong>Context:</strong></a> directory,
    .htaccess<br />
     <a href="directive-dict.html#Override"
    rel="Help"><strong>Override:</strong></a> FileInfo, Indexes, Limit, Options<br />
     <a href="directive-dict.html#Status"
    rel="Help"><strong>Status:</strong></a> Extension<br />
     <a href="directive-dict.html#Module"
    rel="Help"><strong>Module:</strong></a> mod_auth_gss
    <p>The AuthGSSServiceName directive sets the name of Kerberos service
    principal that the server uses to authenticate the client requests.
    The name given is appended with the fully qualified host name to
    make the complete service principal name. Ex:  <b>HTTP/www.fooc.om</b>
    </p>
    <h2><a id="authgsskeytabfile"
    name="authgsskeytabfile">AuthGSSKeytabFile</a> directive</h2>
    <a href="directive-dict.html#Syntax"
    rel="Help"><strong>Syntax:</strong></a> AuthGSSKeytabFile
    <em>filename</em><br />
     <a href="directive-dict.html#Context"
    rel="Help"><strong>Context:</strong></a> directory,
    .htaccess<br />
     <a href="directive-dict.html#Override"
    rel="Help"><strong>Override:</strong></a> FileInfo, Indexes, Limit, Options<br />
     <a href="directive-dict.html#Status"
    rel="Help"><strong>Status:</strong></a> Extension<br />
     <a href="directive-dict.html#Module"
    rel="Help"><strong>Module:</strong></a> mod_auth_gss
    <p>The AuthGSSKeytabFile directive sets the filename of the
    file where the Apache server's Kerberos credentials are stored.
    <h2><a id="authgssdebug"
    name="authgsskeytabfile">AuthGSSDebug</a> directive</h2>
    <a href="directive-dict.html#Syntax"
    rel="Help"><strong>Syntax:</strong></a> AuthGSSDebug
    <em>0 | 1</em><br />
     <a href="directive-dict.html#Context"
    rel="Help"><strong>Context:</strong></a> directory,
    .htaccess<br />
     <a href="directive-dict.html#Override"
    rel="Help"><strong>Override:</strong></a> FileInfo, Indexes, Limit, Options<br />
     <a href="directive-dict.html#Status"
    rel="Help"><strong>Status:</strong></a> Extension<br />
     <a href="directive-dict.html#Module"
    rel="Help"><strong>Module:</strong></a> mod_auth_gss
    <p>The AuthGSSDebug directive toggles the debug logging
    facility used by the GSSAPI authentication module.  0 disables
    debug logging, 1 enables it.
        <hr />
    <h3 align="CENTER">Apache HTTP Server Version 1.3</h3>
    <a href="./"><img src="../images/index.gif" alt="Index" /></a>
    <a href="../"><img src="../images/home.gif" alt="Home" /></a>
  </body>
</html>
components/apache2/mod_sed/libsed.h
New file
@@ -0,0 +1,175 @@
/*
 * Copyright (c) 2005, 2008 Sun Microsystems, Inc. All Rights Reserved.
 * Use is subject to license terms.
 *
 *    Copyright (c) 1984 AT&T
 *      All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef LIBSED_H
#define LIBSED_H
#ifdef __cplusplus
extern "C" {
#endif
#include <limits.h>
#include "apr_file_io.h"
#ifndef PATH_MAX
#define PATH_MAX MAX_PATH
#endif
#define SED_NLINES 256
#define SED_DEPTH 20
#define SED_LABSIZE 50
#define SED_ABUFSIZE 20
typedef struct sed_reptr_s sed_reptr_t;
struct sed_reptr_s {
    sed_reptr_t *next;
    char        *ad1;
    char        *ad2;
    char        *re1;
    sed_reptr_t *lb1;
    char        *rhs;
    int         findex;
    char        command;
    int         gfl;
    char        pfl;
    char        negfl;
    int         nrep;
};
typedef struct sed_label_s sed_label_t;
struct sed_label_s {
    char        asc[9];
    sed_reptr_t *chain;
    sed_reptr_t *address;
};
typedef apr_status_t (sed_err_fn_t)(void *data, const char *error);
typedef apr_status_t (sed_write_fn_t)(void *ctx, char *buf, int sz);
typedef struct sed_commands_s sed_commands_t;
#define NWFILES 11 /* 10 plus one for standard output */
struct sed_commands_s {
    sed_err_fn_t *errfn;
    void         *data;
    unsigned     lsize;
    char         *linebuf;
    char         *lbend;
    const char   *saveq;
    char         *cp;
    char         *lastre;
    char         *respace;
    char         sseof;
    char         *reend;
    const char   *earg;
    int          eflag;
    int          gflag;
    int          nflag;
    apr_int64_t  tlno[SED_NLINES];
    int          nlno;
    int          depth;
    char         *fname[NWFILES];
    int          nfiles;
    sed_label_t  ltab[SED_LABSIZE];
    sed_label_t  *labtab;
    sed_label_t  *lab;
    sed_label_t  *labend;
    sed_reptr_t  **cmpend[SED_DEPTH];
    sed_reptr_t  *ptrspace;
    sed_reptr_t  *ptrend;
    sed_reptr_t  *rep;
    int          nrep;
    apr_pool_t   *pool;
    int          canbefinal;
};
typedef struct sed_eval_s sed_eval_t;
struct sed_eval_s {
    sed_err_fn_t   *errfn;
    sed_write_fn_t *writefn;
    void           *data;
    sed_commands_t *commands;
    apr_int64_t    lnum;
    void           *fout;
    unsigned       lsize;
    char           *linebuf;
    char           *lspend;
    unsigned       hsize;
    char           *holdbuf;
    char           *hspend;
    unsigned       gsize;
    char           *genbuf;
    char           *lcomend;
    apr_file_t    *fcode[NWFILES];
    sed_reptr_t    *abuf[SED_ABUFSIZE];
    sed_reptr_t    **aptr;
    sed_reptr_t    *pending;
    unsigned char  *inar;
    int            nrep;
    int            dolflag;
    int            sflag;
    int            jflag;
    int            delflag;
    int            lreadyflag;
    int            quitflag;
    int            finalflag;
    int            numpass;
    int            nullmatch;
    int            col;
    apr_pool_t     *pool;
};
apr_status_t sed_init_commands(sed_commands_t *commands, sed_err_fn_t *errfn, void *data,
                               apr_pool_t *p);
apr_status_t sed_compile_string(sed_commands_t *commands, const char *s);
apr_status_t sed_compile_file(sed_commands_t *commands, apr_file_t *fin);
char* sed_get_finalize_error(const sed_commands_t *commands, apr_pool_t* pool);
int sed_canbe_finalized(const sed_commands_t *commands);
void sed_destroy_commands(sed_commands_t *commands);
apr_status_t sed_init_eval(sed_eval_t *eval, sed_commands_t *commands,
                           sed_err_fn_t *errfn, void *data,
                           sed_write_fn_t *writefn, apr_pool_t *p);
apr_status_t sed_reset_eval(sed_eval_t *eval, sed_commands_t *commands, sed_err_fn_t *errfn, void *data);
apr_status_t sed_eval_buffer(sed_eval_t *eval, const char *buf, int bufsz, void *fout);
apr_status_t sed_eval_file(sed_eval_t *eval, apr_file_t *fin, void *fout);
apr_status_t sed_finalize_eval(sed_eval_t *eval, void *f);
void sed_destroy_eval(sed_eval_t *eval);
#ifdef __cplusplus
}
#endif
#endif /* LIBSED_H */
components/apache2/mod_sed/mod_sed.c
New file
@@ -0,0 +1,537 @@
/*
 * Copyright (c) 2005, 2008 Sun Microsystems, Inc. All Rights Reserved.
 * Use is subject to license terms.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "httpd.h"
#include "http_config.h"
#include "http_log.h"
#include "apr_strings.h"
#include "apr_general.h"
#include "util_filter.h"
#include "apr_buckets.h"
#include "http_request.h"
#include "libsed.h"
static const char *sed_filter_name = "Sed";
#define MODSED_OUTBUF_SIZE 8000
#define MAX_TRANSIENT_BUCKETS 50
typedef struct sed_expr_config
{
    sed_commands_t *sed_cmds;
    const char *last_error;
} sed_expr_config;
typedef struct sed_config
{
    sed_expr_config output;
    sed_expr_config input;
} sed_config;
/* Context for filter invocation for single HTTP request */
typedef struct sed_filter_ctxt
{
    sed_eval_t eval;
    ap_filter_t *f;
    request_rec *r;
    apr_bucket_brigade *bb;
    char *outbuf;
    char *curoutbuf;
    int bufsize;
    apr_pool_t *tpool;
    int numbuckets;
} sed_filter_ctxt;
module AP_MODULE_DECLARE_DATA sed_module;
/* This function will be call back from libsed functions if there is any error
 * happend during execution of sed scripts
 */
static apr_status_t log_sed_errf(void *data, const char *error)
{
    request_rec *r = (request_rec *) data;
    ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, error);
    return APR_SUCCESS;
}
/* This function will be call back from libsed functions if there is any
 * compilation error.
 */
static apr_status_t sed_compile_errf(void *data, const char *error)
{
    sed_expr_config *sed_cfg = (sed_expr_config *) data;
    sed_cfg->last_error = error;
    return APR_SUCCESS;
}
/* clear the temporary pool (used for transient buckets)
 */
static void clear_ctxpool(sed_filter_ctxt* ctx)
{
    apr_pool_clear(ctx->tpool);
    ctx->outbuf = NULL;
    ctx->curoutbuf = NULL;
    ctx->numbuckets = 0;
}
/* alloc_outbuf
 * allocate output buffer
 */
static void alloc_outbuf(sed_filter_ctxt* ctx)
{
    ctx->outbuf = apr_palloc(ctx->tpool, ctx->bufsize + 1);
    ctx->curoutbuf = ctx->outbuf;
}
/* append_bucket
 * Allocate a new bucket from buf and sz and append to ctx->bb
 */
static apr_status_t append_bucket(sed_filter_ctxt* ctx, char* buf, int sz)
{
    apr_status_t status = APR_SUCCESS;
    apr_bucket *b;
    if (ctx->tpool == ctx->r->pool) {
        /* We are not using transient bucket */
        b = apr_bucket_pool_create(buf, sz, ctx->r->pool,
                                   ctx->r->connection->bucket_alloc);
        APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
    }
    else {
        /* We are using transient bucket */
        b = apr_bucket_transient_create(buf, sz,
                                        ctx->r->connection->bucket_alloc);
        APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
        ctx->numbuckets++;
        if (ctx->numbuckets >= MAX_TRANSIENT_BUCKETS) {
            b = apr_bucket_flush_create(ctx->r->connection->bucket_alloc);
            APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
            status = ap_pass_brigade(ctx->f->next, ctx->bb);
            apr_brigade_cleanup(ctx->bb);
            clear_ctxpool(ctx);
        }
    }
    return status;
}
/*
 * flush_output_buffer
 * Flush the  output data (stored in ctx->outbuf)
 */
static apr_status_t flush_output_buffer(sed_filter_ctxt *ctx)
{
    int size = ctx->curoutbuf - ctx->outbuf;
    char *out;
    apr_status_t status = APR_SUCCESS;
    if ((ctx->outbuf == NULL) || (size <=0))
        return status;
    out = apr_palloc(ctx->tpool, size);
    memcpy(out, ctx->outbuf, size);
    status = append_bucket(ctx, out, size);
    ctx->curoutbuf = ctx->outbuf;
    return status;
}
/* This is a call back function. When libsed wants to generate the output,
 * this function will be invoked.
 */
static apr_status_t sed_write_output(void *dummy, char *buf, int sz)
{
    /* dummy is basically filter context. Context is passed during invocation
     * of sed_eval_buffer
     */
    int remainbytes = 0;
    apr_status_t status = APR_SUCCESS;
    sed_filter_ctxt *ctx = (sed_filter_ctxt *) dummy;
    if (ctx->outbuf == NULL) {
        alloc_outbuf(ctx);
    }
    remainbytes = ctx->bufsize - (ctx->curoutbuf - ctx->outbuf);
    if (sz >= remainbytes) {
        if (remainbytes > 0) {
            memcpy(ctx->curoutbuf, buf, remainbytes);
            buf += remainbytes;
            sz -= remainbytes;
            ctx->curoutbuf += remainbytes;
        }
        /* buffer is now full */
        status = append_bucket(ctx, ctx->outbuf, ctx->bufsize);
        /* old buffer is now used so allocate new buffer */
        alloc_outbuf(ctx);
        /* if size is bigger than the allocated buffer directly add to output
         * brigade */
        if ((status == APR_SUCCESS) && (sz >= ctx->bufsize)) {
            char* newbuf = apr_palloc(ctx->tpool, sz);
            memcpy(newbuf, buf, sz);
            status = append_bucket(ctx, newbuf, sz);
            /* pool might get clear after append_bucket */
            if (ctx->outbuf == NULL) {
                alloc_outbuf(ctx);
            }
        }
        else {
            memcpy(ctx->curoutbuf, buf, sz);
            ctx->curoutbuf += sz;
        }
    }
    else {
        memcpy(ctx->curoutbuf, buf, sz);
        ctx->curoutbuf += sz;
    }
    return status;
}
/* Compile a sed expression. Compiled context is saved in sed_cfg->sed_cmds.
 * Memory required for compilation context is allocated from cmd->pool.
 */
static apr_status_t compile_sed_expr(sed_expr_config *sed_cfg,
                                     cmd_parms *cmd,
                                     const char *expr)
{
    apr_status_t status = APR_SUCCESS;
    if (!sed_cfg->sed_cmds) {
        sed_commands_t *sed_cmds;
        sed_cmds = apr_pcalloc(cmd->pool, sizeof(sed_commands_t));
        status = sed_init_commands(sed_cmds, sed_compile_errf, sed_cfg,
                                   cmd->pool);
        if (status != APR_SUCCESS) {
            sed_destroy_commands(sed_cmds);
            return status;
        }
        sed_cfg->sed_cmds = sed_cmds;
    }
    status = sed_compile_string(sed_cfg->sed_cmds, expr);
    if (status != APR_SUCCESS) {
        sed_destroy_commands(sed_cfg->sed_cmds);
        sed_cfg->sed_cmds = NULL;
    }
    return status;
}
/* sed eval cleanup function */
static apr_status_t sed_eval_cleanup(void *data)
{
    sed_eval_t *eval = (sed_eval_t *) data;
    sed_destroy_eval(eval);
    return APR_SUCCESS;
}
/* Initialize sed filter context. If successful then context is set in f->ctx
 */
static apr_status_t init_context(ap_filter_t *f, sed_expr_config *sed_cfg, int usetpool)
{
    apr_status_t status;
    sed_filter_ctxt* ctx;
    request_rec *r = f->r;
    /* Create the context. Call sed_init_eval. libsed will generated
     * output by calling sed_write_output and generates any error by
     * invoking log_sed_errf.
     */
    ctx = apr_pcalloc(r->pool, sizeof(sed_filter_ctxt));
    ctx->r = r;
    ctx->bb = NULL;
    ctx->numbuckets = 0;
    ctx->f = f;
    status = sed_init_eval(&ctx->eval, sed_cfg->sed_cmds, log_sed_errf,
                           r, &sed_write_output, r->pool);
    if (status != APR_SUCCESS) {
        return status;
    }
    apr_pool_cleanup_register(r->pool, &ctx->eval, sed_eval_cleanup,
                              apr_pool_cleanup_null);
    ctx->bufsize = MODSED_OUTBUF_SIZE;
    if (usetpool) {
        apr_pool_create(&(ctx->tpool), r->pool);
    }
    else {
        ctx->tpool = r->pool;
    }
    alloc_outbuf(ctx);
    f->ctx = ctx;
    return APR_SUCCESS;
}
/* Entry function for Sed output filter */
static apr_status_t sed_response_filter(ap_filter_t *f,
                                        apr_bucket_brigade *bb)
{
    apr_bucket *b;
    apr_status_t status;
    sed_config *cfg = ap_get_module_config(f->r->per_dir_config,
                                           &sed_module);
    sed_filter_ctxt *ctx = f->ctx;
    sed_expr_config *sed_cfg = &cfg->output;
    if ((sed_cfg == NULL) || (sed_cfg->sed_cmds == NULL)) {
        /* No sed expressions */
        ap_remove_output_filter(f);
        return ap_pass_brigade(f->next, bb);
    }
    if (ctx == NULL) {
        if (APR_BUCKET_IS_EOS(APR_BRIGADE_FIRST(bb))) {
            /* no need to run sed filter for Head requests */
            ap_remove_output_filter(f);
            return ap_pass_brigade(f->next, bb);
        }
        status = init_context(f, sed_cfg, 1);
        if (status != APR_SUCCESS)
             return status;
        ctx = f->ctx;
        apr_table_unset(f->r->headers_out, "Content-Length");
    }
    ctx->bb = apr_brigade_create(f->r->pool, f->c->bucket_alloc);
    /* Here is the main logic. Iterate through all the buckets, read the
     * content of the bucket, call sed_eval_buffer on the data.
     * sed_eval_buffer will read the data line by line, run filters on each
     * line. sed_eval_buffer will generates the output by calling
     * sed_write_output which will add the output to ctx->bb. At the end of
     * the loop, ctx->bb is passed to the next filter in chain. At the end of
     * the data, if new line is not found then sed_eval_buffer will store the
     * data in it's own buffer.
     *
     * Once eos bucket is found then sed_finalize_eval will flush the rest of
     * the data. If there is no new line in last line of data, new line is
     * appended (that is a solaris sed behavior). libsed's internal memory for
     * evaluation is allocated on request's pool so it will be cleared once
     * request is over.
     *
     * If flush bucket is found then append the the flush bucket to ctx->bb
     * and pass it to next filter. There may be some data which will still be
     * in sed's internal buffer which can't be flushed until new line
     * character is arrived.
     */
    for (b = APR_BRIGADE_FIRST(bb); b != APR_BRIGADE_SENTINEL(bb);) {
        const char *buf = NULL;
        apr_size_t bytes = 0;
        if (APR_BUCKET_IS_EOS(b)) {
            apr_bucket *b1 = APR_BUCKET_NEXT(b);
            /* Now clean up the internal sed buffer */
            sed_finalize_eval(&ctx->eval, ctx);
            status = flush_output_buffer(ctx);
            if (status != APR_SUCCESS) {
                clear_ctxpool(ctx);
                return status;
            }
            APR_BUCKET_REMOVE(b);
            /* Insert the eos bucket to ctx->bb brigade */
            APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
            b = b1;
        }
        else if (APR_BUCKET_IS_FLUSH(b)) {
            apr_bucket *b1 = APR_BUCKET_NEXT(b);
            APR_BUCKET_REMOVE(b);
            status = flush_output_buffer(ctx);
            if (status != APR_SUCCESS) {
                clear_ctxpool(ctx);
                return status;
            }
            APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
            b = b1;
        }
        else if (APR_BUCKET_IS_METADATA(b)) {
            b = APR_BUCKET_NEXT(b);
        }
        else if (apr_bucket_read(b, &buf, &bytes, APR_BLOCK_READ)
                 == APR_SUCCESS) {
            apr_bucket *b1 = APR_BUCKET_NEXT(b);
            status = sed_eval_buffer(&ctx->eval, buf, bytes, ctx);
            if (status != APR_SUCCESS) {
                clear_ctxpool(ctx);
                return status;
            }
            APR_BUCKET_REMOVE(b);
            apr_bucket_delete(b);
            b = b1;
        }
        else {
            apr_bucket *b1 = APR_BUCKET_NEXT(b);
            APR_BUCKET_REMOVE(b);
            b = b1;
        }
    }
    apr_brigade_cleanup(bb);
    status = flush_output_buffer(ctx);
    if (status != APR_SUCCESS) {
        clear_ctxpool(ctx);
        return status;
    }
    if (!APR_BRIGADE_EMPTY(ctx->bb)) {
        status = ap_pass_brigade(f->next, ctx->bb);
        apr_brigade_cleanup(ctx->bb);
    }
    clear_ctxpool(ctx);
    return status;
}
/* Entry function for Sed input filter */
static apr_status_t sed_request_filter(ap_filter_t *f,
                                       apr_bucket_brigade *bb,
                                       ap_input_mode_t mode,
                                       apr_read_type_e block,
                                       apr_off_t readbytes)
{
    sed_config *cfg = ap_get_module_config(f->r->per_dir_config,
                                           &sed_module);
    sed_filter_ctxt *ctx = f->ctx;
    apr_status_t status;
    sed_expr_config *sed_cfg = &cfg->input;
    if (mode != AP_MODE_READBYTES) {
        return ap_get_brigade(f->next, bb, mode, block, readbytes);
    }
    if ((sed_cfg == NULL) || (sed_cfg->sed_cmds == NULL)) {
        /* No sed expression */
        return ap_get_brigade(f->next, bb, mode, block, readbytes);
    }
    if (!ctx) {
        if (!ap_is_initial_req(f->r)) {
            ap_remove_input_filter(f);
            /* XXX : Should we filter the sub requests too */
            return ap_get_brigade(f->next, bb, mode, block, readbytes);
        }
        status = init_context(f, sed_cfg, 0);
        if (status != APR_SUCCESS)
             return status;
        ctx = f->ctx;
        ctx->bb = apr_brigade_create(f->r->pool, f->c->bucket_alloc);
    }
    /* Here is the logic :
     * Read the readbytes data from next level fiter into bbinp. Loop through
     * the buckets in bbinp and read the data from buckets and invoke
     * sed_eval_buffer on the data. libsed will generate it's output using
     * sed_write_output which will add data in ctx->bb. Do it until it have
     * atleast one bucket bucket in ctx->bb. At the end of data eos bucket
     * should be there.
     *
     * Once eos bucket is seen, then invoke sed_finalize_eval to clear the
     * output. If the last byte of data is not a new line character then sed
     * will add a new line to the data that is default sed behaviour. Note
     * that using this filter with POST data, caller may not expect this
     * behaviour.
     *
     * If next level fiter generate the flush bucket, we can't do much about
     * it. If we want to return the flush bucket in brigade bb (to the caller)
     * the question is where to add it?
     */
    while (APR_BRIGADE_EMPTY(ctx->bb)) {
        apr_bucket_brigade *bbinp;
        apr_bucket *b;
        /* read the bytes from next level filter */
        bbinp = apr_brigade_create(f->r->pool, f->c->bucket_alloc);
        status = ap_get_brigade(f->next, bbinp, mode, block, readbytes);
        if (status != APR_SUCCESS) {
            return status;
        }
        for (b = APR_BRIGADE_FIRST(bbinp); b != APR_BRIGADE_SENTINEL(bbinp);
             b = APR_BUCKET_NEXT(b)) {
            const char *buf = NULL;
            apr_size_t bytes;
            if (APR_BUCKET_IS_EOS(b)) {
                /* eos bucket. Clear the internal sed buffers */
                sed_finalize_eval(&ctx->eval, ctx);
                flush_output_buffer(ctx);
                APR_BUCKET_REMOVE(b);
                APR_BRIGADE_INSERT_TAIL(ctx->bb, b);
                break;
            }
            else if (APR_BUCKET_IS_FLUSH(b)) {
                /* What should we do with flush bucket */
                continue;
            }
            if (apr_bucket_read(b, &buf, &bytes, APR_BLOCK_READ)
                     == APR_SUCCESS) {
                status = sed_eval_buffer(&ctx->eval, buf, bytes, ctx);
                if (status != APR_SUCCESS)
                    return status;
                flush_output_buffer(ctx);
            }
        }
        apr_brigade_cleanup(bbinp);
        apr_brigade_destroy(bbinp);
    }
    if (!APR_BRIGADE_EMPTY(ctx->bb)) {
        apr_bucket_brigade *newbb = NULL;
        apr_bucket *b = NULL;
        /* This may return APR_INCOMPLETE which should be fine */
        apr_brigade_partition(ctx->bb, readbytes, &b);
        newbb = apr_brigade_split(ctx->bb, b);
        APR_BRIGADE_CONCAT(bb, ctx->bb);
        APR_BRIGADE_CONCAT(ctx->bb, newbb);
    }
    return APR_SUCCESS;
}
static const char *sed_add_expr(cmd_parms *cmd, void *cfg, const char *arg)
{
    int offset = (int) (long) cmd->info;
    sed_expr_config *sed_cfg =
                (sed_expr_config *) (((char *) cfg) + offset);
    if (compile_sed_expr(sed_cfg, cmd, arg) != APR_SUCCESS) {
        return apr_psprintf(cmd->temp_pool,
                            "Failed to compile sed expression. %s",
                            sed_cfg->last_error);
    }
    return NULL;
}
static void *create_sed_dir_config(apr_pool_t *p, char *s)
{
    sed_config *cfg = apr_pcalloc(p, sizeof(sed_config));
    return cfg;
}
static const command_rec sed_filter_cmds[] = {
    AP_INIT_TAKE1("OutputSed", sed_add_expr,
                  (void *) APR_OFFSETOF(sed_config, output),
                  ACCESS_CONF,
                  "Sed regular expression for Response"),
    AP_INIT_TAKE1("InputSed", sed_add_expr,
                  (void *) APR_OFFSETOF(sed_config, input),
                  ACCESS_CONF,
                  "Sed regular expression for Request"),
    {NULL}
};
static void register_hooks(apr_pool_t *p)
{
    ap_register_output_filter(sed_filter_name, sed_response_filter, NULL,
                              AP_FTYPE_RESOURCE);
    ap_register_input_filter(sed_filter_name, sed_request_filter, NULL,
                             AP_FTYPE_RESOURCE);
}
module AP_MODULE_DECLARE_DATA sed_module = {
    STANDARD20_MODULE_STUFF,
    create_sed_dir_config,      /* dir config creater */
    NULL,                       /* dir merger --- default is to override */
    NULL,                       /* server config */
    NULL,                       /* merge server config */
    sed_filter_cmds,            /* command table */
    register_hooks              /* register hooks */
};
components/apache2/mod_sed/regexp.c
New file
@@ -0,0 +1,601 @@
/*
 * Copyright (c) 2005, 2008 Sun Microsystems, Inc. All Rights Reserved.
 * Use is subject to license terms.
 *
 *    Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
 *      All Rights Reserved
 *
 * University Copyright- Copyright (c) 1982, 1986, 1988
 * The Regents of the University of California
 * All Rights Reserved
 *
 * University Acknowledgment- Portions of this document are derived from
 * software developed by the University of California, Berkeley, and its
 * contributors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/* Code moved from regexp.h */
#include "apr.h"
#include "apr_lib.h"
#ifdef APR_HAVE_LIMITS_H
#include <limits.h>
#endif
#if APR_HAVE_STDLIB_H
#include <stdlib.h>
#endif
#include "libsed.h"
#include "regexp.h"
#include "sed.h"
#define GETC() ((unsigned char)*sp++)
#define PEEKC() ((unsigned char)*sp)
#define UNGETC(c) (--sp)
#define SEDCOMPILE_ERROR(c) { \
            regerrno = c; \
            goto out; \
            }
#define ecmp(s1, s2, n)    (strncmp(s1, s2, n) == 0)
#define uletter(c) (isalpha(c) || c == '_')
static unsigned char bittab[] = { 1, 2, 4, 8, 16, 32, 64, 128 };
static int regerr(sed_commands_t *commands, int err);
static void comperr(sed_commands_t *commands, char *msg);
static void getrnge(char *str, step_vars_storage *vars);
static int _advance(char *, char *, step_vars_storage *);
extern int sed_step(char *p1, char *p2, int circf, step_vars_storage *vars);
static void comperr(sed_commands_t *commands, char *msg)
{
    command_errf(commands, msg, commands->linebuf);
}
/*
*/
static int regerr(sed_commands_t *commands, int err)
{
    switch(err) {
    case 0:
        /* No error */
        break;
    case 11:
        comperr(commands, "Range endpoint too large: %s");
        break;
    case 16:
        comperr(commands, "Bad number: %s");
        break;
    case 25:
        comperr(commands, "``\\digit'' out of range: %s");
        break;
    case 36:
        comperr(commands, "Illegal or missing delimiter: %s");
        break;
    case 41:
        comperr(commands, "No remembered search string: %s");
        break;
    case 42:
        comperr(commands, "\\( \\) imbalance: %s");
        break;
    case 43:
        comperr(commands, "Too many \\(: %s");
        break;
    case 44:
        comperr(commands, "More than 2 numbers given in \\{ \\}: %s");
        break;
    case 45:
        comperr(commands, "} expected after \\: %s");
        break;
    case 46:
        comperr(commands, "First number exceeds second in \\{ \\}: %s");
        break;
    case 49:
        comperr(commands, "[ ] imbalance: %s");
        break;
    case 50:
        comperr(commands, SEDERR_TMMES);
        break;
    default:
        comperr(commands, "Unknown regexp error code %s\n");
        break;
    }
    return (0);
}
char *sed_compile(sed_commands_t *commands, sed_comp_args *compargs,
                  char *ep, char *endbuf, int seof)
{
    int c;
    int eof = seof;
    char *lastep;
    int cclcnt;
    char bracket[NBRA], *bracketp;
    int closed;
    int neg;
    int lc;
    int i, cflg;
    int iflag; /* used for non-ascii characters in brackets */
    int nodelim = 0;
    char *sp = commands->cp;
    int regerrno = 0;
    lastep = 0;
    if ((c = GETC()) == eof || c == '\n') {
        if (c == '\n') {
            UNGETC(c);
            nodelim = 1;
        }
        commands->cp = sp;
        goto out;
    }
    bracketp = bracket;
    compargs->circf = closed = compargs->nbra = 0;
    if (c == '^')
        compargs->circf++;
    else
        UNGETC(c);
    while (1) {
        if (ep >= endbuf)
            SEDCOMPILE_ERROR(50);
        c = GETC();
        if (c != '*' && ((c != '\\') || (PEEKC() != '{')))
            lastep = ep;
        if (c == eof) {
            *ep++ = CCEOF;
            if (bracketp != bracket)
                SEDCOMPILE_ERROR(42);
            commands->cp = sp;
            goto out;
        }
        switch (c) {
        case '.':
            *ep++ = CDOT;
            continue;
        case '\n':
            SEDCOMPILE_ERROR(36);
            commands->cp = sp;
            goto out;
        case '*':
            if (lastep == 0 || *lastep == CBRA || *lastep == CKET)
                goto defchar;
            *lastep |= STAR;
            continue;
        case '$':
            if (PEEKC() != eof && PEEKC() != '\n')
                goto defchar;
            *ep++ = CDOL;
            continue;
        case '[':
            if (&ep[17] >= endbuf)
                SEDCOMPILE_ERROR(50);
            *ep++ = CCL;
            lc = 0;
            for (i = 0; i < 16; i++)
                ep[i] = 0;
            neg = 0;
            if ((c = GETC()) == '^') {
                neg = 1;
                c = GETC();
            }
            iflag = 1;
            do {
                c &= 0377;
                if (c == '\0' || c == '\n')
                    SEDCOMPILE_ERROR(49);
                if ((c & 0200) && iflag) {
                    iflag = 0;
                    if (&ep[32] >= endbuf)
                        SEDCOMPILE_ERROR(50);
                    ep[-1] = CXCL;
                    for (i = 16; i < 32; i++)
                        ep[i] = 0;
                }
                if (c == '-' && lc != 0) {
                    if ((c = GETC()) == ']') {
                        PLACE('-');
                        break;
                    }
                    if ((c & 0200) && iflag) {
                        iflag = 0;
                        if (&ep[32] >= endbuf)
                            SEDCOMPILE_ERROR(50);
                        ep[-1] = CXCL;
                        for (i = 16; i < 32; i++)
                            ep[i] = 0;
                    }
                    while (lc < c) {
                        PLACE(lc);
                        lc++;
                    }
                }
                lc = c;
                PLACE(c);
            } while ((c = GETC()) != ']');
            if (iflag)
                iflag = 16;
            else
                iflag = 32;
            if (neg) {
                if (iflag == 32) {
                    for (cclcnt = 0; cclcnt < iflag;
                        cclcnt++)
                        ep[cclcnt] ^= 0377;
                    ep[0] &= 0376;
                } else {
                    ep[-1] = NCCL;
                    /* make nulls match so test fails */
                    ep[0] |= 01;
                }
            }
            ep += iflag;
            continue;
        case '\\':
            switch (c = GETC()) {
            case '(':
                if (compargs->nbra >= NBRA)
                    SEDCOMPILE_ERROR(43);
                *bracketp++ = compargs->nbra;
                *ep++ = CBRA;
                *ep++ = compargs->nbra++;
                continue;
            case ')':
                if (bracketp <= bracket)
                    SEDCOMPILE_ERROR(42);
                *ep++ = CKET;
                *ep++ = *--bracketp;
                closed++;
                continue;
            case '{':
                if (lastep == (char *) 0)
                    goto defchar;
                *lastep |= RNGE;
                cflg = 0;
            nlim:
                c = GETC();
                i = 0;
                do {
                    if ('0' <= c && c <= '9')
                        i = 10 * i + c - '0';
                    else
                        SEDCOMPILE_ERROR(16);
                } while (((c = GETC()) != '\\') && (c != ','));
                if (i >= 255)
                    SEDCOMPILE_ERROR(11);
                *ep++ = i;
                if (c == ',') {
                    if (cflg++)
                        SEDCOMPILE_ERROR(44);
                    if ((c = GETC()) == '\\')
                        *ep++ = (char) 255;
                    else {
                        UNGETC(c);
                        goto nlim;
                        /* get 2'nd number */
                    }
                }
                if (GETC() != '}')
                    SEDCOMPILE_ERROR(45);
                if (!cflg)    /* one number */
                    *ep++ = i;
                else if ((ep[-1] & 0377) < (ep[-2] & 0377))
                    SEDCOMPILE_ERROR(46);
                continue;
            case '\n':
                SEDCOMPILE_ERROR(36);
            case 'n':
                c = '\n';
                goto defchar;
            default:
                if (c >= '1' && c <= '9') {
                    if ((c -= '1') >= closed)
                        SEDCOMPILE_ERROR(25);
                    *ep++ = CBACK;
                    *ep++ = c;
                    continue;
                }
            }
    /* Drop through to default to use \ to turn off special chars */
        defchar:
        default:
            lastep = ep;
            *ep++ = CCHR;
            *ep++ = c;
        }
    }
out:
    if (regerrno) {
        regerr(commands, regerrno);
        return (char*) NULL;
    }
    /* XXX : Basant : what extra */
    /* int reglength = (int)(ep - expbuf); */
    return ep;
}
int sed_step(char *p1, char *p2, int circf, step_vars_storage *vars)
{
    int c;
    if (circf) {
        vars->loc1 = p1;
        return (_advance(p1, p2, vars));
    }
    /* fast check for first character */
    if (*p2 == CCHR) {
        c = p2[1];
        do {
            if (*p1 != c)
                continue;
            if (_advance(p1, p2, vars)) {
                vars->loc1 = p1;
                return (1);
            }
        } while (*p1++);
        return (0);
    }
        /* regular algorithm */
    do {
        if (_advance(p1, p2, vars)) {
            vars->loc1 = p1;
            return (1);
        }
    } while (*p1++);
    return (0);
}
static int _advance(char *lp, char *ep, step_vars_storage *vars)
{
    char *curlp;
    int c;
    char *bbeg;
    char neg;
    int ct;
    int epint; /* int value of *ep */
    while (1) {
        neg = 0;
        switch (*ep++) {
        case CCHR:
            if (*ep++ == *lp++)
                continue;
            return (0);
        case CDOT:
            if (*lp++)
                continue;
            return (0);
        case CDOL:
            if (*lp == 0)
                continue;
            return (0);
        case CCEOF:
            vars->loc2 = lp;
            return (1);
        case CXCL:
            c = (unsigned char)*lp++;
            if (ISTHERE(c)) {
                ep += 32;
                continue;
            }
            return (0);
        case NCCL:
            neg = 1;
        case CCL:
            c = *lp++;
            if (((c & 0200) == 0 && ISTHERE(c)) ^ neg) {
                ep += 16;
                continue;
            }
            return (0);
        case CBRA:
            epint = (int) *ep;
            vars->braslist[epint] = lp;
            ep++;
            continue;
        case CKET:
            epint = (int) *ep;
            vars->braelist[epint] = lp;
            ep++;
            continue;
        case CCHR | RNGE:
            c = *ep++;
            getrnge(ep, vars);
            while (vars->low--)
                if (*lp++ != c)
                    return (0);
            curlp = lp;
            while (vars->size--)
                if (*lp++ != c)
                    break;
            if (vars->size < 0)
                lp++;
            ep += 2;
            goto star;
        case CDOT | RNGE:
            getrnge(ep, vars);
            while (vars->low--)
                if (*lp++ == '\0')
                    return (0);
            curlp = lp;
            while (vars->size--)
                if (*lp++ == '\0')
                    break;
            if (vars->size < 0)
                lp++;
            ep += 2;
            goto star;
        case CXCL | RNGE:
            getrnge(ep + 32, vars);
            while (vars->low--) {
                c = (unsigned char)*lp++;
                if (!ISTHERE(c))
                    return (0);
            }
            curlp = lp;
            while (vars->size--) {
                c = (unsigned char)*lp++;
                if (!ISTHERE(c))
                    break;
            }
            if (vars->size < 0)
                lp++;
            ep += 34;        /* 32 + 2 */
            goto star;
        case NCCL | RNGE:
            neg = 1;
        case CCL | RNGE:
            getrnge(ep + 16, vars);
            while (vars->low--) {
                c = *lp++;
                if (((c & 0200) || !ISTHERE(c)) ^ neg)
                    return (0);
            }
            curlp = lp;
            while (vars->size--) {
                c = *lp++;
                if (((c & 0200) || !ISTHERE(c)) ^ neg)
                    break;
            }
            if (vars->size < 0)
                lp++;
            ep += 18;         /* 16 + 2 */
            goto star;
        case CBACK:
            epint = (int) *ep;
            bbeg = vars->braslist[epint];
            ct = vars->braelist[epint] - bbeg;
            ep++;
            if (ecmp(bbeg, lp, ct)) {
                lp += ct;
                continue;
            }
            return (0);
        case CBACK | STAR:
            epint = (int) *ep;
            bbeg = vars->braslist[epint];
            ct = vars->braelist[epint] - bbeg;
            ep++;
            curlp = lp;
            while (ecmp(bbeg, lp, ct))
                lp += ct;
            while (lp >= curlp) {
                if (_advance(lp, ep, vars))
                    return (1);
                lp -= ct;
            }
            return (0);
        case CDOT | STAR:
            curlp = lp;
            while (*lp++);
            goto star;
        case CCHR | STAR:
            curlp = lp;
            while (*lp++ == *ep);
            ep++;
            goto star;
        case CXCL | STAR:
            curlp = lp;
            do {
                c = (unsigned char)*lp++;
            } while (ISTHERE(c));
            ep += 32;
            goto star;
        case NCCL | STAR:
            neg = 1;
        case CCL | STAR:
            curlp = lp;
            do {
                c = *lp++;
            } while (((c & 0200) == 0 && ISTHERE(c)) ^ neg);
            ep += 16;
            goto star;
        star:
            do {
                if (--lp == vars->locs)
                    break;
                if (_advance(lp, ep, vars))
                    return (1);
            } while (lp > curlp);
            return (0);
        }
    }
}
static void getrnge(char *str, step_vars_storage *vars)
{
    vars->low = *str++ & 0377;
    vars->size = ((*str & 0377) == 255)? 20000: (*str &0377) - vars->low;
}
components/apache2/mod_sed/regexp.h
New file
@@ -0,0 +1,111 @@
/*
 * Copyright (c) 2005, 2008 Sun Microsystems, Inc. All Rights Reserved.
 * Use is subject to license terms.
 *
 *    Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T
 *      All Rights Reserved
 *
 * University Copyright- Copyright (c) 1982, 1986, 1988
 * The Regents of the University of California
 * All Rights Reserved
 *
 * University Acknowledgment- Portions of this document are derived from
 * software developed by the University of California, Berkeley, and its
 * contributors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef _REGEXP_H
#define _REGEXP_H
#include "libsed.h"
#ifdef __cplusplus
extern "C" {
#endif
#define    CBRA    2
#define    CCHR    4
#define    CDOT    8
#define    CCL    12
#define    CXCL    16
#define    CDOL    20
#define    CCEOF    22
#define    CKET    24
#define    CBACK    36
#define    NCCL    40
#define    STAR    01
#define    RNGE    03
#define    NBRA    9
#define    PLACE(c)    ep[c >> 3] |= bittab[c & 07]
#define    ISTHERE(c)    (ep[c >> 3] & bittab[c & 07])
typedef struct _step_vars_storage {
    char    *loc1, *loc2, *locs;
    char    *braslist[NBRA];
    char    *braelist[NBRA];
    int    low;
    int    size;
} step_vars_storage;
typedef struct _sed_comp_args {
    int circf; /* Regular expression starts with ^ */
    int nbra; /* braces count */
} sed_comp_args;
extern char *sed_compile(sed_commands_t *commands, sed_comp_args *compargs,
                         char *ep, char *endbuf, int seof);
extern void command_errf(sed_commands_t *commands, const char *fmt, ...);
#define SEDERR_CGMES "command garbled: %s"
#define SEDERR_SMMES "Space missing before filename: %s"
#define SEDERR_TMMES "too much command text: %s"
#define SEDERR_LTLMES "label too long: %s"
#define SEDERR_ULMES "undefined label: %s"
#define SEDERR_DLMES "duplicate labels: %s"
#define SEDERR_TMLMES "too many labels: %s"
#define SEDERR_AD0MES "no addresses allowed: %s"
#define SEDERR_AD1MES "only one address allowed: %s"
#define SEDERR_TOOBIG "suffix too large: %s"
#define SEDERR_OOMMES "out of memory"
#define SEDERR_COPFMES "cannot open pattern file: %s"
#define SEDERR_COIFMES "cannot open input file: %s"
#define SEDERR_TMOMES "too many {'s"
#define SEDERR_TMCMES "too many }'s"
#define SEDERR_NRMES "first RE may not be null"
#define SEDERR_UCMES "unrecognized command: %s"
#define SEDERR_TMWFMES "too many files in w commands"
#define SEDERR_COMES "cannot open %s"
#define SEDERR_CCMES "cannot create %s"
#define SEDERR_TMLNMES "too many line numbers"
#define SEDERR_TMAMES "too many appends after line %lld"
#define SEDERR_TMRMES "too many reads after line %lld"
#define SEDERR_DOORNG "``\\digit'' out of range: %s"
#define SEDERR_EDMOSUB "ending delimiter missing on substitution: %s"
#define SEDERR_EDMOSTR "ending delimiter missing on string: %s"
#define SEDERR_FNTL "file name too long: %s"
#define SEDERR_CLTL "command line too long"
#define SEDERR_TSNTSS "transform strings not the same size: %s"
#define SEDERR_OLTL "output line too long."
#define SEDERR_HSOVERFLOW "hold space overflowed."
#define SEDERR_INTERNAL "internal sed error"
#ifdef __cplusplus
}
#endif
#endif /* _REGEXP_H */
components/apache2/mod_sed/sed.h
New file
@@ -0,0 +1,61 @@
/*
 * Copyright (c) 2005, 2008 Sun Microsystems, Inc. All Rights Reserved.
 * Use is subject to license terms.
 *
 *    Copyright (c) 1984 AT&T
 *      All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#ifndef _SED_H
#define _SED_H
#include <stdlib.h>
#include <limits.h>
#define CEND    16
#define CLNUM   14
#define RESIZE  10000
#define LBSIZE  1000
#define ACOM    01
#define BCOM    020
#define CCOM    02
#define CDCOM   025
#define CNCOM   022
#define COCOM   017
#define CPCOM   023
#define DCOM    03
#define ECOM    015
#define EQCOM   013
#define FCOM    016
#define GCOM    027
#define CGCOM   030
#define HCOM    031
#define CHCOM   032
#define ICOM    04
#define LCOM    05
#define NCOM    012
#define PCOM    010
#define QCOM    011
#define RCOM    06
#define SCOM    07
#define TCOM    021
#define WCOM    014
#define CWCOM   024
#define YCOM    026
#define XCOM    033
#endif /* _SED_H */
components/apache2/mod_sed/sed0.c
New file
@@ -0,0 +1,1026 @@
/*
 * Copyright (c) 2005, 2008 Sun Microsystems, Inc. All Rights Reserved.
 * Use is subject to license terms.
 *
 *    Copyright (c) 1984 AT&T
 *      All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "apr.h"
#include "apr_strings.h"
#include "libsed.h"
#include "sed.h"
#include "regexp.h"
#define CCEOF 22
static int fcomp(sed_commands_t *commands, apr_file_t *fin);
static char *compsub(sed_commands_t *commands,
                     sed_comp_args *compargs, char *rhsbuf);
static int rline(sed_commands_t *commands, apr_file_t *fin,
                 char *lbuf, char *lbend);
static char *address(sed_commands_t *commands, char *expbuf,
                     apr_status_t* status);
static char *text(sed_commands_t *commands, char *textbuf, char *endbuf);
static sed_label_t *search(sed_commands_t *commands);
static char *ycomp(sed_commands_t *commands, char *expbuf);
static char *comple(sed_commands_t *commands, sed_comp_args *compargs,
                    char *x1, char *ep, char *x3, char x4);
static sed_reptr_t *alloc_reptr(sed_commands_t *commands);
static int check_finalized(const sed_commands_t *commands);
void command_errf(sed_commands_t *commands, const char *fmt, ...)
{
    if (commands->errfn && commands->pool) {
        va_list args;
        const char* error;
        va_start(args, fmt);
        error = apr_pvsprintf(commands->pool, fmt, args);
        commands->errfn(commands->data, error);
        va_end(args);
    }
}
/*
 * sed_init_commands
 */
apr_status_t sed_init_commands(sed_commands_t *commands, sed_err_fn_t *errfn, void *data,
                               apr_pool_t *p)
{
    memset(commands, 0, sizeof(*commands));
    commands->errfn = errfn;
    commands->data = data;
    commands->labtab = commands->ltab;
    commands->lab = commands->labtab + 1;
    commands->pool = p;
    commands->respace = apr_pcalloc(p, RESIZE);
    if (commands->respace == NULL) {
        command_errf(commands, SEDERR_OOMMES);
        return APR_EGENERAL;
    }
    commands->rep = alloc_reptr(commands);
    if (commands->rep == NULL)
        return APR_EGENERAL;
    commands->rep->ad1 = commands->respace;
    commands->reend = &commands->respace[RESIZE - 1];
    commands->labend = &commands->labtab[SED_LABSIZE];
    commands->canbefinal = 1;
    return APR_SUCCESS;
}
/*
 * sed_destroy_commands
 */
void sed_destroy_commands(sed_commands_t *commands)
{
}
/*
 * sed_compile_string
 */
apr_status_t sed_compile_string(sed_commands_t *commands, const char *s)
{
    apr_status_t rv;
    commands->earg = s;
    commands->eflag = 1;
    rv = fcomp(commands, NULL);
    if (rv == APR_SUCCESS)
        commands->canbefinal = check_finalized(commands);
    commands->eflag = 0;
    return (rv != 0 ? APR_EGENERAL : APR_SUCCESS);
}
/*
 * sed_compile_file
 */
apr_status_t sed_compile_file(sed_commands_t *commands, apr_file_t *fin)
{
    apr_status_t rv = fcomp(commands, fin);
    return (rv != 0 ? APR_EGENERAL : APR_SUCCESS);
}
/*
 * sed_get_finalize_error
 */
char* sed_get_finalize_error(const sed_commands_t *commands, apr_pool_t* pool)
{
    const sed_label_t *lab;
    if (commands->depth) {
        return SEDERR_TMOMES;
    }
    /* Empty branch chain is not a issue */
    for (lab = commands->labtab + 1; lab < commands->lab; lab++) {
        char *error;
        if (lab->address == 0) {
            error = apr_psprintf(pool, SEDERR_ULMES, lab->asc);
            return error;
        }
        if (lab->chain) {
            return SEDERR_INTERNAL;
        }
    }
    return NULL;
}
/*
 * sed_canbe_finalized
 */
int sed_canbe_finalized(const sed_commands_t *commands)
{
    return commands->canbefinal;
}
/*
 * check_finalized
 */
static int check_finalized(const sed_commands_t *commands)
{
    const sed_label_t *lab;
    if (commands->depth) {
        return 0;
    }
    /* Empty branch chain is not a issue */
    for (lab = commands->labtab + 1; lab < commands->lab; lab++) {
        if (lab->address == 0 || (lab->chain)) {
            return 0;
        }
    }
    return 1;
}
/*
 * dechain
 */
static void dechain(sed_label_t *lpt, sed_reptr_t *address)
{
    sed_reptr_t *rep;
    if ((lpt == NULL) || (lpt->chain == NULL) || (address == NULL))
        return;
    rep = lpt->chain;
    while (rep->lb1) {
        sed_reptr_t *next;
        next = rep->lb1;
        rep->lb1 = address;
        rep = next;
    }
    rep->lb1 = address;
    lpt->chain = NULL;
}
/*
 * fcomp
 */
static int fcomp(sed_commands_t *commands, apr_file_t *fin)
{
    char *p, *op, *tp;
    sed_reptr_t *pt, *pt1;
    int i, ii;
    sed_label_t *lpt;
    char fnamebuf[APR_PATH_MAX];
    apr_status_t status;
    sed_comp_args compargs;
    op = commands->lastre;
    if (!commands->linebuf) {
        commands->linebuf = apr_pcalloc(commands->pool, LBSIZE + 1);
    }
    if (rline(commands, fin, commands->linebuf,
              (commands->linebuf + LBSIZE + 1)) < 0)
        return 0;
    if (*commands->linebuf == '#') {
        if (commands->linebuf[1] == 'n')
            commands->nflag = 1;
    }
    else {
        commands->cp = commands->linebuf;
        goto comploop;
    }
    for (;;) {
        if (rline(commands, fin, commands->linebuf,
                  (commands->linebuf + LBSIZE + 1)) < 0)
            break;
        commands->cp = commands->linebuf;
comploop:
        while (*commands->cp == ' ' || *commands->cp == '\t')
            commands->cp++;
        if (*commands->cp == '\0' || *commands->cp == '#')
            continue;
        if (*commands->cp == ';') {
            commands->cp++;
            goto comploop;
        }
        p = address(commands, commands->rep->ad1, &status);
        if (status != APR_SUCCESS) {
            command_errf(commands, SEDERR_CGMES, commands->linebuf);
            return -1;
        }
        if (p == commands->rep->ad1) {
            if (op)
                commands->rep->ad1 = op;
            else {
                command_errf(commands, SEDERR_NRMES);
                return -1;
            }
        } else if (p == 0) {
            p = commands->rep->ad1;
            commands->rep->ad1 = 0;
        } else {
            op = commands->rep->ad1;
            if (*commands->cp == ',' || *commands->cp == ';') {
                commands->cp++;
                commands->rep->ad2 = p;
                p = address(commands, commands->rep->ad2, &status);
                if ((status != APR_SUCCESS) || (p == 0)) {
                    command_errf(commands, SEDERR_CGMES, commands->linebuf);
                    return -1;
                }
                if (p == commands->rep->ad2)
                    commands->rep->ad2 = op;
                else
                    op = commands->rep->ad2;
            } else
                commands->rep->ad2 = 0;
        }
        if(p > &commands->respace[RESIZE-1]) {
            command_errf(commands, SEDERR_TMMES);
            return -1;
        }
        while (*commands->cp == ' ' || *commands->cp == '\t')
            commands->cp++;
swit:
        switch(*commands->cp++) {
        default:
            command_errf(commands, SEDERR_UCMES, commands->linebuf);
            return -1;
        case '!':
            commands->rep->negfl = 1;
            goto swit;
        case '{':
            commands->rep->command = BCOM;
            commands->rep->negfl = !(commands->rep->negfl);
            commands->cmpend[commands->depth++] = &commands->rep->lb1;
            commands->rep = alloc_reptr(commands);
            commands->rep->ad1 = p;
            if (*commands->cp == '\0')
                continue;
            goto comploop;
        case '}':
            if (commands->rep->ad1) {
                command_errf(commands, SEDERR_AD0MES, commands->linebuf);
                return -1;
            }
            if (--commands->depth < 0) {
                command_errf(commands, SEDERR_TMCMES);
                return -1;
            }
            *commands->cmpend[commands->depth] = commands->rep;
            commands->rep->ad1 = p;
            continue;
        case '=':
            commands->rep->command = EQCOM;
            if (commands->rep->ad2) {
                command_errf(commands, SEDERR_AD1MES, commands->linebuf);
                return -1;
            }
            break;
        case ':':
            if (commands->rep->ad1) {
                command_errf(commands, SEDERR_AD0MES, commands->linebuf);
                return -1;
            }
            while (*commands->cp++ == ' ');
            commands->cp--;
            tp = commands->lab->asc;
            while ((*tp++ = *commands->cp++)) {
                if (tp >= &(commands->lab->asc[8])) {
                    command_errf(commands, SEDERR_LTLMES, commands->linebuf);
                    return -1;
                }
            }
            *--tp = '\0';
            if ((lpt = search(commands)) != NULL) {
                if (lpt->address) {
                    command_errf(commands, SEDERR_DLMES, commands->linebuf);
                    return -1;
                }
                dechain(lpt, commands->rep);
            } else {
                commands->lab->chain = 0;
                lpt = commands->lab;
                if (++commands->lab >= commands->labend) {
                    command_errf(commands, SEDERR_TMLMES, commands->linebuf);
                    return -1;
                }
            }
            lpt->address = commands->rep;
            commands->rep->ad1 = p;
            continue;
        case 'a':
            commands->rep->command = ACOM;
            if (commands->rep->ad2) {
                command_errf(commands, SEDERR_AD1MES, commands->linebuf);
                return -1;
            }
            if (*commands->cp == '\\')
                commands->cp++;
            if (*commands->cp++ != '\n') {
                command_errf(commands, SEDERR_CGMES, commands->linebuf);
                return -1;
            }
            commands->rep->re1 = p;
            p = text(commands, commands->rep->re1, commands->reend);
            if (p == NULL)
                return -1;
            break;
        case 'c':
            commands->rep->command = CCOM;
            if (*commands->cp == '\\') commands->cp++;
            if (*commands->cp++ != ('\n')) {
                command_errf(commands, SEDERR_CGMES, commands->linebuf);
                return -1;
            }
            commands->rep->re1 = p;
            p = text(commands, commands->rep->re1, commands->reend);
            if (p == NULL)
                return -1;
            break;
        case 'i':
            commands->rep->command = ICOM;
            if (commands->rep->ad2) {
                command_errf(commands, SEDERR_AD1MES, commands->linebuf);
                return -1;
            }
            if (*commands->cp == '\\') commands->cp++;
            if (*commands->cp++ != ('\n')) {
                command_errf(commands, SEDERR_CGMES, commands->linebuf);
                return -1;
            }
            commands->rep->re1 = p;
            p = text(commands, commands->rep->re1, commands->reend);
            if (p == NULL)
                return -1;
            break;
        case 'g':
            commands->rep->command = GCOM;
            break;
        case 'G':
            commands->rep->command = CGCOM;
            break;
        case 'h':
            commands->rep->command = HCOM;
            break;
        case 'H':
            commands->rep->command = CHCOM;
            break;
        case 't':
            commands->rep->command = TCOM;
            goto jtcommon;
        case 'b':
            commands->rep->command = BCOM;
jtcommon:
            while (*commands->cp++ == ' ');
            commands->cp--;
            if (*commands->cp == '\0') {
                if ((pt = commands->labtab->chain) != NULL) {
                    while ((pt1 = pt->lb1) != NULL)
                        pt = pt1;
                    pt->lb1 = commands->rep;
                } else
                    commands->labtab->chain = commands->rep;
                break;
            }
            tp = commands->lab->asc;
            while ((*tp++ = *commands->cp++))
                if (tp >= &(commands->lab->asc[8])) {
                    command_errf(commands, SEDERR_LTLMES, commands->linebuf);
                    return -1;
                }
            commands->cp--;
            *--tp = '\0';
            if ((lpt = search(commands)) != NULL) {
                if (lpt->address) {
                    commands->rep->lb1 = lpt->address;
                } else {
                    pt = lpt->chain;
                    while ((pt1 = pt->lb1) != NULL)
                        pt = pt1;
                    pt->lb1 = commands->rep;
                }
            } else {
                commands->lab->chain = commands->rep;
                commands->lab->address = 0;
                if (++commands->lab >= commands->labend) {
                    command_errf(commands, SEDERR_TMLMES, commands->linebuf);
                    return -1;
                }
            }
            break;
        case 'n':
            commands->rep->command = NCOM;
            break;
        case 'N':
            commands->rep->command = CNCOM;
            break;
        case 'p':
            commands->rep->command = PCOM;
            break;
        case 'P':
            commands->rep->command = CPCOM;
            break;
        case 'r':
            commands->rep->command = RCOM;
            if (commands->rep->ad2) {
                command_errf(commands, SEDERR_AD1MES, commands->linebuf);
                return -1;
            }
            if (*commands->cp++ != ' ') {
                command_errf(commands, SEDERR_CGMES, commands->linebuf);
                return -1;
            }
            commands->rep->re1 = p;
            p = text(commands, commands->rep->re1, commands->reend);
            if (p == NULL)
                return -1;
            break;
        case 'd':
            commands->rep->command = DCOM;
            break;
        case 'D':
            commands->rep->command = CDCOM;
            commands->rep->lb1 = commands->ptrspace;
            break;
        case 'q':
            commands->rep->command = QCOM;
            if (commands->rep->ad2) {
                command_errf(commands, SEDERR_AD1MES, commands->linebuf);
                return -1;
            }
            break;
        case 'l':
            commands->rep->command = LCOM;
            break;
        case 's':
            commands->rep->command = SCOM;
            commands->sseof = *commands->cp++;
            commands->rep->re1 = p;
            p = comple(commands, &compargs, (char *) 0, commands->rep->re1,
                       commands->reend, commands->sseof);
            if (p == NULL)
                return -1;
            if (p == commands->rep->re1) {
                if (op)
                    commands->rep->re1 = op;
                else {
                    command_errf(commands, SEDERR_NRMES);
                    return -1;
                }
            } else
                op = commands->rep->re1;
            commands->rep->rhs = p;
            p = compsub(commands, &compargs, commands->rep->rhs);
            if ((p) == NULL)
                return -1;
            if (*commands->cp == 'g') {
                commands->cp++;
                commands->rep->gfl = 999;
            } else if (commands->gflag)
                commands->rep->gfl = 999;
            if (*commands->cp >= '1' && *commands->cp <= '9') {
                i = *commands->cp - '0';
                commands->cp++;
                while (1) {
                    ii = *commands->cp;
                    if (ii < '0' || ii > '9')
                        break;
                    i = i*10 + ii - '0';
                    if (i > 512) {
                        command_errf(commands, SEDERR_TOOBIG, commands->linebuf);
                        return -1;
                    }
                    commands->cp++;
                }
                commands->rep->gfl = i;
            }
            if (*commands->cp == 'p') {
                commands->cp++;
                commands->rep->pfl = 1;
            }
            if (*commands->cp == 'P') {
                commands->cp++;
                commands->rep->pfl = 2;
            }
            if (*commands->cp == 'w') {
                commands->cp++;
                if (*commands->cp++ !=  ' ') {
                    command_errf(commands, SEDERR_SMMES, commands->linebuf);
                    return -1;
                }
                if (text(commands, fnamebuf, &fnamebuf[APR_PATH_MAX]) == NULL) {
                    command_errf(commands, SEDERR_FNTL, commands->linebuf);
                    return -1;
                }
                for (i = commands->nfiles - 1; i >= 0; i--)
                    if (strcmp(fnamebuf,commands->fname[i]) == 0) {
                        commands->rep->findex = i;
                        goto done;
                    }
                if (commands->nfiles >= NWFILES) {
                    command_errf(commands, SEDERR_TMWFMES);
                    return -1;
                }
                commands->fname[commands->nfiles] =
                            apr_pstrdup(commands->pool, fnamebuf);
                if (commands->fname[commands->nfiles] == NULL) {
                    command_errf(commands, SEDERR_OOMMES);
                    return -1;
                }
                commands->rep->findex = commands->nfiles++;
            }
            break;
        case 'w':
            commands->rep->command = WCOM;
            if (*commands->cp++ != ' ') {
                command_errf(commands, SEDERR_SMMES, commands->linebuf);
                return -1;
            }
            if (text(commands, fnamebuf, &fnamebuf[APR_PATH_MAX]) == NULL) {
                command_errf(commands, SEDERR_FNTL, commands->linebuf);
                return -1;
            }
            for (i = commands->nfiles - 1; i >= 0; i--)
                if (strcmp(fnamebuf, commands->fname[i]) == 0) {
                    commands->rep->findex = i;
                    goto done;
                }
            if (commands->nfiles >= NWFILES) {
                command_errf(commands, SEDERR_TMWFMES);
                return -1;
            }
            if ((commands->fname[commands->nfiles] =
                        apr_pstrdup(commands->pool, fnamebuf)) == NULL) {
                command_errf(commands, SEDERR_OOMMES);
                return -1;
            }
            commands->rep->findex = commands->nfiles++;
            break;
        case 'x':
            commands->rep->command = XCOM;
            break;
        case 'y':
            commands->rep->command = YCOM;
            commands->sseof = *commands->cp++;
            commands->rep->re1 = p;
            p = ycomp(commands, commands->rep->re1);
            if (p == NULL)
                return -1;
            break;
        }
done:
        commands->rep = alloc_reptr(commands);
        commands->rep->ad1 = p;
        if (*commands->cp++ != '\0') {
            if (commands->cp[-1] == ';')
                goto comploop;
            command_errf(commands, SEDERR_CGMES, commands->linebuf);
            return -1;
        }
    }
    commands->rep->command = 0;
    commands->lastre = op;
    return 0;
}
static char *compsub(sed_commands_t *commands,
                     sed_comp_args *compargs, char *rhsbuf)
{
    char   *p, *q;
    p = rhsbuf;
    q = commands->cp;
    for(;;) {
        if(p > &commands->respace[RESIZE-1]) {
            command_errf(commands, SEDERR_TMMES, commands->linebuf);
            return NULL;
        }
        if((*p = *q++) == '\\') {
            p++;
            if(p > &commands->respace[RESIZE-1]) {
                command_errf(commands, SEDERR_TMMES, commands->linebuf);
                return NULL;
            }
            *p = *q++;
            if(*p > compargs->nbra + '0' && *p <= '9') {
                command_errf(commands, SEDERR_DOORNG, commands->linebuf);
                return NULL;
            }
            p++;
            continue;
        }
        if(*p == commands->sseof) {
            *p++ = '\0';
            commands->cp = q;
            return(p);
        }
          if(*p++ == '\0') {
            command_errf(commands, SEDERR_EDMOSUB, commands->linebuf);
            return NULL;
        }
    }
}
/*
 * rline
 */
static int rline(sed_commands_t *commands, apr_file_t *fin,
                 char *lbuf, char *lbend)
{
    char   *p;
    const char *q;
    int    t;
    apr_size_t bytes_read;
    p = lbuf;
    if(commands->eflag) {
        if(commands->eflag > 0) {
            commands->eflag = -1;
            q = commands->earg;
            while((t = *q++) != '\0') {
                if(t == '\n') {
                    commands->saveq = q;
                    goto out1;
                }
                if (p < lbend)
                    *p++ = t;
                if(t == '\\') {
                    if((t = *q++) == '\0') {
                        commands->saveq = NULL;
                        return(-1);
                    }
                    if (p < lbend)
                        *p++ = t;
                }
            }
            commands->saveq = NULL;
        out1:
            if (p == lbend) {
                command_errf(commands, SEDERR_CLTL, commands->linebuf);
                return -1;
            }
            *p = '\0';
            return(1);
        }
        if((q = commands->saveq) == 0)    return(-1);
        while((t = *q++) != '\0') {
            if(t == '\n') {
                commands->saveq = q;
                goto out2;
            }
            if(p < lbend)
                *p++ = t;
            if(t == '\\') {
                if((t = *q++) == '\0') {
                    commands->saveq = NULL;
                    return(-1);
                }
                if (p < lbend)
                    *p++ = t;
            }
        }
        commands->saveq = NULL;
    out2:
        if (p == lbend) {
            command_errf(commands, SEDERR_CLTL, commands->linebuf);
            return -1;
        }
        *p = '\0';
        return(1);
    }
    bytes_read = 1;
    /* XXX extremely inefficient 1 byte reads */
    while (apr_file_read(fin, &t, &bytes_read) != APR_SUCCESS) {
        if(t == '\n') {
            if (p == lbend) {
                command_errf(commands, SEDERR_CLTL, commands->linebuf);
                return -1;
            }
            *p = '\0';
            return(1);
        }
        if (p < lbend)
            *p++ = t;
        if(t == '\\') {
            bytes_read = 1;
            if (apr_file_read(fin, &t, &bytes_read) != APR_SUCCESS) {
                return -1;
            }
            if(p < lbend)
                *p++ = t;
        }
        bytes_read = 1;
    }
    return(-1);
}
/*
 * address
 */
static char *address(sed_commands_t *commands, char *expbuf,
                     apr_status_t* status)
{
    char   *rcp;
    apr_int64_t lno;
    sed_comp_args compargs;
    *status = APR_SUCCESS;
    if(*commands->cp == '$') {
        if (expbuf > &commands->respace[RESIZE-2]) {
            command_errf(commands, SEDERR_TMMES, commands->linebuf);
            *status = APR_EGENERAL;
            return NULL;
        }
        commands->cp++;
        *expbuf++ = CEND;
        *expbuf++ = CCEOF;
        return(expbuf);
    }
    if (*commands->cp == '/' || *commands->cp == '\\' ) {
        if ( *commands->cp == '\\' )
            commands->cp++;
        commands->sseof = *commands->cp++;
        return(comple(commands, &compargs, (char *) 0, expbuf, commands->reend,
                      commands->sseof));
    }
    rcp = commands->cp;
    lno = 0;
    while(*rcp >= '0' && *rcp <= '9')
        lno = lno*10 + *rcp++ - '0';
    if(rcp > commands->cp) {
        if (expbuf > &commands->respace[RESIZE-3]) {
            command_errf(commands, SEDERR_TMMES, commands->linebuf);
            *status = APR_EGENERAL;
            return NULL;
        }
        *expbuf++ = CLNUM;
        *expbuf++ = commands->nlno;
        commands->tlno[commands->nlno++] = lno;
        if(commands->nlno >= SED_NLINES) {
            command_errf(commands, SEDERR_TMLNMES, commands->linebuf);
            *status = APR_EGENERAL;
            return NULL;
        }
        *expbuf++ = CCEOF;
        commands->cp = rcp;
        return(expbuf);
    }
    return(NULL);
}
/*
 * text
 */
static char *text(sed_commands_t *commands, char *textbuf, char *tbend)
{
    char   *p, *q;
    p = textbuf;
    q = commands->cp;
#ifndef S5EMUL
    /*
     * Strip off indentation from text to be inserted.
     */
    while(*q == '\t' || *q == ' ')    q++;
#endif
    for(;;) {
        if(p > tbend)
            return(NULL);    /* overflowed the buffer */
        if((*p = *q++) == '\\')
            *p = *q++;
        if(*p == '\0') {
            commands->cp = --q;
            return(++p);
        }
#ifndef S5EMUL
        /*
         * Strip off indentation from text to be inserted.
         */
        if(*p == '\n') {
            while(*q == '\t' || *q == ' ')    q++;
        }
#endif
        p++;
    }
}
/*
 * search
 */
static sed_label_t *search(sed_commands_t *commands)
{
    sed_label_t *rp;
    sed_label_t *ptr;
    rp = commands->labtab;
    ptr = commands->lab;
    while (rp < ptr) {
        if (strcmp(rp->asc, ptr->asc) == 0)
            return rp;
        rp++;
    }
    return 0;
}
/*
 * ycomp
 */
static char *ycomp(sed_commands_t *commands, char *expbuf)
{
    char    c;
    int cint; /* integer value of char c */
    char *ep, *tsp;
    int i;
    char    *sp;
    ep = expbuf;
    if(ep + 0377 > &commands->respace[RESIZE-1]) {
        command_errf(commands, SEDERR_TMMES, commands->linebuf);
        return NULL;
    }
    sp = commands->cp;
    for(tsp = commands->cp; (c = *tsp) != commands->sseof; tsp++) {
        if(c == '\\')
            tsp++;
        if(c == '\0' || c == '\n') {
            command_errf(commands, SEDERR_EDMOSTR, commands->linebuf);
            return NULL;
        }
    }
    tsp++;
    memset(ep, 0, 0400);
    while((c = *sp++) != commands->sseof) {
        c &= 0377;
        if(c == '\\' && *sp == 'n') {
            sp++;
            c = '\n';
        }
        cint = (int) c;
        if((ep[cint] = *tsp++) == '\\' && *tsp == 'n') {
            ep[cint] = '\n';
            tsp++;
        }
        if(ep[cint] == commands->sseof || ep[cint] == '\0') {
            command_errf(commands, SEDERR_TSNTSS, commands->linebuf);
        }
    }
    if(*tsp != commands->sseof) {
        if(*tsp == '\0') {
            command_errf(commands, SEDERR_EDMOSTR, commands->linebuf);
        }
        else {
            command_errf(commands, SEDERR_TSNTSS, commands->linebuf);
        }
        return NULL;
    }
    commands->cp = ++tsp;
    for(i = 0; i < 0400; i++)
        if(ep[i] == 0)
            ep[i] = i;
    return(ep + 0400);
}
/*
 * comple
 */
static char *comple(sed_commands_t *commands, sed_comp_args *compargs,
                    char *x1, char *ep, char *x3, char x4)
{
    char *p;
    p = sed_compile(commands, compargs, ep + 1, x3, x4);
    if(p == ep + 1)
        return(ep);
    *ep = compargs->circf;
    return(p);
}
/*
 * alloc_reptr
 */
static sed_reptr_t *alloc_reptr(sed_commands_t *commands)
{
    sed_reptr_t *var;
    var = apr_pcalloc(commands->pool, sizeof(sed_reptr_t));
    if (var == NULL) {
        command_errf(commands, SEDERR_OOMMES);
        return 0;
    }
    var->nrep = commands->nrep;
    var->findex = -1;
    commands->nrep++;
    if (commands->ptrspace == NULL)
        commands->ptrspace = var;
    else
        commands->ptrend->next = var;
    commands->ptrend = var;
    commands->labtab->address = var;
    return var;
}
components/apache2/mod_sed/sed1.c
New file
@@ -0,0 +1,1018 @@
/*
 * Copyright (c) 2005, 2008 Sun Microsystems, Inc. All Rights Reserved.
 * Use is subject to license terms.
 *
 *    Copyright (c) 1984 AT&T
 *      All Rights Reserved
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0.
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
#include "apr.h"
#include "apr_lib.h"
#include "libsed.h"
#include "sed.h"
#include "apr_strings.h"
#include "regexp.h"
char    *trans[040]  = {
    "\\01",
    "\\02",
    "\\03",
    "\\04",
    "\\05",
    "\\06",
    "\\07",
    "\\10",
    "\\11",
    "\n",
    "\\13",
    "\\14",
    "\\15",
    "\\16",
    "\\17",
    "\\20",
    "\\21",
    "\\22",
    "\\23",
    "\\24",
    "\\25",
    "\\26",
    "\\27",
    "\\30",
    "\\31",
    "\\32",
    "\\33",
    "\\34",
    "\\35",
    "\\36",
    "\\37"
};
char rub[] = {"\\177"};
extern int sed_step(char *p1, char *p2, int circf, step_vars_storage *vars);
static int substitute(sed_eval_t *eval, sed_reptr_t *ipc,
                      step_vars_storage *step_vars);
static apr_status_t execute(sed_eval_t *eval);
static int match(sed_eval_t *eval, char *expbuf, int gf,
                 step_vars_storage *step_vars);
static apr_status_t dosub(sed_eval_t *eval, char *rhsbuf, int n,
                          step_vars_storage *step_vars);
static char *place(sed_eval_t *eval, char *asp, char *al1, char *al2);
static apr_status_t command(sed_eval_t *eval, sed_reptr_t *ipc,
                            step_vars_storage *step_vars);
static apr_status_t wline(sed_eval_t *eval, char *buf, int sz);
static apr_status_t arout(sed_eval_t *eval);
static void eval_errf(sed_eval_t *eval, const char *fmt, ...)
{
    if (eval->errfn && eval->pool) {
        va_list args;
        const char* error;
        va_start(args, fmt);
        error = apr_pvsprintf(eval->pool, fmt, args);
        eval->errfn(eval->data, error);
        va_end(args);
    }
}
#define INIT_BUF_SIZE 1024
/*
 * grow_buffer
 */
static void grow_buffer(apr_pool_t *pool, char **buffer,
                        char **spend, unsigned int *cursize,
                        unsigned int newsize)
{
    char* newbuffer = NULL;
    int spendsize = 0;
    if (*cursize >= newsize)
        return;
    /* Avoid number of times realloc is called. It could cause huge memory
     * requirement if line size is huge e.g 2 MB */
    if (newsize < *cursize * 2) {
        newsize = *cursize * 2;
    }
    /* Align it to 4 KB boundary */
    newsize = (newsize  + ((1 << 12) - 1)) & ~((1 << 12) -1);
    newbuffer = apr_pcalloc(pool, newsize);
    if (*spend && *buffer && (*cursize > 0)) {
        spendsize = *spend - *buffer;
    }
    if ((*cursize > 0) && *buffer) {
        memcpy(newbuffer, *buffer, *cursize);
    }
    *buffer = newbuffer;
    *cursize = newsize;
    if (spend != buffer) {
        *spend = *buffer + spendsize;
    }
}
/*
 * grow_line_buffer
 */
static void grow_line_buffer(sed_eval_t *eval, int newsize)
{
    grow_buffer(eval->pool, &eval->linebuf, &eval->lspend,
                &eval->lsize, newsize);
}
/*
 * grow_hold_buffer
 */
static void grow_hold_buffer(sed_eval_t *eval, int newsize)
{
    grow_buffer(eval->pool, &eval->holdbuf, &eval->hspend,
                &eval->hsize, newsize);
}
/*
 * grow_gen_buffer
 */
static void grow_gen_buffer(sed_eval_t *eval, int newsize,
                            char **gspend)
{
    if (gspend == NULL) {
        gspend = &eval->genbuf;
    }
    grow_buffer(eval->pool, &eval->genbuf, gspend,
                &eval->gsize, newsize);
    eval->lcomend = &eval->genbuf[71];
}
/*
 * appendmem_to_linebuf
 */
static void appendmem_to_linebuf(sed_eval_t *eval, const char* sz, int len)
{
    unsigned int reqsize = (eval->lspend - eval->linebuf) + len;
    if (eval->lsize < reqsize) {
        grow_line_buffer(eval, reqsize);
    }
    memcpy(eval->lspend, sz, len);
    eval->lspend += len;
}
/*
 * append_to_linebuf
 */
static void append_to_linebuf(sed_eval_t *eval, const char* sz)
{
    int len = strlen(sz);
    /* Copy string including null character */
    appendmem_to_linebuf(eval, sz, len + 1);
    --eval->lspend; /* lspend will now point to NULL character */
}
/*
 * copy_to_linebuf
 */
static void copy_to_linebuf(sed_eval_t *eval, const char* sz)
{
    eval->lspend = eval->linebuf;
    append_to_linebuf(eval, sz);
}
/*
 * append_to_holdbuf
 */
static void append_to_holdbuf(sed_eval_t *eval, const char* sz)
{
    int len = strlen(sz);
    unsigned int reqsize = (eval->hspend - eval->holdbuf) + len + 1;
    if (eval->hsize <= reqsize) {
        grow_hold_buffer(eval, reqsize);
    }
    strcpy(eval->hspend, sz);
    /* hspend will now point to NULL character */
    eval->hspend += len;
}
/*
 * copy_to_holdbuf
 */
static void copy_to_holdbuf(sed_eval_t *eval, const char* sz)
{
    eval->hspend = eval->holdbuf;
    append_to_holdbuf(eval, sz);
}
/*
 * append_to_genbuf
 */
static void append_to_genbuf(sed_eval_t *eval, const char* sz, char **gspend)
{
    int len = strlen(sz);
    unsigned int reqsize = (*gspend - eval->genbuf) + len + 1;
    if (eval->gsize < reqsize) {
        grow_gen_buffer(eval, reqsize, gspend);
    }
    strcpy(*gspend, sz);
    /* *gspend will now point to NULL character */
    *gspend += len;
}
/*
 * copy_to_genbuf
 */
static void copy_to_genbuf(sed_eval_t *eval, const char* sz)
{
    int len = strlen(sz);
    unsigned int reqsize = len + 1;
    if (eval->gsize < reqsize) {
        grow_gen_buffer(eval, reqsize, NULL);
    }
}
/*
 * sed_init_eval
 */
apr_status_t sed_init_eval(sed_eval_t *eval, sed_commands_t *commands, sed_err_fn_t *errfn, void *data, sed_write_fn_t *writefn, apr_pool_t* p)
{
    memset(eval, 0, sizeof(*eval));
    eval->pool = p;
    eval->writefn = writefn;
    return sed_reset_eval(eval, commands, errfn, data);
}
/*
 * sed_reset_eval
 */
apr_status_t sed_reset_eval(sed_eval_t *eval, sed_commands_t *commands, sed_err_fn_t *errfn, void *data)
{
    int i;
    eval->errfn = errfn;
    eval->data = data;
    eval->commands = commands;
    eval->lnum = 0;
    eval->fout = NULL;
    if (eval->linebuf == NULL) {
        eval->lsize = INIT_BUF_SIZE;
        eval->linebuf = apr_pcalloc(eval->pool, eval->lsize);
    }
    if (eval->holdbuf == NULL) {
        eval->hsize = INIT_BUF_SIZE;
        eval->holdbuf = apr_pcalloc(eval->pool, eval->hsize);
    }
    if (eval->genbuf == NULL) {
        eval->gsize = INIT_BUF_SIZE;
        eval->genbuf = apr_pcalloc(eval->pool, eval->gsize);
    }
    eval->lspend = eval->linebuf;
    eval->hspend = eval->holdbuf;
    eval->lcomend = &eval->genbuf[71];
    for (i = 0; i < sizeof(eval->abuf) / sizeof(eval->abuf[0]); i++)
        eval->abuf[i] = NULL;
    eval->aptr = eval->abuf;
    eval->pending = NULL;
    eval->inar = apr_pcalloc(eval->pool, commands->nrep * sizeof(unsigned char));
    eval->nrep = commands->nrep;
    eval->dolflag = 0;
    eval->sflag = 0;
    eval->jflag = 0;
    eval->delflag = 0;
    eval->lreadyflag = 0;
    eval->quitflag = 0;
    eval->finalflag = 1; /* assume we're evaluating only one file/stream */
    eval->numpass = 0;
    eval->nullmatch = 0;
    eval->col = 0;
    for (i = 0; i < commands->nfiles; i++) {
        const char* filename = commands->fname[i];
        if (apr_file_open(&eval->fcode[i], filename,
                          APR_WRITE | APR_CREATE, APR_OS_DEFAULT,
                          eval->pool) != APR_SUCCESS) {
            eval_errf(eval, SEDERR_COMES, filename);
            return APR_EGENERAL;
        }
    }
    return APR_SUCCESS;
}
/*
 * sed_destroy_eval
 */
void sed_destroy_eval(sed_eval_t *eval)
{
    int i;
    /* eval->linebuf, eval->holdbuf, eval->genbuf and eval->inar are allocated
     * on pool. It will be freed when pool will be freed */
    for (i = 0; i < eval->commands->nfiles; i++) {
        if (eval->fcode[i] != NULL) {
            apr_file_close(eval->fcode[i]);
            eval->fcode[i] = NULL;
        }
    }
}
/*
 * sed_eval_file
 */
apr_status_t sed_eval_file(sed_eval_t *eval, apr_file_t *fin, void *fout)
{
    for (;;) {
        char buf[1024];
        apr_size_t read_bytes = 0;
        read_bytes = sizeof(buf);
        if (apr_file_read(fin, buf, &read_bytes) != APR_SUCCESS)
            break;
        if (sed_eval_buffer(eval, buf, read_bytes, fout) != APR_SUCCESS)
            return APR_EGENERAL;
        if (eval->quitflag)
            return APR_SUCCESS;
    }
    return sed_finalize_eval(eval, fout);
}
/*
 * sed_eval_buffer
 */
apr_status_t sed_eval_buffer(sed_eval_t *eval, const char *buf, int bufsz, void *fout)
{
    apr_status_t rv;
    if (eval->quitflag)
        return APR_SUCCESS;
    if (!sed_canbe_finalized(eval->commands)) {
        /* Commands were not finalized properly. */
        const char* error = sed_get_finalize_error(eval->commands, eval->pool);
        if (error) {
            eval_errf(eval, error);
            return APR_EGENERAL;
        }
    }
    eval->fout = fout;
    /* Process leftovers */
    if (bufsz && eval->lreadyflag) {
        eval->lreadyflag = 0;
        eval->lspend--;
        *eval->lspend = '\0';
        rv = execute(eval);
        if (rv != APR_SUCCESS)
            return rv;
    }
    while (bufsz) {
        char *n;
        int llen;
        n = memchr(buf, '\n', bufsz);
        if (n == NULL)
            break;
        llen = n - buf;
        if (llen == bufsz - 1) {
            /* This might be the last line; delay its processing */
            eval->lreadyflag = 1;
            break;
        }
        appendmem_to_linebuf(eval, buf, llen + 1);
        --eval->lspend;
        /* replace new line character with NULL */
        *eval->lspend = '\0';
        buf += (llen + 1);
        bufsz -= (llen + 1);
        rv = execute(eval);
        if (rv != APR_SUCCESS)
            return rv;
        if (eval->quitflag)
            break;
    }
    /* Save the leftovers for later */
    if (bufsz) {
        appendmem_to_linebuf(eval, buf, bufsz);
    }
    return APR_SUCCESS;
}
/*
 * sed_finalize_eval
 */
apr_status_t sed_finalize_eval(sed_eval_t *eval, void *fout)
{
    if (eval->quitflag)
        return APR_SUCCESS;
    if (eval->finalflag)
        eval->dolflag = 1;
    eval->fout = fout;
    /* Process leftovers */
    if (eval->lspend > eval->linebuf) {
        apr_status_t rv;
        if (eval->lreadyflag) {
            eval->lreadyflag = 0;
            eval->lspend--;
        } else {
            /* Code can probably reach here when last character in output
             * buffer is not a newline.
             */
            /* Assure space for NULL */
            append_to_linebuf(eval, "");
        }
        *eval->lspend = '\0';
        rv = execute(eval);
        if (rv != APR_SUCCESS)
            return rv;
    }
    eval->quitflag = 1;
    return APR_SUCCESS;
}
/*
 * execute
 */
static apr_status_t execute(sed_eval_t *eval)
{
    sed_reptr_t *ipc = eval->commands->ptrspace;
    step_vars_storage step_vars;
    apr_status_t rv = APR_SUCCESS;
    eval->lnum++;
    eval->sflag = 0;
    if (eval->pending) {
        ipc = eval->pending;
        eval->pending = NULL;
    }
    memset(&step_vars, 0, sizeof(step_vars));
    while (ipc->command) {
        char *p1;
        char *p2;
        int c;
        p1 = ipc->ad1;
        p2 = ipc->ad2;
        if (p1) {
            if (eval->inar[ipc->nrep]) {
                if (*p2 == CEND) {
                    p1 = 0;
                } else if (*p2 == CLNUM) {
                    c = (unsigned char)p2[1];
                    if (eval->lnum > eval->commands->tlno[c]) {
                        eval->inar[ipc->nrep] = 0;
                        if (ipc->negfl)
                            goto yes;
                        ipc = ipc->next;
                        continue;
                    }
                    if (eval->lnum == eval->commands->tlno[c]) {
                        eval->inar[ipc->nrep] = 0;
                    }
                } else if (match(eval, p2, 0, &step_vars)) {
                    eval->inar[ipc->nrep] = 0;
                }
            } else if (*p1 == CEND) {
                if (!eval->dolflag) {
                    if (ipc->negfl)
                        goto yes;
                    ipc = ipc->next;
                    continue;
                }
            } else if (*p1 == CLNUM) {
                c = (unsigned char)p1[1];
                if (eval->lnum != eval->commands->tlno[c]) {
                    if (ipc->negfl)
                        goto yes;
                    ipc = ipc->next;
                    continue;
                }
                if (p2)
                    eval->inar[ipc->nrep] = 1;
            } else if (match(eval, p1, 0, &step_vars)) {
                if (p2)
                    eval->inar[ipc->nrep] = 1;
            } else {
                if (ipc->negfl)
                    goto yes;
                ipc = ipc->next;
                continue;
            }
        }
        if (ipc->negfl) {
            ipc = ipc->next;
            continue;
        }
yes:
        rv = command(eval, ipc, &step_vars);
        if (rv != APR_SUCCESS)
            return rv;
        if (eval->quitflag)
            return APR_SUCCESS;
        if (eval->pending)
            return APR_SUCCESS;
        if (eval->delflag)
            break;
        if (eval->jflag) {
            eval->jflag = 0;
            if ((ipc = ipc->lb1) == 0) {
                ipc = eval->commands->ptrspace;
                break;
            }
        } else
            ipc = ipc->next;
    }
    if (!eval->commands->nflag && !eval->delflag) {
        rv = wline(eval, eval->linebuf, eval->lspend - eval->linebuf);
        if (rv != APR_SUCCESS)
            return rv;
    }
    if (eval->aptr > eval->abuf)
        rv = arout(eval);
    eval->delflag = 0;
    eval->lspend = eval->linebuf;
    return rv;
}
/*
 * match
 */
static int match(sed_eval_t *eval, char *expbuf, int gf,
                 step_vars_storage *step_vars)
{
    char   *p1;
    int circf;
    if(gf) {
        if(*expbuf)    return(0);
        step_vars->locs = p1 = step_vars->loc2;
    } else {
        p1 = eval->linebuf;
        step_vars->locs = 0;
    }
    circf = *expbuf++;
    return(sed_step(p1, expbuf, circf, step_vars));
}
/*
 * substitute
 */
static int substitute(sed_eval_t *eval, sed_reptr_t *ipc,
                      step_vars_storage *step_vars)
{
    if(match(eval, ipc->re1, 0, step_vars) == 0)    return(0);
    eval->numpass = 0;
    eval->sflag = 0;        /* Flags if any substitution was made */
    if (dosub(eval, ipc->rhs, ipc->gfl, step_vars) != APR_SUCCESS)
        return -1;
    if(ipc->gfl) {
        while(*step_vars->loc2) {
            if(match(eval, ipc->re1, 1, step_vars) == 0) break;
            if (dosub(eval, ipc->rhs, ipc->gfl, step_vars) != APR_SUCCESS)
                return -1;
        }
    }
    return(eval->sflag);
}
/*
 * dosub
 */
static apr_status_t dosub(sed_eval_t *eval, char *rhsbuf, int n,
                          step_vars_storage *step_vars)
{
    char *lp, *sp, *rp;
    int c;
    apr_status_t rv = APR_SUCCESS;
    if(n > 0 && n < 999) {
        eval->numpass++;
        if(n != eval->numpass) return APR_SUCCESS;
    }
    eval->sflag = 1;
    lp = eval->linebuf;
    sp = eval->genbuf;
    rp = rhsbuf;
    sp = place(eval, sp, lp, step_vars->loc1);
    while ((c = *rp++) != 0) {
        if (c == '&') {
            sp = place(eval, sp, step_vars->loc1, step_vars->loc2);
            if (sp == NULL)
                return APR_EGENERAL;
        }
        else if (c == '\\') {
            c = *rp++;
            if (c >= '1' && c < NBRA+'1') {
                sp = place(eval, sp, step_vars->braslist[c-'1'],
                           step_vars->braelist[c-'1']);
                if (sp == NULL)
                    return APR_EGENERAL;
            }
            else
                *sp++ = c;
          } else
            *sp++ = c;
        if (sp >= eval->genbuf + eval->gsize) {
            /* expand genbuf and set the sp appropriately */
            grow_gen_buffer(eval, eval->gsize + 1024, &sp);
        }
    }
    lp = step_vars->loc2;
    step_vars->loc2 = sp - eval->genbuf + eval->linebuf;
    append_to_genbuf(eval, lp, &sp);
    copy_to_linebuf(eval, eval->genbuf);
    return rv;
}
/*
 * place
 */
static char *place(sed_eval_t *eval, char *asp, char *al1, char *al2)
{
    char *sp = asp;
    int n = al2 - al1;
    unsigned int reqsize = (sp - eval->genbuf) + n + 1;
    if (eval->gsize < reqsize) {
        grow_gen_buffer(eval, reqsize, &sp);
    }
    memcpy(sp, al1, n);
    return sp + n;
}
/*
 * command
 */
static apr_status_t command(sed_eval_t *eval, sed_reptr_t *ipc,
                            step_vars_storage *step_vars)
{
    int    i;
    char   *p1, *p2, *p3;
    int length;
    char sz[32]; /* 32 bytes enough to store 64 bit integer in decimal */
    apr_status_t rv = APR_SUCCESS;
    switch(ipc->command) {
        case ACOM:
            if(eval->aptr >= &eval->abuf[SED_ABUFSIZE]) {
                eval_errf(eval, SEDERR_TMAMES, eval->lnum);
            } else {
                *eval->aptr++ = ipc;
                *eval->aptr = NULL;
            }
            break;
        case CCOM:
            eval->delflag = 1;
            if(!eval->inar[ipc->nrep] || eval->dolflag) {
                for (p1 = ipc->re1; *p1; p1++)
                    ;
                rv = wline(eval, ipc->re1, p1 - ipc->re1);
            }
            break;
        case DCOM:
            eval->delflag++;
            break;
        case CDCOM:
            p1 = eval->linebuf;
            while(*p1 != '\n') {
                if(*p1++ == 0) {
                    eval->delflag++;
                    return APR_SUCCESS;
                }
            }
            p1++;
            copy_to_linebuf(eval, p1);
            eval->jflag++;
            break;
        case EQCOM:
            length = apr_snprintf(sz, sizeof(sz), "%d", (int) eval->lnum);
            rv = wline(eval, sz, length);
            break;
        case GCOM:
            copy_to_linebuf(eval, eval->holdbuf);
            break;
        case CGCOM:
            append_to_linebuf(eval, "\n");
            append_to_linebuf(eval, eval->holdbuf);
            break;
        case HCOM:
            copy_to_holdbuf(eval, eval->linebuf);
            break;
        case CHCOM:
            append_to_holdbuf(eval, "\n");
            append_to_holdbuf(eval, eval->linebuf);
            break;
        case ICOM:
            for (p1 = ipc->re1; *p1; p1++);
            rv = wline(eval, ipc->re1, p1 - ipc->re1);
            break;
        case BCOM:
            eval->jflag = 1;
            break;
        case LCOM:
            p1 = eval->linebuf;
            p2 = eval->genbuf;
            eval->genbuf[72] = 0;
            while(*p1)
                if((unsigned char)*p1 >= 040) {
                    if(*p1 == 0177) {
                        p3 = rub;
                        while ((*p2++ = *p3++) != 0)
                            if(p2 >= eval->lcomend) {
                                *p2 = '\\';
                                rv = wline(eval, eval->genbuf,
                                           strlen(eval->genbuf));
                                if (rv != APR_SUCCESS)
                                    return rv;
                                p2 = eval->genbuf;
                            }
                        p2--;
                        p1++;
                        continue;
                    }
                    if(!isprint(*p1 & 0377)) {
                        *p2++ = '\\';
                        if(p2 >= eval->lcomend) {
                            *p2 = '\\';
                            rv = wline(eval, eval->genbuf,
                                       strlen(eval->genbuf));
                            if (rv != APR_SUCCESS)
                                return rv;
                            p2 = eval->genbuf;
                        }
                        *p2++ = (*p1 >> 6) + '0';
                        if(p2 >= eval->lcomend) {
                            *p2 = '\\';
                            rv = wline(eval, eval->genbuf,
                                       strlen(eval->genbuf));
                            if (rv != APR_SUCCESS)
                                return rv;
                            p2 = eval->genbuf;
                        }
                        *p2++ = ((*p1 >> 3) & 07) + '0';
                        if(p2 >= eval->lcomend) {
                            *p2 = '\\';
                            rv = wline(eval, eval->genbuf,
                                       strlen(eval->genbuf));
                            if (rv != APR_SUCCESS)
                                return rv;
                            p2 = eval->genbuf;
                        }
                        *p2++ = (*p1++ & 07) + '0';
                        if(p2 >= eval->lcomend) {
                            *p2 = '\\';
                            rv = wline(eval, eval->genbuf,
                                       strlen(eval->genbuf));
                            if (rv != APR_SUCCESS)
                                return rv;
                            p2 = eval->genbuf;
                        }
                    } else {
                        *p2++ = *p1++;
                        if(p2 >= eval->lcomend) {
                            *p2 = '\\';
                            rv = wline(eval, eval->genbuf,
                                       strlen(eval->genbuf));
                            if (rv != APR_SUCCESS)
                                return rv;
                            p2 = eval->genbuf;
                        }
                    }
                } else {
                    p3 = trans[(unsigned char)*p1-1];
                    while ((*p2++ = *p3++) != 0)
                        if(p2 >= eval->lcomend) {
                            *p2 = '\\';
                            rv = wline(eval, eval->genbuf,
                                       strlen(eval->genbuf));
                            if (rv != APR_SUCCESS)
                                return rv;
                            p2 = eval->genbuf;
                        }
                    p2--;
                    p1++;
                }
            *p2 = 0;
            rv = wline(eval, eval->genbuf, strlen(eval->genbuf));
            break;
        case NCOM:
            if(!eval->commands->nflag) {
                rv = wline(eval, eval->linebuf, eval->lspend - eval->linebuf);
                if (rv != APR_SUCCESS)
                    return rv;
            }
            if(eval->aptr > eval->abuf) {
                rv = arout(eval);
                if (rv != APR_SUCCESS)
                    return rv;
            }
            eval->lspend = eval->linebuf;
            eval->pending = ipc->next;
            break;
        case CNCOM:
            if(eval->aptr > eval->abuf) {
                rv = arout(eval);
                if (rv != APR_SUCCESS)
                    return rv;
            }
            append_to_linebuf(eval, "\n");
            eval->pending = ipc->next;
            break;
        case PCOM:
            rv = wline(eval, eval->linebuf, eval->lspend - eval->linebuf);
            break;
        case CPCOM:
            for (p1 = eval->linebuf; *p1 != '\n' && *p1 != '\0'; p1++);
            rv = wline(eval, eval->linebuf, p1 - eval->linebuf);
            break;
        case QCOM:
            if (!eval->commands->nflag) {
                rv = wline(eval, eval->linebuf, eval->lspend - eval->linebuf);
                if (rv != APR_SUCCESS)
                    break;
            }
            if(eval->aptr > eval->abuf) {
                rv = arout(eval);
                if (rv != APR_SUCCESS)
                    return rv;
            }
            eval->quitflag = 1;
            break;
        case RCOM:
            if(eval->aptr >= &eval->abuf[SED_ABUFSIZE]) {
                eval_errf(eval, SEDERR_TMRMES, eval->lnum);
            } else {
                *eval->aptr++ = ipc;
                *eval->aptr = NULL;
            }
            break;
        case SCOM:
            i = substitute(eval, ipc, step_vars);
            if (i == -1) {
                return APR_EGENERAL;
            }
            if(ipc->pfl && eval->commands->nflag && i) {
                if(ipc->pfl == 1) {
                    rv = wline(eval, eval->linebuf, eval->lspend -
                               eval->linebuf);
                    if (rv != APR_SUCCESS)
                        return rv;
                } else {
                    for (p1 = eval->linebuf; *p1 != '\n' && *p1 != '\0'; p1++);
                    rv = wline(eval, eval->linebuf, p1 - eval->linebuf);
                    if (rv != APR_SUCCESS)
                        return rv;
                }
            }
            if (i && (ipc->findex >= 0) && eval->fcode[ipc->findex])
                apr_file_printf(eval->fcode[ipc->findex], "%s\n",
                                eval->linebuf);
            break;
        case TCOM:
            if(eval->sflag == 0)  break;
            eval->sflag = 0;
            eval->jflag = 1;
            break;
        case WCOM:
            if (ipc->findex >= 0)
                apr_file_printf(eval->fcode[ipc->findex], "%s\n",
                                eval->linebuf);
            break;
        case XCOM:
            copy_to_genbuf(eval, eval->linebuf);
            copy_to_linebuf(eval, eval->holdbuf);
            copy_to_holdbuf(eval, eval->genbuf);
            break;
        case YCOM:
            p1 = eval->linebuf;
            p2 = ipc->re1;
            while((*p1 = p2[(unsigned char)*p1]) != 0)    p1++;
            break;
    }
    return rv;
}
/*
 * arout
 */
static apr_status_t arout(sed_eval_t *eval)
{
    apr_status_t rv = APR_SUCCESS;
    eval->aptr = eval->abuf - 1;
    while (*++eval->aptr) {
        if ((*eval->aptr)->command == ACOM) {
            char *p1;
            for (p1 = (*eval->aptr)->re1; *p1; p1++);
            rv = wline(eval, (*eval->aptr)->re1, p1 - (*eval->aptr)->re1);
            if (rv != APR_SUCCESS)
                return rv;
        } else {
            apr_file_t *fi = NULL;
            char buf[512];
            apr_size_t n = sizeof(buf);
            if (apr_file_open(&fi, (*eval->aptr)->re1, APR_READ, 0, eval->pool)
                              != APR_SUCCESS)
                continue;
            while ((apr_file_read(fi, buf, &n)) == APR_SUCCESS) {
                if (n == 0)
                    break;
                rv = eval->writefn(eval->fout, buf, n);
                if (rv != APR_SUCCESS) {
                    apr_file_close(fi);
                    return rv;
                }
                n = sizeof(buf);
            }
            apr_file_close(fi);
        }
    }
    eval->aptr = eval->abuf;
    *eval->aptr = NULL;
    return rv;
}
/*
 * wline
 */
static apr_status_t wline(sed_eval_t *eval, char *buf, int sz)
{
    apr_status_t rv = APR_SUCCESS;
    rv = eval->writefn(eval->fout, buf, sz);
    if (rv != APR_SUCCESS)
        return rv;
    rv = eval->writefn(eval->fout, "\n", 1);
    return rv;
}
components/apache2/patches/Makefile.in.patch
New file
@@ -0,0 +1,33 @@
--- Makefile.in    Tue Nov 25 12:24:49 2008
+++ Makefile.in    Thu May 19 08:09:10 2011
@@ -49,6 +49,9 @@
                         -e 's#@@Port@@#$(PORT)#g' \
                         -e 's#@@SSLPort@@#$(SSLPORT)#g' \
                         -e '/@@LoadModule@@/d' \
+                        -e 's#@@SysconfDir@@#$(sysconfdir)#g' \
+                        -e 's#@@RuntimeDir@@#$(runtimedir)#g' \
+                        -e 's#@@DataDir@@#$(datadir)#g' \
                         < $$i; \
                 else \
                     sed -n -e '/@@LoadModule@@/q' \
@@ -87,6 +90,12 @@
             cp -p envvars-std $(DESTDIR)$(sbindir)/envvars ; \
         fi ; \
     fi
+    @if ! grep "$(sysconfdir)/envvars" $(DESTDIR)$(sbindir)/envvars > /dev/null; then \
+        echo 'if [ -f $(sysconfdir)/envvars ]; then' >> $(DESTDIR)$(sbindir)/envvars ; \
+        echo '. $(sysconfdir)/envvars' >> $(DESTDIR)$(sbindir)/envvars ; \
+        echo 'fi' >> $(DESTDIR)$(sbindir)/envvars ; \
+    fi
+    @grep "^#" $(top_builddir)/support/envvars-std > $(DESTDIR)$(sysconfdir)/envvars
 # Create a sanitized config_vars.mk
 build/config_vars.out: build/config_vars.mk
@@ -165,7 +174,6 @@
 install-other:
     @test -d $(DESTDIR)$(logfiledir) || $(MKINSTALLDIRS) $(DESTDIR)$(logfiledir)
-    @test -d $(DESTDIR)$(runtimedir) || $(MKINSTALLDIRS) $(DESTDIR)$(runtimedir)
     @for ext in dll x; do \
         file=apachecore.$$ext; \
         if test -f $$file; then \
components/apache2/patches/apachectl.patch
New file
@@ -0,0 +1,15 @@
--- support/apachectl.in.orig    Tue Jul 11 20:38:44 2006
+++ support/apachectl.in    Tue Feb 12 02:24:17 2008
@@ -75,6 +75,12 @@
     ARGV="-h"
 fi
+if [ ! -d "@exp_runtimedir@" ]; then
+    mkdir -p @exp_runtimedir@
+    chown -R webservd @exp_runtimedir@
+    chgrp -R webservd @exp_runtimedir@
+fi
+
 case $ARGV in
 start|stop|restart|graceful|graceful-stop)
     $HTTPD -k $ARGV
components/apache2/patches/apr_common.m4.patch
New file
@@ -0,0 +1,12 @@
=== This is added to fix the MKDEP value for Sun Studio compiler
--- build/apr_common.m4.orig    Sat Dec  6 07:17:56 2008
+++ build/apr_common.m4    Mon Jan  5 02:28:50 2009
@@ -948,7 +948,7 @@
   int main() { return 0; }
 EOF
   MKDEP="true"
-  for i in "$CC -MM" "$CC -M" "$CPP -MM" "$CPP -M" "cpp -M"; do
+  for i in "$CC -MM" "$CC -M" "$CC -xM" "$CPP -MM" "$CPP -M" "$CPP -xM" "cpp -M"; do
     AC_MSG_CHECKING([if $i can create proper make dependencies])
     if $i conftest.c 2>/dev/null | grep 'conftest.o: conftest.c' >/dev/null; then
       MKDEP=$i
components/apache2/patches/config.layout.patch
New file
@@ -0,0 +1,76 @@
--- config.layout.orig    Thu Apr 28 06:36:28 2011
+++ config.layout    Thu Apr 28 06:41:37 2011
@@ -322,3 +322,73 @@
     installbuilddir: ${prefix}/etc/apache2/build
     errordir:      ${datadir}/error
 </Layout>
+
+# Solaris Layout for Apache 2
+<Layout Solaris-Apache2>
+    prefix:        /usr/apache2/2.2
+    exec_prefix:   ${prefix}
+    bindir:        ${exec_prefix}/bin
+    sbindir:       ${exec_prefix}/bin
+    libdir:        ${exec_prefix}/lib
+    libexecdir:    ${exec_prefix}/libexec
+    mandir:        ${exec_prefix}/man
+    sysconfdir:    /etc/apache2/2.2
+    datadir:       /var/apache2/2.2
+    installbuilddir: ${prefix}/build
+    errordir:      ${datadir}/error
+    iconsdir:      ${datadir}/icons
+    htdocsdir:     ${datadir}/htdocs
+    manualdir:     ${prefix}/manual
+    cgidir:        ${datadir}/cgi-bin
+    includedir:    ${exec_prefix}/include
+    localstatedir: ${prefix}
+    runtimedir:    /var/run/apache2/2.2
+    logfiledir:    ${datadir}/logs
+    proxycachedir: ${datadir}/proxy
+</Layout>
+
+<Layout Solaris-Apache2-amd64>
+    prefix:        /usr/apache2/2.2
+    exec_prefix:   ${prefix}
+    bindir:        ${exec_prefix}/bin/amd64
+    sbindir:       ${exec_prefix}/bin/amd64
+    libdir:        ${exec_prefix}/lib/amd64
+    libexecdir:    ${exec_prefix}/libexec/amd64
+    mandir:        ${exec_prefix}/man
+    sysconfdir:    /etc/apache2/2.2
+    datadir:       /var/apache2/2.2
+    installbuilddir: ${prefix}/build/amd64
+    errordir:      ${datadir}/error
+    iconsdir:      ${datadir}/icons
+    htdocsdir:     ${datadir}/htdocs
+    manualdir:     ${prefix}/manual
+    cgidir:        ${datadir}/cgi-bin
+    includedir:    ${exec_prefix}/include
+    localstatedir: ${prefix}
+    runtimedir:    /var/run/apache2/2.2
+    logfiledir:    ${datadir}/logs
+    proxycachedir: ${datadir}/proxy
+</Layout>
+
+<Layout Solaris-Apache2-sparcv9>
+    prefix:        /usr/apache2/2.2
+    exec_prefix:   ${prefix}
+    bindir:        ${exec_prefix}/bin/sparcv9
+    sbindir:       ${exec_prefix}/bin/sparcv9
+    libdir:        ${exec_prefix}/lib/sparcv9
+    libexecdir:    ${exec_prefix}/libexec/sparcv9
+    mandir:        ${exec_prefix}/man
+    sysconfdir:    /etc/apache2/2.2
+    datadir:       /var/apache2/2.2
+    installbuilddir: ${prefix}/build/sparcv9
+    errordir:      ${datadir}/error
+    iconsdir:      ${datadir}/icons
+    htdocsdir:     ${datadir}/htdocs
+    manualdir:     ${prefix}/manual
+    cgidir:        ${datadir}/cgi-bin
+    includedir:    ${exec_prefix}/include
+    localstatedir: ${prefix}
+    runtimedir:    /var/run/apache2/2.2
+    logfiledir:    ${datadir}/logs
+    proxycachedir: ${datadir}/proxy
+</Layout>
components/apache2/patches/dav.conf.in.patch
New file
@@ -0,0 +1,28 @@
--- docs/conf/extra/httpd-dav.conf.in.orig    Fri Nov 28 13:53:24 2008
+++ docs/conf/extra/httpd-dav.conf.in    Fri Nov 28 14:02:50 2008
@@ -12,11 +12,11 @@
 # on the directory where the DavLockDB is placed and on any directory where
 # "Dav On" is specified.
-DavLockDB "@@ServerRoot@@/var/DavLock"
+DavLockDB "@@RuntimeDir@@/DavLock"
-Alias /uploads "@@ServerRoot@@/uploads"
+Alias /uploads "@@DataDir@@/uploads"
-<Directory "@@ServerRoot@@/uploads">
+<Directory "@@DataDir@@/uploads">
     Dav On
     Order Allow,Deny
@@ -26,8 +26,8 @@
     AuthName DAV-upload
     # You can use the htdigest program to create the password database:
-    #   htdigest -c "@@ServerRoot@@/user.passwd" DAV-upload admin
-    AuthUserFile "@@ServerRoot@@/user.passwd"
+    #   htdigest -c "@@SysconfDir@@/user.passwd" DAV-upload admin
+    AuthUserFile "@@SysconfDir@@/user.passwd"
     AuthDigestProvider file
     # Allow universal read-access, but writes are restricted
components/apache2/patches/extra-modules.patch
New file
@@ -0,0 +1,24 @@
--- modules/filters/config.m4.orig    Mon May  9 09:31:02 2011
+++ modules/filters/config.m4    Mon May  9 09:32:22 2011
@@ -10,6 +10,9 @@
 APACHE_MODULE(filter, Smart Filtering, , , yes)
 APACHE_MODULE(substitute, response content rewrite-like filtering, , , most)
+sed_obj="mod_sed.lo sed0.lo sed1.lo regexp.lo"
+APACHE_MODULE(sed, filter request and/or response bodies through sed, $sed_obj)
+
 if test "$ac_cv_ebcdic" = "yes"; then
 # mod_charset_lite can be very useful on an ebcdic system,
 #   so include it by default
--- modules/aaa/config.m4.orig    Mon May  9 13:55:46 2011
+++ modules/aaa/config.m4    Mon May  9 14:07:47 2011
@@ -54,5 +54,9 @@
     enable_auth_digest="no"
   fi
 ])
+APACHE_MODULE(auth_gss, GSS based authentication, , , yes, [
+  MOD_AUTH_GSS_LDADD="-lgss"
+  AC_SUBST(MOD_AUTH_GSS_LDADD)
+])
 APACHE_MODPATH_FINISH
components/apache2/patches/httpd.conf.patch
New file
@@ -0,0 +1,138 @@
--- docs/conf/httpd.conf.in    Fri Dec 21 03:43:00 2007
+++ docs/conf/httpd.conf.in    Mon May 16 06:47:52 2011
@@ -6,6 +6,12 @@
 # <URL:http://httpd.apache.org/docs/2.2/mod/directives.html>
 # for a discussion of each configuration directive.
 #
+# Solaris Quick Configuration Information
+#
+# 1. Set ServerName if necessary (default is 127.0.0.1)
+# 2. Set ServerAdmin to a valid email address
+#
+#
 # Do NOT simply read the instructions in here without understanding
 # what they do.  They're here only as hints or reminders.  If you are unsure
 # consult the online docs. You have been warned.
@@ -43,14 +49,17 @@
 # Dynamic Shared Object (DSO) Support
 #
 # To be able to use the functionality of a module which was built as a DSO you
-# have to place corresponding `LoadModule' lines at this location so the
-# directives contained in it are actually available _before_ they are used.
-# Statically compiled modules (those listed by `httpd -l') do not need
-# to be loaded here.
+# have to place corresponding `LoadModule' lines within the appropriate
+# (32-bit or 64-bit module) @rel_sysconfdir@/conf.d/modules-*.load file so that
+# the directives contained in it are actually available _before_ they are used.
 #
-# Example:
-# LoadModule foo_module modules/mod_foo.so
-#
+<IfDefine 64bit>
+Include @rel_sysconfdir@/conf.d/modules-64.load
+</IfDefine>
+<IfDefine !64bit>
+Include @rel_sysconfdir@/conf.d/modules-32.load
+</IfDefine>
+
 @@LoadModule@@
 <IfModule !mpm_netware_module>
@@ -63,8 +72,8 @@
 # It is usually good practice to create a dedicated user and group for
 # running httpd, as with most system services.
 #
-User daemon
-Group daemon
+User webservd
+Group webservd
 </IfModule>
 </IfModule>
@@ -86,7 +95,7 @@
 # e-mailed.  This address appears on some server-generated pages, such
 # as error documents.  e.g. admin@your-domain.com
 #
-ServerAdmin you@example.com
+ServerAdmin you@yourhost.com
 #
 # ServerName gives the name and port that the server uses to identify itself.
@@ -95,7 +104,7 @@
 #
 # If your host doesn't have a registered DNS name, enter its IP address here.
 #
-#ServerName www.example.com:@@Port@@
+ServerName 127.0.0.1
 #
 # DocumentRoot: The directory out of which you will serve your
@@ -329,6 +338,10 @@
     #
     #AddType text/html .shtml
     #AddOutputFilter INCLUDES .shtml
+
+    # Add a new mime.type for .p5i file extension so that clicking on
+    # this file type on a web page launches PackageManager in a Webinstall mode.
+    AddType application/vnd.pkg5.info .p5i
 </IfModule>
 #
@@ -362,43 +375,22 @@
 # Supplemental configuration
 #
-# The configuration files in the @rel_sysconfdir@/extra/ directory can be
-# included to add extra features or to modify the default configuration of
-# the server, or you may simply copy their contents here and change as
+# Include all the .conf configuration files in the
+# @rel_sysconfdir@/conf.d/ directory.
+#
+# You can place additional configuration files in the
+# @rel_sysconfdir@/conf.d/ directory to add extra features
+# or to modify the default configuration of the server,
+# or you may simply copy their contents here and change as
 # necessary.
+#
+# Sample configuration files are in the
+# @rel_sysconfdir@/samples-conf.d directory. To use a
+# sample .conf file, copy it to  @rel_sysconfdir@/conf.d
+# directory and modify as required.
+#
+Include @rel_sysconfdir@/conf.d/*.conf
-# Server-pool management (MPM specific)
-#Include @rel_sysconfdir@/extra/httpd-mpm.conf
-
-# Multi-language error messages
-#Include @rel_sysconfdir@/extra/httpd-multilang-errordoc.conf
-
-# Fancy directory listings
-#Include @rel_sysconfdir@/extra/httpd-autoindex.conf
-
-# Language settings
-#Include @rel_sysconfdir@/extra/httpd-languages.conf
-
-# User home directories
-#Include @rel_sysconfdir@/extra/httpd-userdir.conf
-
-# Real-time info on requests and configuration
-#Include @rel_sysconfdir@/extra/httpd-info.conf
-
-# Virtual hosts
-#Include @rel_sysconfdir@/extra/httpd-vhosts.conf
-
-# Local access to the Apache HTTP Server Manual
-#Include @rel_sysconfdir@/extra/httpd-manual.conf
-
-# Distributed authoring and versioning (WebDAV)
-#Include @rel_sysconfdir@/extra/httpd-dav.conf
-
-# Various default settings
-#Include @rel_sysconfdir@/extra/httpd-default.conf
-
-# Secure (SSL/TLS) connections
-#Include @rel_sysconfdir@/extra/httpd-ssl.conf
 #
 # Note: The following must must be present to support
 #       starting without SSL on platforms with no /dev/random equivalent
components/apache2/patches/info.conf.in.patch
New file
@@ -0,0 +1,42 @@
--- docs/conf/extra/httpd-info.conf.in.orig    Fri Nov 28 13:44:23 2008
+++ docs/conf/extra/httpd-info.conf.in    Fri Nov 28 13:47:18 2008
@@ -10,11 +10,15 @@
 # with the URL of http://servername/server-status
 # Change the ".example.com" to match your domain to enable.
+<IfModule mod_status.c>
 <Location /server-status>
     SetHandler server-status
     Order deny,allow
     Deny from all
-    Allow from .example.com
+    #Allow from .example.com
+
+    # Allow access from localhost
+    Allow from 127.0.0.1
 </Location>
 #
@@ -24,14 +28,21 @@
 #
 #ExtendedStatus On
+</IfModule>
+
 #
 # Allow remote server configuration reports, with the URL of
 #  http://servername/server-info (requires that mod_info.c be loaded).
 # Change the ".example.com" to match your domain to enable.
 #
+<IfModule mod_info.c>
 <Location /server-info>
     SetHandler server-info
     Order deny,allow
     Deny from all
-    Allow from .example.com
+    #Allow from .example.com
+
+    # Allow access from localhost
+    Allow from 127.0.0.1
 </Location>
+</IfModule>
components/apache2/patches/ssl.conf.patch
New file
@@ -0,0 +1,38 @@
--- docs/conf/extra/httpd-ssl.conf.in.orig    Thu May 12 11:44:53 2011
+++ docs/conf/extra/httpd-ssl.conf.in    Thu May 12 11:46:45 2011
@@ -22,9 +22,10 @@
 # Manual for more details.
 #
 #SSLRandomSeed startup file:/dev/random  512
-#SSLRandomSeed startup file:/dev/urandom 512
+SSLRandomSeed startup file:/dev/urandom 512
 #SSLRandomSeed connect file:/dev/random  512
-#SSLRandomSeed connect file:/dev/urandom 512
+SSLRandomSeed connect file:/dev/urandom 512
+SSLCryptoDevice pkcs11
 #
@@ -75,7 +76,7 @@
 #   General setup for the virtual host
 DocumentRoot "@exp_htdocsdir@"
-ServerName www.example.com:@@SSLPort@@
+ServerName 127.0.0.1:@@SSLPort@@
 ServerAdmin you@example.com
 ErrorLog "@exp_logfiledir@/error_log"
 TransferLog "@exp_logfiledir@/access_log"
@@ -87,8 +88,12 @@
 #   SSL Cipher Suite:
 #   List the ciphers that the client is permitted to negotiate.
 #   See the mod_ssl documentation for a complete list.
-SSLCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
+#   AES with keylengths > 128 bit is not supported by default on Solaris.
+#   To operate with AES256 you must install the SUNWcry and SUNWcryr
+#   packages from the Solaris 10 Data Encryption Kit.
+SSLCipherSuite ALL:!ADH:!EXPORT56:-AES256-SHA:-DHE-RSA-AES256-SHA:-DHE-DSS-AES256-SHA:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
+
 #   Server Certificate:
 #   Point SSLCertificateFile at a PEM encoded certificate.  If
 #   the certificate is encrypted, then you will be prompted for a
components/apr-util/Makefile
@@ -29,6 +29,8 @@
COMPONENT_ARCHIVE_HASH=    sha1:fd2a76352353e6bc2f7cc7da80e2ab3842795199
COMPONENT_ARCHIVE_URL=    http://archive.apache.org/dist/apr/$(COMPONENT_ARCHIVE)
CONFIGURE_DEFAULT_DIRS=no
include ../../make-rules/prep.mk
include ../../make-rules/configure.mk
include ../../make-rules/ips.mk
components/apr/Makefile
@@ -29,6 +29,8 @@
COMPONENT_ARCHIVE_HASH=    sha1:3ad0099ee9fb684e118590bf0acf937639e00611
COMPONENT_ARCHIVE_URL=    http://archive.apache.org/dist/apr/$(COMPONENT_ARCHIVE)
CONFIGURE_DEFAULT_DIRS=no
include ../../make-rules/prep.mk
include ../../make-rules/configure.mk
include ../../make-rules/ips.mk
components/meta-packages/history/SUNWapch22.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22@2.2.14,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22@2.2.14-0.133 type=require
components/meta-packages/history/SUNWapch22d.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22d@2.2.14,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22/documentation@2.2.14-0.133 type=require
components/meta-packages/history/SUNWapch22m-dtrace.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22m-dtrace@0.3.1,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22/plugin/plugin-dtrace@0.3.1-0.133 type=require
components/meta-packages/history/SUNWapch22m-fcgid.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22m-fcgid@2.3.4,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22/plugin/plugin-fastcgi@2.3.4-0.133 type=require
components/meta-packages/history/SUNWapch22m-jk.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22m-jk@1.2.28,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22/plugin/plugin-tomcat@1.2.28-0.133 type=require
components/meta-packages/history/SUNWapch22m-proxy-html.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22m-proxy-html@3.1.1,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22/plugin/plugin-html-plugin@3.1.1-0.133 type=require
components/meta-packages/history/SUNWapch22m-security.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22m-security@2.5.9,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22/plugin/plugin-security@2.5.9-0.133 type=require
components/meta-packages/history/SUNWapch22m-sed.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22m-sed@2.2.14,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22/plugin/plugin-sed@2.2.14-0.133 type=require
components/meta-packages/history/SUNWapch22m-xml2enc.p5m
New file
@@ -0,0 +1,29 @@
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
# Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
#
set name=pkg.fmri value=pkg:/SUNWapch22m-xml2enc@1.0.1,5.11-0.133
set name=pkg.renamed value=true
set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
depend fmri=web/server/apache-22/plugin/plugin-xml2enc@1.0.1-0.133 type=require
make-rules/configure.mk
@@ -70,13 +70,17 @@
CONFIGURE_ENV = CONFIG_SHELL="$(CONFIG_SHELL)"
CONFIGURE_DEFAULT_DIRS?=yes
CONFIGURE_OPTIONS += CC="$(CC)"
CONFIGURE_OPTIONS += CXX="$(CXX)"
CONFIGURE_OPTIONS += --prefix=$(CONFIGURE_PREFIX)
ifeq ($(CONFIGURE_DEFAULT_DIRS),yes)
CONFIGURE_OPTIONS += --mandir=$(CONFIGURE_MANDIR)
CONFIGURE_OPTIONS += --bindir=$(CONFIGURE_BINDIR.$(BITS))
CONFIGURE_OPTIONS += --libdir=$(CONFIGURE_LIBDIR.$(BITS))
CONFIGURE_OPTIONS += --sbindir=$(CONFIGURE_SBINDIR.$(BITS))
endif
CONFIGURE_OPTIONS += $(CONFIGURE_OPTIONS.$(BITS))
COMPONENT_INSTALL_ARGS +=    DESTDIR=$(PROTO_DIR)
make-rules/justmake.mk
@@ -44,6 +44,8 @@
#    COMPONENT_BUILD_TARGETS, COMPONENT_INSTALL_TARGETS
#
COMPONENT_INSTALL_ARGS += DESTDIR=$(PROTO_DIR)
# build the configured source
$(BUILD_DIR)/%/.built:    $(SOURCE_DIR)/.prep
    $(RM) -r $(@D) ; $(MKDIR) $(@D)